Avoid undefined behavior
[tar/ericb.git] / bootstrap
blob4d86ff2029fa2eb4f1fe3922c1fbaab477cdee0a
1 #! /bin/sh
3 # Bootstrap this package from checked-out sources.
5 # Copyright (C) 2003-2008, 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 and Sergey Poznyakoff.
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 --paxutils-srcdir=DIRNAME Specify the local directory where paxutils
43 sources reside. Use this if you already
44 have paxutils sources on your machine, and
45 do not want to waste your bandwidth dowloading
46 them again.
47 --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
48 sources reside. Use this if you already
49 have gnulib sources on your machine, and
50 do not want to waste your bandwidth downloading
51 them again.
52 --copy Copy files instead of creating symbolic links.
53 --force Attempt to bootstrap even if the sources seem
54 not to have been checked out.
55 --skip-po Do not download po files.
57 If the file $0.conf exists in the same directory as this script, its
58 contents are read as shell variables to configure the bootstrap.
60 Running without arguments will suffice in most cases.
64 # Configuration.
66 # Name of the Makefile.am
67 gnulib_mk=gnulib.mk
69 # List of gnulib modules needed.
70 gnulib_modules=
72 # Any gnulib files needed that are not in modules.
73 gnulib_files=
75 # The command to download all .po files for a specified domain into
76 # a specified directory. Fill in the first %s is the domain name, and
77 # the second with the destination directory. Use rsync's -L and -r
78 # options because the latest/%s directory and the .po files within are
79 # all symlinks.
80 po_download_command_format=\
81 "rsync -Lrtvz 'translationproject.org::tp/latest/%s/' '%s'"
83 extract_package_name='
84 /^AC_INIT(/{
85 /.*,.*,.*, */{
86 s///
87 s/[][]//g
88 s/)$//
92 s/AC_INIT(\[*//
93 s/]*,.*//
94 s/^GNU //
95 y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
96 s/[^A-Za-z0-9_]/-/g
100 package=`sed -n "$extract_package_name" configure.ac` || exit
101 gnulib_name=lib$package
103 build_aux=build-aux
104 source_base=lib
105 m4_base=m4
106 doc_base=doc
107 tests_base=tests
109 # Extra files from gnulib, which override files from other sources.
110 gnulib_extra_files="
111 $build_aux/install-sh
112 $build_aux/missing
113 $build_aux/mdate-sh
114 $build_aux/texinfo.tex
115 $build_aux/depcomp
116 $build_aux/config.guess
117 $build_aux/config.sub
118 doc/INSTALL
121 # Additional gnulib-tool options to use. Use "\newline" to break lines.
122 gnulib_tool_option_extras=
124 # Other locale categories that need message catalogs.
125 EXTRA_LOCALE_CATEGORIES=
127 # Additional xgettext options to use. Use "\\\newline" to break lines.
128 XGETTEXT_OPTIONS='\\\
129 --flag=_:1:pass-c-format\\\
130 --flag=N_:1:pass-c-format\\\
131 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
134 # Package bug report address for gettext files
135 MSGID_BUGS_ADDRESS=bug-$package@gnu.org
137 # Files we don't want to import.
138 excluded_files=
140 # File that should exist in the top directory of a checked out hierarchy,
141 # but not in a distribution tarball.
142 checkout_only_file=README-hacking
144 # Whether to use copies instead of symlinks.
145 copy=false
147 # Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
148 # those files to be generated in directories like lib/, m4/, and po/.
149 # Or set it to 'auto' to make this script select which to use based
150 # on which version control system (if any) is used in the source directory.
151 vc_ignore=auto
153 # Override the default configuration, if necessary.
154 # Make sure that bootstrap.conf is sourced from the current directory
155 # if we were invoked as "sh bootstrap".
156 case "$0" in
157 */*) test -r "$0.conf" && . "$0.conf" ;;
158 *) test -r "$0.conf" && . ./"$0.conf" ;;
159 esac
162 if test "$vc_ignore" = auto; then
163 vc_ignore=
164 test -d .git && vc_ignore=.gitignore
165 test -d CVS && vc_ignore="$vc_ignore .cvsignore"
168 # Translate configuration into internal form.
170 # Parse options.
172 for option
174 case $option in
175 --help)
176 usage
177 exit;;
178 --gnulib-srcdir=*)
179 GNULIB_SRCDIR=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;;
180 --paxutils-srcdir=*)
181 PAXUTILS_SRCDIR=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;;
182 --skip-po)
183 SKIP_PO=t;;
184 --force)
185 checkout_only_file=;;
186 --copy)
187 copy=true;;
189 echo >&2 "$0: $option: unknown option"
190 exit 1;;
191 esac
192 done
194 if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
195 echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
196 exit 1
199 # If $STR is not already on a line by itself in $FILE, insert it,
200 # sorting the new contents of the file and replacing $FILE with the result.
201 insert_sorted_if_absent() {
202 file=$1
203 str=$2
204 test -f $file || touch $file
205 echo "$str" | sort -u - $file | cmp -s - $file \
206 || echo "$str" | sort -u - $file -o $file \
207 || exit 1
210 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
211 found_aux_dir=no
212 grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
213 >/dev/null && found_aux_dir=yes
214 grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
215 >/dev/null && found_aux_dir=yes
216 if test $found_aux_dir = no; then
217 echo "$0: expected line not found in configure.ac. Add the following:" >&2
218 echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2
219 exit 1
222 # If $build_aux doesn't exist, create it now, otherwise some bits
223 # below will malfunction. If creating it, also mark it as ignored.
224 if test ! -d $build_aux; then
225 mkdir $build_aux
226 for dot_ig in x $vc_ignore; do
227 test $dot_ig = x && continue
228 insert_sorted_if_absent $dot_ig $build_aux
229 done
232 echo "$0: Bootstrapping from checked-out $package sources..."
234 # See if we can use gnulib's git-merge-changelog merge driver.
235 if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
236 if git config merge.merge-changelog.driver >/dev/null ; then
238 elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
239 echo "initializing git-merge-changelog driver"
240 git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
241 git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
242 else
243 echo "consider installing git-merge-changelog from gnulib"
247 cleanup() {
248 status=$?
249 rm -fr $1
250 exit $status
253 git_modules_config () {
254 GIT_CONFIG_LOCAL=.gitmodules git config "$@"
257 # Get paxutils files.
258 case ${PAXUTILS_SRCDIR--} in
259 -) if [ ! -d paxutils ]; then
260 echo "$0: getting paxutils files..."
262 trap "cleanup paxutils" 1 2 13 15
264 git clone --depth 1 git://git.sv.gnu.org/paxutils || cleanup paxutils
266 trap - 1 2 13 15
268 PAXUTILS_SRCDIR=paxutils
270 esac
272 if [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then
273 gnulib_modules=`
274 (echo "$gnulib_modules"; grep '^[^#]' $PAXUTILS_SRCDIR/gnulib.modules) |
275 sort -u
279 # Get gnulib files.
281 case ${GNULIB_SRCDIR--} in
283 if git_modules_config submodule.gnulib.url >/dev/null; then
284 echo "$0: getting gnulib files..."
285 git submodule init || exit $?
286 git submodule update || exit $?
288 elif [ ! -d gnulib ]; then
289 echo "$0: getting gnulib files..."
291 trap cleanup_gnulib 1 2 13 15
293 git clone --help|grep depth > /dev/null && shallow='--depth 2' || shallow=
294 git clone $shallow git://git.sv.gnu.org/gnulib ||
295 "cleanup $1"
297 trap - 1 2 13 15
299 GNULIB_SRCDIR=gnulib
302 # Redirect the gnulib submodule to the directory on the command line
303 # if possible.
304 if test -d "$GNULIB_SRCDIR"/.git && \
305 git_modules_config submodule.gnulib.url >/dev/null; then
306 git submodule init
307 GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
308 git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
309 echo "$0: getting gnulib files..."
310 git submodule update || exit $?
311 GNULIB_SRCDIR=gnulib
314 esac
316 gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
317 <$gnulib_tool || exit
319 # Get translations.
321 download_po_files() {
322 subdir=$1
323 domain=$2
324 echo "$0: getting translations into $subdir for $domain..."
325 cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
326 eval "$cmd"
329 # Download .po files to $po_dir/.reference and copy only the new
330 # or modified ones into $po_dir. Also update $po_dir/LINGUAS.
331 update_po_files() {
332 # Directory containing primary .po files.
333 # Overwrite them only when we're sure a .po file is new.
334 po_dir=$1
335 domain=$2
337 # Download *.po files into this dir.
338 # Usually contains *.s1 checksum files.
339 ref_po_dir="$po_dir/.reference"
341 test -d $ref_po_dir || mkdir $ref_po_dir || return
342 download_po_files $ref_po_dir $domain \
343 && ls "$ref_po_dir"/*.po 2>/dev/null |
344 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
346 langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
347 test "$langs" = '*' && langs=x
348 for po in $langs; do
349 case $po in x) continue;; esac
350 new_po="$ref_po_dir/$po.po"
351 cksum_file="$ref_po_dir/$po.s1"
352 if ! test -f "$cksum_file" ||
353 ! test -f "$po_dir/$po.po" ||
354 ! sha1sum -c --status "$cksum_file" < "$new_po" > /dev/null; then
355 echo "updated $po_dir/$po.po..."
356 cp "$new_po" "$po_dir/$po.po" && sha1sum < "$new_po" > "$cksum_file"
358 done
361 case $SKIP_PO in
363 if test -d po; then
364 update_po_files po $package || exit
367 if test -d runtime-po; then
368 update_po_files runtime-po $package-runtime || exit
369 fi;;
370 esac
372 symlink_to_dir()
374 src=$1/$2
375 dst=${3-$2}
377 test -f "$src" && {
379 # If the destination directory doesn't exist, create it.
380 # This is required at least for "lib/uniwidth/cjk.h".
381 dst_dir=`dirname "$dst"`
382 if ! test -d "$dst_dir"; then
383 mkdir -p "$dst_dir"
385 # If we've just created a directory like lib/uniwidth,
386 # tell version control system(s) it's ignorable.
387 # FIXME: for now, this does only one level
388 parent=`dirname "$dst_dir"`
389 for dot_ig in x $vc_ignore; do
390 test $dot_ig = x && continue
391 ig=$parent/$dot_ig
392 insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
393 done
396 if $copy; then
398 test ! -h "$dst" || {
399 echo "$0: rm -f $dst" &&
400 rm -f "$dst"
402 } &&
403 test -f "$dst" &&
404 cmp -s "$src" "$dst" || {
405 echo "$0: cp -fp $src $dst" &&
406 cp -fp "$src" "$dst"
408 else
409 test -h "$dst" &&
410 src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
411 dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
412 test "$src_i" = "$dst_i" || {
413 dot_dots=
414 case $src in
415 /*) ;;
417 case /$dst/ in
418 /./*) ;;
419 *//* | */../* | */./* | /*/*/*/*/*/)
420 echo >&2 "$0: invalid symlink calculation: $src -> $dst"
421 exit 1;;
422 /*/*/*/*/) dot_dots=../../../;;
423 /*/*/*/) dot_dots=../../;;
424 /*/*/) dot_dots=../;;
425 esac;;
426 esac
428 echo "$0: ln -fs $dot_dots$src $dst" &&
429 ln -fs "$dot_dots$src" "$dst"
435 cp_mark_as_generated()
437 cp_src=$1
438 cp_dst=$2
440 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
441 symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
442 elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
443 symlink_to_dir $local_gl_dir "$cp_dst"
444 else
445 case $cp_dst in
446 *.[ch]) c1='/* '; c2=' */';;
447 *.texi) c1='@c '; c2= ;;
448 *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
449 *) c1= ; c2= ;;
450 esac
452 # If the destination directory doesn't exist, create it.
453 # This is required at least for "lib/uniwidth/cjk.h".
454 dst_dir=`dirname "$cp_dst"`
455 test -d "$dst_dir" || mkdir -p "$dst_dir"
457 if test -z "$c1"; then
458 cmp -s "$cp_src" "$cp_dst" || {
459 # Copy the file first to get proper permissions if it
460 # doesn't already exist. Then overwrite the copy.
461 echo "$0: cp -f $cp_src $cp_dst" &&
462 rm -f "$cp_dst" &&
463 cp "$cp_src" "$cp_dst-t" &&
464 sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
465 mv -f "$cp_dst-t" "$cp_dst"
467 else
468 # Copy the file first to get proper permissions if it
469 # doesn't already exist. Then overwrite the copy.
470 cp "$cp_src" "$cp_dst-t" &&
472 echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
473 echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
474 sed "s!$bt_regex/!!g" "$cp_src"
475 ) > $cp_dst-t &&
476 if cmp -s "$cp_dst-t" "$cp_dst"; then
477 rm -f "$cp_dst-t"
478 else
479 echo "$0: cp $cp_src $cp_dst # with edits" &&
480 mv -f "$cp_dst-t" "$cp_dst"
486 version_controlled_file() {
487 dir=$1
488 file=$2
489 found=no
490 if test -d CVS; then
491 grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
492 grep '^/[^/]*/[0-9]' > /dev/null && found=yes
493 elif test -d .git; then
494 git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
495 elif test -d .svn; then
496 svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes
497 else
498 echo "$0: no version control for $dir/$file?" >&2
500 test $found = yes
503 slurp() {
504 for dir in . `(cd $1 && find * -type d -print)`; do
505 copied=
506 sep=
507 for file in `ls -a $1/$dir`; do
508 case $file in
509 .|..) continue;;
510 .*) continue;; # FIXME: should all file names starting with "." be ignored?
511 esac
512 test -d $1/$dir/$file && continue
513 for excluded_file in $excluded_files; do
514 test "$dir/$file" = "$excluded_file" && continue 2
515 done
516 if test $file = Makefile.am; then
517 copied=$copied${sep}$gnulib_mk; sep=$nl
518 remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
519 sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/$gnulib_mk || {
520 echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
521 rm -f $dir/$gnulib_mk &&
522 sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
524 elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
525 version_controlled_file $dir $file; then
526 echo "$0: $dir/$file overrides $1/$dir/$file"
527 else
528 copied=$copied$sep$file; sep=$nl
529 if test $file = gettext.m4; then
530 echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
531 rm -f $dir/$file
532 sed '
533 /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
534 AC_DEFUN([AM_INTL_SUBDIR], [
535 /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
536 AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
538 AC_DEFUN([gl_LOCK_EARLY], [])
539 ' $1/$dir/$file >$dir/$file
540 else
541 cp_mark_as_generated $1/$dir/$file $dir/$file
543 fi || exit
544 done
546 for dot_ig in x $vc_ignore; do
547 test $dot_ig = x && continue
548 ig=$dir/$dot_ig
549 if test -n "$copied"; then
550 insert_sorted_if_absent $ig "$copied"
551 # If an ignored file name ends with .in.h, then also add
552 # the name with just ".h". Many gnulib headers are generated,
553 # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
554 # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
555 f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
556 insert_sorted_if_absent $ig "$f"
558 # For files like sys_stat.in.h and sys_time.in.h, record as
559 # ignorable the directory we might eventually create: sys/.
560 f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
561 insert_sorted_if_absent $ig "$f"
563 done
564 done
568 # Create boot temporary directories to import from gnulib and gettext.
569 rm -fr $bt $bt2 &&
570 mkdir $bt $bt2 || exit
572 # Import from gnulib.
574 gnulib_tool_options="\
575 --import\
576 --no-changelog\
577 --aux-dir $bt/$build_aux\
578 --doc-base $bt/$doc_base\
579 --lib $gnulib_name\
580 --m4-base $bt/$m4_base/\
581 --source-base $bt/$source_base/\
582 --tests-base $bt/$tests_base\
583 --local-dir $local_gl_dir\
584 $gnulib_tool_option_extras\
586 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
587 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
588 slurp $bt || exit
590 for file in $gnulib_files; do
591 symlink_to_dir "$GNULIB_SRCDIR" $file || exit
592 done
595 # Import from gettext.
596 with_gettext=yes
597 grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
598 with_gettext=no
600 if test $with_gettext = yes; then
601 echo "$0: (cd $bt2; autopoint) ..."
602 cp configure.ac $bt2 &&
603 (cd $bt2 && autopoint && rm configure.ac) &&
604 slurp $bt2 $bt || exit
606 rm -fr $bt $bt2 || exit
608 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
609 # gnulib-populated directories. Such .m4 files would cause aclocal to fail.
610 # The following requires GNU find 4.2.3 or newer. Considering the usual
611 # portability constraints of this script, that may seem a very demanding
612 # requirement, but it should be ok. Ignore any failure, which is fine,
613 # since this is only a convenience to help developers avoid the relatively
614 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
615 # between successive runs of this script.
616 find "$m4_base" "$source_base" \
617 -depth \( -name '*.m4' -o -name '*.[ch]' \) \
618 -type l -xtype l -delete > /dev/null 2>&1
620 # copy_files srcdir dstdir
621 copy_files() {
622 for file in `cat $1/DISTFILES`
624 case $file in
625 "#*") continue;;
626 esac
627 dst=`echo $file | sed 's^.*/^^'`
628 if [ $# -eq 3 ]; then
629 case $dst in
630 ${3}*) ;;
631 *) dst=${3}$dst;;
632 esac
634 symlink_to_dir "$1" "$file" "$2/$dst" || exit
635 # FIXME ignorefile $2 $dst
636 done
639 # Import from paxutils
640 copy_files ${PAXUTILS_SRCDIR} .
641 copy_files ${PAXUTILS_SRCDIR}/am m4
642 echo "$0: Creating m4/paxutils.m4"
643 (echo "# This file is generated automatically. Please, do not edit."
644 echo "#"
645 echo "AC_DEFUN([${package}_PAXUTILS],["
646 cat ${PAXUTILS_SRCDIR}/am/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z
647 echo "])") > ./m4/paxutils.m4
648 #FIXME ignorefile m4 paxutils.m4
650 if [ -d rmt ]; then
652 else
653 mkdir rmt
656 for dir in doc rmt lib tests
658 copy_files ${PAXUTILS_SRCDIR}/$dir $dir
659 done
661 copy_files ${PAXUTILS_SRCDIR}/paxlib lib pax
664 # Reconfigure, getting other files.
666 for command in \
667 libtool \
668 'aclocal --force -I m4' \
669 'autoconf --force' \
670 'autoheader --force' \
671 'automake --add-missing --copy --force-missing';
673 if test "$command" = libtool; then
674 use_libtool=0
675 # We'd like to use grep -E, to see if any of LT_INIT,
676 # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
677 # but that's not portable enough (e.g., for Solaris).
678 grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
679 && use_libtool=1
680 grep '^[ ]*LT_INIT' configure.ac >/dev/null \
681 && use_libtool=1
682 test $use_libtool = 0 \
683 && continue
684 command='libtoolize -c -f'
686 echo "$0: $command ..."
687 $command || exit
688 done
691 # Get some extra files from gnulib, overriding existing files.
692 for file in $gnulib_extra_files; do
693 case $file in
694 */INSTALL) dst=INSTALL;;
695 build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
696 *) dst=$file;;
697 esac
698 symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
699 done
701 if test $with_gettext = yes; then
702 # Create gettext configuration.
703 echo "$0: Creating po/Makevars from po/Makevars.template ..."
704 rm -f po/Makevars
705 sed '
706 /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
707 /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/
708 /^XGETTEXT_OPTIONS *=/{
709 s/$/ \\/
711 '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
713 ' po/Makevars.template >po/Makevars
715 if test -d runtime-po; then
716 # Similarly for runtime-po/Makevars, but not quite the same.
717 rm -f runtime-po/Makevars
718 sed '
719 /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
720 /^subdir *=.*/s/=.*/= runtime-po/
721 /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
722 /^XGETTEXT_OPTIONS *=/{
723 s/$/ \\/
725 '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
727 ' <po/Makevars.template >runtime-po/Makevars
729 # Copy identical files from po to runtime-po.
730 (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
734 echo "$0: done. Now you can run './configure'."