1#! /bin/sh 2# 3# cvs.sh 4# 5# This file contains support code from Makefile.common 6# It defines a shell function for each known target 7# and then does a case to call the correct function. 8 9call_and_fix_autoconf() 10{ 11 $AUTOCONF || exit 1 12 if test -r configure.in.in ; then 13 perl -pi -e "print \"if test \\\"x\\\$with_fast_perl\\\" = \\\"xyes\\\"; then\ 14 \\n perl -i.bak \\\$ac_aux_dir/conf.change.pl \\\$CONFIG_STATUS\ 15 \\\\\\n || mv \\\$CONFIG_STATUS.bak \\\$CONFIG_STATUS\ 16 \\n rm -f \\\$CONFIG_STATUS.bak\\nfi\ 17 \\n\" if /^\\s*chmod\\s+.*\\+x\\s+.*CONFIG_STATUS/;" configure 18 fi 19} 20 21strip_makefile() 22{ 23 if test -f $makefile_wo; then :; else 24 perl -e '$in=0; while ( <> ) { $in = 1 if ($_=~ m/^if /); print $_ unless ($in); $in = 0 if ($_ =~ m/^endif/); }' < Makefile.am.in > $makefile_wo 25 fi 26} 27 28check_autotool_versions() 29{ 30AUTOCONF_VERSION=`$AUTOCONF --version | head -1` 31case $AUTOCONF_VERSION in 32 Autoconf*2.5* | autoconf*2.5* ) : ;; 33 "" ) 34 echo "*** AUTOCONF NOT FOUND!." 35 echo "*** KDE requires autoconf 2.52, 2.53 or 2.54" 36 exit 1 37 ;; 38 * ) 39 echo "*** YOU'RE USING $AUTOCONF_VERSION." 40 echo "*** KDE requires autoconf 2.52, 2.53 or 2.54" 41 exit 1 42 ;; 43esac 44 45AUTOHEADER_VERSION=`$AUTOHEADER --version | head -1` 46case $AUTOHEADER_VERSION in 47 Autoconf*2.5* | autoheader*2.5* ) : ;; 48 "" ) 49 echo "*** AUTOHEADER NOT FOUND!." 50 echo "*** KDE requires autoheader 2.52 or 2.53 (part of autoconf)" 51 exit 1 52 ;; 53 * ) 54 echo "*** YOU'RE USING $AUTOHEADER_VERSION." 55 echo "*** KDE requires autoheader 2.52 or 2.53 (part of autoconf)" 56 exit 1 57 ;; 58esac 59 60AUTOMAKE_STRING=`$AUTOMAKE --version | head -1` 61case $AUTOMAKE_STRING in 62 automake*1.5d* ) 63 echo "*** YOU'RE USING $AUTOMAKE_STRING." 64 echo "*** KDE requires automake 1.5" 65 exit 1 66 ;; 67 automake*1.5* | automake*1.5-* | automake*1.6.* | automake*1.7* ) : ;; 68 "" ) 69 echo "*** AUTOMAKE NOT FOUND!." 70 echo "*** KDE requires automake 1.5" 71 exit 1 72 ;; 73 unsermake* ) : 74 echo "*** YOU'RE USING UNSERMAKE." 75 echo "*** GOOD LUCK!! :)" 76 ;; 77 * ) 78 echo "*** YOU'RE USING $AUTOMAKE_STRING." 79 echo "*** KDE requires automake 1.5" 80 exit 1 81 ;; 82esac 83} 84 85cvs() 86{ 87check_autotool_versions 88 89### Produce acinclude.m4 90if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev/null; then 91 echo "*** Creating acinclude.m4" 92 rm -f acinclude.m4 configure.files 93 94 strip_makefile 95 $MAKE -f $makefile_wo top_srcdir=. ./acinclude.m4 96fi 97 98### Make new subdirs and configure.in. 99### The make calls could be optimized away here, 100### with a little thought. 101if test -r configure.in.in; then 102 rm -f subdirs configure.in 103 echo "*** Creating list of subdirectories" 104 subdirs 105 echo "*** Creating configure.in" 106 configure_files 107 strip_makefile 108 $MAKE -f $makefile_wo top_srcdir=. ./configure.in || exit 1 109fi 110 111echo "*** Creating aclocal.m4" 112$ACLOCAL || exit 1 113echo "*** Creating configure" 114call_and_fix_autoconf 115 116if egrep "^AM_CONFIG_HEADER" configure.in >/dev/null 2>&1; then 117 echo "*** Creating config.h template" 118 $AUTOHEADER || exit 1 119fi 120 121echo "*** Creating Makefile templates" 122$AUTOMAKE || exit 1 123if test -z "$UNSERMAKE"; then 124 echo "*** Postprocessing Makefile templates" 125 perl -w admin/am_edit || exit 1 126fi 127 128if egrep "^cvs-local:" $makefile_am >/dev/null; then \ 129 strip_makefile 130 $MAKE -f $makefile_wo cvs-local top_srcdir=. || exit 1 131fi 132 133echo "*** Creating date/time stamp" 134touch stamp-h.in 135 136echo "*** Finished" 137echo " Don't forget to run ./configure" 138echo " If you haven't done so in a while, run ./configure --help" 139} 140 141dist() 142{ 143check_autotool_versions 144 145### 146### First build all of the files necessary to do just "make" 147### 148if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev/null; then 149 strip_makefile 150 $MAKE -f $makefile_wo top_srcdir=. ./acinclude.m4 151fi 152if test -r configure.in.in; then 153 subdirs 154 configure_files 155 strip_makefile 156 $MAKE -f $makefile_wo top_srcdir=. ./configure.in 157fi 158$ACLOCAL 159$AUTOHEADER 160$AUTOMAKE --foreign --include-deps 161perl -w admin/am_edit 162call_and_fix_autoconf 163touch stamp-h.in 164if grep "^cvs-local:" $makefile_am >/dev/null; then 165 strip_makefile 166 $MAKE -f $makefile_wo cvs-local top_srcdir=. 167fi 168 169### 170### Then make messages 171### 172if test -d po; then 173 LIST=`find ./po -name "*.po"` 174 for i in $LIST; do 175 file2=`echo $i | sed -e "s#\.po#\.gmo#"` 176 msgfmt -o $file2 $i || touch $file2 177 done 178fi 179if grep "^cvs-dist-local:" $makefile_am >/dev/null; then 180 strip_makefile 181 $MAKE -f $makefile_wo cvs-dist-local top_srcdir=. 182fi 183} 184 185subdir_dist() 186{ 187$ACLOCAL 188$AUTOHEADER 189$AUTOMAKE --foreign --include-deps 190perl -w ../admin/am_edit 191call_and_fix_autoconf 192} 193 194configure_in() 195{ 196rm -f configure.in configure.in.new 197kde_use_qt_param= 198test -f configure.files || { echo "need configure.files for configure.in"; exit 1; } 199cat `egrep -v "configure.in.bot" < configure.files` > configure.in.new 200echo "KDE_CREATE_SUBDIRSLIST" >> configure.in.new 201if test -f Makefile.am.in; then 202 subdirs=`cat subdirs` 203 for dir in $subdirs; do 204 dir=`echo $dir | sed -e "s,[-+.],_,g"` 205 echo "AM_CONDITIONAL($dir""_SUBDIR_included, test \"x\$$dir""_SUBDIR_included\" = xyes)" >> configure.in.new 206 done 207fi 208# echo "AC_OUTPUT( \\" >> configure.in.new 209mfs=`find . -type d -print | fgrep -v "/." | \ 210 sed -e "s#\./##" -e "/^debian/d" | sort` 211for i in $mfs; do 212 topleveldir=`echo $i| sed -e "s#/.*##"` 213 if test -f $topleveldir/configure.in; then 214 continue 215 fi 216 if test -f $i/Makefile.am; then :; else 217 continue 218 fi 219 if test -s inst-apps; then 220 if grep "\"^$topleveldir\"" inst-apps > /dev/null 2>&1; then 221 continue 222 fi 223 fi 224 if test "$i" = "."; then 225 echo "AC_CONFIG_FILES([ Makefile ])" >> configure.in.new 226 else 227 echo "AC_CONFIG_FILES([ $i/Makefile ])" >> configure.in.new 228 fi 229 if test -n "$UNSERMAKE"; then 230 if test "$i" = "."; then 231 echo "AC_CONFIG_FILES([ Makefile.rules ])" >> configure.in.new 232 else 233 echo "AC_CONFIG_FILES([ $i/Makefile.rules ])" >> configure.in.new 234 fi 235 fi 236done 237 238files=`cat configure.files` 239list=`egrep '^dnl AC_OUTPUT\(.*\)' $files | sed -e "s#^.*dnl AC_OUTPUT(\(.*\))#\1#"` 240for file in $list; do 241 echo "AC_CONFIG_FILES([ $file ])" >> configure.in.new 242done 243 244if test -n "$UNSERMAKE"; then 245 echo "AC_CONFIG_FILES([ MakeVars ])" >> configure.in.new 246fi 247echo "AC_OUTPUT" >> configure.in.new 248modulename= 249if test -f configure.in.in; then 250 if head -2 configure.in.in | egrep "^#MIN_CONFIG\(.*\)$" > /dev/null; then 251 kde_use_qt_param=`cat configure.in.in | sed -n -e "s/#MIN_CONFIG(\(.*\))/\1/p"` 252 fi 253 if head -2 configure.in.in | egrep "^#MIN_CONFIG" > /dev/null; then 254 line=`grep "^AM_INIT_AUTOMAKE(" configure.in.in` 255 if test -n "$line"; then 256 modulename=`echo $line | sed -e "s#AM_INIT_AUTOMAKE(\([^,]*\),.*#\1#"` 257 VERSION=`echo $line | sed -e "s#AM_INIT_AUTOMAKE([^,]*, *\([^)]*\)).*#\1#"` 258 fi 259 sed -e "s#AM_INIT_AUTOMAKE([^@].*#dnl PACKAGE set before#" \ 260 configure.in.new > configure.in && mv configure.in configure.in.new 261 fi 262fi 263if test -z "$VERSION" || test "$VERSION" = "@VERSION@"; then 264 VERSION="\"3.1.0\"" 265fi 266if test -z "$modulename" || test "$modulename" = "@MODULENAME@"; then 267 modulename=`pwd`; 268 modulename=`basename $modulename` 269 esc_VERSION=`echo $VERSION | sed -e "s#[^.0-9a-zA-Z]##g"` 270 modulename=`echo $modulename | sed -e "s#-$esc_VERSION##"` 271 272fi 273if test -n "$kde_use_qt_param"; then 274 sed -e "s#^dnl KDE_USE_QT#KDE_USE_QT($kde_use_qt_param)#" \ 275 configure.in.new > configure.in && mv configure.in configure.in.new 276fi 277sed -e "s#@MODULENAME@#$modulename#" configure.in.new | 278 sed -e "s#@VERSION@#$VERSION#" > configure.in 279botfiles=`cat configure.files | egrep "configure.in.bot"` 280test -n "$botfiles" && cat $botfiles >> configure.in 281cat $admindir/configure.in.bot.end >> configure.in 282rm -f configure.in.new 283} 284 285configure_files() 286{ 287admindir=NO 288for i in . .. ../.. ../../..; do 289 if test -x $i/admin; then admindir=$i/admin; break; fi 290done 291rm -f configure.files 292touch configure.files 293if test -f configure.in.in && head -2 configure.in.in | grep "^#MIN_CONFIG" > /dev/null; then 294 echo $admindir/configure.in.min >> configure.files 295fi 296test -f configure.in.in && echo configure.in.in >> configure.files 297list=`find . -name "configure.in.in" -o -name "configure.in.bot" | sort` 298for i in $list; do if test -f $i && test `dirname $i` != "." ; then 299 echo $i >> configure.files 300fi; done 301test -f configure.in.mid && echo configure.in.mid >> configure.files 302test -f configure.in.bot && echo configure.in.bot >> configure.files 303} 304 305subdirs() 306{ 307dirs= 308compilefirst=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -1` 309compilelast=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -1` 310for i in `ls -1`; do 311 if test -f $i/Makefile.am; then 312 case " $compilefirst $compilelast " in 313 *" $i "*) ;; 314 *) dirs="$dirs $i" 315 esac 316 fi 317done 318 319: > ./_SUBDIRS 320 321for d in $compilefirst; do 322 echo $d >> ./_SUBDIRS 323done 324 325(for d in $dirs; do 326 list=`sed -ne "s#^COMPILE_BEFORE_$d""[ ]*=[ ]*##p" $makefile_am | head -1` 327 for s in $list; do 328 echo $s $d 329 done 330 list=`sed -ne "s#^COMPILE_AFTER_$d""[ ]*=[ ]*##p" $makefile_am | head -1` 331 for s in $list; do 332 echo $d $s 333 done 334 echo $d $d 335done ) | tsort >> ./_SUBDIRS 336 337for d in $compilelast; do 338 echo $d >> ./_SUBDIRS 339done 340 341if test -f Makefile.am.in; then 342 cp Makefile.am.in Makefile.am 343 if test -n "$UNSERMAKE"; then 344 topsubdirs= 345 for i in $compilefirst $dirs $compilelast; do 346 vari=`echo $i | sed -e "s,[-+],_,g"` 347 echo "if $vari""_SUBDIR_included" >> Makefile.am 348 echo "$vari""_SUBDIR=$i" >> Makefile.am 349 echo "endif" >> Makefile.am 350 topsubdirs="$topsubdirs \$($vari""_SUBDIR)" 351 done 352 echo "SUBDIRS=$topsubdirs" >> Makefile.am 353 else 354 echo "SUBDIRS="'$(TOPSUBDIRS)' >> Makefile.am 355 fi 356fi 357if test -r subdirs && diff subdirs _SUBDIRS > /dev/null; then 358 rm -f _SUBDIRS 359fi 360test -r _SUBDIRS && mv _SUBDIRS subdirs || true 361} 362 363cvs_clean() 364{ 365if test -d CVS; then :; else 366 echo "You don't have a toplevel CVS directory." 367 echo "You most certainly didn't use cvs to get these sources." 368 echo "But this function depends on cvs's information." 369 exit 1 370fi 371perl $admindir/cvs-clean.pl 372} 373 374package_merge() 375{ 376catalogs=$POFILES 377for cat in $catalogs; do 378 msgmerge -o $cat.new $cat $PACKAGE.pot 379 if test -s $cat.new; then 380 grep -v "\"POT-Creation" $cat.new > $cat.new.2 381 grep -v "\"POT-Creation" $cat >> $cat.new.1 382 if diff $cat.new.1 $cat.new.2; then 383 rm $cat.new 384 else 385 mv $cat.new $cat 386 fi 387 rm -f $cat.new.1 $cat.new.2 388 fi 389done 390} 391 392package_messages() 393{ 394rm -rf po.backup 395mkdir po.backup 396 397for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do 398 egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > po.backup/$i 399 cp po/$i po.backup/backup_$i 400 touch -r po/$i po.backup/backup_$i 401 rm po/$i 402done 403 404podir=${podir:-$PWD/po} 405files=`find . -name Makefile.am | xargs egrep -l '^messages:' ` 406dirs=`for i in $files; do echo \`dirname $i\`; done` 407tmpname="$PWD/messages.log" 408if test -z "$EXTRACTRC"; then EXTRACTRC=extractrc ; fi 409if test -z "$PREPARETIPS"; then PREPARETIPS=preparetips ; fi 410export EXTRACTRC PREPARETIPS 411 412for subdir in $dirs; do 413 test -z "$VERBOSE" || echo "Making messages in $subdir" 414 (cd $subdir 415 if test -n "`grep -e '^messages:.*rc.cpp' Makefile.am`"; then 416 $EXTRACTRC *.rc *.ui > rc.cpp 417 else 418 candidates=`ls -1 *.rc *.ui 2>/dev/null` 419 if test -n "$candidates"; then 420 echo "$subdir has *.rc or *.ui files, but not correct messages line" 421 fi 422 fi 423 if test -n "`grep -r KAboutData *.c* *.C* 2>/dev/null`"; then 424 echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > _translatorinfo.cpp 425 else echo " " > _translatorinfo.cpp 426 fi 427 perl -e '$mes=0; while (<STDIN>) { next if (/^(if|else|endif)\s/); if (/^messages:/) { $mes=1; print $_; next; } if ($mes) { if (/$\\(XGETTEXT\)/ && / -o/) { s/ -o \$\(podir\)/ _translatorinfo.cpp -o \$\(podir\)/ } print $_; } else { print $_; } }' < Makefile.am | egrep -v '^include ' > _transMakefile 428 429 $MAKE -s -f _transMakefile podir=$podir EXTRACTRC="$EXTRACTRC" PREPARETIPS="$PREPARETIPS" \ 430 XGETTEXT="${XGETTEXT:-xgettext} -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale -x ${includedir:-$KDEDIR/include}/kde.pot" \ 431 messages 432 ) 2>&1 | grep -v '^make\[1\]' > $tmpname 433 test -s $tmpname && { echo $subdir ; cat "$tmpname"; } 434 test -f $subdir/rc.cpp && rm -f $subdir/rc.cpp 435 rm -f $subdir/_translatorinfo.cpp 436 rm -f $subdir/_transMakefile 437done 438rm -f $tmpname 439for i in `ls -1 po.backup/*.pot 2>/dev/null | sed -e "s#po.backup/##" | egrep -v '^backup_'`; do 440 test -f po/$i || echo "disappeared: $i" 441done 442for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do 443 msgmerge -q -o po/$i po/$i po/$i 444 egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > temp.pot 445 if test -f po.backup/$i && test -n "`diff temp.pot po.backup/$i`"; then 446 echo "will update $i" 447 msgmerge -q po.backup/backup_$i po/$i > temp.pot 448 mv temp.pot po/$i 449 else 450 if test -f po.backup/backup_$i; then 451 test -z "$VERBOSE" || echo "I'm restoring $i" 452 mv po.backup/backup_$i po/$i 453 rm po.backup/$i 454 else 455 echo "will add $i" 456 fi 457 fi 458done 459rm -f temp.pot 460rm -rf po.backup 461} 462 463admindir=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'` 464test "x$admindir" = "x$0" && admindir=. 465 466test "x$MAKE" = x && MAKE=make 467makefile_am=Makefile.am 468makefile_wo=Makefile.am 469if test -f Makefile.am.in; then 470 makefile_am=Makefile.am.in 471 makefile_wo=Makefile.am.in.wo 472fi 473 474# Suck in the AUTOCONF detection code 475. $admindir/detect-autoconf.sh 476 477### 478### Main 479### 480 481arg=`echo $1 | tr '\-.' __` 482case $arg in 483 cvs | dist | subdir_dist | configure_in | configure_files | subdirs | \ 484 cvs_clean | package_merge | package_messages ) $arg ;; 485 * ) echo "Usage: cvs.sh <target>" 486 echo "Target can be one of:" 487 echo " cvs cvs-clean dist" 488 echo " configure.in configure.files" 489 echo " package-merge package-messages" 490 echo "" 491 echo "Usage: anything but $1" 492 exit 1 ;; 493esac 494 495if test -f Makefile.am.in.wo; then 496 rm Makefile.am.in.wo 497fi 498 499exit 0 500