maint: make update-copyright handle more cases
[coreutils.git] / bootstrap
blob4b5d6497e4b98185b2a9d1f03aa68648ff30ff8a
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 "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 test -f .gitmodules && git config --file .gitmodules "$@"
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" \
424 < "$new_po" > /dev/null; then
425 echo "updated $po_dir/$po.po..."
426 cp "$new_po" "$po_dir/$po.po" \
427 && ${SHA1SUM-sha1sum} < "$new_po" > "$cksum_file"
429 done
432 case $SKIP_PO in
434 if test -d po; then
435 update_po_files po $package || exit
438 if test -d runtime-po; then
439 update_po_files runtime-po $package-runtime || exit
440 fi;;
441 esac
443 symlink_to_dir()
445 src=$1/$2
446 dst=${3-$2}
448 test -f "$src" && {
450 # If the destination directory doesn't exist, create it.
451 # This is required at least for "lib/uniwidth/cjk.h".
452 dst_dir=`dirname "$dst"`
453 if ! test -d "$dst_dir"; then
454 mkdir -p "$dst_dir"
456 # If we've just created a directory like lib/uniwidth,
457 # tell version control system(s) it's ignorable.
458 # FIXME: for now, this does only one level
459 parent=`dirname "$dst_dir"`
460 for dot_ig in x $vc_ignore; do
461 test $dot_ig = x && continue
462 ig=$parent/$dot_ig
463 insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
464 done
467 if $copy; then
469 test ! -h "$dst" || {
470 echo "$0: rm -f $dst" &&
471 rm -f "$dst"
473 } &&
474 test -f "$dst" &&
475 cmp -s "$src" "$dst" || {
476 echo "$0: cp -fp $src $dst" &&
477 cp -fp "$src" "$dst"
479 else
480 test -h "$dst" &&
481 src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
482 dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
483 test "$src_i" = "$dst_i" || {
484 dot_dots=
485 case $src in
486 /*) ;;
488 case /$dst/ in
489 *//* | */../* | */./* | /*/*/*/*/*/)
490 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
491 exit 1;;
492 /*/*/*/*/) dot_dots=../../../;;
493 /*/*/*/) dot_dots=../../;;
494 /*/*/) dot_dots=../;;
495 esac;;
496 esac
498 echo "$0: ln -fs $dot_dots$src $dst" &&
499 ln -fs "$dot_dots$src" "$dst"
505 cp_mark_as_generated()
507 cp_src=$1
508 cp_dst=$2
510 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
511 symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
512 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
513 symlink_to_dir $local_gl_dir "$cp_dst"
514 else
515 case $cp_dst in
516 *.[ch]) c1='/* '; c2=' */';;
517 *.texi) c1='@c '; c2= ;;
518 *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
519 *) c1= ; c2= ;;
520 esac
522 # If the destination directory doesn't exist, create it.
523 # This is required at least for "lib/uniwidth/cjk.h".
524 dst_dir=`dirname "$cp_dst"`
525 test -d "$dst_dir" || mkdir -p "$dst_dir"
527 if test -z "$c1"; then
528 cmp -s "$cp_src" "$cp_dst" || {
529 # Copy the file first to get proper permissions if it
530 # doesn't already exist. Then overwrite the copy.
531 echo "$0: cp -f $cp_src $cp_dst" &&
532 rm -f "$cp_dst" &&
533 cp "$cp_src" "$cp_dst-t" &&
534 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
535 mv -f "$cp_dst-t" "$cp_dst"
537 else
538 # Copy the file first to get proper permissions if it
539 # doesn't already exist. Then overwrite the copy.
540 cp "$cp_src" "$cp_dst-t" &&
542 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
543 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
544 echo '#line 1' &&
545 sed "s!$bt_regex/!!g" "$cp_src"
546 ) > $cp_dst-t &&
547 if cmp -s "$cp_dst-t" "$cp_dst"; then
548 rm -f "$cp_dst-t"
549 else
550 echo "$0: cp $cp_src $cp_dst # with edits" &&
551 mv -f "$cp_dst-t" "$cp_dst"
557 version_controlled_file() {
558 dir=$1
559 file=$2
560 found=no
561 if test -d CVS; then
562 grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
563 grep '^/[^/]*/[0-9]' > /dev/null && found=yes
564 elif test -d .git; then
565 git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
566 elif test -d .svn; then
567 svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes
568 else
569 echo "$0: no version control for $dir/$file?" >&2
571 test $found = yes
574 slurp() {
575 for dir in . `(cd $1 && find * -type d -print)`; do
576 copied=
577 sep=
578 for file in `ls -a $1/$dir`; do
579 case $file in
580 .|..) continue;;
581 .*) continue;; # FIXME: should all file names starting with "." be ignored?
582 esac
583 test -d $1/$dir/$file && continue
584 for excluded_file in $excluded_files; do
585 test "$dir/$file" = "$excluded_file" && continue 2
586 done
587 if test $file = Makefile.am; then
588 copied=$copied${sep}$gnulib_mk; sep=$nl
589 remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
590 sed "$remove_intl" $1/$dir/$file | cmp - $dir/$gnulib_mk > /dev/null || {
591 echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
592 rm -f $dir/$gnulib_mk &&
593 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
595 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
596 version_controlled_file $dir $file; then
597 echo "$0: $dir/$file overrides $1/$dir/$file"
598 else
599 copied=$copied$sep$file; sep=$nl
600 if test $file = gettext.m4; then
601 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
602 rm -f $dir/$file
603 sed '
604 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
605 AC_DEFUN([AM_INTL_SUBDIR], [
606 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
607 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
609 AC_DEFUN([gl_LOCK_EARLY], [])
610 ' $1/$dir/$file >$dir/$file
611 else
612 cp_mark_as_generated $1/$dir/$file $dir/$file
614 fi || exit
615 done
617 for dot_ig in x $vc_ignore; do
618 test $dot_ig = x && continue
619 ig=$dir/$dot_ig
620 if test -n "$copied"; then
621 insert_sorted_if_absent $ig "$copied"
622 # If an ignored file name ends with .in.h, then also add
623 # the name with just ".h". Many gnulib headers are generated,
624 # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
625 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
626 f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
627 insert_sorted_if_absent $ig "$f"
629 # For files like sys_stat.in.h and sys_time.in.h, record as
630 # ignorable the directory we might eventually create: sys/.
631 f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
632 insert_sorted_if_absent $ig "$f"
634 done
635 done
639 # Create boot temporary directories to import from gnulib and gettext.
640 rm -fr $bt $bt2 &&
641 mkdir $bt $bt2 || exit
643 # Import from gnulib.
645 gnulib_tool_options="\
646 --import\
647 --no-changelog\
648 --aux-dir $bt/$build_aux\
649 --doc-base $bt/$doc_base\
650 --lib $gnulib_name\
651 --m4-base $bt/$m4_base/\
652 --source-base $bt/$source_base/\
653 --tests-base $bt/$tests_base\
654 --local-dir $local_gl_dir\
655 $gnulib_tool_option_extras\
657 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
658 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
659 slurp $bt || exit
661 for file in $gnulib_files; do
662 symlink_to_dir "$GNULIB_SRCDIR" $file || exit
663 done
666 # Import from gettext.
667 with_gettext=yes
668 grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
669 with_gettext=no
671 if test $with_gettext = yes; then
672 echo "$0: (cd $bt2; ${AUTOPOINT-autopoint}) ..."
673 cp configure.ac $bt2 &&
674 (cd $bt2 && ${AUTOPOINT-autopoint} && rm configure.ac) &&
675 slurp $bt2 $bt || exit
677 rm -fr $bt $bt2 || exit
679 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
680 # gnulib-populated directories. Such .m4 files would cause aclocal to fail.
681 # The following requires GNU find 4.2.3 or newer. Considering the usual
682 # portability constraints of this script, that may seem a very demanding
683 # requirement, but it should be ok. Ignore any failure, which is fine,
684 # since this is only a convenience to help developers avoid the relatively
685 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
686 # between successive runs of this script.
687 find "$m4_base" "$source_base" \
688 -depth \( -name '*.m4' -o -name '*.[ch]' \) \
689 -type l -xtype l -delete > /dev/null 2>&1
691 # Reconfigure, getting other files.
693 for command in \
694 libtool \
695 "${ACLOCAL-aclocal} --force -I m4" \
696 "${AUTOCONF-autoconf} --force" \
697 "${AUTOHEADER-autoheader} --force" \
698 "${AUTOMAKE-automake} --add-missing --copy --force-missing"
700 if test "$command" = libtool; then
701 use_libtool=0
702 # We'd like to use grep -E, to see if any of LT_INIT,
703 # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
704 # but that's not portable enough (e.g., for Solaris).
705 grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
706 && use_libtool=1
707 grep '^[ ]*LT_INIT' configure.ac >/dev/null \
708 && use_libtool=1
709 test $use_libtool = 0 \
710 && continue
711 command="${LIBTOOLIZE-libtoolize} -c -f"
713 echo "$0: $command ..."
714 $command || exit
715 done
718 # Get some extra files from gnulib, overriding existing files.
719 for file in $gnulib_extra_files; do
720 case $file in
721 */INSTALL) dst=INSTALL;;
722 build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
723 *) dst=$file;;
724 esac
725 symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
726 done
728 if test $with_gettext = yes; then
729 # Create gettext configuration.
730 echo "$0: Creating po/Makevars from po/Makevars.template ..."
731 rm -f po/Makevars
732 sed '
733 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
734 /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/
735 /^XGETTEXT_OPTIONS *=/{
736 s/$/ \\/
738 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
740 ' po/Makevars.template >po/Makevars
742 if test -d runtime-po; then
743 # Similarly for runtime-po/Makevars, but not quite the same.
744 rm -f runtime-po/Makevars
745 sed '
746 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
747 /^subdir *=.*/s/=.*/= runtime-po/
748 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
749 /^XGETTEXT_OPTIONS *=/{
750 s/$/ \\/
752 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
754 ' <po/Makevars.template >runtime-po/Makevars
756 # Copy identical files from po to runtime-po.
757 (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
761 # Horrible, coreutils-specific kludges.
762 # Change paths in gnulib-tests/gnulib.mk from "../.." to "..".
763 m=gnulib-tests/gnulib.mk
764 sed 's,\.\./\.\.,..,g' $m > $m-t
765 mv -f $m-t $m
767 echo "$0: done. Now you can run './configure'."
769 # Local Variables:
770 # indent-tabs-mode: nil
771 # End: