Commit | Line | Data |
---|---|---|
a3da1d95 GE |
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 | ||
9 | call_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 | ||
21 | strip_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 | ||
28 | check_autotool_versions() | |
29 | { | |
30 | AUTOCONF_VERSION=`$AUTOCONF --version | head -1` | |
31 | case $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 | ;; | |
43 | esac | |
44 | ||
45 | AUTOHEADER_VERSION=`$AUTOHEADER --version | head -1` | |
46 | case $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 | ;; | |
58 | esac | |
59 | ||
60 | AUTOMAKE_STRING=`$AUTOMAKE --version | head -1` | |
61 | case $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 | ;; | |
82 | esac | |
83 | } | |
84 | ||
85 | cvs() | |
86 | { | |
87 | check_autotool_versions | |
88 | ||
89 | ### Produce acinclude.m4 | |
90 | if 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 | |
96 | fi | |
97 | ||
98 | ### Make new subdirs and configure.in. | |
99 | ### The make calls could be optimized away here, | |
100 | ### with a little thought. | |
101 | if 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 | |
109 | fi | |
110 | ||
111 | echo "*** Creating aclocal.m4" | |
112 | $ACLOCAL || exit 1 | |
113 | echo "*** Creating configure" | |
114 | call_and_fix_autoconf | |
115 | ||
116 | if egrep "^AM_CONFIG_HEADER" configure.in >/dev/null 2>&1; then | |
117 | echo "*** Creating config.h template" | |
118 | $AUTOHEADER || exit 1 | |
119 | fi | |
120 | ||
121 | echo "*** Creating Makefile templates" | |
122 | $AUTOMAKE || exit 1 | |
123 | if test -z "$UNSERMAKE"; then | |
124 | echo "*** Postprocessing Makefile templates" | |
125 | perl -w admin/am_edit || exit 1 | |
126 | fi | |
127 | ||
128 | if egrep "^cvs-local:" $makefile_am >/dev/null; then \ | |
129 | strip_makefile | |
130 | $MAKE -f $makefile_wo cvs-local top_srcdir=. || exit 1 | |
131 | fi | |
132 | ||
133 | echo "*** Creating date/time stamp" | |
134 | touch stamp-h.in | |
135 | ||
136 | echo "*** Finished" | |
137 | echo " Don't forget to run ./configure" | |
138 | echo " If you haven't done so in a while, run ./configure --help" | |
139 | } | |
140 | ||
141 | dist() | |
142 | { | |
143 | check_autotool_versions | |
144 | ||
145 | ### | |
146 | ### First build all of the files necessary to do just "make" | |
147 | ### | |
148 | if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev/null; then | |
149 | strip_makefile | |
150 | $MAKE -f $makefile_wo top_srcdir=. ./acinclude.m4 | |
151 | fi | |
152 | if test -r configure.in.in; then | |
153 | subdirs | |
154 | configure_files | |
155 | strip_makefile | |
156 | $MAKE -f $makefile_wo top_srcdir=. ./configure.in | |
157 | fi | |
158 | $ACLOCAL | |
159 | $AUTOHEADER | |
160 | $AUTOMAKE --foreign --include-deps | |
161 | perl -w admin/am_edit | |
162 | call_and_fix_autoconf | |
163 | touch stamp-h.in | |
164 | if grep "^cvs-local:" $makefile_am >/dev/null; then | |
165 | strip_makefile | |
166 | $MAKE -f $makefile_wo cvs-local top_srcdir=. | |
167 | fi | |
168 | ||
169 | ### | |
170 | ### Then make messages | |
171 | ### | |
172 | if 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 | |
178 | fi | |
179 | if grep "^cvs-dist-local:" $makefile_am >/dev/null; then | |
180 | strip_makefile | |
181 | $MAKE -f $makefile_wo cvs-dist-local top_srcdir=. | |
182 | fi | |
183 | } | |
184 | ||
185 | subdir_dist() | |
186 | { | |
187 | $ACLOCAL | |
188 | $AUTOHEADER | |
189 | $AUTOMAKE --foreign --include-deps | |
190 | perl -w ../admin/am_edit | |
191 | call_and_fix_autoconf | |
192 | } | |
193 | ||
194 | configure_in() | |
195 | { | |
196 | rm -f configure.in configure.in.new | |
197 | kde_use_qt_param= | |
198 | test -f configure.files || { echo "need configure.files for configure.in"; exit 1; } | |
199 | cat `egrep -v "configure.in.bot" < configure.files` > configure.in.new | |
200 | echo "KDE_CREATE_SUBDIRSLIST" >> configure.in.new | |
201 | if 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 | |
207 | fi | |
208 | # echo "AC_OUTPUT( \\" >> configure.in.new | |
209 | mfs=`find . -type d -print | fgrep -v "/." | \ | |
210 | sed -e "s#\./##" -e "/^debian/d" | sort` | |
211 | for 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 | |
236 | done | |
237 | ||
238 | files=`cat configure.files` | |
239 | list=`egrep '^dnl AC_OUTPUT\(.*\)' $files | sed -e "s#^.*dnl AC_OUTPUT(\(.*\))#\1#"` | |
240 | for file in $list; do | |
241 | echo "AC_CONFIG_FILES([ $file ])" >> configure.in.new | |
242 | done | |
243 | ||
244 | if test -n "$UNSERMAKE"; then | |
245 | echo "AC_CONFIG_FILES([ MakeVars ])" >> configure.in.new | |
246 | fi | |
247 | echo "AC_OUTPUT" >> configure.in.new | |
248 | modulename= | |
249 | if 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 | |
262 | fi | |
263 | if test -z "$VERSION" || test "$VERSION" = "@VERSION@"; then | |
264 | VERSION="\"3.1.0\"" | |
265 | fi | |
266 | if 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 | ||
272 | fi | |
273 | if 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 | |
276 | fi | |
277 | sed -e "s#@MODULENAME@#$modulename#" configure.in.new | | |
278 | sed -e "s#@VERSION@#$VERSION#" > configure.in | |
279 | botfiles=`cat configure.files | egrep "configure.in.bot"` | |
280 | test -n "$botfiles" && cat $botfiles >> configure.in | |
281 | cat $admindir/configure.in.bot.end >> configure.in | |
282 | rm -f configure.in.new | |
283 | } | |
284 | ||
285 | configure_files() | |
286 | { | |
287 | admindir=NO | |
288 | for i in . .. ../.. ../../..; do | |
289 | if test -x $i/admin; then admindir=$i/admin; break; fi | |
290 | done | |
291 | rm -f configure.files | |
292 | touch configure.files | |
293 | if test -f configure.in.in && head -2 configure.in.in | grep "^#MIN_CONFIG" > /dev/null; then | |
294 | echo $admindir/configure.in.min >> configure.files | |
295 | fi | |
296 | test -f configure.in.in && echo configure.in.in >> configure.files | |
297 | list=`find . -name "configure.in.in" -o -name "configure.in.bot" | sort` | |
298 | for i in $list; do if test -f $i && test `dirname $i` != "." ; then | |
299 | echo $i >> configure.files | |
300 | fi; done | |
301 | test -f configure.in.mid && echo configure.in.mid >> configure.files | |
302 | test -f configure.in.bot && echo configure.in.bot >> configure.files | |
303 | } | |
304 | ||
305 | subdirs() | |
306 | { | |
307 | dirs= | |
308 | compilefirst=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -1` | |
309 | compilelast=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -1` | |
310 | for 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 | |
317 | done | |
318 | ||
319 | : > ./_SUBDIRS | |
320 | ||
321 | for d in $compilefirst; do | |
322 | echo $d >> ./_SUBDIRS | |
323 | done | |
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 | |
335 | done ) | tsort >> ./_SUBDIRS | |
336 | ||
337 | for d in $compilelast; do | |
338 | echo $d >> ./_SUBDIRS | |
339 | done | |
340 | ||
341 | if 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 | |
356 | fi | |
357 | if test -r subdirs && diff subdirs _SUBDIRS > /dev/null; then | |
358 | rm -f _SUBDIRS | |
359 | fi | |
360 | test -r _SUBDIRS && mv _SUBDIRS subdirs || true | |
361 | } | |
362 | ||
363 | cvs_clean() | |
364 | { | |
365 | if 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 | |
370 | fi | |
371 | perl $admindir/cvs-clean.pl | |
372 | } | |
373 | ||
374 | package_merge() | |
375 | { | |
376 | catalogs=$POFILES | |
377 | for 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 | |
389 | done | |
390 | } | |
391 | ||
392 | package_messages() | |
393 | { | |
394 | rm -rf po.backup | |
395 | mkdir po.backup | |
396 | ||
397 | for 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 | |
402 | done | |
403 | ||
404 | podir=${podir:-$PWD/po} | |
405 | files=`find . -name Makefile.am | xargs egrep -l '^messages:' ` | |
406 | dirs=`for i in $files; do echo \`dirname $i\`; done` | |
407 | tmpname="$PWD/messages.log" | |
408 | if test -z "$EXTRACTRC"; then EXTRACTRC=extractrc ; fi | |
409 | if test -z "$PREPARETIPS"; then PREPARETIPS=preparetips ; fi | |
410 | export EXTRACTRC PREPARETIPS | |
411 | ||
412 | for 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 | |
437 | done | |
438 | rm -f $tmpname | |
439 | for 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" | |
441 | done | |
442 | for 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 | |
458 | done | |
459 | rm -f temp.pot | |
460 | rm -rf po.backup | |
461 | } | |
462 | ||
463 | admindir=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'` | |
464 | test "x$admindir" = "x$0" && admindir=. | |
465 | ||
466 | test "x$MAKE" = x && MAKE=make | |
467 | makefile_am=Makefile.am | |
468 | makefile_wo=Makefile.am | |
469 | if test -f Makefile.am.in; then | |
470 | makefile_am=Makefile.am.in | |
471 | makefile_wo=Makefile.am.in.wo | |
472 | fi | |
473 | ||
474 | # Suck in the AUTOCONF detection code | |
475 | . $admindir/detect-autoconf.sh | |
476 | ||
477 | ### | |
478 | ### Main | |
479 | ### | |
480 | ||
481 | arg=`echo $1 | tr '\-.' __` | |
482 | case $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 ;; | |
493 | esac | |
494 | ||
495 | if test -f Makefile.am.in.wo; then | |
496 | rm Makefile.am.in.wo | |
497 | fi | |
498 | ||
499 | exit 0 |