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