build: fix failure from bogus USE_XATTR definition
[coreutils.git] / bootstrap
blob3280c32dc4ba2be530e4165bb3e25c302093a792
1 #! /bin/sh
3 # Bootstrap this package from checked-out sources.
5 # Copyright (C) 2003-2010 Free Software Foundation, Inc.
7 # This program is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
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.
17 # You should have received a copy of the GNU General Public License
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
20 # Written by Paul Eggert.
22 nl='
25 # Ensure file names are sorted consistently across platforms.
26 LC_ALL=C
27 export LC_ALL
29 local_gl_dir=gl
31 # Temporary directory names.
32 bt='._bootmp'
33 bt_regex=`echo "$bt"| sed 's/\./[.]/g'`
34 bt2=${bt}2
36 usage() {
37 cat <<EOF
38 Usage: $0 [OPTION]...
39 Bootstrap this package from the checked-out sources.
41 Options:
42 --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
43 sources reside. Use this if you already
44 have gnulib sources on your machine, and
45 do not want to waste your bandwidth downloading
46 them again.
47 --copy Copy files instead of creating symbolic links.
48 --force Attempt to bootstrap even if the sources seem
49 not to have been checked out.
50 --skip-po Do not download po files.
52 If the file $0.conf exists in the same directory as this script, its
53 contents are read as shell variables to configure the bootstrap.
55 For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR
56 are honored.
58 Running without arguments will suffice in most cases.
59 EOF
62 # Configuration.
64 # Name of the Makefile.am
65 gnulib_mk=gnulib.mk
67 # List of gnulib modules needed.
68 gnulib_modules=
70 # Any gnulib files needed that are not in modules.
71 gnulib_files=
73 # A function to be called after everything else in this script.
74 # Override it via your own definition in bootstrap.conf.
75 bootstrap_epilogue() { :; }
77 # The command to download all .po files for a specified domain into
78 # a specified directory. Fill in the first %s is the domain name, and
79 # the second with the destination directory. Use rsync's -L and -r
80 # options because the latest/%s directory and the .po files within are
81 # all symlinks.
82 po_download_command_format=\
83 "rsync -Lrtvz 'translationproject.org::tp/latest/%s/' '%s'"
85 extract_package_name='
86 /^AC_INIT(/{
87 /.*,.*,.*, */{
88 s///
89 s/[][]//g
90 s/)$//
94 s/AC_INIT(\[*//
95 s/]*,.*//
96 s/^GNU //
97 y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
98 s/[^A-Za-z0-9_]/-/g
102 package=`sed -n "$extract_package_name" configure.ac` || exit
103 gnulib_name=lib$package
105 build_aux=build-aux
106 source_base=lib
107 m4_base=m4
108 doc_base=doc
109 tests_base=tests
111 # Extra files from gnulib, which override files from other sources.
112 gnulib_extra_files="
113 $build_aux/install-sh
114 $build_aux/missing
115 $build_aux/mdate-sh
116 $build_aux/texinfo.tex
117 $build_aux/depcomp
118 $build_aux/config.guess
119 $build_aux/config.sub
120 doc/INSTALL
123 # Additional gnulib-tool options to use. Use "\newline" to break lines.
124 gnulib_tool_option_extras=
126 # Other locale categories that need message catalogs.
127 EXTRA_LOCALE_CATEGORIES=
129 # Additional xgettext options to use. Use "\\\newline" to break lines.
130 XGETTEXT_OPTIONS='\\\
131 --flag=_:1:pass-c-format\\\
132 --flag=N_:1:pass-c-format\\\
133 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
136 # Package bug report address for gettext files
137 MSGID_BUGS_ADDRESS=bug-$package@gnu.org
139 # Files we don't want to import.
140 excluded_files=
142 # File that should exist in the top directory of a checked out hierarchy,
143 # but not in a distribution tarball.
144 checkout_only_file=README-hacking
146 # Whether to use copies instead of symlinks.
147 copy=false
149 # Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
150 # those files to be generated in directories like lib/, m4/, and po/.
151 # Or set it to 'auto' to make this script select which to use based
152 # on which version control system (if any) is used in the source directory.
153 vc_ignore=auto
155 # find_tool ENVVAR NAMES...
156 # -------------------------
157 # Search for a required program. Use the value of ENVVAR, if set,
158 # otherwise find the first of the NAMES that can be run (i.e.,
159 # supports --version). If found, set ENVVAR to the program name,
160 # die otherwise.
161 find_tool ()
163 # Find sha1sum, named gsha1sum on MacPorts.
164 find_tool_envvar=$1
165 shift
166 find_tool_names=$@
167 eval "find_tool_res=\$$find_tool_envvar"
168 if test x"$find_tool_res" = x; then
169 for i
171 if ($i --version </dev/null) >/dev/null 2>&1; then
172 find_tool_res=$i
173 break
175 done
176 else
177 find_tool_error_prefix="\$$find_tool_envvar: "
179 if test x"$find_tool_res" = x; then
180 echo >&2 "$0: one of these is required: $find_tool_names"
181 exit 1
183 ($find_tool_res --version </dev/null) >/dev/null 2>&1 || {
184 echo >&2 "$0: ${find_tool_error_prefix}cannot run $find_tool_res --version"
185 exit 1
187 eval "$find_tool_envvar=\$find_tool_res"
188 eval "export $find_tool_envvar"
191 # Find sha1sum, named gsha1sum on MacPorts.
192 find_tool SHA1SUM sha1sum gsha1sum
194 # Override the default configuration, if necessary.
195 # Make sure that bootstrap.conf is sourced from the current directory
196 # if we were invoked as "sh bootstrap".
197 case "$0" in
198 */*) test -r "$0.conf" && . "$0.conf" ;;
199 *) test -r "$0.conf" && . ./"$0.conf" ;;
200 esac
203 if test "$vc_ignore" = auto; then
204 vc_ignore=
205 test -d .git && vc_ignore=.gitignore
206 test -d CVS && vc_ignore="$vc_ignore .cvsignore"
209 # Translate configuration into internal form.
211 # Parse options.
213 for option
215 case $option in
216 --help)
217 usage
218 exit;;
219 --gnulib-srcdir=*)
220 GNULIB_SRCDIR=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;;
221 --skip-po)
222 SKIP_PO=t;;
223 --force)
224 checkout_only_file=;;
225 --copy)
226 copy=true;;
228 echo >&2 "$0: $option: unknown option"
229 exit 1;;
230 esac
231 done
233 if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
234 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
235 exit 1
238 # If $STR is not already on a line by itself in $FILE, insert it,
239 # sorting the new contents of the file and replacing $FILE with the result.
240 insert_sorted_if_absent() {
241 file=$1
242 str=$2
243 test -f $file || touch $file
244 echo "$str" | sort -u - $file | cmp - $file > /dev/null \
245 || echo "$str" | sort -u - $file -o $file \
246 || exit 1
249 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
250 found_aux_dir=no
251 grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
252 >/dev/null && found_aux_dir=yes
253 grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
254 >/dev/null && found_aux_dir=yes
255 if test $found_aux_dir = no; then
256 echo "$0: expected line not found in configure.ac. Add the following:" >&2
257 echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2
258 exit 1
261 # If $build_aux doesn't exist, create it now, otherwise some bits
262 # below will malfunction. If creating it, also mark it as ignored.
263 if test ! -d $build_aux; then
264 mkdir $build_aux
265 for dot_ig in x $vc_ignore; do
266 test $dot_ig = x && continue
267 insert_sorted_if_absent $dot_ig $build_aux
268 done
271 # Note this deviates from the version comparison in automake
272 # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
273 # but this should suffice as we won't be specifying old
274 # version formats or redundant trailing .0 in bootstrap.conf.
275 # If we did want full compatibility then we should probably
276 # use m4_version_compare from autoconf.
277 sort_ver() { # sort -V is not generally available
278 ver1="$1"
279 ver2="$2"
281 # split on '.' and compare each component
283 while : ; do
284 p1=$(echo "$ver1" | cut -d. -f$i)
285 p2=$(echo "$ver2" | cut -d. -f$i)
286 if [ ! "$p1" ]; then
287 echo "$1 $2"
288 break
289 elif [ ! "$p2" ]; then
290 echo "$2 $1"
291 break
292 elif [ ! "$p1" = "$p2" ]; then
293 if [ "$p1" -gt "$p2" ] 2>/dev/null; then # numeric comparison
294 echo "$2 $1"
295 elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison
296 echo "$1 $2"
297 else # numeric, then lexicographic comparison
298 lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1)
299 if [ "$lp" = "$p2" ]; then
300 echo "$1 $2"
301 else
302 echo "$2 $1"
305 break
307 i=$(($i+1))
308 done
311 get_version() {
312 app=$1
314 $app --version >/dev/null 2>&1 || return 1
316 $app --version 2>&1 |
317 sed -n '# extract version within line
318 s/.*[v ]\{1,\}\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/
319 t done
321 # extract version at start of line
322 s/^\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/
323 t done
327 :done
328 #the following essentially does s/5.005/5.5/
329 s/\.0*\([1-9]\)/.\1/g
334 check_versions() {
335 ret=0
337 while read app req_ver; do
338 # Honor $APP variables ($TAR, $AUTOCONF, etc.)
339 appvar=`echo $app | tr '[a-z]' '[A-Z]'`
340 test "$appvar" = TAR && appvar=AMTAR
341 eval "app=\${$appvar-$app}"
342 inst_ver=$(get_version $app)
343 if [ ! "$inst_ver" ]; then
344 echo "Error: '$app' not found" >&2
345 ret=1
346 elif [ ! "$req_ver" = "-" ]; then
347 latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
348 if [ ! "$latest_ver" = "$inst_ver" ]; then
349 echo "Error: '$app' version == $inst_ver is too old" >&2
350 echo " '$app' version >= $req_ver is required" >&2
351 ret=1
354 done
356 return $ret
359 print_versions() {
360 echo "Program Min_version"
361 echo "----------------------"
362 printf "$buildreq"
363 echo "----------------------"
364 # can't depend on column -t
367 if ! printf "$buildreq" | check_versions; then
368 test -f README-prereq &&
369 echo "See README-prereq for notes on obtaining these prerequisite programs:" >&2
370 echo
371 print_versions
372 exit 1
375 echo "$0: Bootstrapping from checked-out $package sources..."
377 # See if we can use gnulib's git-merge-changelog merge driver.
378 if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
379 if git config merge.merge-changelog.driver >/dev/null ; then
381 elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
382 echo "initializing git-merge-changelog driver"
383 git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
384 git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
385 else
386 echo "consider installing git-merge-changelog from gnulib"
391 cleanup_gnulib() {
392 status=$?
393 rm -fr gnulib
394 exit $status
397 git_modules_config () {
398 test -f .gitmodules && git config --file .gitmodules "$@"
401 # Get gnulib files.
403 case ${GNULIB_SRCDIR--} in
405 if git_modules_config submodule.gnulib.url >/dev/null; then
406 echo "$0: getting gnulib files..."
407 git submodule init || exit $?
408 git submodule update || exit $?
410 elif [ ! -d gnulib ]; then
411 echo "$0: getting gnulib files..."
413 trap cleanup_gnulib 1 2 13 15
415 git clone --help|grep depth > /dev/null && shallow='--depth 2' || shallow=
416 git clone $shallow git://git.sv.gnu.org/gnulib ||
417 cleanup_gnulib
419 trap - 1 2 13 15
421 GNULIB_SRCDIR=gnulib
424 # Redirect the gnulib submodule to the directory on the command line
425 # if possible.
426 if test -d "$GNULIB_SRCDIR"/.git && \
427 git_modules_config submodule.gnulib.url >/dev/null; then
428 git submodule init
429 GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
430 git_modules_config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
431 echo "$0: getting gnulib files..."
432 git submodule update || exit $?
433 GNULIB_SRCDIR=gnulib
436 esac
438 gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
439 <$gnulib_tool || exit
441 # Get translations.
443 download_po_files() {
444 subdir=$1
445 domain=$2
446 echo "$0: getting translations into $subdir for $domain..."
447 cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
448 eval "$cmd"
451 # Download .po files to $po_dir/.reference and copy only the new
452 # or modified ones into $po_dir. Also update $po_dir/LINGUAS.
453 update_po_files() {
454 # Directory containing primary .po files.
455 # Overwrite them only when we're sure a .po file is new.
456 po_dir=$1
457 domain=$2
459 # Download *.po files into this dir.
460 # Usually contains *.s1 checksum files.
461 ref_po_dir="$po_dir/.reference"
463 test -d $ref_po_dir || mkdir $ref_po_dir || return
464 download_po_files $ref_po_dir $domain \
465 && ls "$ref_po_dir"/*.po 2>/dev/null |
466 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
468 langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
469 test "$langs" = '*' && langs=x
470 for po in $langs; do
471 case $po in x) continue;; esac
472 new_po="$ref_po_dir/$po.po"
473 cksum_file="$ref_po_dir/$po.s1"
474 if ! test -f "$cksum_file" ||
475 ! test -f "$po_dir/$po.po" ||
476 ! $SHA1SUM -c --status "$cksum_file" \
477 < "$new_po" > /dev/null; then
478 echo "updated $po_dir/$po.po..."
479 cp "$new_po" "$po_dir/$po.po" \
480 && $SHA1SUM < "$new_po" > "$cksum_file"
482 done
485 case $SKIP_PO in
487 if test -d po; then
488 update_po_files po $package || exit
491 if test -d runtime-po; then
492 update_po_files runtime-po $package-runtime || exit
493 fi;;
494 esac
496 symlink_to_dir()
498 src=$1/$2
499 dst=${3-$2}
501 test -f "$src" && {
503 # If the destination directory doesn't exist, create it.
504 # This is required at least for "lib/uniwidth/cjk.h".
505 dst_dir=`dirname "$dst"`
506 if ! test -d "$dst_dir"; then
507 mkdir -p "$dst_dir"
509 # If we've just created a directory like lib/uniwidth,
510 # tell version control system(s) it's ignorable.
511 # FIXME: for now, this does only one level
512 parent=`dirname "$dst_dir"`
513 for dot_ig in x $vc_ignore; do
514 test $dot_ig = x && continue
515 ig=$parent/$dot_ig
516 insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
517 done
520 if $copy; then
522 test ! -h "$dst" || {
523 echo "$0: rm -f $dst" &&
524 rm -f "$dst"
526 } &&
527 test -f "$dst" &&
528 cmp -s "$src" "$dst" || {
529 echo "$0: cp -fp $src $dst" &&
530 cp -fp "$src" "$dst"
532 else
533 test -h "$dst" &&
534 src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
535 dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
536 test "$src_i" = "$dst_i" || {
537 dot_dots=
538 case $src in
539 /*) ;;
541 case /$dst/ in
542 *//* | */../* | */./* | /*/*/*/*/*/)
543 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
544 exit 1;;
545 /*/*/*/*/) dot_dots=../../../;;
546 /*/*/*/) dot_dots=../../;;
547 /*/*/) dot_dots=../;;
548 esac;;
549 esac
551 echo "$0: ln -fs $dot_dots$src $dst" &&
552 ln -fs "$dot_dots$src" "$dst"
558 cp_mark_as_generated()
560 cp_src=$1
561 cp_dst=$2
563 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
564 symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
565 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
566 symlink_to_dir $local_gl_dir "$cp_dst"
567 else
568 case $cp_dst in
569 *.[ch]) c1='/* '; c2=' */';;
570 *.texi) c1='@c '; c2= ;;
571 *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
572 *) c1= ; c2= ;;
573 esac
575 # If the destination directory doesn't exist, create it.
576 # This is required at least for "lib/uniwidth/cjk.h".
577 dst_dir=`dirname "$cp_dst"`
578 test -d "$dst_dir" || mkdir -p "$dst_dir"
580 if test -z "$c1"; then
581 cmp -s "$cp_src" "$cp_dst" || {
582 # Copy the file first to get proper permissions if it
583 # doesn't already exist. Then overwrite the copy.
584 echo "$0: cp -f $cp_src $cp_dst" &&
585 rm -f "$cp_dst" &&
586 cp "$cp_src" "$cp_dst-t" &&
587 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
588 mv -f "$cp_dst-t" "$cp_dst"
590 else
591 # Copy the file first to get proper permissions if it
592 # doesn't already exist. Then overwrite the copy.
593 cp "$cp_src" "$cp_dst-t" &&
595 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
596 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
597 echo '#line 1' &&
598 sed "s!$bt_regex/!!g" "$cp_src"
599 ) > $cp_dst-t &&
600 if cmp -s "$cp_dst-t" "$cp_dst"; then
601 rm -f "$cp_dst-t"
602 else
603 echo "$0: cp $cp_src $cp_dst # with edits" &&
604 mv -f "$cp_dst-t" "$cp_dst"
610 version_controlled_file() {
611 dir=$1
612 file=$2
613 found=no
614 if test -d CVS; then
615 grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
616 grep '^/[^/]*/[0-9]' > /dev/null && found=yes
617 elif test -d .git; then
618 git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
619 elif test -d .svn; then
620 svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes
621 else
622 echo "$0: no version control for $dir/$file?" >&2
624 test $found = yes
627 slurp() {
628 for dir in . `(cd $1 && find * -type d -print)`; do
629 copied=
630 sep=
631 for file in `ls -a $1/$dir`; do
632 case $file in
633 .|..) continue;;
634 .*) continue;; # FIXME: should all file names starting with "." be ignored?
635 esac
636 test -d $1/$dir/$file && continue
637 for excluded_file in $excluded_files; do
638 test "$dir/$file" = "$excluded_file" && continue 2
639 done
640 if test $file = Makefile.am; then
641 copied=$copied${sep}$gnulib_mk; sep=$nl
642 remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
643 sed "$remove_intl" $1/$dir/$file | cmp - $dir/$gnulib_mk > /dev/null || {
644 echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
645 rm -f $dir/$gnulib_mk &&
646 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
648 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
649 version_controlled_file $dir $file; then
650 echo "$0: $dir/$file overrides $1/$dir/$file"
651 else
652 copied=$copied$sep$file; sep=$nl
653 if test $file = gettext.m4; then
654 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
655 rm -f $dir/$file
656 sed '
657 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
658 AC_DEFUN([AM_INTL_SUBDIR], [
659 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
660 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
662 AC_DEFUN([gl_LOCK_EARLY], [])
663 ' $1/$dir/$file >$dir/$file
664 else
665 cp_mark_as_generated $1/$dir/$file $dir/$file
667 fi || exit
668 done
670 for dot_ig in x $vc_ignore; do
671 test $dot_ig = x && continue
672 ig=$dir/$dot_ig
673 if test -n "$copied"; then
674 insert_sorted_if_absent $ig "$copied"
675 # If an ignored file name ends with .in.h, then also add
676 # the name with just ".h". Many gnulib headers are generated,
677 # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
678 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
679 f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
680 insert_sorted_if_absent $ig "$f"
682 # For files like sys_stat.in.h and sys_time.in.h, record as
683 # ignorable the directory we might eventually create: sys/.
684 f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
685 insert_sorted_if_absent $ig "$f"
687 done
688 done
692 # Create boot temporary directories to import from gnulib and gettext.
693 rm -fr $bt $bt2 &&
694 mkdir $bt $bt2 || exit
696 # Import from gnulib.
698 gnulib_tool_options="\
699 --import\
700 --no-changelog\
701 --aux-dir $bt/$build_aux\
702 --doc-base $bt/$doc_base\
703 --lib $gnulib_name\
704 --m4-base $bt/$m4_base/\
705 --source-base $bt/$source_base/\
706 --tests-base $bt/$tests_base\
707 --local-dir $local_gl_dir\
708 $gnulib_tool_option_extras\
710 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
711 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
712 slurp $bt || exit
714 for file in $gnulib_files; do
715 symlink_to_dir "$GNULIB_SRCDIR" $file || exit
716 done
719 # Import from gettext.
720 with_gettext=yes
721 grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
722 with_gettext=no
724 if test $with_gettext = yes; then
725 echo "$0: (cd $bt2; ${AUTOPOINT-autopoint}) ..."
726 cp configure.ac $bt2 &&
727 (cd $bt2 && ${AUTOPOINT-autopoint} && rm configure.ac) &&
728 slurp $bt2 $bt || exit
730 rm -fr $bt $bt2 || exit
732 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
733 # gnulib-populated directories. Such .m4 files would cause aclocal to fail.
734 # The following requires GNU find 4.2.3 or newer. Considering the usual
735 # portability constraints of this script, that may seem a very demanding
736 # requirement, but it should be ok. Ignore any failure, which is fine,
737 # since this is only a convenience to help developers avoid the relatively
738 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
739 # between successive runs of this script.
740 find "$m4_base" "$source_base" \
741 -depth \( -name '*.m4' -o -name '*.[ch]' \) \
742 -type l -xtype l -delete > /dev/null 2>&1
744 # Reconfigure, getting other files.
746 # Skip autoheader if it's not needed.
747 grep -E '^[ ]*AC_CONFIG_HEADERS?\>' configure.ac >/dev/null ||
748 AUTOHEADER=true
750 for command in \
751 libtool \
752 "${ACLOCAL-aclocal} --force -I m4" \
753 "${AUTOCONF-autoconf} --force" \
754 "${AUTOHEADER-autoheader} --force" \
755 "${AUTOMAKE-automake} --add-missing --copy --force-missing"
757 if test "$command" = libtool; then
758 use_libtool=0
759 # We'd like to use grep -E, to see if any of LT_INIT,
760 # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
761 # but that's not portable enough (e.g., for Solaris).
762 grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
763 && use_libtool=1
764 grep '^[ ]*LT_INIT' configure.ac >/dev/null \
765 && use_libtool=1
766 test $use_libtool = 0 \
767 && continue
768 command="${LIBTOOLIZE-libtoolize} -c -f"
770 echo "$0: $command ..."
771 $command || exit
772 done
775 # Get some extra files from gnulib, overriding existing files.
776 for file in $gnulib_extra_files; do
777 case $file in
778 */INSTALL) dst=INSTALL;;
779 build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
780 *) dst=$file;;
781 esac
782 symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
783 done
785 if test $with_gettext = yes; then
786 # Create gettext configuration.
787 echo "$0: Creating po/Makevars from po/Makevars.template ..."
788 rm -f po/Makevars
789 sed '
790 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
791 /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/
792 /^XGETTEXT_OPTIONS *=/{
793 s/$/ \\/
795 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
797 ' po/Makevars.template >po/Makevars
799 if test -d runtime-po; then
800 # Similarly for runtime-po/Makevars, but not quite the same.
801 rm -f runtime-po/Makevars
802 sed '
803 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
804 /^subdir *=.*/s/=.*/= runtime-po/
805 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
806 /^XGETTEXT_OPTIONS *=/{
807 s/$/ \\/
809 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
811 ' <po/Makevars.template >runtime-po/Makevars
813 # Copy identical files from po to runtime-po.
814 (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
818 bootstrap_epilogue
820 echo "$0: done. Now you can run './configure'."