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.
11 call_and_fix_autoconf
()
14 if test -r configure.
in.
in ; then
15 perl
-pi -e "print \"if test \\\"x\\\$with_fast_perl\\\" = \\\"xyes\\\"; then\
16 \\n perl -i.bak \\\$ac_aux_dir/conf.change.pl \\\$CONFIG_STATUS\
17 \\\\\\n || mv \\\$CONFIG_STATUS.bak \\\$CONFIG_STATUS\
18 \\n rm -f \\\$CONFIG_STATUS.bak\\nfi\
19 \\n\" if /^\\s*chmod\\s+.*\\+x\\s+.*CONFIG_STATUS/; s,^#line.*LINENO.*\$,/* \$& */, ;" configure
25 if test ! -f $makefile_wo; then
26 perl
-e '$in=0; while ( <> ) { $in = 1 if ($_ =~ m/^if / ); print $_ unless ($in || $_ =~ m/^include /); $in = 0 if ($_ =~ m/^endif/); }' < $makefile_am > $makefile_wo
30 check_autotool_versions
()
32 required_autoconf_version
="2.53 or newer"
33 AUTOCONF_VERSION
=`$AUTOCONF --version | head -n 1`
34 case $AUTOCONF_VERSION in
35 Autoconf
*2.5* | autoconf
*2.5* | autoconf
*2.6* ) : ;;
37 echo "*** AUTOCONF NOT FOUND!."
38 echo "*** KDE requires autoconf $required_autoconf_version"
42 echo "*** YOU'RE USING $AUTOCONF_VERSION."
43 echo "*** KDE requires autoconf $required_autoconf_version"
48 AUTOHEADER_VERSION
=`$AUTOHEADER --version | head -n 1`
49 case $AUTOHEADER_VERSION in
50 Autoconf
*2.5* | autoheader
*2.5* | autoheader
*2.6* ) : ;;
52 echo "*** AUTOHEADER NOT FOUND!."
53 echo "*** KDE requires autoheader $required_autoconf_version"
57 echo "*** YOU'RE USING $AUTOHEADER_VERSION."
58 echo "*** KDE requires autoheader $required_autoconf_version"
63 AUTOMAKE_STRING
=`$AUTOMAKE --version | head -n 1`
64 required_automake_version
="1.6.1 or newer"
65 case $AUTOMAKE_STRING in
66 automake
*1.5d
* | automake
*1.5* | automake
*1.5-* )
67 echo "*** YOU'RE USING $AUTOMAKE_STRING."
68 echo "*** KDE requires automake $required_automake_version"
71 automake
*1.6.
* | automake
*1.7* | automake
*1.8* | automake
*1.9* | automake
*1.10*)
72 echo "*** $AUTOMAKE_STRING found."
76 echo "*** AUTOMAKE NOT FOUND!."
77 echo "*** KDE requires automake $required_automake_version"
81 echo "*** YOU'RE USING UNSERMAKE."
82 echo "*** GOOD LUCK!! :)"
86 echo "*** YOU'RE USING $AUTOMAKE_STRING."
87 echo "*** KDE requires automake $required_automake_version"
91 unset required_automake_version
96 check_autotool_versions
99 ### Make new subdirs and configure.in.
100 ### The make calls could be optimized away here,
101 ### with a little thought.
102 if test -r configure.
in.
in; then
104 echo "*** Creating list of subdirectories"
107 if test -r Makefile.am.
in; then
108 echo "*** Creating Makefile.am"
109 if grep '\$(top_srcdir)/Makefile.am:' $makefile_am >/dev
/null
; then
111 $MAKE -f $makefile_wo top_srcdir
=. .
/Makefile.am ||
exit 1
117 echo "*** Creating configure.in"
118 if grep '\$(top_srcdir)/configure.in:' $makefile_am >/dev
/null
; then
120 $MAKE -f $makefile_wo top_srcdir
=. .
/configure.
in ||
exit 1
126 echo "*** Creating aclocal.m4"
127 $ACLOCAL $ACLOCALFLAGS ||
exit 1
128 echo "*** Creating configure"
129 call_and_fix_autoconf
131 if egrep "^AM_CONFIG_HEADER" configure.
in >/dev
/null
2>&1; then
132 echo "*** Creating config.h template"
133 $AUTOHEADER ||
exit 1
137 echo "*** Creating Makefile templates"
140 if test "$UNSERMAKE" = no
; then
141 echo "*** Postprocessing Makefile templates"
142 perl
-w admin
/am_edit ||
exit 1
145 if egrep "^cvs-local:" $makefile_am >/dev
/null
; then \
147 $MAKE -f $makefile_wo cvs-local top_srcdir
=. ||
exit 1
150 echo "*** Creating date/time stamp"
154 echo " Don't forget to run ./configure"
155 echo " If you haven't done so in a while, run ./configure --help"
160 check_autotool_versions
163 ### First build all of the files necessary to do just "make"
166 if test -r configure.
in.
in; then
170 if test -r Makefile.am.
in; then
171 if grep '\$(top_srcdir)/Makefile.am:' $makefile_am >/dev
/null
; then
173 $MAKE -f $makefile_wo top_srcdir
=. .
/Makefile.am ||
exit 1
179 if grep '\$(top_srcdir)/configure.in:' $makefile_am >/dev
/null
; then
181 $MAKE -f $makefile_wo top_srcdir
=. .
/configure.
in ||
exit 1
186 $ACLOCAL $ACLOCALFLAGS
187 if egrep "^AM_CONFIG_HEADER" configure.
in >/dev
/null
2>&1; then
188 echo "*** Creating config.h template"
189 $AUTOHEADER ||
exit 1
192 $AUTOMAKE --foreign ||
exit 1
193 if test "$UNSERMAKE" = no
; then
194 echo "*** Postprocessing Makefile templates"
195 perl
-w admin
/am_edit ||
exit 1
197 call_and_fix_autoconf
199 if grep "^cvs-local:" $makefile_am >/dev
/null
; then
201 $MAKE -f $makefile_wo cvs-local top_srcdir
=.
205 ### Then make messages
208 LIST
=`find ./po -name "*.po"`
210 file2
=`echo $i | sed -e "s#\.po#\.gmo#"`
211 msgfmt
-o $file2 $i ||
touch $file2
214 if grep "^cvs-dist-local:" $makefile_am >/dev
/null
; then
216 $MAKE -f $makefile_wo cvs-dist-local top_srcdir
=.
222 $ACLOCAL $ACLOCALFLAGS
226 AUTOMAKE_STRING
=`$AUTOMAKE --version | head -n 1`
227 case $AUTOMAKE_STRING in
231 perl
-w ..
/admin
/am_edit
--path=..
/admin
233 call_and_fix_autoconf
239 rm -f configure.
in configure.
in.new
241 test -f configure.files ||
{ echo "need configure.files for configure.in"; exit 1; }
242 list
=`fgrep -v "configure.in.bot" < configure.files | fgrep -v "configure.in.mid"`
244 for file in $list; do
245 echo "dnl =======================================================" >> configure.
in.new
246 echo "dnl FILE: $file" >> configure.
in.new
247 echo "dnl =======================================================" >> configure.
in.new
248 echo "" >> configure.
in.new
249 cat $file >> configure.
in.new
251 echo "KDE_CREATE_SUBDIRSLIST" >> configure.
in.new
252 if test -f Makefile.am.
in; then
253 subdirs
=`cat subdirs`
254 for dir
in $subdirs; do
255 vdir=`echo $dir | sed -e 's,[-+.@],_,g'`
256 echo "AM_CONDITIONAL($vdir""_SUBDIR_included, test \"x\$$vdir""_SUBDIR_included\" = xyes)" >> configure.
in.new
257 if test -f "$dir/configure.in"; then
258 echo "if test \"x\$$vdir""_SUBDIR_included\" = xyes; then " >> configure.
in.new
259 echo " AC_CONFIG_SUBDIRS($dir)" >> configure.
in.new
260 echo "fi" >> configure.
in.new
265 echo "AC_CONFIG_FILES([ Makefile ])" >> configure.
in.new
267 if test -f inst-apps
; then
268 topleveldirs
=`cat inst-apps`
271 for dir
in `ls -1d * | sort`; do
272 if test "$dir" != "debian" && test -d $dir; then
273 topleveldirs
="$topleveldirs $dir"
278 for topleveldir
in $topleveldirs; do
279 if test -f $topleveldir/configure.
in; then
282 if test -f $topleveldir/Makefile.am
; then :; else
286 mfs
=`find $topleveldir -follow -name Makefile.am -print | fgrep -v "/." | \
287 sed -e 's#\./##; s#/Makefile.am$##' | sort | sed -e 's#$#/Makefile#'`
289 echo "AC_CONFIG_FILES([ $i ])" >> configure.
in.new
293 files
=`cat configure.files`
294 list
=`egrep '^dnl AC_OUTPUT\(.*\)' $files | sed -e "s#^.*dnl AC_OUTPUT(\(.*\))#\1#"`
295 for file in $list; do
296 echo "AC_CONFIG_FILES([ $file ])" >> configure.
in.new
299 midfiles
=`cat configure.files | fgrep "configure.in.mid"`
300 test -n "$midfiles" && cat $midfiles >> configure.
in.new
302 echo "AC_OUTPUT" >> configure.
in.new
304 if test -f configure.
in.
in; then
305 if head -n 2 configure.
in.
in |
egrep "^#MIN_CONFIG\(.*\)$" > /dev
/null
; then
306 kde_use_qt_param
=`cat configure.in.in | sed -n -e "s/#MIN_CONFIG(\(.*\))/\1/p"`
308 if head -n 2 configure.
in.
in |
egrep "^#MIN_CONFIG" > /dev
/null
; then
309 line
=`grep "^AM_INIT_AUTOMAKE(" configure.in.in`
310 if test -n "$line"; then
311 modulename
=`echo $line | sed -e "s#AM_INIT_AUTOMAKE(\([^,]*\),.*#\1#"`
312 VERSION
=`echo $line | sed -e "s#AM_INIT_AUTOMAKE([^,]*, *\([^)]*\)).*#\1#"`
314 sed -e "s#AM_INIT_AUTOMAKE([^@].*#dnl PACKAGE set before#" \
315 configure.
in.new
> configure.
in && mv configure.
in configure.
in.new
318 if test -z "$VERSION" ||
test "$VERSION" = "@VERSION@"; then
321 if test -z "$modulename" ||
test "$modulename" = "@MODULENAME@"; then
323 modulename
=`basename $modulename`
324 esc_VERSION
=`echo $VERSION | sed -e "s#[^.0-9a-zA-Z]##g"`
325 modulename
=`echo $modulename | sed -e "s#-$esc_VERSION##"`
328 if test -n "$kde_use_qt_param"; then
329 sed -e "s#^dnl KDE_USE_QT#KDE_USE_QT($kde_use_qt_param)#" \
330 configure.
in.new
> configure.
in && mv configure.
in configure.
in.new
332 sed -e "s#@MODULENAME@#$modulename#" configure.
in.new |
333 sed -e "s#@VERSION@#$VERSION#" > configure.
in
334 botfiles
=`cat configure.files | egrep "configure.in.bot"`
335 test -n "$botfiles" && cat $botfiles >> configure.
in
336 cat $admindir/configure.
in.bot.end
>> configure.
in
337 rm -f configure.
in.new
342 echo "*** Creating configure.files"
344 for i
in . .. ..
/.. ..
/..
/..
; do
345 if test -x $i/admin
; then admindir
=$i/admin
; break; fi
347 rm -f configure.files
348 touch configure.files
349 if test -f configure.
in.
in && head -n 2 configure.
in.
in |
grep "^#MIN_CONFIG" > /dev
/null
; then
350 echo $admindir/configure.
in.min
>> configure.files
352 test -f configure.
in.
in && echo configure.
in.
in >> configure.files
353 # we collect files in the subdirs and do some sorting tricks, so subsubdirs come after subdirs
354 if test -f inst-apps
; then
358 list
="$list `find $i/ -follow -name "configure.
in.
in" -o -name "configure.
in.bot
" -o -name "configure.
in.mid
" | \
359 sed -e "s
,/configure
,/aaaconfigure
," | sort | sed -e "s
,/aaaconfigure
,/configure
,"`"
362 list
=`find . -follow -name "configure.in.in" -o -name "configure.in.bot" -o -name "configure.in.mid" | \
363 sed -e "s,/configure,/aaaconfigure," | sort | sed -e "s,/aaaconfigure,/configure,"`
365 for i
in $list; do if test -f $i && test `dirname $i` != "." ; then
366 echo $i >> configure.files
368 test -f configure.
in.mid
&& echo configure.
in.mid
>> configure.files
369 test -f configure.
in.bot
&& echo configure.
in.bot
>> configure.files
370 if test ! -s configure.files
; then
371 echo "There are no files to build a configure. Please check your checkout."
378 if grep '\$(top_srcdir)/subdirs:' $makefile_am >/dev
/null
; then
379 # as many modules contain rules to create subdirs without any
380 # dependencies make won't create it unless there is no file.
381 # so we check if that's a dummy rule or one that works
382 rm -f subdirs.cvs.sh.$$
383 if test -f subdirs
; then
384 mv subdirs subdirs.cvs.sh.$$
387 $MAKE -f $makefile_wo top_srcdir
=. .
/subdirs ||
exit 1
388 if test -f subdirs.cvs.sh.$$
; then
389 if test -s subdirs
; then
392 mv subdirs.cvs.sh.$$ subdirs
404 if test -f inst-apps
; then
405 idirs
=`cat inst-apps`
410 compilefirst
=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -n 1`
411 compilelast
=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -n 1`
413 if test -f $i/Makefile.am
; then
414 case " $compilefirst $compilelast " in
423 for d
in $compilefirst; do
424 echo $d >> .
/_SUBDIRS
428 list
=`sed -ne "s#^COMPILE_BEFORE_$d""[ ]*=[ ]*##p" $makefile_am | head -n 1`
432 list
=`sed -ne "s#^COMPILE_AFTER_$d""[ ]*=[ ]*##p" $makefile_am | head -n 1`
437 done ) |
tsort >> .
/_SUBDIRS
439 for d
in $compilelast; do
440 echo $d >> .
/_SUBDIRS
443 if test -r subdirs
&& cmp -s subdirs _SUBDIRS
; then
446 test -r _SUBDIRS
&& mv _SUBDIRS subdirs || true
451 if test -f Makefile.am.
in; then
452 compilefirst
=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -n 1`
453 compilelast
=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -n 1`
457 if test -f inst-apps
; then
458 idirs
=`cat inst-apps`
463 case " $compilefirst $compilelast " in
469 adds
=`fgrep '$(top_srcdir)/acinclude.m4:' Makefile.am.in | sed -e 's,^[^:]*: *,,; s,\$(top_srcdir)/,,g'`
470 if echo "$adds" | fgrep
"*" >/dev
/null
; then
471 adds
=`ls -d -1 $adds 2>/dev/null`
472 fgrep
-v '$(top_srcdir)/acinclude.m4:' Makefile.am.
in > Makefile.am.
in.adds
473 str
='$(top_srcdir)/acinclude.m4:'
475 str
="$str \$(top_srcdir)/$add"
477 echo $str >> Makefile.am.
in.adds
479 cat Makefile.am.
in > Makefile.am.
in.adds
482 cat Makefile.am.
in.adds | \
483 sed -e 's,^\s*\(COMPILE_BEFORE.*\),# \1,' | \
484 sed -e 's,^\s*\(COMPILE_AFTER.*\),# \1,' > Makefile.am
485 echo "SUBDIRS="'$(TOPSUBDIRS)' >> Makefile.am
486 rm Makefile.am.
in.adds
492 echo "*** Creating acinclude.m4"
494 if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev
/null
; then
497 adds
=`grep '\$(top_srcdir)/acinclude.m4:' $makefile_wo | sed -e 's,^[^:]*: *,,; s,\$(top_srcdir),.,g'`
498 if echo $adds | fgrep
"*" >/dev
/null
; then
499 adds
=`ls -d -1 $adds 2>/dev/null`
501 $MAKE -f $makefile_wo top_srcdir
=. .
/acinclude.
m4 ||
exit 1
506 # if it wasn't created up to now, then we do it better
507 if test ! -f acinclude.
m4; then
508 cat admin
/acinclude.
m4.
in admin
/libtool.
m4.
in admin
/pkg.
m4.
in $adds > acinclude.
m4
515 for cat in $catalogs; do
516 msgmerge
-o $cat.new
$cat $PACKAGE.pot
517 if test -s $cat.new
; then
518 grep -v "\"POT-Creation" $cat.new
> $cat.new
.2
519 grep -v "\"POT-Creation" $cat >> $cat.new
.1
520 if diff $cat.new
.1 $cat.new
.2; then
525 rm -f $cat.new
.1 $cat.new
.2
532 podir
=${podir:-$PWD/po}
533 files
=`find . -name Makefile.am | xargs egrep -l '^messages:' `
534 dirs=`for i in $files; do echo \`dirname $i\
`; done`
535 tmpname
="$PWD/messages.log"
536 if test -z "$EXTRACTRC"; then EXTRACTRC
=extractrc
; fi
537 if test -z "$PREPARETIPS"; then PREPARETIPS
=preparetips
; fi
538 export EXTRACTRC PREPARETIPS
540 for subdir
in $dirs; do
541 test -z "$VERBOSE" ||
echo "Making messages in $subdir"
543 if test -n "`grep -e '^messages:.*rc.cpp' Makefile.am`"; then
544 $EXTRACTRC *.rc
*.ui
*.kcfg
> rc.cpp
546 candidates
=`ls -1 *.rc *.ui *.kcfg 2>/dev/null`
547 if test -n "$candidates"; then
548 echo "$subdir has *.rc, *.ui or *.kcfg files, but not correct messages line"
551 if find .
-name \
*.c\
* -o -name \
*.h\
* | fgrep
-v ".svn" |
xargs fgrep
-s -q KAboutData
; then
552 echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > _translatorinfo.cpp
553 else echo " " > _translatorinfo.cpp
555 perl
-e '$mes=0; while (<STDIN>) { next if (/^(if\s|else\s|endif)/); 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
557 kdepotpath
=${includedir:-`kde-config --expandvars --install include`}/kde.pot
558 if ! test -f $kdepotpath; then
559 kdepotpath
=`kde-config --expandvars --prefix`/include
/kde.pot
562 $MAKE -s -f _transMakefile podir
=$podir EXTRACTRC
="$EXTRACTRC" PREPARETIPS
="$PREPARETIPS" srcdir
=. \
563 XGETTEXT
="${XGETTEXT:-xgettext} --foreign-user -C -ci18n -ki18n -ktr2i18n -kI18N_NOOP -kI18N_NOOP2 -kaliasLocale -x $kdepotpath" messages
565 if test "$exit_code" != 0; then
566 echo "make exit code: $exit_code"
568 ) 2>&1 |
grep -v '^make\[1\]' > $tmpname
569 test -s $tmpname && { echo $subdir ; cat "$tmpname"; }
570 test -f $subdir/rc.cpp
&& rm -f $subdir/rc.cpp
571 rm -f $subdir/_translatorinfo.cpp
572 rm -f $subdir/_transMakefile
582 for i
in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do
583 egrep -v '^#[^,]' po
/$i |
egrep '^.*[^ ]+.*$' |
grep -v "\"POT-Creation" > po.backup
/$i
584 cat po
/$i > po.backup
/backup_
$i
585 touch -r po
/$i po.backup
/backup_
$i
591 for i
in `ls -1 po.backup/*.pot 2>/dev/null | sed -e "s#po.backup/##" | egrep -v '^backup_'`; do
592 test -f po
/$i ||
echo "disappeared: $i"
594 for i
in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do
595 sed -e 's,^"Content-Type: text/plain; charset=CHARSET\\n"$,"Content-Type: text/plain; charset=UTF-8\\n",' po
/$i > po
/$i.new
&& mv po
/$i.new po
/$i
596 #msgmerge -q -o po/$i po/$i po/$i
597 egrep -v '^#[^,]' po
/$i |
egrep '^.*[^ ]+.*$' |
grep -v "\"POT-Creation" > temp.pot
598 if test -f po.backup
/$i && ! cmp -s temp.pot po.backup
/$i; then
599 echo "will update $i"
601 if test -f po.backup
/backup_
$i; then
602 test -z "$VERBOSE" ||
echo "I'm restoring $i"
603 mv po.backup
/backup_
$i po
/$i
614 # Make sure that sorting is always done the same way
622 admindir
=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'`
623 test "x$admindir" = "x$0" && admindir
=.
625 test "x$MAKE" = x
&& MAKE
=make
626 makefile_am
=Makefile.am
627 makefile_wo
=Makefile.am.wo
628 if test -f Makefile.am.
in; then
629 makefile_am
=Makefile.am.
in
630 makefile_wo
=Makefile.am.
in.wo
634 # Call script to find autoconf and friends. Uses eval since the script outputs
635 # sh-compatible code.
636 eval `$admindir/detect-autoconf.pl`
642 arg
=`echo $1 | tr .- __`
644 cvs | dist | subdir_dist | configure_in | configure_files | subdirs | \
645 cvs_clean | package_merge | package_messages | Makefile_am | acinclude_m4 | extract_messages
) $arg ;;
646 configure
) call_and_fix_autoconf
;;
647 * ) echo "Usage: cvs.sh <target>"
648 echo "Target can be one of:"
650 echo " configure.in configure.files"
651 echo " package-merge package-messages"
653 echo "Usage: anything but $1"
657 if test -f $makefile_wo; then