]> git.saurik.com Git - bison.git/blame - bootstrap
bootstrap: --help to stdout.
[bison.git] / bootstrap
CommitLineData
01c56de4
AD
1#! /bin/sh
2
bbb44d83 3# Bootstrap this package from checked-out sources.
01c56de4 4
f7e241f4
AD
5# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
6# Free Software Foundation, 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 38usage() {
78f65418 39 cat <<EOF
e3ddc1e3 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.
78f65418 60EOF
e3ddc1e3 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.
f7e241f4 132checkout_only_file=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{
d7be4085
AD
147 find_tool_envvar=$1
148 shift
070e6509 149 find_tool_name=$@
d7be4085
AD
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
070e6509 160 echo >&2 "$0: one of these is required: $find_tool_names"
d7be4085
AD
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
fee2ed87
PB
270# See if we can use gnulib's git-merge-changelog merge driver.
271
272if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
273 if git config merge.merge-changelog.driver >/dev/null ; then
274 :
275 elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
276 echo "initializing git-merge-changelog driver"
277 git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
278 git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
279 else
280 echo "consider installing git-merge-changelog from gnulib"
281 fi
282fi
283
1f65350a
PE
284# Get gnulib files.
285
286case ${GNULIB_SRCDIR--} in
287-)
288 if [ ! -d gnulib ]; then
289 echo "$0: getting gnulib files..."
290
26546b42
PE
291 case ${CVS_AUTH-pserver} in
292 pserver)
293 CVS_PREFIX=':pserver:anonymous@';;
1f65350a
PE
294 ssh)
295 CVS_PREFIX="$CVS_USER${CVS_USER+@}";;
296 *)
297 echo "$0: $CVS_AUTH: Unknown CVS access method" >&2
298 exit 1;;
299 esac
300
301 case $CVS_RSH in
3b2942e6 302 '') CVS_RSH=ssh; export CVS_RSH;;
1f65350a
PE
303 esac
304
e10a80ee
PE
305 trap cleanup_gnulib 1 2 13 15
306
1cfe6375 307 cvs -z3 -q -d ${CVS_PREFIX}pserver.git.sv.gnu.org:/gnulib.git co -d gnulib HEAD ||
e10a80ee 308 cleanup_gnulib
1f65350a 309
e10a80ee 310 trap - 1 2 13 15
1f65350a
PE
311 fi
312 GNULIB_SRCDIR=gnulib
313esac
314
284d8a13
PE
315gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
316<$gnulib_tool || exit
1f65350a 317
1f65350a
PE
318# Get translations.
319
6d8e724d 320download_po_files() {
5a2baae7
PE
321 subdir=$1
322 domain=$2
6d8e724d
PE
323 echo "$0: getting translations into $subdir for $domain..."
324 cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
325 eval "$cmd"
326}
5a2baae7 327
6d8e724d
PE
328# Download .po files to $po_dir/.reference and copy only the new
329# or modified ones into $po_dir. Also update $po_dir/LINGUAS.
330update_po_files() {
331 # Directory containing primary .po files.
332 # Overwrite them only when we're sure a .po file is new.
333 po_dir=$1
334 domain=$2
335
336 # Download *.po files into this dir.
337 # Usually contains *.s1 checksum files.
338 ref_po_dir="$po_dir/.reference"
339
340 test -d $ref_po_dir || mkdir $ref_po_dir || return
341 download_po_files $ref_po_dir $domain \
342 && ls "$ref_po_dir"/*.po 2>/dev/null |
343 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
344
345 for po in `cd $ref_po_dir && echo *.po|sed 's/\.po//g'`; do
346 new_po="$ref_po_dir/$po.po"
347 cksum_file="$ref_po_dir/$po.s1"
d7be4085 348 if ! "$SHA1SUM" -c --status "$cksum_file" < "$new_po" > /dev/null; then
6d8e724d 349 echo "updated $po_dir/$po.po..."
d7be4085 350 cp "$new_po" "$po_dir/$po.po" && "$SHA1SUM" < "$new_po" > "$cksum_file"
6d8e724d
PE
351 fi
352 done
5a2baae7
PE
353}
354
1f65350a
PE
355case $SKIP_PO in
356'')
bbb44d83 357 if test -d po; then
6d8e724d 358 update_po_files po $package || exit
bbb44d83 359 fi
f7ab6a50 360
3b2942e6 361 if test -d runtime-po; then
6d8e724d 362 update_po_files runtime-po $package-runtime || exit
3b2942e6 363 fi;;
1f65350a
PE
364esac
365
1cfe6375
JD
366check_dst_dir()
367{
368 dst=$1
369 # If the destination directory doesn't exist, create it.
370 # This is required at least for "lib/uniwidth/cjk.h".
371 dst_dir=`dirname "$dst"`
372 if ! test -d "$dst_dir"; then
373 mkdir -p "$dst_dir"
374
375 # If we've just created a directory like lib/uniwidth,
376 # tell version control system(s) it's ignorable.
377 # FIXME: for now, this does only one level
378 parent=`dirname "$dst_dir"`
379 for dot_ig in x $vc_ignore; do
380 test $dot_ig = x && continue
381 ig=$parent/$dot_ig
9aacab9a 382 insert_vc_ignore $ig `echo "$dst_dir"|sed 's,.*/,,'`
1cfe6375
JD
383 done
384 fi
385}
386
6d8e724d 387symlink_to_dir()
e70f46d1 388{
6d8e724d
PE
389 src=$1/$2
390 dst=${3-$2}
e70f46d1
PE
391
392 test -f "$src" && {
6d8e724d 393
1cfe6375 394 check_dst_dir "$dst"
6d8e724d 395
46356ea4
PE
396 if $copy; then
397 {
398 test ! -h "$dst" || {
399 echo "$0: rm -f $dst" &&
400 rm -f "$dst"
401 }
402 } &&
403 test -f "$dst" &&
404 cmp -s "$src" "$dst" || {
405 echo "$0: cp -fp $src $dst" &&
406 cp -fp "$src" "$dst"
407 }
408 else
409 test -h "$dst" &&
410 src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
411 dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
412 test "$src_i" = "$dst_i" || {
413 dot_dots=
414 case $src in
415 /*) ;;
416 *)
417 case /$dst/ in
418 *//* | */../* | */./* | /*/*/*/*/*/)
419 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
420 exit 1;;
421 /*/*/*/*/) dot_dots=../../../;;
422 /*/*/*/) dot_dots=../../;;
423 /*/*/) dot_dots=../;;
424 esac;;
425 esac
426
427 echo "$0: ln -fs $dot_dots$src $dst" &&
428 ln -fs "$dot_dots$src" "$dst"
429 }
430 fi
e70f46d1
PE
431 }
432}
433
3b2942e6
PE
434cp_mark_as_generated()
435{
436 cp_src=$1
437 cp_dst=$2
1f65350a 438
e70f46d1 439 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
6d8e724d
PE
440 symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
441 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
442 symlink_to_dir $local_gl_dir "$cp_dst"
e70f46d1
PE
443 else
444 case $cp_dst in
445 *.[ch]) c1='/* '; c2=' */';;
446 *.texi) c1='@c '; c2= ;;
447 *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
448 *) c1= ; c2= ;;
449 esac
1f65350a 450
e70f46d1
PE
451 if test -z "$c1"; then
452 cmp -s "$cp_src" "$cp_dst" || {
453 echo "$0: cp -f $cp_src $cp_dst" &&
bbb44d83
PE
454 rm -f "$cp_dst" &&
455 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst"
e70f46d1
PE
456 }
457 else
1cfe6375 458 check_dst_dir "$cp_dst"
e70f46d1
PE
459 # Copy the file first to get proper permissions if it
460 # doesn't already exist. Then overwrite the copy.
461 cp "$cp_src" "$cp_dst-t" &&
462 (
463 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
464 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
bbb44d83 465 sed "s!$bt_regex/!!g" "$cp_src"
e70f46d1
PE
466 ) > $cp_dst-t &&
467 if cmp -s "$cp_dst-t" "$cp_dst"; then
468 rm -f "$cp_dst-t"
469 else
470 echo "$0: cp $cp_src $cp_dst # with edits" &&
471 mv -f "$cp_dst-t" "$cp_dst"
472 fi
473 fi
474 fi
3b2942e6 475}
1f65350a 476
10f429ef
PE
477version_controlled_file() {
478 dir=$1
479 file=$2
480 found=no
481 if test -d CVS; then
482 grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
483 grep '^/[^/]*/[0-9]' > /dev/null && found=yes
484 elif test -d .git; then
485 git-rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
486 else
487 echo "$0: no version control for $dir/$file?" >&2
488 fi
489 test $found = yes
490}
491
3b2942e6
PE
492slurp() {
493 for dir in . `(cd $1 && find * -type d -print)`; do
494 copied=
495 sep=
6d8e724d
PE
496 for file in `ls -a $1/$dir`; do
497 case $file in
498 .|..) continue;;
499 .*) continue;; # FIXME: should all file names starting with "." be ignored?
500 esac
501 test -d $1/$dir/$file && continue
3b2942e6
PE
502 for excluded_file in $excluded_files; do
503 test "$dir/$file" = "$excluded_file" && continue 2
504 done
505 if test $file = Makefile.am; then
d7be4085 506 copied=$copied${sep}$gnulib_mk; sep=$nl
bbb44d83 507 remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
feda5527
AD
508 echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..."
509 rm -f $dir/$gnulib_mk
510 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
511 etc/prefix-gnulib-mk $dir/$gnulib_mk
e70f46d1 512 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
10f429ef 513 version_controlled_file $dir $file; then
3b2942e6
PE
514 echo "$0: $dir/$file overrides $1/$dir/$file"
515 else
516 copied=$copied$sep$file; sep=$nl
517 if test $file = gettext.m4; then
518 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
519 rm -f $dir/$file
520 sed '
521 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
522 AC_DEFUN([AM_INTL_SUBDIR], [
523 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
524 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
525 $a\
526 AC_DEFUN([gl_LOCK_EARLY], [])
527 ' $1/$dir/$file >$dir/$file
528 else
3b2942e6
PE
529 cp_mark_as_generated $1/$dir/$file $dir/$file
530 fi
531 fi || exit
532 done
533
6d8e724d
PE
534 for dot_ig in x $vc_ignore; do
535 test $dot_ig = x && continue
5691bf57 536 ig=$dir/$dot_ig
6d8e724d 537 if test -n "$copied"; then
9aacab9a 538 insert_vc_ignore $ig "$copied"
bbb44d83
PE
539 # If an ignored file name ends with _.h, then also add
540 # the name with just ".h". Many gnulib headers are generated,
541 # e.g., stdint_.h -> stdint.h, dirent_.h ->..., etc.
6d8e724d
PE
542 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
543 f=`echo "$copied"|sed 's/_\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
9aacab9a 544 insert_vc_ignore $ig "$f"
6d8e724d
PE
545
546 # For files like sys_stat_.h and sys_time_.h, record as
547 # ignorable the directory we might eventually create: sys/.
548 f=`echo "$copied"|sed 's/sys_.*_\.h$/sys/'`
9aacab9a 549 insert_vc_ignore $ig "$f"
5691bf57
PE
550 fi
551 done
3b2942e6
PE
552 done
553}
1f65350a
PE
554
555
3b2942e6 556# Create boot temporary directories to import from gnulib and gettext.
3b2942e6
PE
557rm -fr $bt $bt2 &&
558mkdir $bt $bt2 || exit
559
560# Import from gnulib.
561
562gnulib_tool_options="\
563 --import\
564 --no-changelog\
bbb44d83 565 --aux-dir $bt/$build_aux\
3b2942e6 566 --doc-base $bt/doc\
bbb44d83 567 --lib $gnulib_name\
3b2942e6
PE
568 --m4-base $bt/m4/\
569 --source-base $bt/lib/\
570 --tests-base $bt/tests\
6d8e724d
PE
571 --local-dir $local_gl_dir\
572$gnulib_tool_option_extras\
3b2942e6
PE
573"
574echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
575$gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
576slurp $bt || exit
577
578for file in $gnulib_files; do
6d8e724d 579 symlink_to_dir "$GNULIB_SRCDIR" $file || exit
3b2942e6 580done
1f65350a 581
e23d0dd7 582
3b2942e6 583# Import from gettext.
bbb44d83
PE
584with_gettext=yes
585grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
586 with_gettext=no
62a9592d 587
bbb44d83
PE
588if test $with_gettext = yes; then
589 echo "$0: (cd $bt2; autopoint) ..."
590 cp configure.ac $bt2 &&
591 (cd $bt2 && autopoint && rm configure.ac) &&
592 slurp $bt2 $bt || exit
b4068c7c 593
bbb44d83
PE
594 rm -fr $bt $bt2 || exit
595fi
3b2942e6 596
6d8e724d
PE
597# Coreutils is unusual in that it generates some of its test-related
598# Makefile.am files. That must be done before invoking automake.
599mam_template=tests/Makefile.am.in
600if test -f $mam_template; then
601 PERL=perl
602 for tool in cut head join pr sort tac tail test tr uniq wc; do
603 m=tests/$tool/Makefile.am
604 t=${m}t
605 rm -f $m $t
606 sed -n '1,/^##test-files-begin/p' $mam_template > $t
607 echo "x = $tool" >> $t
608 srcdir=tests/$tool
609 $PERL -I$srcdir -w -- tests/mk-script $srcdir --list >> $t
610 sed -n '/^##test-files-end/,$p' $mam_template >> $t
611 chmod -w $t
612 mv $t $m
613 done
614fi
3b2942e6
PE
615
616# Reconfigure, getting other files.
62a9592d
PE
617
618for command in \
bbb44d83 619 libtool \
62a9592d
PE
620 'aclocal --force -I m4' \
621 'autoconf --force' \
622 'autoheader --force' \
623 'automake --add-missing --copy --force-missing';
624do
bbb44d83
PE
625 if test "$command" = libtool; then
626 grep '^[ ]*AM_PROG_LIBTOOL\>' configure.ac >/dev/null ||
627 continue
628 command='libtoolize -c -f'
629 fi
62a9592d
PE
630 echo "$0: $command ..."
631 $command || exit
632done
633
634
3b2942e6 635# Get some extra files from gnulib, overriding existing files.
3b2942e6 636for file in $gnulib_extra_files; do
3b2942e6 637 case $file in
e70f46d1 638 */INSTALL) dst=INSTALL;;
6d8e724d 639 build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
e70f46d1 640 *) dst=$file;;
3b2942e6 641 esac
6d8e724d 642 symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
3b2942e6
PE
643done
644
bbb44d83
PE
645if test $with_gettext = yes; then
646 # Create gettext configuration.
647 echo "$0: Creating po/Makevars from po/Makevars.template ..."
648 rm -f po/Makevars
3b2942e6 649 sed '
bbb44d83
PE
650 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
651 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
652 /^XGETTEXT_OPTIONS *=/{
653 s/$/ \\/
654 a\
655 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
656 }
657 ' po/Makevars.template >po/Makevars
3b2942e6 658
bbb44d83
PE
659 if test -d runtime-po; then
660 # Similarly for runtime-po/Makevars, but not quite the same.
661 rm -f runtime-po/Makevars
662 sed '
663 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
664 /^subdir *=.*/s/=.*/= runtime-po/
665 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
666 /^XGETTEXT_OPTIONS *=/{
667 s/$/ \\/
668 a\
669 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
670 }
671 ' <po/Makevars.template >runtime-po/Makevars
672
673 # Copy identical files from po to runtime-po.
674 (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
675 fi
3b2942e6 676fi
1f65350a
PE
677
678echo "$0: done. Now you can run './configure'."