maint: HACKING: mention a few more useful git commands
[coreutils.git] / bootstrap
blob5e7fe9ac62f567c1e20f9f9ba4f2e90ccc090600
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 echo >&2 "\
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.
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 # Override the default configuration, if necessary.
152 # Make sure that bootstrap.conf is sourced from the current directory
153 # if we were invoked as "sh bootstrap".
154 case "$0" in
155 */*) test -r "$0.conf" && . "$0.conf" ;;
156 *) test -r "$0.conf" && . ./"$0.conf" ;;
157 esac
160 if test "$vc_ignore" = auto; then
161 vc_ignore=
162 test -d .git && vc_ignore=.gitignore
163 test -d CVS && vc_ignore="$vc_ignore .cvsignore"
166 # Translate configuration into internal form.
168 # Parse options.
170 for option
172 case $option in
173 --help)
174 usage
175 exit;;
176 --gnulib-srcdir=*)
177 GNULIB_SRCDIR=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;;
178 --skip-po)
179 SKIP_PO=t;;
180 --force)
181 checkout_only_file=;;
182 --copy)
183 copy=true;;
185 echo >&2 "$0: $option: unknown option"
186 exit 1;;
187 esac
188 done
190 if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
191 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
192 exit 1
195 # If $STR is not already on a line by itself in $FILE, insert it,
196 # sorting the new contents of the file and replacing $FILE with the result.
197 insert_sorted_if_absent() {
198 file=$1
199 str=$2
200 test -f $file || touch $file
201 echo "$str" | sort -u - $file | cmp - $file > /dev/null \
202 || echo "$str" | sort -u - $file -o $file \
203 || exit 1
206 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
207 found_aux_dir=no
208 grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
209 >/dev/null && found_aux_dir=yes
210 grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
211 >/dev/null && found_aux_dir=yes
212 if test $found_aux_dir = no; then
213 echo "$0: expected line not found in configure.ac. Add the following:" >&2
214 echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2
215 exit 1
218 # If $build_aux doesn't exist, create it now, otherwise some bits
219 # below will malfunction. If creating it, also mark it as ignored.
220 if test ! -d $build_aux; then
221 mkdir $build_aux
222 for dot_ig in x $vc_ignore; do
223 test $dot_ig = x && continue
224 insert_sorted_if_absent $dot_ig $build_aux
225 done
228 # Note this deviates from the version comparison in automake
229 # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
230 # but this should suffice as we won't be specifying old
231 # version formats or redundant trailing .0 in bootstrap.conf.
232 # If we did want full compatibility then we should probably
233 # use m4_version_compare from autoconf.
234 sort_ver() { # sort -V is not generally available
235 ver1="$1"
236 ver2="$2"
238 # split on '.' and compare each component
240 while : ; do
241 p1=$(echo "$ver1" | cut -d. -f$i)
242 p2=$(echo "$ver2" | cut -d. -f$i)
243 if [ ! "$p1" ]; then
244 echo "$1 $2"
245 break
246 elif [ ! "$p2" ]; then
247 echo "$2 $1"
248 break
249 elif [ ! "$p1" = "$p2" ]; then
250 if [ "$p1" -gt "$p2" ] 2>/dev/null; then # numeric comparison
251 echo "$2 $1"
252 elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison
253 echo "$1 $2"
254 else # numeric, then lexicographic comparison
255 lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1)
256 if [ "$lp" = "$p2" ]; then
257 echo "$1 $2"
258 else
259 echo "$2 $1"
262 break
264 i=$(($i+1))
265 done
268 get_version() {
269 app=$1
271 $app --version >/dev/null 2>&1 || return 1
273 $app --version 2>&1 |
274 sed -n 's/[^0-9.]*\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/p
275 t done
277 :done
281 check_versions() {
282 ret=0
284 while read app req_ver; do
285 # Honor $APP variables ($TAR, $AUTOCONF, etc.)
286 appvar=`echo $app | tr '[a-z]' '[A-Z]'`
287 test "$appvar" = TAR && appvar=AMTAR
288 eval "app=\${$appvar-$app}"
289 inst_ver=$(get_version $app)
290 if [ ! "$inst_ver" ]; then
291 echo "Error: '$app' not found" >&2
292 ret=1
293 elif [ ! "$req_ver" = "-" ]; then
294 latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
295 if [ ! "$latest_ver" = "$inst_ver" ]; then
296 echo "Error: '$app' version == $inst_ver is too old" >&2
297 echo " '$app' version >= $req_ver is required" >&2
298 ret=1
301 done
303 return $ret
306 print_versions() {
307 echo "Program Min_version"
308 echo "----------------------"
309 printf "$buildreq"
310 echo "----------------------"
311 # can't depend on column -t
314 if ! printf "$buildreq" | check_versions; then
315 test -f README-prereq &&
316 echo "Please see README-prereq for notes on obtaining these prerequisite programs:" >&2
317 echo
318 print_versions
319 exit 1
322 echo "$0: Bootstrapping from checked-out $package sources..."
324 # See if we can use gnulib's git-merge-changelog merge driver.
325 if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
326 if git config merge.merge-changelog.driver >/dev/null ; then
328 elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
329 echo "initializing git-merge-changelog driver"
330 git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
331 git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
332 else
333 echo "consider installing git-merge-changelog from gnulib"
338 cleanup_gnulib() {
339 status=$?
340 rm -fr gnulib
341 exit $status
344 git_modules_config () {
345 GIT_CONFIG=.gitmodules git config "$@"
348 # Get gnulib files.
350 case ${GNULIB_SRCDIR--} in
352 if git_modules_config submodule.gnulib.url >/dev/null; then
353 echo "$0: getting gnulib files..."
354 git submodule init || exit $?
355 git submodule update || exit $?
357 elif [ ! -d gnulib ]; then
358 echo "$0: getting gnulib files..."
360 trap cleanup_gnulib 1 2 13 15
362 git clone --help|grep depth > /dev/null && shallow='--depth 2' || shallow=
363 git clone $shallow git://git.sv.gnu.org/gnulib ||
364 cleanup_gnulib
366 trap - 1 2 13 15
368 GNULIB_SRCDIR=gnulib
371 # Redirect the gnulib submodule to the directory on the command line
372 # if possible.
373 if test -d "$GNULIB_SRCDIR"/.git && \
374 git_modules_config submodule.gnulib.url >/dev/null; then
375 git submodule init
376 GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
377 git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
378 echo "$0: getting gnulib files..."
379 git submodule update || exit $?
380 GNULIB_SRCDIR=gnulib
383 esac
385 gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
386 <$gnulib_tool || exit
388 # Get translations.
390 download_po_files() {
391 subdir=$1
392 domain=$2
393 echo "$0: getting translations into $subdir for $domain..."
394 cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
395 eval "$cmd"
398 # Download .po files to $po_dir/.reference and copy only the new
399 # or modified ones into $po_dir. Also update $po_dir/LINGUAS.
400 update_po_files() {
401 # Directory containing primary .po files.
402 # Overwrite them only when we're sure a .po file is new.
403 po_dir=$1
404 domain=$2
406 # Download *.po files into this dir.
407 # Usually contains *.s1 checksum files.
408 ref_po_dir="$po_dir/.reference"
410 test -d $ref_po_dir || mkdir $ref_po_dir || return
411 download_po_files $ref_po_dir $domain \
412 && ls "$ref_po_dir"/*.po 2>/dev/null |
413 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
415 langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
416 test "$langs" = '*' && langs=x
417 for po in $langs; do
418 case $po in x) continue;; esac
419 new_po="$ref_po_dir/$po.po"
420 cksum_file="$ref_po_dir/$po.s1"
421 if ! test -f "$cksum_file" ||
422 ! test -f "$po_dir/$po.po" ||
423 ! ${SHA1SUM-sha1sum} -c --status "$cksum_file" < "$new_po" > /dev/null; then
424 echo "updated $po_dir/$po.po..."
425 cp "$new_po" "$po_dir/$po.po" && ${SHA1SUM-sha1sum} < "$new_po" > "$cksum_file"
427 done
430 case $SKIP_PO in
432 if test -d po; then
433 update_po_files po $package || exit
436 if test -d runtime-po; then
437 update_po_files runtime-po $package-runtime || exit
438 fi;;
439 esac
441 symlink_to_dir()
443 src=$1/$2
444 dst=${3-$2}
446 test -f "$src" && {
448 # If the destination directory doesn't exist, create it.
449 # This is required at least for "lib/uniwidth/cjk.h".
450 dst_dir=`dirname "$dst"`
451 if ! test -d "$dst_dir"; then
452 mkdir -p "$dst_dir"
454 # If we've just created a directory like lib/uniwidth,
455 # tell version control system(s) it's ignorable.
456 # FIXME: for now, this does only one level
457 parent=`dirname "$dst_dir"`
458 for dot_ig in x $vc_ignore; do
459 test $dot_ig = x && continue
460 ig=$parent/$dot_ig
461 insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
462 done
465 if $copy; then
467 test ! -h "$dst" || {
468 echo "$0: rm -f $dst" &&
469 rm -f "$dst"
471 } &&
472 test -f "$dst" &&
473 cmp -s "$src" "$dst" || {
474 echo "$0: cp -fp $src $dst" &&
475 cp -fp "$src" "$dst"
477 else
478 test -h "$dst" &&
479 src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
480 dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
481 test "$src_i" = "$dst_i" || {
482 dot_dots=
483 case $src in
484 /*) ;;
486 case /$dst/ in
487 *//* | */../* | */./* | /*/*/*/*/*/)
488 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
489 exit 1;;
490 /*/*/*/*/) dot_dots=../../../;;
491 /*/*/*/) dot_dots=../../;;
492 /*/*/) dot_dots=../;;
493 esac;;
494 esac
496 echo "$0: ln -fs $dot_dots$src $dst" &&
497 ln -fs "$dot_dots$src" "$dst"
503 cp_mark_as_generated()
505 cp_src=$1
506 cp_dst=$2
508 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
509 symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
510 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
511 symlink_to_dir $local_gl_dir "$cp_dst"
512 else
513 case $cp_dst in
514 *.[ch]) c1='/* '; c2=' */';;
515 *.texi) c1='@c '; c2= ;;
516 *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
517 *) c1= ; c2= ;;
518 esac
520 # If the destination directory doesn't exist, create it.
521 # This is required at least for "lib/uniwidth/cjk.h".
522 dst_dir=`dirname "$cp_dst"`
523 test -d "$dst_dir" || mkdir -p "$dst_dir"
525 if test -z "$c1"; then
526 cmp -s "$cp_src" "$cp_dst" || {
527 # Copy the file first to get proper permissions if it
528 # doesn't already exist. Then overwrite the copy.
529 echo "$0: cp -f $cp_src $cp_dst" &&
530 rm -f "$cp_dst" &&
531 cp "$cp_src" "$cp_dst-t" &&
532 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
533 mv -f "$cp_dst-t" "$cp_dst"
535 else
536 # Copy the file first to get proper permissions if it
537 # doesn't already exist. Then overwrite the copy.
538 cp "$cp_src" "$cp_dst-t" &&
540 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
541 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
542 echo '#line 1' &&
543 sed "s!$bt_regex/!!g" "$cp_src"
544 ) > $cp_dst-t &&
545 if cmp -s "$cp_dst-t" "$cp_dst"; then
546 rm -f "$cp_dst-t"
547 else
548 echo "$0: cp $cp_src $cp_dst # with edits" &&
549 mv -f "$cp_dst-t" "$cp_dst"
555 version_controlled_file() {
556 dir=$1
557 file=$2
558 found=no
559 if test -d CVS; then
560 grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
561 grep '^/[^/]*/[0-9]' > /dev/null && found=yes
562 elif test -d .git; then
563 git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
564 elif test -d .svn; then
565 svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes
566 else
567 echo "$0: no version control for $dir/$file?" >&2
569 test $found = yes
572 slurp() {
573 for dir in . `(cd $1 && find * -type d -print)`; do
574 copied=
575 sep=
576 for file in `ls -a $1/$dir`; do
577 case $file in
578 .|..) continue;;
579 .*) continue;; # FIXME: should all file names starting with "." be ignored?
580 esac
581 test -d $1/$dir/$file && continue
582 for excluded_file in $excluded_files; do
583 test "$dir/$file" = "$excluded_file" && continue 2
584 done
585 if test $file = Makefile.am; then
586 copied=$copied${sep}$gnulib_mk; sep=$nl
587 remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
588 sed "$remove_intl" $1/$dir/$file | cmp - $dir/$gnulib_mk > /dev/null || {
589 echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
590 rm -f $dir/$gnulib_mk &&
591 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
593 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
594 version_controlled_file $dir $file; then
595 echo "$0: $dir/$file overrides $1/$dir/$file"
596 else
597 copied=$copied$sep$file; sep=$nl
598 if test $file = gettext.m4; then
599 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
600 rm -f $dir/$file
601 sed '
602 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
603 AC_DEFUN([AM_INTL_SUBDIR], [
604 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
605 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
607 AC_DEFUN([gl_LOCK_EARLY], [])
608 ' $1/$dir/$file >$dir/$file
609 else
610 cp_mark_as_generated $1/$dir/$file $dir/$file
612 fi || exit
613 done
615 for dot_ig in x $vc_ignore; do
616 test $dot_ig = x && continue
617 ig=$dir/$dot_ig
618 if test -n "$copied"; then
619 insert_sorted_if_absent $ig "$copied"
620 # If an ignored file name ends with .in.h, then also add
621 # the name with just ".h". Many gnulib headers are generated,
622 # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
623 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
624 f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
625 insert_sorted_if_absent $ig "$f"
627 # For files like sys_stat.in.h and sys_time.in.h, record as
628 # ignorable the directory we might eventually create: sys/.
629 f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
630 insert_sorted_if_absent $ig "$f"
632 done
633 done
637 # Create boot temporary directories to import from gnulib and gettext.
638 rm -fr $bt $bt2 &&
639 mkdir $bt $bt2 || exit
641 # Import from gnulib.
643 gnulib_tool_options="\
644 --import\
645 --no-changelog\
646 --aux-dir $bt/$build_aux\
647 --doc-base $bt/$doc_base\
648 --lib $gnulib_name\
649 --m4-base $bt/$m4_base/\
650 --source-base $bt/$source_base/\
651 --tests-base $bt/$tests_base\
652 --local-dir $local_gl_dir\
653 $gnulib_tool_option_extras\
655 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
656 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
657 slurp $bt || exit
659 for file in $gnulib_files; do
660 symlink_to_dir "$GNULIB_SRCDIR" $file || exit
661 done
664 # Import from gettext.
665 with_gettext=yes
666 grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
667 with_gettext=no
669 if test $with_gettext = yes; then
670 echo "$0: (cd $bt2; ${AUTOPOINT-autopoint}) ..."
671 cp configure.ac $bt2 &&
672 (cd $bt2 && ${AUTOPOINT-autopoint} && rm configure.ac) &&
673 slurp $bt2 $bt || exit
675 rm -fr $bt $bt2 || exit
677 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
678 # gnulib-populated directories. Such .m4 files would cause aclocal to fail.
679 # The following requires GNU find 4.2.3 or newer. Considering the usual
680 # portability constraints of this script, that may seem a very demanding
681 # requirement, but it should be ok. Ignore any failure, which is fine,
682 # since this is only a convenience to help developers avoid the relatively
683 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
684 # between successive runs of this script.
685 find "$m4_base" "$source_base" \
686 -depth \( -name '*.m4' -o -name '*.[ch]' \) \
687 -type l -xtype l -delete > /dev/null 2>&1
689 # Reconfigure, getting other files.
691 for command in \
692 libtool \
693 "${ACLOCAL-aclocal} --force -I m4" \
694 "${AUTOCONF-autoconf} --force" \
695 "${AUTOHEADER-autoheader} --force" \
696 "${AUTOMAKE-automake} --add-missing --copy --force-missing"
698 if test "$command" = libtool; then
699 use_libtool=0
700 # We'd like to use grep -E, to see if any of LT_INIT,
701 # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
702 # but that's not portable enough (e.g., for Solaris).
703 grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
704 && use_libtool=1
705 grep '^[ ]*LT_INIT' configure.ac >/dev/null \
706 && use_libtool=1
707 test $use_libtool = 0 \
708 && continue
709 command="${LIBTOOLIZE-libtoolize} -c -f"
711 echo "$0: $command ..."
712 $command || exit
713 done
716 # Get some extra files from gnulib, overriding existing files.
717 for file in $gnulib_extra_files; do
718 case $file in
719 */INSTALL) dst=INSTALL;;
720 build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
721 *) dst=$file;;
722 esac
723 symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
724 done
726 if test $with_gettext = yes; then
727 # Create gettext configuration.
728 echo "$0: Creating po/Makevars from po/Makevars.template ..."
729 rm -f po/Makevars
730 sed '
731 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
732 /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/
733 /^XGETTEXT_OPTIONS *=/{
734 s/$/ \\/
736 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
738 ' po/Makevars.template >po/Makevars
740 if test -d runtime-po; then
741 # Similarly for runtime-po/Makevars, but not quite the same.
742 rm -f runtime-po/Makevars
743 sed '
744 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
745 /^subdir *=.*/s/=.*/= runtime-po/
746 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
747 /^XGETTEXT_OPTIONS *=/{
748 s/$/ \\/
750 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
752 ' <po/Makevars.template >runtime-po/Makevars
754 # Copy identical files from po to runtime-po.
755 (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
759 # Horrible, coreutils-specific kludges.
760 # Change paths in gnulib-tests/gnulib.mk from "../.." to "..".
761 m=gnulib-tests/gnulib.mk
762 sed 's,\.\./\.\.,..,g' $m > $m-t
763 mv -f $m-t $m
765 echo "$0: done. Now you can run './configure'."