bootstrap: use git's --depth=N option only if it's supported
[gnulib.git] / build-aux / bootstrap
1 #! /bin/sh
2
3 # Bootstrap this package from checked-out sources.
4
5 # Copyright (C) 2003-2008 Free Software Foundation, Inc.
6
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.
11
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.
16
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/>.
19
20 # Written by Paul Eggert.
21
22 nl='
23 '
24
25 # Ensure file names are sorted consistently across platforms.
26 LC_ALL=C
27 export LC_ALL
28
29 local_gl_dir=gl
30
31 # Temporary directory names.
32 bt='._bootmp'
33 bt_regex=`echo "$bt"| sed 's/\./[.]/g'`
34 bt2=${bt}2
35
36 usage() {
37   echo >&2 "\
38 Usage: $0 [OPTION]...
39 Bootstrap this package from the checked-out sources.
40
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.
51
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.
54
55 Running without arguments will suffice in most cases.
56 "
57 }
58
59 # Configuration.
60
61 # Name of the Makefile.am
62 gnulib_mk=gnulib.mk
63
64 # List of gnulib modules needed.
65 gnulib_modules=
66
67 # Any gnulib files needed that are not in modules.
68 gnulib_files=
69
70 # The command to download all .po files for a specified domain into
71 # a specified directory.  Fill in the first %s is the domain name, and
72 # the second with the destination directory.  Use rsync's -L and -r
73 # options because the latest/%s directory and the .po files within are
74 # all symlinks.
75 po_download_command_format=\
76 "rsync -Lrtvz 'translationproject.org::tp/latest/%s/' '%s'"
77
78 extract_package_name='
79   /^AC_INIT(/{
80      /.*,.*,.*, */{
81        s///
82        s/[][]//g
83        s/)$//
84        p
85        q
86      }
87      s/AC_INIT(\[*//
88      s/]*,.*//
89      s/^GNU //
90      y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
91      s/[^A-Za-z0-9_]/-/g
92      p
93   }
94 '
95 package=`sed -n "$extract_package_name" configure.ac` || exit
96 gnulib_name=lib$package
97
98 build_aux=build-aux
99 source_base=lib
100 m4_base=m4
101 doc_base=doc
102 tests_base=tests
103
104 # Extra files from gnulib, which override files from other sources.
105 gnulib_extra_files="
106         $build_aux/install-sh
107         $build_aux/missing
108         $build_aux/mdate-sh
109         $build_aux/texinfo.tex
110         $build_aux/depcomp
111         $build_aux/config.guess
112         $build_aux/config.sub
113         doc/INSTALL
114 "
115
116 # Additional gnulib-tool options to use.  Use "\newline" to break lines.
117 gnulib_tool_option_extras=
118
119 # Other locale categories that need message catalogs.
120 EXTRA_LOCALE_CATEGORIES=
121
122 # Additional xgettext options to use.  Use "\\\newline" to break lines.
123 XGETTEXT_OPTIONS='\\\
124  --flag=_:1:pass-c-format\\\
125  --flag=N_:1:pass-c-format\\\
126  --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
127 '
128
129 # Package bug report address for gettext files
130 MSGID_BUGS_ADDRESS=bug-$package@gnu.org
131
132 # Files we don't want to import.
133 excluded_files=
134
135 # File that should exist in the top directory of a checked out hierarchy,
136 # but not in a distribution tarball.
137 checkout_only_file=README-hacking
138
139 # Whether to use copies instead of symlinks.
140 copy=false
141
142 # Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
143 # those files to be generated in directories like lib/, m4/, and po/.
144 # Or set it to 'auto' to make this script select which to use based
145 # on which version control system (if any) is used in the source directory.
146 vc_ignore=auto
147
148 # Override the default configuration, if necessary.
149 # Make sure that bootstrap.conf is sourced from the current directory
150 # if we were invoked as "sh bootstrap".
151 case "$0" in
152   */*) test -r "$0.conf" && . "$0.conf" ;;
153   *) test -r "$0.conf" && . ./"$0.conf" ;;
154 esac
155
156
157 if test "$vc_ignore" = auto; then
158   vc_ignore=
159   test -d .git && vc_ignore=.gitignore
160   test -d CVS && vc_ignore="$vc_ignore .cvsignore"
161 fi
162
163 # Translate configuration into internal form.
164
165 # Parse options.
166
167 for option
168 do
169   case $option in
170   --help)
171     usage
172     exit;;
173   --gnulib-srcdir=*)
174     GNULIB_SRCDIR=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;;
175   --skip-po)
176     SKIP_PO=t;;
177   --force)
178     checkout_only_file=;;
179   --copy)
180     copy=true;;
181   *)
182     echo >&2 "$0: $option: unknown option"
183     exit 1;;
184   esac
185 done
186
187 if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
188   echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
189   exit 1
190 fi
191
192 # If $STR is not already on a line by itself in $FILE, insert it,
193 # sorting the new contents of the file and replacing $FILE with the result.
194 insert_sorted_if_absent() {
195   file=$1
196   str=$2
197   test -f $file || touch $file
198   echo "$str" | sort -u - $file | cmp -s - $file \
199     || echo "$str" | sort -u - $file -o $file \
200     || exit 1
201 }
202
203 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
204 found_aux_dir=no
205 grep '^[         ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
206     >/dev/null && found_aux_dir=yes
207 grep '^[         ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
208     >/dev/null && found_aux_dir=yes
209 if test $found_aux_dir = no; then
210   echo "$0: expected line not found in configure.ac. Add the following:" >&2
211   echo "  AC_CONFIG_AUX_DIR([$build_aux])" >&2
212   exit 1
213 fi
214
215 # If $build_aux doesn't exist, create it now, otherwise some bits
216 # below will malfunction.  If creating it, also mark it as ignored.
217 if test ! -d $build_aux; then
218   mkdir $build_aux
219   for dot_ig in x $vc_ignore; do
220     test $dot_ig = x && continue
221     insert_sorted_if_absent $dot_ig $build_aux
222   done
223 fi
224
225 echo "$0: Bootstrapping from checked-out $package sources..."
226
227 # See if we can use gnulib's git-merge-changelog merge driver.
228 if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
229   if git config merge.merge-changelog.driver >/dev/null ; then
230     :
231   elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
232     echo "initializing git-merge-changelog driver"
233     git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
234     git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
235   else
236     echo "consider installing git-merge-changelog from gnulib"
237   fi
238 fi
239
240
241 cleanup_gnulib() {
242   status=$?
243   rm -fr gnulib
244   exit $status
245 }
246
247 git_modules_config () {
248   GIT_CONFIG_LOCAL=.gitmodules git config "$@"
249 }
250
251 # Get gnulib files.
252
253 case ${GNULIB_SRCDIR--} in
254 -)
255   if git_modules_config submodule.gnulib.url >/dev/null; then
256     echo "$0: getting gnulib files..."
257     git submodule init || exit $?
258     git submodule update || exit $?
259
260   elif [ ! -d gnulib ]; then
261     echo "$0: getting gnulib files..."
262
263     trap cleanup_gnulib 1 2 13 15
264
265     git clone --help|grep depth > /dev/null && shallow='--depth 2' || shallow=
266     git clone $shallow git://git.sv.gnu.org/gnulib ||
267       cleanup_gnulib
268
269     trap - 1 2 13 15
270   fi
271   GNULIB_SRCDIR=gnulib
272   ;;
273 *)
274   # Redirect the gnulib submodule to the directory on the command line
275   # if possible.
276   if test -d "$GNULIB_SRCDIR"/.git && \
277         git_modules_config submodule.gnulib.url >/dev/null; then
278     git submodule init
279     GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
280     git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
281     echo "$0: getting gnulib files..."
282     git submodule update || exit $?
283     GNULIB_SRCDIR=gnulib
284   fi
285   ;;
286 esac
287
288 gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
289 <$gnulib_tool || exit
290
291 # Get translations.
292
293 download_po_files() {
294   subdir=$1
295   domain=$2
296   echo "$0: getting translations into $subdir for $domain..."
297   cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
298   eval "$cmd"
299 }
300
301 # Download .po files to $po_dir/.reference and copy only the new
302 # or modified ones into $po_dir.  Also update $po_dir/LINGUAS.
303 update_po_files() {
304   # Directory containing primary .po files.
305   # Overwrite them only when we're sure a .po file is new.
306   po_dir=$1
307   domain=$2
308
309   # Download *.po files into this dir.
310   # Usually contains *.s1 checksum files.
311   ref_po_dir="$po_dir/.reference"
312
313   test -d $ref_po_dir || mkdir $ref_po_dir || return
314   download_po_files $ref_po_dir $domain \
315     && ls "$ref_po_dir"/*.po 2>/dev/null |
316       sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
317
318   langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
319   test "$langs" = '*' && langs=x
320   for po in $langs; do
321     case $po in x) continue;; esac
322     new_po="$ref_po_dir/$po.po"
323     cksum_file="$ref_po_dir/$po.s1"
324     if ! test -f "$cksum_file" ||
325         ! test -f "$po_dir/$po.po" ||
326         ! sha1sum -c --status "$cksum_file" < "$new_po" > /dev/null; then
327       echo "updated $po_dir/$po.po..."
328       cp "$new_po" "$po_dir/$po.po" && sha1sum < "$new_po" > "$cksum_file"
329     fi
330   done
331 }
332
333 case $SKIP_PO in
334 '')
335   if test -d po; then
336     update_po_files po $package || exit
337   fi
338
339   if test -d runtime-po; then
340     update_po_files runtime-po $package-runtime || exit
341   fi;;
342 esac
343
344 symlink_to_dir()
345 {
346   src=$1/$2
347   dst=${3-$2}
348
349   test -f "$src" && {
350
351     # If the destination directory doesn't exist, create it.
352     # This is required at least for "lib/uniwidth/cjk.h".
353     dst_dir=`dirname "$dst"`
354     if ! test -d "$dst_dir"; then
355       mkdir -p "$dst_dir"
356
357       # If we've just created a directory like lib/uniwidth,
358       # tell version control system(s) it's ignorable.
359       # FIXME: for now, this does only one level
360       parent=`dirname "$dst_dir"`
361       for dot_ig in x $vc_ignore; do
362         test $dot_ig = x && continue
363         ig=$parent/$dot_ig
364         insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
365       done
366     fi
367
368     if $copy; then
369       {
370         test ! -h "$dst" || {
371           echo "$0: rm -f $dst" &&
372           rm -f "$dst"
373         }
374       } &&
375       test -f "$dst" &&
376       cmp -s "$src" "$dst" || {
377         echo "$0: cp -fp $src $dst" &&
378         cp -fp "$src" "$dst"
379       }
380     else
381       test -h "$dst" &&
382       src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
383       dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
384       test "$src_i" = "$dst_i" || {
385         dot_dots=
386         case $src in
387         /*) ;;
388         *)
389           case /$dst/ in
390           *//* | */../* | */./* | /*/*/*/*/*/)
391              echo >&2 "$0: invalid symlink calculation: $src -> $dst"
392              exit 1;;
393           /*/*/*/*/)    dot_dots=../../../;;
394           /*/*/*/)      dot_dots=../../;;
395           /*/*/)        dot_dots=../;;
396           esac;;
397         esac
398
399         echo "$0: ln -fs $dot_dots$src $dst" &&
400         ln -fs "$dot_dots$src" "$dst"
401       }
402     fi
403   }
404 }
405
406 cp_mark_as_generated()
407 {
408   cp_src=$1
409   cp_dst=$2
410
411   if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
412     symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
413   elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
414     symlink_to_dir $local_gl_dir "$cp_dst"
415   else
416     case $cp_dst in
417       *.[ch])             c1='/* '; c2=' */';;
418       *.texi)             c1='@c '; c2=     ;;
419       *.m4|*/Make*|Make*) c1='# ' ; c2=     ;;
420       *)                  c1=     ; c2=     ;;
421     esac
422
423     # If the destination directory doesn't exist, create it.
424     # This is required at least for "lib/uniwidth/cjk.h".
425     dst_dir=`dirname "$cp_dst"`
426     test -d "$dst_dir" || mkdir -p "$dst_dir"
427
428     if test -z "$c1"; then
429       cmp -s "$cp_src" "$cp_dst" || {
430         # Copy the file first to get proper permissions if it
431         # doesn't already exist.  Then overwrite the copy.
432         echo "$0: cp -f $cp_src $cp_dst" &&
433         rm -f "$cp_dst" &&
434         cp "$cp_src" "$cp_dst-t" &&
435         sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
436         mv -f "$cp_dst-t" "$cp_dst"
437       }
438     else
439       # Copy the file first to get proper permissions if it
440       # doesn't already exist.  Then overwrite the copy.
441       cp "$cp_src" "$cp_dst-t" &&
442       (
443         echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
444         echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
445         sed "s!$bt_regex/!!g" "$cp_src"
446       ) > $cp_dst-t &&
447       if cmp -s "$cp_dst-t" "$cp_dst"; then
448         rm -f "$cp_dst-t"
449       else
450         echo "$0: cp $cp_src $cp_dst # with edits" &&
451         mv -f "$cp_dst-t" "$cp_dst"
452       fi
453     fi
454   fi
455 }
456
457 version_controlled_file() {
458   dir=$1
459   file=$2
460   found=no
461   if test -d CVS; then
462     grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
463              grep '^/[^/]*/[0-9]' > /dev/null && found=yes
464   elif test -d .git; then
465     git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
466   elif test -d .svn; then
467     svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes
468   else
469     echo "$0: no version control for $dir/$file?" >&2
470   fi
471   test $found = yes
472 }
473
474 slurp() {
475   for dir in . `(cd $1 && find * -type d -print)`; do
476     copied=
477     sep=
478     for file in `ls -a $1/$dir`; do
479       case $file in
480       .|..) continue;;
481       .*) continue;; # FIXME: should all file names starting with "." be ignored?
482       esac
483       test -d $1/$dir/$file && continue
484       for excluded_file in $excluded_files; do
485         test "$dir/$file" = "$excluded_file" && continue 2
486       done
487       if test $file = Makefile.am; then
488         copied=$copied${sep}$gnulib_mk; sep=$nl
489         remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
490         sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/$gnulib_mk || {
491           echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
492           rm -f $dir/$gnulib_mk &&
493           sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
494         }
495       elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
496            version_controlled_file $dir $file; then
497         echo "$0: $dir/$file overrides $1/$dir/$file"
498       else
499         copied=$copied$sep$file; sep=$nl
500         if test $file = gettext.m4; then
501           echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
502           rm -f $dir/$file
503           sed '
504             /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
505               AC_DEFUN([AM_INTL_SUBDIR], [
506             /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
507               AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
508             $a\
509               AC_DEFUN([gl_LOCK_EARLY], [])
510           ' $1/$dir/$file >$dir/$file
511         else
512           cp_mark_as_generated $1/$dir/$file $dir/$file
513         fi
514       fi || exit
515     done
516
517     for dot_ig in x $vc_ignore; do
518       test $dot_ig = x && continue
519       ig=$dir/$dot_ig
520       if test -n "$copied"; then
521         insert_sorted_if_absent $ig "$copied"
522         # If an ignored file name ends with .in.h, then also add
523         # the name with just ".h".  Many gnulib headers are generated,
524         # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
525         # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
526         f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
527         insert_sorted_if_absent $ig "$f"
528
529         # For files like sys_stat.in.h and sys_time.in.h, record as
530         # ignorable the directory we might eventually create: sys/.
531         f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
532         insert_sorted_if_absent $ig "$f"
533       fi
534     done
535   done
536 }
537
538
539 # Create boot temporary directories to import from gnulib and gettext.
540 rm -fr $bt $bt2 &&
541 mkdir $bt $bt2 || exit
542
543 # Import from gnulib.
544
545 gnulib_tool_options="\
546  --import\
547  --no-changelog\
548  --aux-dir $bt/$build_aux\
549  --doc-base $bt/$doc_base\
550  --lib $gnulib_name\
551  --m4-base $bt/$m4_base/\
552  --source-base $bt/$source_base/\
553  --tests-base $bt/$tests_base\
554  --local-dir $local_gl_dir\
555  $gnulib_tool_option_extras\
556 "
557 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
558 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
559 slurp $bt || exit
560
561 for file in $gnulib_files; do
562   symlink_to_dir "$GNULIB_SRCDIR" $file || exit
563 done
564
565
566 # Import from gettext.
567 with_gettext=yes
568 grep '^[         ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
569     with_gettext=no
570
571 if test $with_gettext = yes; then
572   echo "$0: (cd $bt2; autopoint) ..."
573   cp configure.ac $bt2 &&
574   (cd $bt2 && autopoint && rm configure.ac) &&
575   slurp $bt2 $bt || exit
576 fi
577 rm -fr $bt $bt2 || exit
578
579 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
580 # gnulib-populated directories.  Such .m4 files would cause aclocal to fail.
581 # The following requires GNU find 4.2.3 or newer.  Considering the usual
582 # portability constraints of this script, that may seem a very demanding
583 # requirement, but it should be ok.  Ignore any failure, which is fine,
584 # since this is only a convenience to help developers avoid the relatively
585 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
586 # between successive runs of this script.
587 find "$m4_base" "$source_base" \
588   -depth \( -name '*.m4' -o -name '*.[ch]' \) \
589   -type l -xtype l -delete > /dev/null 2>&1
590
591 # Reconfigure, getting other files.
592
593 for command in \
594   libtool \
595   'aclocal --force -I m4' \
596   'autoconf --force' \
597   'autoheader --force' \
598   'automake --add-missing --copy --force-missing';
599 do
600   if test "$command" = libtool; then
601     use_libtool=0
602     # We'd like to use grep -E, to see if any of LT_INIT,
603     # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
604     # but that's not portable enough (e.g., for Solaris).
605     grep '^[     ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
606       && use_libtool=1
607     grep '^[     ]*LT_INIT' configure.ac >/dev/null \
608       && use_libtool=1
609     test $use_libtool = 0 \
610       && continue
611     command='libtoolize -c -f'
612   fi
613   echo "$0: $command ..."
614   $command || exit
615 done
616
617
618 # Get some extra files from gnulib, overriding existing files.
619 for file in $gnulib_extra_files; do
620   case $file in
621   */INSTALL) dst=INSTALL;;
622   build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
623   *) dst=$file;;
624   esac
625   symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
626 done
627
628 if test $with_gettext = yes; then
629   # Create gettext configuration.
630   echo "$0: Creating po/Makevars from po/Makevars.template ..."
631   rm -f po/Makevars
632   sed '
633     /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
634     /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/
635     /^XGETTEXT_OPTIONS *=/{
636       s/$/ \\/
637       a\
638           '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
639     }
640   ' po/Makevars.template >po/Makevars
641
642   if test -d runtime-po; then
643     # Similarly for runtime-po/Makevars, but not quite the same.
644     rm -f runtime-po/Makevars
645     sed '
646       /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
647       /^subdir *=.*/s/=.*/= runtime-po/
648       /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
649       /^XGETTEXT_OPTIONS *=/{
650         s/$/ \\/
651         a\
652             '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
653       }
654     ' <po/Makevars.template >runtime-po/Makevars
655
656     # Copy identical files from po to runtime-po.
657     (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
658   fi
659 fi
660
661 echo "$0: done.  Now you can run './configure'."