2 # Print a version string.
3 scriptversion
=2011-03-03.12
; # UTC
5 # Bootstrap this package from checked-out sources.
7 # Copyright (C) 2003-2011 Free Software Foundation, Inc.
9 # This program is free software: you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation, either version 3 of the License, or
12 # (at your option) any later version.
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
19 # You should have received a copy of the GNU General Public License
20 # along with this program. If not, see <http://www.gnu.org/licenses/>.
22 # Originally written by Paul Eggert. The canonical version of this
23 # script is maintained as build-aux/bootstrap in gnulib, however, to
24 # be useful to your project, you should place a copy of it under
25 # version control in the top-level directory of your project. The
26 # intent is that all customization can be done with a bootstrap.conf
27 # file also maintained in your version control; gnulib comes with a
28 # template build-aux/bootstrap.conf to get you started.
30 # Please report bugs or propose patches to bug-gnulib@gnu.org.
35 # Ensure file names are sorted consistently across platforms.
41 # Temporary directory names.
43 bt_regex
=`echo "$bt"| sed 's/\./[.]/g'`
49 Usage: $me [OPTION]...
50 Bootstrap this package from the checked-out sources.
53 --gnulib-srcdir=DIRNAME specify the local directory where gnulib
54 sources reside. Use this if you already
55 have gnulib sources on your machine, and
56 do not want to waste your bandwidth downloading
57 them again. Defaults to \$GNULIB_SRCDIR
58 --bootstrap-sync if this bootstrap script is not identical to
59 the version in the local gnulib sources,
60 update this script, and then restart it with
61 /bin/sh or the shell \$CONFIG_SHELL
62 --no-bootstrap-sync do not check whether bootstrap is out of sync
63 --copy copy files instead of creating symbolic links
64 --force attempt to bootstrap even if the sources seem
65 not to have been checked out
66 --no-git do not use git to update gnulib. Requires that
67 --gnulib-srcdir point to a correct gnulib snapshot
68 --skip-po do not download po files
70 If the file $me.conf exists in the same directory as this script, its
71 contents are read as shell variables to configure the bootstrap.
73 For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR
76 Running without arguments will suffice in most cases.
82 # Name of the Makefile.am
85 # List of gnulib modules needed.
88 # Any gnulib files needed that are not in modules.
91 # A function to be called to edit gnulib.mk right after it's created.
92 # Override it via your own definition in bootstrap.conf.
93 gnulib_mk_hook
() { :; }
95 # A function to be called after everything else in this script.
96 # Override it via your own definition in bootstrap.conf.
97 bootstrap_epilogue
() { :; }
99 # The command to download all .po files for a specified domain into
100 # a specified directory. Fill in the first %s is the domain name, and
101 # the second with the destination directory. Use rsync's -L and -r
102 # options because the latest/%s directory and the .po files within are
104 po_download_command_format
=\
105 "rsync --delete --exclude '*.s1' -Lrtvz \
106 'translationproject.org::tp/latest/%s/' '%s'"
108 extract_package_name
='
120 y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
125 package
=`sed -n "$extract_package_name" configure.ac` ||
exit
126 gnulib_name
=lib
$package
134 # Extra files from gnulib, which override files from other sources.
136 $build_aux/install-sh
139 $build_aux/texinfo.tex
141 $build_aux/config.guess
142 $build_aux/config.sub
146 # Additional gnulib-tool options to use. Use "\newline" to break lines.
147 gnulib_tool_option_extras
=
149 # Other locale categories that need message catalogs.
150 EXTRA_LOCALE_CATEGORIES
=
152 # Additional xgettext options to use. Use "\\\newline" to break lines.
153 XGETTEXT_OPTIONS
='\\\
154 --flag=_:1:pass-c-format\\\
155 --flag=N_:1:pass-c-format\\\
156 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
159 # Package bug report address and copyright holder for gettext files
160 COPYRIGHT_HOLDER
='Free Software Foundation, Inc.'
161 MSGID_BUGS_ADDRESS
=bug-
$package@gnu.org
163 # Files we don't want to import.
166 # File that should exist in the top directory of a checked out hierarchy,
167 # but not in a distribution tarball.
168 checkout_only_file
=README-hacking
170 # Whether to use copies instead of symlinks.
173 # Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
174 # those files to be generated in directories like lib/, m4/, and po/.
175 # Or set it to 'auto' to make this script select which to use based
176 # on which version control system (if any) is used in the source directory.
179 # Set this to true in bootstrap.conf to enable --bootstrap-sync by
183 # Use git to update gnulib sources
186 # find_tool ENVVAR NAMES...
187 # -------------------------
188 # Search for a required program. Use the value of ENVVAR, if set,
189 # otherwise find the first of the NAMES that can be run (i.e.,
190 # supports --version). If found, set ENVVAR to the program name,
197 eval "find_tool_res=\$$find_tool_envvar"
198 if test x
"$find_tool_res" = x
; then
201 if ($i --version </dev
/null
) >/dev
/null
2>&1; then
207 find_tool_error_prefix
="\$$find_tool_envvar: "
209 if test x
"$find_tool_res" = x
; then
210 echo >&2 "$me: one of these is required: $find_tool_names"
213 ($find_tool_res --version </dev
/null
) >/dev
/null
2>&1 ||
{
214 echo >&2 "$me: ${find_tool_error_prefix}cannot run $find_tool_res --version"
217 eval "$find_tool_envvar=\$find_tool_res"
218 eval "export $find_tool_envvar"
221 # Find sha1sum, named gsha1sum on MacPorts, and shasum on MacOS 10.6.
222 find_tool SHA1SUM
sha1sum gsha1sum shasum
224 # Override the default configuration, if necessary.
225 # Make sure that bootstrap.conf is sourced from the current directory
226 # if we were invoked as "sh bootstrap".
228 */*) test -r "$0.conf" && .
"$0.conf" ;;
229 *) test -r "$0.conf" && . .
/"$0.conf" ;;
233 if test "$vc_ignore" = auto
; then
235 test -d .git
&& vc_ignore
=.gitignore
236 test -d CVS
&& vc_ignore
="$vc_ignore .cvsignore"
239 # Translate configuration into internal form.
250 GNULIB_SRCDIR
=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;;
254 checkout_only_file
=;;
258 bootstrap_sync
=true
;;
260 bootstrap_sync
=false
;;
264 echo >&2 "$0: $option: unknown option"
269 if $use_git ||
test -d "$GNULIB_SRCDIR"; then
272 echo "$0: Error: --no-git requires --gnulib-srcdir" >&2
276 if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
277 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
281 # If $STR is not already on a line by itself in $FILE, insert it,
282 # sorting the new contents of the file and replacing $FILE with the result.
283 insert_sorted_if_absent
() {
286 test -f $file ||
touch $file
287 echo "$str" |
sort -u - $file |
cmp - $file > /dev
/null \
288 ||
echo "$str" |
sort -u - $file -o $file \
292 # Adjust $PATTERN for $VC_IGNORE_FILE and insert it with
293 # insert_sorted_if_absent.
297 case $vc_ignore_file in
299 # A .gitignore entry that does not start with `/' applies
300 # recursively to subdirectories, so prepend `/' to every
302 pattern
=`echo "$pattern" | sed s,^,/,`;;
304 insert_sorted_if_absent
"$vc_ignore_file" "$pattern"
307 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
309 grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
310 >/dev
/null
&& found_aux_dir
=yes
311 grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
312 >/dev
/null
&& found_aux_dir
=yes
313 if test $found_aux_dir = no
; then
314 echo "$0: expected line not found in configure.ac. Add the following:" >&2
315 echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2
319 # If $build_aux doesn't exist, create it now, otherwise some bits
320 # below will malfunction. If creating it, also mark it as ignored.
321 if test ! -d $build_aux; then
323 for dot_ig
in x
$vc_ignore; do
324 test $dot_ig = x
&& continue
325 insert_vc_ignore
$dot_ig $build_aux
329 # Note this deviates from the version comparison in automake
330 # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
331 # but this should suffice as we won't be specifying old
332 # version formats or redundant trailing .0 in bootstrap.conf.
333 # If we did want full compatibility then we should probably
334 # use m4_version_compare from autoconf.
335 sort_ver
() { # sort -V is not generally available
339 # split on '.' and compare each component
342 p1
=$
(echo "$ver1" | cut
-d.
-f$i)
343 p2
=$
(echo "$ver2" | cut
-d.
-f$i)
347 elif [ ! "$p2" ]; then
350 elif [ ! "$p1" = "$p2" ]; then
351 if [ "$p1" -gt "$p2" ] 2>/dev
/null
; then # numeric comparison
353 elif [ "$p2" -gt "$p1" ] 2>/dev
/null
; then # numeric comparison
355 else # numeric, then lexicographic comparison
356 lp=$
(printf "$p1\n$p2\n" | LANG
=C
sort -n |
tail -n1)
357 if [ "$lp" = "$p2" ]; then
372 $app --version >/dev
/null
2>&1 ||
return 1
374 $app --version 2>&1 |
375 sed -n '# Move version to start of line.
376 s/.*[v ]\([0-9]\)/\1/
378 # Skip lines that do not start with version.
381 # Remove characters after the version.
384 # The first component must be digits only.
385 s/^\([0-9]*\)[a-z-].*/\1/
387 #the following essentially does s/5.005/5.5/
388 s/\.0*\([1-9]\)/.\1/g
396 while read app req_ver
; do
397 # We only need libtoolize from the libtool package.
398 if test "$app" = libtool
; then
401 # Exempt git if --no-git is in effect.
402 if test "$app" = git
; then
405 # Honor $APP variables ($TAR, $AUTOCONF, etc.)
406 appvar
=`echo $app | tr '[a-z]-' '[A-Z]_'`
407 test "$appvar" = TAR
&& appvar
=AMTAR
408 eval "app=\${$appvar-$app}"
409 inst_ver
=$
(get_version
$app)
410 if [ ! "$inst_ver" ]; then
411 echo "$me: Error: '$app' not found" >&2
413 elif [ ! "$req_ver" = "-" ]; then
414 latest_ver
=$
(sort_ver
$req_ver $inst_ver | cut
-d' ' -f2)
415 if [ ! "$latest_ver" = "$inst_ver" ]; then
416 echo "$me: Error: '$app' version == $inst_ver is too old" >&2
417 echo " '$app' version >= $req_ver is required" >&2
427 echo "Program Min_version"
428 echo "----------------------"
429 printf %s
"$buildreq"
430 echo "----------------------"
431 # can't depend on column -t
435 # We'd like to use grep -E, to see if any of LT_INIT,
436 # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
437 # but that's not portable enough (e.g., for Solaris).
438 grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac
>/dev
/null \
440 grep '^[ ]*LT_INIT' configure.ac
>/dev
/null \
442 if test $use_libtool = 1; then
443 find_tool LIBTOOLIZE glibtoolize libtoolize
446 if ! printf "$buildreq" | check_versions
; then
448 if test -f README-prereq
; then
449 echo "$0: See README-prereq for how to get the prerequisite programs" >&2
451 echo "$0: Please install the prerequisite programs" >&2
456 echo "$0: Bootstrapping from checked-out $package sources..."
458 # See if we can use gnulib's git-merge-changelog merge driver.
459 if test -d .git
&& (git
--version) >/dev
/null
2>/dev
/null
; then
460 if git config merge.merge-changelog.driver
>/dev
/null
; then
462 elif (git-merge-changelog
--version) >/dev
/null
2>/dev
/null
; then
463 echo "$0: initializing git-merge-changelog driver"
464 git config merge.merge-changelog.name
'GNU-style ChangeLog merge driver'
465 git config merge.merge-changelog.driver
'git-merge-changelog %O %A %B'
467 echo "$0: consider installing git-merge-changelog from gnulib"
474 rm -fr "$gnulib_path"
478 git_modules_config
() {
479 test -f .gitmodules
&& git config
--file .gitmodules
"$@"
482 gnulib_path
=`git_modules_config submodule.gnulib.path`
483 test -z "$gnulib_path" && gnulib_path
=gnulib
487 case ${GNULIB_SRCDIR--} in
489 if git_modules_config submodule.gnulib.url
>/dev
/null
; then
490 echo "$0: getting gnulib files..."
491 git submodule init ||
exit $?
492 git submodule update ||
exit $?
494 elif [ ! -d "$gnulib_path" ]; then
495 echo "$0: getting gnulib files..."
497 trap cleanup_gnulib
1 2 13 15
500 git clone
-h 2>&1 |
grep -- --depth > /dev
/null
&& shallow
='--depth 2'
501 git clone
$shallow git
://git.sv.gnu.org
/gnulib
"$gnulib_path" ||
506 GNULIB_SRCDIR
=$gnulib_path
509 # Use GNULIB_SRCDIR as a reference.
510 if test -d "$GNULIB_SRCDIR"/.git
&& \
511 git_modules_config submodule.gnulib.url
>/dev
/null
; then
512 echo "$0: getting gnulib files..."
513 if git submodule
-h|
grep -- --reference > /dev
/null
; then
514 # Prefer the one-liner available in git 1.6.4 or newer.
515 git submodule update
--init --reference "$GNULIB_SRCDIR" \
516 "$gnulib_path" ||
exit $?
518 # This fallback allows at least git 1.5.5.
519 if test -f "$gnulib_path"/gnulib-tool
; then
520 # Since file already exists, assume submodule init already complete.
521 git submodule update ||
exit $?
523 # Older git can't clone into an empty directory.
524 rmdir "$gnulib_path" 2>/dev
/null
525 git clone
--reference "$GNULIB_SRCDIR" \
526 "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \
527 && git submodule init
&& git submodule update \
531 GNULIB_SRCDIR
=$gnulib_path
536 if $bootstrap_sync; then
537 cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" ||
{
538 echo "$0: updating bootstrap and restarting..."
540 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \
541 -- "$GNULIB_SRCDIR/build-aux/bootstrap" \
542 "$0" "$@" --no-bootstrap-sync
546 gnulib_tool
=$GNULIB_SRCDIR/gnulib-tool
547 <$gnulib_tool ||
exit
551 download_po_files
() {
554 echo "$me: getting translations into $subdir for $domain..."
555 cmd
=`printf "$po_download_command_format" "$domain" "$subdir"`
559 # Mirror .po files to $po_dir/.reference and copy only the new
560 # or modified ones into $po_dir. Also update $po_dir/LINGUAS.
561 # Note po files that exist locally only are left in $po_dir but will
562 # not be included in LINGUAS and hence will not be distributed.
564 # Directory containing primary .po files.
565 # Overwrite them only when we're sure a .po file is new.
569 # Mirror *.po files into this dir.
570 # Usually contains *.s1 checksum files.
571 ref_po_dir
="$po_dir/.reference"
573 test -d $ref_po_dir || mkdir
$ref_po_dir ||
return
574 download_po_files
$ref_po_dir $domain \
575 && ls "$ref_po_dir"/*.po
2>/dev
/null |
576 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" ||
return
578 langs
=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
579 test "$langs" = '*' && langs
=x
581 case $po in x
) continue;; esac
582 new_po
="$ref_po_dir/$po.po"
583 cksum_file
="$ref_po_dir/$po.s1"
584 if ! test -f "$cksum_file" ||
585 ! test -f "$po_dir/$po.po" ||
586 ! $SHA1SUM -c --status "$cksum_file" \
587 < "$new_po" > /dev
/null
; then
588 echo "$me: updated $po_dir/$po.po..."
589 cp "$new_po" "$po_dir/$po.po" \
590 && $SHA1SUM < "$new_po" > "$cksum_file"
598 update_po_files po
$package ||
exit
601 if test -d runtime-po
; then
602 update_po_files runtime-po
$package-runtime ||
exit
613 # If the destination directory doesn't exist, create it.
614 # This is required at least for "lib/uniwidth/cjk.h".
615 dst_dir
=`dirname "$dst"`
616 if ! test -d "$dst_dir"; then
619 # If we've just created a directory like lib/uniwidth,
620 # tell version control system(s) it's ignorable.
621 # FIXME: for now, this does only one level
622 parent
=`dirname "$dst_dir"`
623 for dot_ig
in x
$vc_ignore; do
624 test $dot_ig = x
&& continue
626 insert_vc_ignore
$ig `echo "$dst_dir"|sed 's,.*/,,'`
632 test ! -h "$dst" ||
{
633 echo "$me: rm -f $dst" &&
638 cmp -s "$src" "$dst" ||
{
639 echo "$me: cp -fp $src $dst" &&
644 src_ls
=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i
=$1 &&
645 dst_ls
=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i
=$1 &&
646 test "$src_i" = "$dst_i" ||
{
652 *//* |
*/..
/* |
*/.
/* |
/*/*/*/*/*/)
653 echo >&2 "$me: invalid symlink calculation: $src -> $dst"
655 /*/*/*/*/) dot_dots
=..
/..
/..
/;;
656 /*/*/*/) dot_dots
=..
/..
/;;
657 /*/*/) dot_dots
=..
/;;
661 echo "$me: ln -fs $dot_dots$src $dst" &&
662 ln -fs "$dot_dots$src" "$dst"
668 cp_mark_as_generated
()
673 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
674 symlink_to_dir
"$GNULIB_SRCDIR" "$cp_dst"
675 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
676 symlink_to_dir
$local_gl_dir "$cp_dst"
679 *.
[ch
]) c1
='/* '; c2
=' */';;
680 *.texi
) c1
='@c '; c2
= ;;
681 *.
m4|
*/Make
*|Make
*) c1
='# ' ; c2
= ;;
685 # If the destination directory doesn't exist, create it.
686 # This is required at least for "lib/uniwidth/cjk.h".
687 dst_dir
=`dirname "$cp_dst"`
688 test -d "$dst_dir" || mkdir
-p "$dst_dir"
690 if test -z "$c1"; then
691 cmp -s "$cp_src" "$cp_dst" ||
{
692 # Copy the file first to get proper permissions if it
693 # doesn't already exist. Then overwrite the copy.
694 echo "$me: cp -f $cp_src $cp_dst" &&
696 cp "$cp_src" "$cp_dst-t" &&
697 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
698 mv -f "$cp_dst-t" "$cp_dst"
701 # Copy the file first to get proper permissions if it
702 # doesn't already exist. Then overwrite the copy.
703 cp "$cp_src" "$cp_dst-t" &&
705 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
706 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
707 sed "s!$bt_regex/!!g" "$cp_src"
709 if cmp -s "$cp_dst-t" "$cp_dst"; then
712 echo "$me: cp $cp_src $cp_dst # with edits" &&
713 mv -f "$cp_dst-t" "$cp_dst"
719 version_controlled_file
() {
724 grep -F "/$file/" $dir/CVS
/Entries
2>/dev
/null |
725 grep '^/[^/]*/[0-9]' > /dev
/null
&& found
=yes
726 elif test -d .git
; then
727 git
rm -n "$dir/$file" > /dev
/null
2>&1 && found
=yes
728 elif test -d .svn
; then
729 svn log
-r HEAD
"$dir/$file" > /dev
/null
2>&1 && found
=yes
731 echo "$me: no version control for $dir/$file?" >&2
737 for dir
in .
`(cd $1 && find * -type d -print)`; do
740 for file in `ls -a $1/$dir`; do
743 # FIXME: should all file names starting with "." be ignored?
746 test -d $1/$dir/$file && continue
747 for excluded_file
in $excluded_files; do
748 test "$dir/$file" = "$excluded_file" && continue 2
750 if test $file = Makefile.am
&& test "X$gnulib_mk" != XMakefile.am
; then
751 copied
=$copied${sep}$gnulib_mk; sep
=$nl
752 remove_intl
='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
753 sed "$remove_intl" $1/$dir/$file |
754 cmp - $dir/$gnulib_mk > /dev
/null ||
{
755 echo "$me: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
756 rm -f $dir/$gnulib_mk &&
757 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk &&
758 gnulib_mk_hook
$dir/$gnulib_mk
760 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
761 version_controlled_file
$dir $file; then
762 echo "$me: $dir/$file overrides $1/$dir/$file"
764 copied
=$copied$sep$file; sep
=$nl
765 if test $file = gettext.
m4; then
766 echo "$me: patching m4/gettext.m4 to remove need for intl/* ..."
769 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
770 AC_DEFUN([AM_INTL_SUBDIR], [])
771 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
772 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
774 AC_DEFUN([gl_LOCK_EARLY], [])
775 ' $1/$dir/$file >$dir/$file
777 cp_mark_as_generated
$1/$dir/$file $dir/$file
782 for dot_ig
in x
$vc_ignore; do
783 test $dot_ig = x
&& continue
785 if test -n "$copied"; then
786 insert_vc_ignore
$ig "$copied"
787 # If an ignored file name ends with .in.h, then also add
788 # the name with just ".h". Many gnulib headers are generated,
789 # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
790 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
799 insert_vc_ignore
$ig "$f"
801 # For files like sys_stat.in.h and sys_time.in.h, record as
802 # ignorable the directory we might eventually create: sys/.
803 f
=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
804 insert_vc_ignore
$ig "$f"
811 # Create boot temporary directories to import from gnulib and gettext.
813 mkdir
$bt $bt2 ||
exit
815 # Import from gnulib.
817 gnulib_tool_options
="\
820 --aux-dir $bt/$build_aux\
821 --doc-base $bt/$doc_base\
823 --m4-base $bt/$m4_base/\
824 --source-base $bt/$source_base/\
825 --tests-base $bt/$tests_base\
826 --local-dir $local_gl_dir\
827 $gnulib_tool_option_extras\
829 if test $use_libtool = 1; then
830 case "$gnulib_tool_options " in
832 *) gnulib_tool_options
="$gnulib_tool_options --libtool" ;;
835 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
836 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
839 for file in $gnulib_files; do
840 symlink_to_dir
"$GNULIB_SRCDIR" $file ||
exit
844 # Import from gettext.
846 grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac
>/dev
/null || \
849 if test $with_gettext = yes; then
850 echo "$0: (cd $bt2; ${AUTOPOINT-autopoint}) ..."
851 cp configure.ac
$bt2 &&
852 (cd $bt2 && ${AUTOPOINT-autopoint} && rm configure.ac
) &&
853 slurp
$bt2 $bt ||
exit
855 rm -fr $bt $bt2 ||
exit
857 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
858 # gnulib-populated directories. Such .m4 files would cause aclocal to fail.
859 # The following requires GNU find 4.2.3 or newer. Considering the usual
860 # portability constraints of this script, that may seem a very demanding
861 # requirement, but it should be ok. Ignore any failure, which is fine,
862 # since this is only a convenience to help developers avoid the relatively
863 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
864 # between successive runs of this script.
865 find "$m4_base" "$source_base" \
866 -depth \
( -name '*.m4' -o -name '*.[ch]' \
) \
867 -type l
-xtype l
-delete > /dev
/null
2>&1
869 # Reconfigure, getting other files.
871 # Skip autoheader if it's not needed.
872 grep -E '^[ ]*AC_CONFIG_HEADERS?\>' configure.ac
>/dev
/null ||
877 "${ACLOCAL-aclocal} --force -I '$m4_base' $ACLOCAL_FLAGS" \
878 "${AUTOCONF-autoconf} --force" \
879 "${AUTOHEADER-autoheader} --force" \
880 "${AUTOMAKE-automake} --add-missing --copy --force-missing"
882 if test "$command" = libtool
; then
883 test $use_libtool = 0 \
885 command="${LIBTOOLIZE-libtoolize} -c -f"
887 echo "$0: $command ..."
888 eval "$command" ||
exit
892 # Get some extra files from gnulib, overriding existing files.
893 for file in $gnulib_extra_files; do
895 */INSTALL
) dst
=INSTALL
;;
896 build-aux
/*) dst
=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
899 symlink_to_dir
"$GNULIB_SRCDIR" $file $dst ||
exit
902 if test $with_gettext = yes; then
903 # Create gettext configuration.
904 echo "$0: Creating po/Makevars from po/Makevars.template ..."
907 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
908 /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/
909 /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'|
910 /^XGETTEXT_OPTIONS *=/{
913 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
915 ' po
/Makevars.template
>po
/Makevars ||
exit 1
917 if test -d runtime-po
; then
918 # Similarly for runtime-po/Makevars, but not quite the same.
919 rm -f runtime-po
/Makevars
921 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
922 /^subdir *=.*/s/=.*/= runtime-po/
923 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
924 /^XGETTEXT_OPTIONS *=/{
927 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
929 ' po
/Makevars.template
>runtime-po
/Makevars ||
exit 1
931 # Copy identical files from po to runtime-po.
932 (cd po
&& cp -p Makefile.
in.
in *-quot *.header
*.
sed *.sin ..
/runtime-po
)
938 echo "$0: done. Now you can run './configure'."
941 # eval: (add-hook 'write-file-hooks 'time-stamp)
942 # time-stamp-start: "scriptversion="
943 # time-stamp-format: "%:y-%02m-%02d.%02H"
944 # time-stamp-time-zone: "UTC"
945 # time-stamp-end: "; # UTC"