maint: change spelling in comments: s/filesystem/file system/
[gzip.git] / bootstrap
blobb6dce12ed71d88da5ab3f622148b491319da3fe1
1 #! /bin/sh
3 # Bootstrap this package from checked-out sources.
5 # Copyright (C) 2003-2009 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 # 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.
78 po_download_command_format=\
79 "rsync -Lrtvz 'translationproject.org::tp/latest/%s/' '%s'"
81 extract_package_name='
82 /^AC_INIT(/{
83 /.*,.*,.*, */{
84 s///
85 s/[][]//g
86 s/)$//
90 s/AC_INIT(\[*//
91 s/]*,.*//
92 s/^GNU //
93 y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
94 s/[^A-Za-z0-9_]/-/g
98 package=`sed -n "$extract_package_name" configure.ac` || exit
99 gnulib_name=lib$package
101 build_aux=build-aux
102 source_base=lib
103 m4_base=m4
104 doc_base=doc
105 tests_base=tests
107 # Extra files from gnulib, which override files from other sources.
108 gnulib_extra_files="
109 $build_aux/install-sh
110 $build_aux/missing
111 $build_aux/mdate-sh
112 $build_aux/texinfo.tex
113 $build_aux/depcomp
114 $build_aux/config.guess
115 $build_aux/config.sub
116 doc/INSTALL
119 # Additional gnulib-tool options to use. Use "\newline" to break lines.
120 gnulib_tool_option_extras=
122 # Other locale categories that need message catalogs.
123 EXTRA_LOCALE_CATEGORIES=
125 # Additional xgettext options to use. Use "\\\newline" to break lines.
126 XGETTEXT_OPTIONS='\\\
127 --flag=_:1:pass-c-format\\\
128 --flag=N_:1:pass-c-format\\\
129 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
132 # Package bug report address for gettext files
133 MSGID_BUGS_ADDRESS=bug-$package@gnu.org
135 # Files we don't want to import.
136 excluded_files=
138 # File that should exist in the top directory of a checked out hierarchy,
139 # but not in a distribution tarball.
140 checkout_only_file=README-hacking
142 # Whether to use copies instead of symlinks.
143 copy=false
145 # Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
146 # those files to be generated in directories like lib/, m4/, and po/.
147 # Or set it to 'auto' to make this script select which to use based
148 # on which version control system (if any) is used in the source directory.
149 vc_ignore=auto
151 # find_tool ENVVAR NAMES...
152 # -------------------------
153 # Search for a required program. Use the value of ENVVAR, if set,
154 # otherwise find the first of the NAMES that can be run (i.e.,
155 # supports --version). If found, set ENVVAR to the program name,
156 # die otherwise.
157 find_tool ()
159 # Find sha1sum, named gsha1sum on MacPorts.
160 find_tool_envvar=$1
161 shift
162 find_tool_names=$@
163 eval "find_tool_res=\$$find_tool_envvar"
164 if test x"$find_tool_res" = x; then
165 for i
167 if ($i --version </dev/null) >/dev/null 2>&1; then
168 find_tool_res=$i
169 break
171 done
172 else
173 find_tool_error_prefix="\$$find_tool_envvar: "
175 if test x"$find_tool_res" = x; then
176 echo >&2 "$0: one of these is required: $find_tool_names"
177 exit 1
179 ($find_tool_res --version </dev/null) >/dev/null 2>&1 || {
180 echo >&2 "$0: ${find_tool_error_prefix}cannot run $find_tool_res --version"
181 exit 1
183 eval "$find_tool_envvar=\$find_tool_res"
184 eval "export $find_tool_envvar"
187 # Find sha1sum, named gsha1sum on MacPorts.
188 find_tool SHA1SUM sha1sum gsha1sum
190 # Override the default configuration, if necessary.
191 # Make sure that bootstrap.conf is sourced from the current directory
192 # if we were invoked as "sh bootstrap".
193 case "$0" in
194 */*) test -r "$0.conf" && . "$0.conf" ;;
195 *) test -r "$0.conf" && . ./"$0.conf" ;;
196 esac
199 if test "$vc_ignore" = auto; then
200 vc_ignore=
201 test -d .git && vc_ignore=.gitignore
202 test -d CVS && vc_ignore="$vc_ignore .cvsignore"
205 # Translate configuration into internal form.
207 # Parse options.
209 for option
211 case $option in
212 --help)
213 usage
214 exit;;
215 --gnulib-srcdir=*)
216 GNULIB_SRCDIR=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;;
217 --skip-po)
218 SKIP_PO=t;;
219 --force)
220 checkout_only_file=;;
221 --copy)
222 copy=true;;
224 echo >&2 "$0: $option: unknown option"
225 exit 1;;
226 esac
227 done
229 if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
230 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
231 exit 1
234 # If $STR is not already on a line by itself in $FILE, insert it,
235 # sorting the new contents of the file and replacing $FILE with the result.
236 insert_sorted_if_absent() {
237 file=$1
238 str=$2
239 test -f $file || touch $file
240 echo "$str" | sort -u - $file | cmp - $file > /dev/null \
241 || echo "$str" | sort -u - $file -o $file \
242 || exit 1
245 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
246 found_aux_dir=no
247 grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
248 >/dev/null && found_aux_dir=yes
249 grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
250 >/dev/null && found_aux_dir=yes
251 if test $found_aux_dir = no; then
252 echo "$0: expected line not found in configure.ac. Add the following:" >&2
253 echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2
254 exit 1
257 # If $build_aux doesn't exist, create it now, otherwise some bits
258 # below will malfunction. If creating it, also mark it as ignored.
259 if test ! -d $build_aux; then
260 mkdir $build_aux
261 for dot_ig in x $vc_ignore; do
262 test $dot_ig = x && continue
263 insert_sorted_if_absent $dot_ig $build_aux
264 done
267 # Note this deviates from the version comparison in automake
268 # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
269 # but this should suffice as we won't be specifying old
270 # version formats or redundant trailing .0 in bootstrap.conf.
271 # If we did want full compatibility then we should probably
272 # use m4_version_compare from autoconf.
273 sort_ver() { # sort -V is not generally available
274 ver1="$1"
275 ver2="$2"
277 # split on '.' and compare each component
279 while : ; do
280 p1=$(echo "$ver1" | cut -d. -f$i)
281 p2=$(echo "$ver2" | cut -d. -f$i)
282 if [ ! "$p1" ]; then
283 echo "$1 $2"
284 break
285 elif [ ! "$p2" ]; then
286 echo "$2 $1"
287 break
288 elif [ ! "$p1" = "$p2" ]; then
289 if [ "$p1" -gt "$p2" ] 2>/dev/null; then # numeric comparison
290 echo "$2 $1"
291 elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison
292 echo "$1 $2"
293 else # numeric, then lexicographic comparison
294 lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1)
295 if [ "$lp" = "$p2" ]; then
296 echo "$1 $2"
297 else
298 echo "$2 $1"
301 break
303 i=$(($i+1))
304 done
307 get_version() {
308 app=$1
310 $app --version >/dev/null 2>&1 || return 1
312 $app --version 2>&1 |
313 sed -n 's/[^0-9.]*\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/p
314 t done
316 :done
320 check_versions() {
321 ret=0
323 while read app req_ver; do
324 # Honor $APP variables ($TAR, $AUTOCONF, etc.)
325 appvar=`echo $app | tr '[a-z]' '[A-Z]'`
326 test "$appvar" = TAR && appvar=AMTAR
327 eval "app=\${$appvar-$app}"
328 inst_ver=$(get_version $app)
329 if [ ! "$inst_ver" ]; then
330 echo "Error: '$app' not found" >&2
331 ret=1
332 elif [ ! "$req_ver" = "-" ]; then
333 latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
334 if [ ! "$latest_ver" = "$inst_ver" ]; then
335 echo "Error: '$app' version == $inst_ver is too old" >&2
336 echo " '$app' version >= $req_ver is required" >&2
337 ret=1
340 done
342 return $ret
345 print_versions() {
346 echo "Program Min_version"
347 echo "----------------------"
348 printf "$buildreq"
349 echo "----------------------"
350 # can't depend on column -t
353 if ! printf "$buildreq" | check_versions; then
354 test -f README-prereq &&
355 echo "See README-prereq for notes on obtaining these prerequisite programs:" >&2
356 echo
357 print_versions
358 exit 1
361 echo "$0: Bootstrapping from checked-out $package sources..."
363 # See if we can use gnulib's git-merge-changelog merge driver.
364 if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
365 if git config merge.merge-changelog.driver >/dev/null ; then
367 elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
368 echo "initializing git-merge-changelog driver"
369 git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
370 git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
371 else
372 echo "consider installing git-merge-changelog from gnulib"
377 cleanup_gnulib() {
378 status=$?
379 rm -fr gnulib
380 exit $status
383 git_modules_config () {
384 test -f .gitmodules && git config --file .gitmodules "$@"
387 # Get gnulib files.
389 case ${GNULIB_SRCDIR--} in
391 if git_modules_config submodule.gnulib.url >/dev/null; then
392 echo "$0: getting gnulib files..."
393 git submodule init || exit $?
394 git submodule update || exit $?
396 elif [ ! -d gnulib ]; then
397 echo "$0: getting gnulib files..."
399 trap cleanup_gnulib 1 2 13 15
401 git clone --help|grep depth > /dev/null && shallow='--depth 2' || shallow=
402 git clone $shallow git://git.sv.gnu.org/gnulib ||
403 cleanup_gnulib
405 trap - 1 2 13 15
407 GNULIB_SRCDIR=gnulib
410 # Redirect the gnulib submodule to the directory on the command line
411 # if possible.
412 if test -d "$GNULIB_SRCDIR"/.git && \
413 git_modules_config submodule.gnulib.url >/dev/null; then
414 git submodule init
415 GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
416 git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
417 echo "$0: getting gnulib files..."
418 git submodule update || exit $?
419 GNULIB_SRCDIR=gnulib
422 esac
424 gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
425 <$gnulib_tool || exit
427 # Get translations.
429 download_po_files() {
430 subdir=$1
431 domain=$2
432 echo "$0: getting translations into $subdir for $domain..."
433 cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
434 eval "$cmd"
437 # Download .po files to $po_dir/.reference and copy only the new
438 # or modified ones into $po_dir. Also update $po_dir/LINGUAS.
439 update_po_files() {
440 # Directory containing primary .po files.
441 # Overwrite them only when we're sure a .po file is new.
442 po_dir=$1
443 domain=$2
445 # Download *.po files into this dir.
446 # Usually contains *.s1 checksum files.
447 ref_po_dir="$po_dir/.reference"
449 test -d $ref_po_dir || mkdir $ref_po_dir || return
450 download_po_files $ref_po_dir $domain \
451 && ls "$ref_po_dir"/*.po 2>/dev/null |
452 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
454 langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
455 test "$langs" = '*' && langs=x
456 for po in $langs; do
457 case $po in x) continue;; esac
458 new_po="$ref_po_dir/$po.po"
459 cksum_file="$ref_po_dir/$po.s1"
460 if ! test -f "$cksum_file" ||
461 ! test -f "$po_dir/$po.po" ||
462 ! $SHA1SUM -c --status "$cksum_file" \
463 < "$new_po" > /dev/null; then
464 echo "updated $po_dir/$po.po..."
465 cp "$new_po" "$po_dir/$po.po" \
466 && $SHA1SUM < "$new_po" > "$cksum_file"
468 done
471 case $SKIP_PO in
473 if test -d po; then
474 update_po_files po $package || exit
477 if test -d runtime-po; then
478 update_po_files runtime-po $package-runtime || exit
479 fi;;
480 esac
482 symlink_to_dir()
484 src=$1/$2
485 dst=${3-$2}
487 test -f "$src" && {
489 # If the destination directory doesn't exist, create it.
490 # This is required at least for "lib/uniwidth/cjk.h".
491 dst_dir=`dirname "$dst"`
492 if ! test -d "$dst_dir"; then
493 mkdir -p "$dst_dir"
495 # If we've just created a directory like lib/uniwidth,
496 # tell version control system(s) it's ignorable.
497 # FIXME: for now, this does only one level
498 parent=`dirname "$dst_dir"`
499 for dot_ig in x $vc_ignore; do
500 test $dot_ig = x && continue
501 ig=$parent/$dot_ig
502 insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
503 done
506 if $copy; then
508 test ! -h "$dst" || {
509 echo "$0: rm -f $dst" &&
510 rm -f "$dst"
512 } &&
513 test -f "$dst" &&
514 cmp -s "$src" "$dst" || {
515 echo "$0: cp -fp $src $dst" &&
516 cp -fp "$src" "$dst"
518 else
519 test -h "$dst" &&
520 src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
521 dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
522 test "$src_i" = "$dst_i" || {
523 dot_dots=
524 case $src in
525 /*) ;;
527 case /$dst/ in
528 *//* | */../* | */./* | /*/*/*/*/*/)
529 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
530 exit 1;;
531 /*/*/*/*/) dot_dots=../../../;;
532 /*/*/*/) dot_dots=../../;;
533 /*/*/) dot_dots=../;;
534 esac;;
535 esac
537 echo "$0: ln -fs $dot_dots$src $dst" &&
538 ln -fs "$dot_dots$src" "$dst"
544 cp_mark_as_generated()
546 cp_src=$1
547 cp_dst=$2
549 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
550 symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
551 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
552 symlink_to_dir $local_gl_dir "$cp_dst"
553 else
554 case $cp_dst in
555 *.[ch]) c1='/* '; c2=' */';;
556 *.texi) c1='@c '; c2= ;;
557 *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
558 *) c1= ; c2= ;;
559 esac
561 # If the destination directory doesn't exist, create it.
562 # This is required at least for "lib/uniwidth/cjk.h".
563 dst_dir=`dirname "$cp_dst"`
564 test -d "$dst_dir" || mkdir -p "$dst_dir"
566 if test -z "$c1"; then
567 cmp -s "$cp_src" "$cp_dst" || {
568 # Copy the file first to get proper permissions if it
569 # doesn't already exist. Then overwrite the copy.
570 echo "$0: cp -f $cp_src $cp_dst" &&
571 rm -f "$cp_dst" &&
572 cp "$cp_src" "$cp_dst-t" &&
573 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
574 mv -f "$cp_dst-t" "$cp_dst"
576 else
577 # Copy the file first to get proper permissions if it
578 # doesn't already exist. Then overwrite the copy.
579 cp "$cp_src" "$cp_dst-t" &&
581 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
582 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
583 sed "s!$bt_regex/!!g" "$cp_src"
584 ) > $cp_dst-t &&
585 if cmp -s "$cp_dst-t" "$cp_dst"; then
586 rm -f "$cp_dst-t"
587 else
588 echo "$0: cp $cp_src $cp_dst # with edits" &&
589 mv -f "$cp_dst-t" "$cp_dst"
595 version_controlled_file() {
596 dir=$1
597 file=$2
598 found=no
599 if test -d CVS; then
600 grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
601 grep '^/[^/]*/[0-9]' > /dev/null && found=yes
602 elif test -d .git; then
603 git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
604 elif test -d .svn; then
605 svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes
606 else
607 echo "$0: no version control for $dir/$file?" >&2
609 test $found = yes
612 slurp() {
613 for dir in . `(cd $1 && find * -type d -print)`; do
614 copied=
615 sep=
616 for file in `ls -a $1/$dir`; do
617 case $file in
618 .|..) continue;;
619 .*) continue;; # FIXME: should all file names starting with "." be ignored?
620 esac
621 test -d $1/$dir/$file && continue
622 for excluded_file in $excluded_files; do
623 test "$dir/$file" = "$excluded_file" && continue 2
624 done
625 if test $file = Makefile.am; then
626 copied=$copied${sep}$gnulib_mk; sep=$nl
627 remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
628 sed "$remove_intl" $1/$dir/$file | cmp - $dir/$gnulib_mk > /dev/null || {
629 echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
630 rm -f $dir/$gnulib_mk &&
631 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
633 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
634 version_controlled_file $dir $file; then
635 echo "$0: $dir/$file overrides $1/$dir/$file"
636 else
637 copied=$copied$sep$file; sep=$nl
638 if test $file = gettext.m4; then
639 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
640 rm -f $dir/$file
641 sed '
642 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
643 AC_DEFUN([AM_INTL_SUBDIR], [
644 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
645 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
647 AC_DEFUN([gl_LOCK_EARLY], [])
648 ' $1/$dir/$file >$dir/$file
649 else
650 cp_mark_as_generated $1/$dir/$file $dir/$file
652 fi || exit
653 done
655 for dot_ig in x $vc_ignore; do
656 test $dot_ig = x && continue
657 ig=$dir/$dot_ig
658 if test -n "$copied"; then
659 insert_sorted_if_absent $ig "$copied"
660 # If an ignored file name ends with .in.h, then also add
661 # the name with just ".h". Many gnulib headers are generated,
662 # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
663 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
664 f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
665 insert_sorted_if_absent $ig "$f"
667 # For files like sys_stat.in.h and sys_time.in.h, record as
668 # ignorable the directory we might eventually create: sys/.
669 f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
670 insert_sorted_if_absent $ig "$f"
672 done
673 done
677 # Create boot temporary directories to import from gnulib and gettext.
678 rm -fr $bt $bt2 &&
679 mkdir $bt $bt2 || exit
681 # Import from gnulib.
683 gnulib_tool_options="\
684 --import\
685 --no-changelog\
686 --aux-dir $bt/$build_aux\
687 --doc-base $bt/$doc_base\
688 --lib $gnulib_name\
689 --m4-base $bt/$m4_base/\
690 --source-base $bt/$source_base/\
691 --tests-base $bt/$tests_base\
692 --local-dir $local_gl_dir\
693 $gnulib_tool_option_extras\
695 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
696 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
697 slurp $bt || exit
699 for file in $gnulib_files; do
700 symlink_to_dir "$GNULIB_SRCDIR" $file || exit
701 done
704 # Import from gettext.
705 with_gettext=yes
706 grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
707 with_gettext=no
709 if test $with_gettext = yes; then
710 echo "$0: (cd $bt2; ${AUTOPOINT-autopoint}) ..."
711 cp configure.ac $bt2 &&
712 (cd $bt2 && ${AUTOPOINT-autopoint} && rm configure.ac) &&
713 slurp $bt2 $bt || exit
715 rm -fr $bt $bt2 || exit
717 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
718 # gnulib-populated directories. Such .m4 files would cause aclocal to fail.
719 # The following requires GNU find 4.2.3 or newer. Considering the usual
720 # portability constraints of this script, that may seem a very demanding
721 # requirement, but it should be ok. Ignore any failure, which is fine,
722 # since this is only a convenience to help developers avoid the relatively
723 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
724 # between successive runs of this script.
725 find "$m4_base" "$source_base" \
726 -depth \( -name '*.m4' -o -name '*.[ch]' \) \
727 -type l -xtype l -delete > /dev/null 2>&1
729 # Reconfigure, getting other files.
731 for command in \
732 libtool \
733 "${ACLOCAL-aclocal} --force -I m4" \
734 "${AUTOCONF-autoconf} --force" \
735 "${AUTOHEADER-autoheader} --force" \
736 "${AUTOMAKE-automake} --add-missing --copy --force-missing"
738 if test "$command" = libtool; then
739 use_libtool=0
740 # We'd like to use grep -E, to see if any of LT_INIT,
741 # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
742 # but that's not portable enough (e.g., for Solaris).
743 grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
744 && use_libtool=1
745 grep '^[ ]*LT_INIT' configure.ac >/dev/null \
746 && use_libtool=1
747 test $use_libtool = 0 \
748 && continue
749 command="${LIBTOOLIZE-libtoolize} -c -f"
751 echo "$0: $command ..."
752 $command || exit
753 done
756 # Get some extra files from gnulib, overriding existing files.
757 for file in $gnulib_extra_files; do
758 case $file in
759 */INSTALL) dst=INSTALL;;
760 build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
761 *) dst=$file;;
762 esac
763 symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
764 done
766 if test $with_gettext = yes; then
767 # Create gettext configuration.
768 echo "$0: Creating po/Makevars from po/Makevars.template ..."
769 rm -f po/Makevars
770 sed '
771 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
772 /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/
773 /^XGETTEXT_OPTIONS *=/{
774 s/$/ \\/
776 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
778 ' po/Makevars.template >po/Makevars
780 if test -d runtime-po; then
781 # Similarly for runtime-po/Makevars, but not quite the same.
782 rm -f runtime-po/Makevars
783 sed '
784 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
785 /^subdir *=.*/s/=.*/= runtime-po/
786 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
787 /^XGETTEXT_OPTIONS *=/{
788 s/$/ \\/
790 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
792 ' <po/Makevars.template >runtime-po/Makevars
794 # Copy identical files from po to runtime-po.
795 (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
799 echo "$0: done. Now you can run './configure'."
801 # Local Variables:
802 # indent-tabs-mode: nil
803 # End: