bootstrap: check for LT_INIT more portably still ;-)
[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 --depth 2 git://git.sv.gnu.org/gnulib ||
266       cleanup_gnulib
267
268     trap - 1 2 13 15
269   fi
270   GNULIB_SRCDIR=gnulib
271   ;;
272 *)
273   # Redirect the gnulib submodule to the directory on the command line
274   # if possible.
275   if test -d "$GNULIB_SRCDIR"/.git && \
276         git_modules_config submodule.gnulib.url >/dev/null; then
277     git submodule init
278     GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
279     git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
280     echo "$0: getting gnulib files..."
281     git submodule update || exit $?
282     GNULIB_SRCDIR=gnulib
283   fi
284   ;;
285 esac
286
287 gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
288 <$gnulib_tool || exit
289
290 # Get translations.
291
292 download_po_files() {
293   subdir=$1
294   domain=$2
295   echo "$0: getting translations into $subdir for $domain..."
296   cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
297   eval "$cmd"
298 }
299
300 # Download .po files to $po_dir/.reference and copy only the new
301 # or modified ones into $po_dir.  Also update $po_dir/LINGUAS.
302 update_po_files() {
303   # Directory containing primary .po files.
304   # Overwrite them only when we're sure a .po file is new.
305   po_dir=$1
306   domain=$2
307
308   # Download *.po files into this dir.
309   # Usually contains *.s1 checksum files.
310   ref_po_dir="$po_dir/.reference"
311
312   test -d $ref_po_dir || mkdir $ref_po_dir || return
313   download_po_files $ref_po_dir $domain \
314     && ls "$ref_po_dir"/*.po 2>/dev/null |
315       sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS"
316
317   langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
318   test "$langs" = '*' && langs=x
319   for po in $langs; do
320     case $po in x) continue;; esac
321     new_po="$ref_po_dir/$po.po"
322     cksum_file="$ref_po_dir/$po.s1"
323     if ! test -f "$cksum_file" ||
324         ! test -f "$po_dir/$po.po" ||
325         ! sha1sum -c --status "$cksum_file" < "$new_po" > /dev/null; then
326       echo "updated $po_dir/$po.po..."
327       cp "$new_po" "$po_dir/$po.po" && sha1sum < "$new_po" > "$cksum_file"
328     fi
329   done
330 }
331
332 case $SKIP_PO in
333 '')
334   if test -d po; then
335     update_po_files po $package || exit
336   fi
337
338   if test -d runtime-po; then
339     update_po_files runtime-po $package-runtime || exit
340   fi;;
341 esac
342
343 symlink_to_dir()
344 {
345   src=$1/$2
346   dst=${3-$2}
347
348   test -f "$src" && {
349
350     # If the destination directory doesn't exist, create it.
351     # This is required at least for "lib/uniwidth/cjk.h".
352     dst_dir=`dirname "$dst"`
353     if ! test -d "$dst_dir"; then
354       mkdir -p "$dst_dir"
355
356       # If we've just created a directory like lib/uniwidth,
357       # tell version control system(s) it's ignorable.
358       # FIXME: for now, this does only one level
359       parent=`dirname "$dst_dir"`
360       for dot_ig in x $vc_ignore; do
361         test $dot_ig = x && continue
362         ig=$parent/$dot_ig
363         insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
364       done
365     fi
366
367     if $copy; then
368       {
369         test ! -h "$dst" || {
370           echo "$0: rm -f $dst" &&
371           rm -f "$dst"
372         }
373       } &&
374       test -f "$dst" &&
375       cmp -s "$src" "$dst" || {
376         echo "$0: cp -fp $src $dst" &&
377         cp -fp "$src" "$dst"
378       }
379     else
380       test -h "$dst" &&
381       src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
382       dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
383       test "$src_i" = "$dst_i" || {
384         dot_dots=
385         case $src in
386         /*) ;;
387         *)
388           case /$dst/ in
389           *//* | */../* | */./* | /*/*/*/*/*/)
390              echo >&2 "$0: invalid symlink calculation: $src -> $dst"
391              exit 1;;
392           /*/*/*/*/)    dot_dots=../../../;;
393           /*/*/*/)      dot_dots=../../;;
394           /*/*/)        dot_dots=../;;
395           esac;;
396         esac
397
398         echo "$0: ln -fs $dot_dots$src $dst" &&
399         ln -fs "$dot_dots$src" "$dst"
400       }
401     fi
402   }
403 }
404
405 cp_mark_as_generated()
406 {
407   cp_src=$1
408   cp_dst=$2
409
410   if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
411     symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
412   elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
413     symlink_to_dir $local_gl_dir "$cp_dst"
414   else
415     case $cp_dst in
416       *.[ch])             c1='/* '; c2=' */';;
417       *.texi)             c1='@c '; c2=     ;;
418       *.m4|*/Make*|Make*) c1='# ' ; c2=     ;;
419       *)                  c1=     ; c2=     ;;
420     esac
421
422     # If the destination directory doesn't exist, create it.
423     # This is required at least for "lib/uniwidth/cjk.h".
424     dst_dir=`dirname "$cp_dst"`
425     test -d "$dst_dir" || mkdir -p "$dst_dir"
426
427     if test -z "$c1"; then
428       cmp -s "$cp_src" "$cp_dst" || {
429         # Copy the file first to get proper permissions if it
430         # doesn't already exist.  Then overwrite the copy.
431         echo "$0: cp -f $cp_src $cp_dst" &&
432         rm -f "$cp_dst" &&
433         cp "$cp_src" "$cp_dst-t" &&
434         sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
435         mv -f "$cp_dst-t" "$cp_dst"
436       }
437     else
438       # Copy the file first to get proper permissions if it
439       # doesn't already exist.  Then overwrite the copy.
440       cp "$cp_src" "$cp_dst-t" &&
441       (
442         echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
443         echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
444         sed "s!$bt_regex/!!g" "$cp_src"
445       ) > $cp_dst-t &&
446       if cmp -s "$cp_dst-t" "$cp_dst"; then
447         rm -f "$cp_dst-t"
448       else
449         echo "$0: cp $cp_src $cp_dst # with edits" &&
450         mv -f "$cp_dst-t" "$cp_dst"
451       fi
452     fi
453   fi
454 }
455
456 version_controlled_file() {
457   dir=$1
458   file=$2
459   found=no
460   if test -d CVS; then
461     grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
462              grep '^/[^/]*/[0-9]' > /dev/null && found=yes
463   elif test -d .git; then
464     git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
465   elif test -d .svn; then
466     svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes
467   else
468     echo "$0: no version control for $dir/$file?" >&2
469   fi
470   test $found = yes
471 }
472
473 slurp() {
474   for dir in . `(cd $1 && find * -type d -print)`; do
475     copied=
476     sep=
477     for file in `ls -a $1/$dir`; do
478       case $file in
479       .|..) continue;;
480       .*) continue;; # FIXME: should all file names starting with "." be ignored?
481       esac
482       test -d $1/$dir/$file && continue
483       for excluded_file in $excluded_files; do
484         test "$dir/$file" = "$excluded_file" && continue 2
485       done
486       if test $file = Makefile.am; then
487         copied=$copied${sep}$gnulib_mk; sep=$nl
488         remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
489         sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/$gnulib_mk || {
490           echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
491           rm -f $dir/$gnulib_mk &&
492           sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
493         }
494       elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
495            version_controlled_file $dir $file; then
496         echo "$0: $dir/$file overrides $1/$dir/$file"
497       else
498         copied=$copied$sep$file; sep=$nl
499         if test $file = gettext.m4; then
500           echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
501           rm -f $dir/$file
502           sed '
503             /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
504               AC_DEFUN([AM_INTL_SUBDIR], [
505             /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
506               AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
507             $a\
508               AC_DEFUN([gl_LOCK_EARLY], [])
509           ' $1/$dir/$file >$dir/$file
510         else
511           cp_mark_as_generated $1/$dir/$file $dir/$file
512         fi
513       fi || exit
514     done
515
516     for dot_ig in x $vc_ignore; do
517       test $dot_ig = x && continue
518       ig=$dir/$dot_ig
519       if test -n "$copied"; then
520         insert_sorted_if_absent $ig "$copied"
521         # If an ignored file name ends with .in.h, then also add
522         # the name with just ".h".  Many gnulib headers are generated,
523         # e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
524         # Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
525         f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
526         insert_sorted_if_absent $ig "$f"
527
528         # For files like sys_stat.in.h and sys_time.in.h, record as
529         # ignorable the directory we might eventually create: sys/.
530         f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
531         insert_sorted_if_absent $ig "$f"
532       fi
533     done
534   done
535 }
536
537
538 # Create boot temporary directories to import from gnulib and gettext.
539 rm -fr $bt $bt2 &&
540 mkdir $bt $bt2 || exit
541
542 # Import from gnulib.
543
544 gnulib_tool_options="\
545  --import\
546  --no-changelog\
547  --aux-dir $bt/$build_aux\
548  --doc-base $bt/$doc_base\
549  --lib $gnulib_name\
550  --m4-base $bt/$m4_base/\
551  --source-base $bt/$source_base/\
552  --tests-base $bt/$tests_base\
553  --local-dir $local_gl_dir\
554  $gnulib_tool_option_extras\
555 "
556 echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
557 $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
558 slurp $bt || exit
559
560 for file in $gnulib_files; do
561   symlink_to_dir "$GNULIB_SRCDIR" $file || exit
562 done
563
564
565 # Import from gettext.
566 with_gettext=yes
567 grep '^[         ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
568     with_gettext=no
569
570 if test $with_gettext = yes; then
571   echo "$0: (cd $bt2; autopoint) ..."
572   cp configure.ac $bt2 &&
573   (cd $bt2 && autopoint && rm configure.ac) &&
574   slurp $bt2 $bt || exit
575 fi
576 rm -fr $bt $bt2 || exit
577
578 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
579 # gnulib-populated directories.  Such .m4 files would cause aclocal to fail.
580 # The following requires GNU find 4.2.3 or newer.  Considering the usual
581 # portability constraints of this script, that may seem a very demanding
582 # requirement, but it should be ok.  Ignore any failure, which is fine,
583 # since this is only a convenience to help developers avoid the relatively
584 # unusual case in which a symlinked-to .m4 file is git-removed from gnulib
585 # between successive runs of this script.
586 find "$m4_base" "$source_base" \
587   -depth \( -name '*.m4' -o -name '*.[ch]' \) \
588   -type l -xtype l -delete > /dev/null 2>&1
589
590 # Reconfigure, getting other files.
591
592 for command in \
593   libtool \
594   'aclocal --force -I m4' \
595   'autoconf --force' \
596   'autoheader --force' \
597   'automake --add-missing --copy --force-missing';
598 do
599   if test "$command" = libtool; then
600     use_libtool=0
601     # We'd like to use grep -E, to see if any of LT_INIT,
602     # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
603     # but that's not portable enough (e.g., for Solaris).
604     grep '^[     ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
605       && use_libtool=1
606     grep '^[     ]*LT_INIT' configure.ac >/dev/null \
607       && use_libtool=1
608     test $use_libtool = 0 \
609       && continue
610     command='libtoolize -c -f'
611   fi
612   echo "$0: $command ..."
613   $command || exit
614 done
615
616
617 # Get some extra files from gnulib, overriding existing files.
618 for file in $gnulib_extra_files; do
619   case $file in
620   */INSTALL) dst=INSTALL;;
621   build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
622   *) dst=$file;;
623   esac
624   symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
625 done
626
627 if test $with_gettext = yes; then
628   # Create gettext configuration.
629   echo "$0: Creating po/Makevars from po/Makevars.template ..."
630   rm -f po/Makevars
631   sed '
632     /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
633     /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$MSGID_BUGS_ADDRESS"'/
634     /^XGETTEXT_OPTIONS *=/{
635       s/$/ \\/
636       a\
637           '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
638     }
639   ' po/Makevars.template >po/Makevars
640
641   if test -d runtime-po; then
642     # Similarly for runtime-po/Makevars, but not quite the same.
643     rm -f runtime-po/Makevars
644     sed '
645       /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
646       /^subdir *=.*/s/=.*/= runtime-po/
647       /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
648       /^XGETTEXT_OPTIONS *=/{
649         s/$/ \\/
650         a\
651             '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
652       }
653     ' <po/Makevars.template >runtime-po/Makevars
654
655     # Copy identical files from po to runtime-po.
656     (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
657   fi
658 fi
659
660 echo "$0: done.  Now you can run './configure'."