]> git.saurik.com Git - bison.git/blame - bootstrap
Use git-version-gen for version names between releases.
[bison.git] / bootstrap
CommitLineData
01c56de4
AD
1#! /bin/sh
2
bbb44d83 3# Bootstrap this package from checked-out sources.
01c56de4 4
1cfe6375
JD
5# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation,
6# Inc.
1f65350a 7
f16b0819 8# This program is free software: you can redistribute it and/or modify
1f65350a 9# it under the terms of the GNU General Public License as published by
f16b0819
PE
10# the Free Software Foundation, either version 3 of the License, or
11# (at your option) any later version.
6d8e724d 12
1f65350a
PE
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
6d8e724d 17
1f65350a 18# You should have received a copy of the GNU General Public License
f16b0819 19# along with this program. If not, see <http://www.gnu.org/licenses/>.
1f65350a
PE
20
21# Written by Paul Eggert.
22
3b2942e6
PE
23nl='
24'
5a2baae7 25
62a9592d 26# Ensure file names are sorted consistently across platforms.
b5240ba5 27# Also, ensure diagnostics are in English, e.g., "wget --help" below.
a9f027b9
PE
28LC_ALL=C
29export LC_ALL
30
6d8e724d
PE
31local_gl_dir=gl
32
bbb44d83
PE
33# Temporary directory names.
34bt='._bootmp'
35bt_regex=`echo "$bt"| sed 's/\./[.]/g'`
36bt2=${bt}2
37
e3ddc1e3
PE
38usage() {
39 echo >&2 "\
40Usage: $0 [OPTION]...
10f429ef 41Bootstrap this package from the checked-out sources.
e3ddc1e3
PE
42
43Options:
44 --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
d7be4085
AD
45 sources reside. Use this if you already
46 have gnulib sources on your machine, and
47 do not want to waste your bandwidth downloading
48 them again.
46356ea4 49 --copy Copy files instead of creating symbolic links.
10f429ef 50 --force Attempt to bootstrap even if the sources seem
d7be4085 51 not to have been checked out.
e3ddc1e3 52 --skip-po Do not download po files.
bbb44d83 53 --cvs-user=USERNAME Set the username to use when checking out
d7be4085 54 sources from the gnulib repository.
e3ddc1e3 55
6d8e724d 56If the file bootstrap.conf exists in the current working directory, its
e3ddc1e3
PE
57contents are read as shell variables to configure the bootstrap.
58
59Running without arguments will suffice in most cases.
60"
61}
3b2942e6
PE
62
63# Configuration.
64
6d8e724d
PE
65# Name of the Makefile.am
66gnulib_mk=gnulib.mk
67
3b2942e6
PE
68# List of gnulib modules needed.
69gnulib_modules=
70
71# Any gnulib files needed that are not in modules.
72gnulib_files=
73
6d8e724d
PE
74# The command to download all .po files for a specified domain into
75# a specified directory. Fill in the first %s is the domain name, and
76# the second with the destination directory. Use rsync's -L and -r
77# options because the latest/%s directory and the .po files within are
78# all symlinks.
79po_download_command_format=\
80"rsync -Lrtvz 'translationproject.org::tp/latest/%s/' '%s'"
3b2942e6
PE
81
82extract_package_name='
83 /^AC_INIT(/{
84 /.*,.*,.*,/{
85 s///
86 s/[][]//g
87 p
88 q
89 }
90 s/AC_INIT(\[*//
91 s/]*,.*//
92 s/^GNU //
93 y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
94 s/[^A-Za-z0-9_]/-/g
95 p
96 }
97'
98package=`sed -n "$extract_package_name" configure.ac` || exit
bbb44d83 99gnulib_name=lib$package
3b2942e6 100
bbb44d83 101build_aux=build-aux
3b2942e6 102# Extra files from gnulib, which override files from other sources.
bbb44d83
PE
103gnulib_extra_files="
104 $build_aux/install-sh
105 $build_aux/missing
106 $build_aux/mdate-sh
107 $build_aux/texinfo.tex
108 $build_aux/depcomp
109 $build_aux/config.guess
110 $build_aux/config.sub
3b2942e6 111 doc/INSTALL
bbb44d83 112"
3b2942e6 113
6d8e724d
PE
114# Additional gnulib-tool options to use. Use "\newline" to break lines.
115gnulib_tool_option_extras=
116
3b2942e6
PE
117# Other locale categories that need message catalogs.
118EXTRA_LOCALE_CATEGORIES=
119
120# Additional xgettext options to use. Use "\\\newline" to break lines.
121XGETTEXT_OPTIONS='\\\
122 --flag=_:1:pass-c-format\\\
123 --flag=N_:1:pass-c-format\\\
124 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
125'
126
127# Files we don't want to import.
128excluded_files=
129
10f429ef
PE
130# File that should exist in the top directory of a checked out hierarchy,
131# but not in a distribution tarball.
bbb44d83 132checkout_only_file=README-hacking
e3ddc1e3 133
46356ea4
PE
134# Whether to use copies instead of symlinks.
135copy=false
136
6d8e724d
PE
137# Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
138# those files to be generated in directories like lib/, m4/, and po/.
139# Or set it to 'auto' to make this script select which to use based
140# on which version control system (if any) is used in the source directory.
141vc_ignore=auto
142
d7be4085
AD
143# find_tool ENVVAR NAMES...
144# -------------------------
145find_tool ()
146{
147 # Find sha1sum, named gsha1sum on MacPorts.
148 find_tool_envvar=$1
149 shift
150 if eval test x"\$$find_tool_envvar" = x; then
151 for i
152 do
153 if ($i --version </dev/null) >/dev/null 2>&1; then
154 find_tool_res=$i
155 break
156 fi
157 done
158 fi
159 if test x"$find_tool_res" = x; then
160 echo >&2 "$0: $find_tool_name is required"
161 exit 1
162 fi
163 ($find_tool_res --version </dev/null) >/dev/null 2>&1 || {
164 echo >&2 "$0: cannot run $find_tool_res --version"
165 exit 1
166 }
167 eval "$find_tool_envvar=\"$find_tool_res\""
168 eval "export $find_tool_envvar"
169}
170
171# Find sha1sum, named gsha1sum on MacPorts.
172find_tool SHA1SUM sha1sum gsha1sum
173
3b2942e6
PE
174# Override the default configuration, if necessary.
175test -r bootstrap.conf && . ./bootstrap.conf
176
6d8e724d
PE
177if test "$vc_ignore" = auto; then
178 vc_ignore=
179 test -d .git && vc_ignore=.gitignore
180 test -d CVS && vc_ignore="$vc_ignore .cvsignore"
181fi
182
3b2942e6
PE
183# Translate configuration into internal form.
184
1f65350a
PE
185# Parse options.
186
187for option
188do
189 case $option in
190 --help)
e3ddc1e3 191 usage
1f65350a
PE
192 exit;;
193 --gnulib-srcdir=*)
e23d0dd7 194 GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
1f65350a 195 --cvs-user=*)
e23d0dd7 196 CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
1f65350a
PE
197 --skip-po)
198 SKIP_PO=t;;
e3ddc1e3 199 --force)
bbb44d83 200 checkout_only_file=;;
46356ea4
PE
201 --copy)
202 copy=true;;
1f65350a
PE
203 *)
204 echo >&2 "$0: $option: unknown option"
205 exit 1;;
206 esac
207done
208
bbb44d83 209if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
10f429ef 210 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
e3ddc1e3
PE
211 exit 1
212fi
213
9aacab9a 214# If each line in $STR is not already on a line by itself in $FILE, insert it,
bbb44d83
PE
215# sorting the new contents of the file and replacing $FILE with the result.
216insert_sorted_if_absent() {
217 file=$1
218 str=$2
6d8e724d 219 test -f $file || touch $file
bbb44d83
PE
220 echo "$str" | sort -u - $file | cmp -s - $file \
221 || echo "$str" | sort -u - $file -o $file \
222 || exit 1
223}
224
9aacab9a
JD
225# Adjust $PATTERN for $VC_IGNORE_FILE and insert it with
226# insert_sorted_if_absent.
227insert_vc_ignore() {
228 vc_ignore_file="$1"
229 case $vc_ignore_file in
230 *.gitignore)
231 # A .gitignore entry that does not start with `/' applies recursively to
232 # subdirectories, so prepend `/' to every .gitignore entry.
233 pattern=`echo "$2" | sed s,^,/,`;;
234 *)
235 pattern="$2";;
236 esac
237 insert_sorted_if_absent "$vc_ignore_file" "$pattern"
238}
239
bbb44d83
PE
240# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
241found_aux_dir=no
242grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
243 >/dev/null && found_aux_dir=yes
244grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
245 >/dev/null && found_aux_dir=yes
246if test $found_aux_dir = no; then
247 echo "$0: expected line not found in configure.ac. Add the following:" >&2
6d8e724d
PE
248 echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2
249 exit 1
bbb44d83
PE
250fi
251
252# If $build_aux doesn't exist, create it now, otherwise some bits
253# below will malfunction. If creating it, also mark it as ignored.
254if test ! -d $build_aux; then
255 mkdir $build_aux
6d8e724d
PE
256 for dot_ig in x $vc_ignore; do
257 test $dot_ig = x && continue
9aacab9a 258 insert_vc_ignore $dot_ig $build_aux
bbb44d83
PE
259 done
260fi
261
262echo "$0: Bootstrapping from checked-out $package sources..."
1f65350a 263
e10a80ee
PE
264cleanup_gnulib() {
265 status=$?
266 rm -fr gnulib
267 exit $status
268}
269
1f65350a
PE
270# Get gnulib files.
271
272case ${GNULIB_SRCDIR--} in
273-)
274 if [ ! -d gnulib ]; then
275 echo "$0: getting gnulib files..."
276
26546b42
PE
277 case ${CVS_AUTH-pserver} in
278 pserver)
279 CVS_PREFIX=':pserver:anonymous@';;
1f65350a
PE
280 ssh)
281 CVS_PREFIX="$CVS_USER${CVS_USER+@}";;
282 *)
283 echo "$0: $CVS_AUTH: Unknown CVS access method" >&2
284 exit 1;;
285 esac
286
287 case $CVS_RSH in
3b2942e6 288 '') CVS_RSH=ssh; export CVS_RSH;;
1f65350a
PE
289 esac
290
e10a80ee
PE
291 trap cleanup_gnulib 1 2 13 15
292
1cfe6375 293 cvs -z3 -q -d ${CVS_PREFIX}pserver.git.sv.gnu.org:/gnulib.git co -d gnulib HEAD ||
e10a80ee 294 cleanup_gnulib
1f65350a 295
e10a80ee 296 trap - 1 2 13 15
1f65350a
PE
297 fi
298 GNULIB_SRCDIR=gnulib
299esac
300
284d8a13
PE
301gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
302<$gnulib_tool || exit
1f65350a 303
1f65350a
PE
304# Get translations.
305
6d8e724d 306download_po_files() {
5a2baae7
PE
307 subdir=$1
308 domain=$2
6d8e724d
PE
309 echo "$0: getting translations into $subdir for $domain..."
310 cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
311 eval "$cmd"
312}
5a2baae7 313
6d8e724d
PE
314# Download .po files to $po_dir/.reference and copy only the new
315# or modified ones into $po_dir. Also update $po_dir/LINGUAS.
316update_po_files() {
317 # Directory containing primary .po files.
318 # Overwrite them only when we're sure a .po file is new.
319 po_dir=$1
320 domain=$2
321
322 # Download *.po files into this dir.
323 # Usually contains *.s1 checksum files.
324 ref_po_dir="$po_dir/.reference"
325
326 test -d $ref_po_dir || mkdir $ref_po_dir || return
327 download_po_files $ref_po_dir $domain \
328 && ls "$ref_po_dir"/*.po 2>/dev/null |
329 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
330
331 for po in `cd $ref_po_dir && echo *.po|sed 's/\.po//g'`; do
332 new_po="$ref_po_dir/$po.po"
333 cksum_file="$ref_po_dir/$po.s1"
d7be4085 334 if ! "$SHA1SUM" -c --status "$cksum_file" < "$new_po" > /dev/null; then
6d8e724d 335 echo "updated $po_dir/$po.po..."
d7be4085 336 cp "$new_po" "$po_dir/$po.po" && "$SHA1SUM" < "$new_po" > "$cksum_file"
6d8e724d
PE
337 fi
338 done
5a2baae7
PE
339}
340
1f65350a
PE
341case $SKIP_PO in
342'')
bbb44d83 343 if test -d po; then
6d8e724d 344 update_po_files po $package || exit
bbb44d83 345 fi
f7ab6a50 346
3b2942e6 347 if test -d runtime-po; then
6d8e724d 348 update_po_files runtime-po $package-runtime || exit
3b2942e6 349 fi;;
1f65350a
PE
350esac
351
1cfe6375
JD
352check_dst_dir()
353{
354 dst=$1
355 # If the destination directory doesn't exist, create it.
356 # This is required at least for "lib/uniwidth/cjk.h".
357 dst_dir=`dirname "$dst"`
358 if ! test -d "$dst_dir"; then
359 mkdir -p "$dst_dir"
360
361 # If we've just created a directory like lib/uniwidth,
362 # tell version control system(s) it's ignorable.
363 # FIXME: for now, this does only one level
364 parent=`dirname "$dst_dir"`
365 for dot_ig in x $vc_ignore; do
366 test $dot_ig = x && continue
367 ig=$parent/$dot_ig
9aacab9a 368 insert_vc_ignore $ig `echo "$dst_dir"|sed 's,.*/,,'`
1cfe6375
JD
369 done
370 fi
371}
372
6d8e724d 373symlink_to_dir()
e70f46d1 374{
6d8e724d
PE
375 src=$1/$2
376 dst=${3-$2}
e70f46d1
PE
377
378 test -f "$src" && {
6d8e724d 379
1cfe6375 380 check_dst_dir "$dst"
6d8e724d 381
46356ea4
PE
382 if $copy; then
383 {
384 test ! -h "$dst" || {
385 echo "$0: rm -f $dst" &&
386 rm -f "$dst"
387 }
388 } &&
389 test -f "$dst" &&
390 cmp -s "$src" "$dst" || {
391 echo "$0: cp -fp $src $dst" &&
392 cp -fp "$src" "$dst"
393 }
394 else
395 test -h "$dst" &&
396 src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
397 dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
398 test "$src_i" = "$dst_i" || {
399 dot_dots=
400 case $src in
401 /*) ;;
402 *)
403 case /$dst/ in
404 *//* | */../* | */./* | /*/*/*/*/*/)
405 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
406 exit 1;;
407 /*/*/*/*/) dot_dots=../../../;;
408 /*/*/*/) dot_dots=../../;;
409 /*/*/) dot_dots=../;;
410 esac;;
411 esac
412
413 echo "$0: ln -fs $dot_dots$src $dst" &&
414 ln -fs "$dot_dots$src" "$dst"
415 }
416 fi
e70f46d1
PE
417 }
418}
419
3b2942e6
PE
420cp_mark_as_generated()
421{
422 cp_src=$1
423 cp_dst=$2
1f65350a 424
e70f46d1 425 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
6d8e724d
PE
426 symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
427 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
428 symlink_to_dir $local_gl_dir "$cp_dst"
e70f46d1
PE
429 else
430 case $cp_dst in
431 *.[ch]) c1='/* '; c2=' */';;
432 *.texi) c1='@c '; c2= ;;
433 *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
434 *) c1= ; c2= ;;
435 esac
1f65350a 436
e70f46d1
PE
437 if test -z "$c1"; then
438 cmp -s "$cp_src" "$cp_dst" || {
439 echo "$0: cp -f $cp_src $cp_dst" &&
bbb44d83
PE
440 rm -f "$cp_dst" &&
441 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst"
e70f46d1
PE
442 }
443 else
1cfe6375 444 check_dst_dir "$cp_dst"
e70f46d1
PE
445 # Copy the file first to get proper permissions if it
446 # doesn't already exist. Then overwrite the copy.
447 cp "$cp_src" "$cp_dst-t" &&
448 (
449 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
450 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
bbb44d83 451 sed "s!$bt_regex/!!g" "$cp_src"
e70f46d1
PE
452 ) > $cp_dst-t &&
453 if cmp -s "$cp_dst-t" "$cp_dst"; then
454 rm -f "$cp_dst-t"
455 else
456 echo "$0: cp $cp_src $cp_dst # with edits" &&
457 mv -f "$cp_dst-t" "$cp_dst"
458 fi
459 fi
460 fi
3b2942e6 461}
1f65350a 462
10f429ef
PE
463version_controlled_file() {
464 dir=$1
465 file=$2
466 found=no
467 if test -d CVS; then
468 grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
469 grep '^/[^/]*/[0-9]' > /dev/null && found=yes
470 elif test -d .git; then
471 git-rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
472 else
473 echo "$0: no version control for $dir/$file?" >&2
474 fi
475 test $found = yes
476}
477
3b2942e6
PE
478slurp() {
479 for dir in . `(cd $1 && find * -type d -print)`; do
480 copied=
481 sep=
6d8e724d
PE
482 for file in `ls -a $1/$dir`; do
483 case $file in
484 .|..) continue;;
485 .*) continue;; # FIXME: should all file names starting with "." be ignored?
486 esac
487 test -d $1/$dir/$file && continue
3b2942e6
PE
488 for excluded_file in $excluded_files; do
489 test "$dir/$file" = "$excluded_file" && continue 2
490 done
491 if test $file = Makefile.am; then
d7be4085 492 copied=$copied${sep}$gnulib_mk; sep=$nl
bbb44d83 493 remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
d7be4085 494 sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/$gnulib_mk || {
6d8e724d
PE
495 echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
496 rm -f $dir/$gnulib_mk &&
497 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
e70f46d1
PE
498 }
499 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
10f429ef 500 version_controlled_file $dir $file; then
3b2942e6
PE
501 echo "$0: $dir/$file overrides $1/$dir/$file"
502 else
503 copied=$copied$sep$file; sep=$nl
504 if test $file = gettext.m4; then
505 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
506 rm -f $dir/$file
507 sed '
508 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
509 AC_DEFUN([AM_INTL_SUBDIR], [
510 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
511 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
512 $a\
513 AC_DEFUN([gl_LOCK_EARLY], [])
514 ' $1/$dir/$file >$dir/$file
515 else
3b2942e6
PE
516 cp_mark_as_generated $1/$dir/$file $dir/$file
517 fi
518 fi || exit
519 done
520
6d8e724d
PE
521 for dot_ig in x $vc_ignore; do
522 test $dot_ig = x && continue
5691bf57 523 ig=$dir/$dot_ig
6d8e724d 524 if test -n "$copied"; then
9aacab9a 525 insert_vc_ignore $ig "$copied"
bbb44d83
PE
526 # If an ignored file name ends with _.h, then also add
527 # the name with just ".h". Many gnulib headers are generated,
528 # e.g., stdint_.h -> stdint.h, dirent_.h ->..., etc.
6d8e724d
PE
529 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
530 f=`echo "$copied"|sed 's/_\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
9aacab9a 531 insert_vc_ignore $ig "$f"
6d8e724d
PE
532
533 # For files like sys_stat_.h and sys_time_.h, record as
534 # ignorable the directory we might eventually create: sys/.
535 f=`echo "$copied"|sed 's/sys_.*_\.h$/sys/'`
9aacab9a 536 insert_vc_ignore $ig "$f"
5691bf57
PE
537 fi
538 done
3b2942e6
PE
539 done
540}
1f65350a
PE
541
542
3b2942e6 543# Create boot temporary directories to import from gnulib and gettext.
3b2942e6
PE
544rm -fr $bt $bt2 &&
545mkdir $bt $bt2 || exit
546
547# Import from gnulib.
548
549gnulib_tool_options="\
550 --import\
551 --no-changelog\
bbb44d83 552 --aux-dir $bt/$build_aux\
3b2942e6 553 --doc-base $bt/doc\
bbb44d83 554 --lib $gnulib_name\
3b2942e6
PE
555 --m4-base $bt/m4/\
556 --source-base $bt/lib/\
557 --tests-base $bt/tests\
6d8e724d
PE
558 --local-dir $local_gl_dir\
559$gnulib_tool_option_extras\
3b2942e6
PE
560"
561echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
562$gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
563slurp $bt || exit
564
565for file in $gnulib_files; do
6d8e724d 566 symlink_to_dir "$GNULIB_SRCDIR" $file || exit
3b2942e6 567done
1f65350a 568
e23d0dd7 569
3b2942e6 570# Import from gettext.
bbb44d83
PE
571with_gettext=yes
572grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
573 with_gettext=no
62a9592d 574
bbb44d83
PE
575if test $with_gettext = yes; then
576 echo "$0: (cd $bt2; autopoint) ..."
577 cp configure.ac $bt2 &&
578 (cd $bt2 && autopoint && rm configure.ac) &&
579 slurp $bt2 $bt || exit
b4068c7c 580
bbb44d83
PE
581 rm -fr $bt $bt2 || exit
582fi
3b2942e6 583
6d8e724d
PE
584# Coreutils is unusual in that it generates some of its test-related
585# Makefile.am files. That must be done before invoking automake.
586mam_template=tests/Makefile.am.in
587if test -f $mam_template; then
588 PERL=perl
589 for tool in cut head join pr sort tac tail test tr uniq wc; do
590 m=tests/$tool/Makefile.am
591 t=${m}t
592 rm -f $m $t
593 sed -n '1,/^##test-files-begin/p' $mam_template > $t
594 echo "x = $tool" >> $t
595 srcdir=tests/$tool
596 $PERL -I$srcdir -w -- tests/mk-script $srcdir --list >> $t
597 sed -n '/^##test-files-end/,$p' $mam_template >> $t
598 chmod -w $t
599 mv $t $m
600 done
601fi
3b2942e6 602
8fa36911
JD
603# FIXME: Gnulib should be patched to add "/" in front of .gitignore entries
604# instead. Anyway, this hack must be done before invoking autoconf so that
605# build-aux/git-version-gen doesn't think the version is dirty because
606# .gitignore isn't committed.
607grep -v '^GNUmakefile$' .gitignore > .gitignore~ && mv .gitignore~ .gitignore
608
3b2942e6 609# Reconfigure, getting other files.
62a9592d
PE
610
611for command in \
bbb44d83 612 libtool \
62a9592d
PE
613 'aclocal --force -I m4' \
614 'autoconf --force' \
615 'autoheader --force' \
616 'automake --add-missing --copy --force-missing';
617do
bbb44d83
PE
618 if test "$command" = libtool; then
619 grep '^[ ]*AM_PROG_LIBTOOL\>' configure.ac >/dev/null ||
620 continue
621 command='libtoolize -c -f'
622 fi
62a9592d
PE
623 echo "$0: $command ..."
624 $command || exit
625done
626
627
3b2942e6 628# Get some extra files from gnulib, overriding existing files.
3b2942e6 629for file in $gnulib_extra_files; do
3b2942e6 630 case $file in
e70f46d1 631 */INSTALL) dst=INSTALL;;
6d8e724d 632 build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
e70f46d1 633 *) dst=$file;;
3b2942e6 634 esac
6d8e724d 635 symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
3b2942e6
PE
636done
637
bbb44d83
PE
638if test $with_gettext = yes; then
639 # Create gettext configuration.
640 echo "$0: Creating po/Makevars from po/Makevars.template ..."
641 rm -f po/Makevars
3b2942e6 642 sed '
bbb44d83
PE
643 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
644 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
645 /^XGETTEXT_OPTIONS *=/{
646 s/$/ \\/
647 a\
648 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
649 }
650 ' po/Makevars.template >po/Makevars
3b2942e6 651
bbb44d83
PE
652 if test -d runtime-po; then
653 # Similarly for runtime-po/Makevars, but not quite the same.
654 rm -f runtime-po/Makevars
655 sed '
656 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
657 /^subdir *=.*/s/=.*/= runtime-po/
658 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
659 /^XGETTEXT_OPTIONS *=/{
660 s/$/ \\/
661 a\
662 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
663 }
664 ' <po/Makevars.template >runtime-po/Makevars
665
666 # Copy identical files from po to runtime-po.
667 (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
668 fi
3b2942e6 669fi
1f65350a
PE
670
671echo "$0: done. Now you can run './configure'."