bootstrap 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659
  1. #! /bin/sh
  2. # Bootstrap this package from CVS.
  3. # Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
  4. # This program is free software; you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License as published by
  6. # the Free Software Foundation; either version 3, or (at your option)
  7. # any later version.
  8. # This program is distributed in the hope that it will be useful,
  9. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. # GNU General Public License for more details.
  12. # You should have received a copy of the GNU General Public License
  13. # along with this program; if not, write to the Free Software
  14. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  15. # 02110-1301, USA.
  16. # Written by Paul Eggert and Sergey Poznyakoff.
  17. nl='
  18. '
  19. # Ensure file names are sorted consistently across platforms.
  20. # Also, ensure diagnostics are in English, e.g., "wget --help" below.
  21. LC_ALL=C
  22. export LC_ALL
  23. usage() {
  24. echo >&2 "\
  25. Usage: $0 [OPTION]...
  26. Bootstrap this package from the checked-out sources.
  27. Options:
  28. --paxutils-srcdir=DIRNAME Specify the local directory where paxutils
  29. sources reside. Use this if you already
  30. have paxutils sources on your machine, and
  31. do not want to waste your bandwidth dowloading
  32. them again.
  33. --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
  34. sources reside. Use this if you already
  35. have gnulib sources on your machine, and
  36. do not want to waste your bandwidth dowloading
  37. them again.
  38. --copy Copy files instead of creating symbolic links.
  39. --force Attempt to bootstrap even if the sources seem
  40. not to have been checked out.
  41. --skip-po Do not download po files.
  42. --update-po[=LANG] Update po file(s) and exit.
  43. --cvs-user=USERNAME Set the CVS username to be used when accessing
  44. the gnulib repository.
  45. If the file bootstrap.conf exists in the current working directory, its
  46. contents are read as shell variables to configure the bootstrap.
  47. Local defaults can be provided by placing the file \`.bootstrap' in the
  48. current working directory. The file is read after bootstrap.conf, comments
  49. and empty lines are removed, shell variables expanded and the result is
  50. prepended to the command line options.
  51. Running without arguments will suffice in most cases.
  52. "
  53. }
  54. checkout() {
  55. if [ ! -d $1 ]; then
  56. echo "$0: getting $1 files..."
  57. case ${CVS_AUTH-pserver} in
  58. pserver)
  59. CVS_PREFIX=':pserver:anonymous@';;
  60. ssh)
  61. CVS_PREFIX="$CVS_USER${CVS_USER+@}";;
  62. *)
  63. echo "$0: $CVS_AUTH: Unknown CVS access method" >&2
  64. exit 1;;
  65. esac
  66. case $CVS_RSH in
  67. '') CVS_RSH=ssh; export CVS_RSH;;
  68. esac
  69. trap "cleanup $1" 1 2 13 15
  70. cvs -z3 -q -d ${CVS_PREFIX}cvs.savannah.gnu.org:/cvsroot/"$1" co $1 ||
  71. cleanup $1
  72. trap - 1 2 13 15
  73. fi
  74. }
  75. cleanup() {
  76. status=$?
  77. rm -fr $1
  78. exit $status
  79. }
  80. # Configuration.
  81. # List of gnulib modules needed.
  82. gnulib_modules=
  83. # Any gnulib files needed that are not in modules.
  84. gnulib_files=
  85. # Translation Project URL, for the registry of all projects
  86. # and for the translation-team master directory.
  87. tp_url() {
  88. echo "http://translationproject.org/domain/$1.html"
  89. }
  90. extract_package_name='
  91. /^AC_INIT(/{
  92. /.*,.*,.*,/{
  93. s///
  94. s/[][]//g
  95. p
  96. q
  97. }
  98. s/AC_INIT(\[*//
  99. s/]*,.*//
  100. s/^GNU //
  101. y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
  102. s/[^A-Za-z0-9_]/-/g
  103. p
  104. }
  105. '
  106. package=`sed -n "$extract_package_name" configure.ac` || exit
  107. # Extra files from gnulib, which override files from other sources.
  108. gnulib_extra_files='
  109. build-aux/announce-gen
  110. build-aux/install-sh
  111. build-aux/missing
  112. build-aux/mdate-sh
  113. build-aux/texinfo.tex
  114. build-aux/depcomp
  115. build-aux/config.guess
  116. build-aux/config.sub
  117. doc/INSTALL
  118. '
  119. # Other locale categories that need message catalogs.
  120. EXTRA_LOCALE_CATEGORIES=
  121. # Additional xgettext options to use. Use "\\\newline" to break lines.
  122. XGETTEXT_OPTIONS='\\\
  123. --flag=_:1:pass-c-format\\\
  124. --flag=N_:1:pass-c-format\\\
  125. --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
  126. '
  127. # Files we don't want to import.
  128. excluded_files=
  129. # File that should exist in the top directory of a checked out hierarchy,
  130. # but not in a distribution tarball.
  131. CVS_only_file=README-cvs
  132. # Whether to use copies instead of symlinks.
  133. copy=false
  134. # Override the default configuration, if necessary.
  135. test -r bootstrap.conf && . ./bootstrap.conf
  136. # Read local configuration file
  137. if [ -r .bootstrap ]; then
  138. echo "$0: Reading configuration file .bootstrap"
  139. eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*"
  140. fi
  141. # Translate configuration into internal form.
  142. # Parse options.
  143. for option
  144. do
  145. case $option in
  146. --help)
  147. usage
  148. exit;;
  149. --paxutils-srcdir=*)
  150. PAXUTILS_SRCDIR=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;;
  151. --gnulib-srcdir=*)
  152. GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
  153. --cvs-user=*)
  154. CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
  155. --skip-po | --no-po) # --no-po is for compatibility with 'tar' tradition.
  156. DOWNLOAD_PO=skip;;
  157. --update-po=*)
  158. DOWNLOAD_PO=`expr "$option" : '--update-po=\(.*\)'`;;
  159. --update-po)
  160. DOWNLOAD_PO=only;;
  161. --force)
  162. CVS_only_file=;;
  163. --copy)
  164. copy=true;;
  165. *)
  166. echo >&2 "$0: $option: unknown option"
  167. exit 1;;
  168. esac
  169. done
  170. if test -n "$CVS_only_file" && test ! -r "$CVS_only_file"; then
  171. echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
  172. exit 1
  173. fi
  174. echo "$0: Bootstrapping CVS $package..."
  175. # Get translations.
  176. get_translations() {
  177. subdir=$1
  178. domain=$2
  179. po_file=$3
  180. case $WGET_COMMAND in
  181. '')
  182. echo "$0: wget not available; skipping translations";;
  183. ?*)
  184. url=`tp_url $domain`
  185. baseurl=`expr "$url" : '\(.*\)/.*'`
  186. echo "$0: getting translations into $subdir for $domain..." &&
  187. case $po_file in
  188. '') (cd $subdir && rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'`);;
  189. esac &&
  190. $WGET_COMMAND -O "$subdir/$domain.html" "$url" &&
  191. sed -n 's|.*href="\(.*\)/\([^/][^/]*\)/'"$domain"'-\([^/"]*\)\.[^."]*\.po".*|\2:\3:\1|p' <"$subdir/$domain.html" |
  192. sort -t: -k 1,1 -k 2,2n -k2,2 -k3,3n -k3,3 -k4,4n -k4,4 -k5,5n -k5.5 |
  193. awk -F: '
  194. { if (lang && $1 != lang) print lang, ver, $3 }
  195. { lang = $1; ver = $2 }
  196. END { if (lang) print lang, ver, $3 }
  197. ' | awk -v domain="$domain" -v baseurl="$baseurl" -v subdir="$subdir" \
  198. -v po_file="$po_file" '
  199. {
  200. lang = $1
  201. if (po_file && po_file != (lang ".po")) next
  202. ver = $2
  203. printf "{ $WGET_COMMAND -O %s/%s.po %s/%s/%s/%s-%s.%s.po &&\n", subdir, lang, baseurl, $3, lang, domain, ver, lang
  204. printf " msgfmt -c -o /dev/null %s/%s.po || {\n", subdir, lang
  205. printf " echo >&2 '\'"$0"': omitting translation for %s'\''\n", lang
  206. printf " rm -f %s/%s.po; }; } &&\n", subdir, lang
  207. }
  208. END { print ":" }
  209. ' | WGET_COMMAND="$WGET_COMMAND" sh
  210. ;;
  211. esac &&
  212. ls "$subdir"/*.po 2>/dev/null |
  213. sed 's|.*/||; s|\.po$||' >"$subdir/LINGUAS" &&
  214. rm -f "$subdir/$domain.html"
  215. }
  216. case `wget --help` in
  217. *'--no-cache'*)
  218. WGET_COMMAND='wget -nv --no-cache';;
  219. *'--cache=on/off'*)
  220. WGET_COMMAND='wget -nv --cache=off';;
  221. *'--non-verbose'*)
  222. WGET_COMMAND='wget -nv';;
  223. *)
  224. WGET_COMMAND='';;
  225. esac
  226. case $DOWNLOAD_PO in
  227. 'skip')
  228. ;;
  229. '')
  230. get_translations po $package || exit
  231. ;;
  232. 'only')
  233. get_translations po $package
  234. exit
  235. ;;
  236. *.po)
  237. get_translations po $package "$DOWNLOAD_PO"
  238. exit
  239. ;;
  240. *)
  241. get_translations po $package "${DOWNLOAD_PO}.po"
  242. exit
  243. esac
  244. # Get paxutils files.
  245. case ${PAXUTILS_SRCDIR--} in
  246. -) checkout paxutils
  247. PAXUTILS_SRCDIR=paxutils
  248. esac
  249. if [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then
  250. gnulib_modules=`
  251. (echo "$gnulib_modules"; grep '^[^#]' $PAXUTILS_SRCDIR/gnulib.modules) |
  252. sort -u
  253. `
  254. fi
  255. ignore_file_list=
  256. cleanup_ifl() {
  257. test -n "$ignore_file_list" && rm -f $ignore_file_list
  258. }
  259. trap 'cleanup_ifl' 1 2 3 15
  260. # ignorefile DIR FILE
  261. # add FILE to the temporary ignorelist in the directory DIR
  262. ignorefile() {
  263. file=$1/.ignore.$$
  264. echo "$2" >> $file
  265. if `echo $ignore_list | grep -qv $file`; then
  266. ignore_file_list="$ignore_file_list
  267. $file"
  268. fi
  269. }
  270. # copy_files srcdir dstdir
  271. copy_files() {
  272. for file in `cat $1/DISTFILES`
  273. do
  274. case $file in
  275. "#*") continue;;
  276. esac
  277. dst=`echo $file | sed 's^.*/^^'`
  278. if [ $# -eq 3 ]; then
  279. case $dst in
  280. ${3}*) ;;
  281. *) dst=${3}$dst;;
  282. esac
  283. fi
  284. echo "$0: Copying file $1/$file to $2/$dst"
  285. cp -p $1/$file $2/$dst
  286. ignorefile $2 $dst
  287. done
  288. }
  289. # Get gnulib files.
  290. case ${GNULIB_SRCDIR--} in
  291. -)
  292. checkout gnulib
  293. GNULIB_SRCDIR=gnulib
  294. esac
  295. gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
  296. <$gnulib_tool || exit
  297. ensure_dir_exists()
  298. {
  299. d=`dirname $dst`
  300. test -d "$d" || mkdir -p -- "$d"
  301. }
  302. symlink_to_gnulib()
  303. {
  304. src=$GNULIB_SRCDIR/$1
  305. dst=${2-$1}
  306. test -f "$src" && {
  307. if $copy; then
  308. {
  309. test ! -h "$dst" || {
  310. echo "$0: rm -f $dst" &&
  311. rm -f "$dst"
  312. }
  313. } &&
  314. test -f "$dst" &&
  315. cmp -s "$src" "$dst" || {
  316. echo "$0: cp -fp $src $dst" &&
  317. ensure_dir_exists $dst &&
  318. cp -fp "$src" "$dst"
  319. }
  320. else
  321. test -h "$dst" &&
  322. src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
  323. dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
  324. test "$src_i" = "$dst_i" || {
  325. dot_dots=
  326. case $src in
  327. /*) ;;
  328. *)
  329. case /$dst/ in
  330. *//* | */../* | */./* | /*/*/*/*/*/)
  331. echo >&2 "$0: invalid symlink calculation: $src -> $dst"
  332. exit 1;;
  333. /*/*/*/*/) dot_dots=../../../;;
  334. /*/*/*/) dot_dots=../../;;
  335. /*/*/) dot_dots=../;;
  336. esac;;
  337. esac
  338. echo "$0: ln -fs $dot_dots$src $dst" &&
  339. ensure_dir_exists $dst &&
  340. ln -fs "$dot_dots$src" "$dst"
  341. }
  342. fi
  343. }
  344. }
  345. cp_mark_as_generated()
  346. {
  347. cp_src=$1
  348. cp_dst=$2
  349. if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
  350. symlink_to_gnulib "$cp_dst"
  351. else
  352. case $cp_dst in
  353. *.[ch]) c1='/* '; c2=' */';;
  354. *.texi) c1='@c '; c2= ;;
  355. *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
  356. *) c1= ; c2= ;;
  357. esac
  358. if test -z "$c1"; then
  359. cmp -s "$cp_src" "$cp_dst" || {
  360. echo "$0: cp -f $cp_src $cp_dst" &&
  361. cp -f "$cp_src" "$cp_dst"
  362. }
  363. else
  364. # Copy the file first to get proper permissions if it
  365. # doesn't already exist. Then overwrite the copy.
  366. cp "$cp_src" "$cp_dst-t" &&
  367. (
  368. echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
  369. echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
  370. cat "$cp_src"
  371. ) > $cp_dst-t &&
  372. if cmp -s "$cp_dst-t" "$cp_dst"; then
  373. rm -f "$cp_dst-t"
  374. else
  375. echo "$0: cp $cp_src $cp_dst # with edits" &&
  376. mv -f "$cp_dst-t" "$cp_dst"
  377. fi
  378. fi
  379. fi
  380. }
  381. version_controlled_file() {
  382. dir=$1
  383. file=$2
  384. found=no
  385. if test -d CVS; then
  386. grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
  387. grep '^/[^/]*/[0-9]' > /dev/null && found=yes
  388. elif test -d .git; then
  389. git-rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
  390. else
  391. echo "$0: no version control for $dir/$file?" >&2
  392. fi
  393. test $found = yes
  394. }
  395. slurp() {
  396. for dir in . `(cd $1 && find * -type d -print)`; do
  397. copied=
  398. sep=
  399. for file in `ls $1/$dir`; do
  400. test -d $1/$dir/$file && continue
  401. for excluded_file in $excluded_files; do
  402. test "$dir/$file" = "$excluded_file" && continue 2
  403. done
  404. if test $file = Makefile.am; then
  405. copied=$copied${sep}gnulib.mk; sep=$nl
  406. remove_intl='/^[^#].*\/intl/s/^/#/;'"s,/$bt,,g"
  407. sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk || {
  408. echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." &&
  409. rm -f $dir/gnulib.mk &&
  410. sed "$remove_intl" $1/$dir/$file >$dir/gnulib.mk
  411. }
  412. elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
  413. version_controlled_file $dir $file; then
  414. echo "$0: $dir/$file overrides $1/$dir/$file"
  415. else
  416. copied=$copied$sep$file; sep=$nl
  417. if test $file = gettext.m4; then
  418. echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
  419. rm -f $dir/$file
  420. sed '
  421. /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
  422. AC_DEFUN([AM_INTL_SUBDIR], [
  423. /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
  424. AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
  425. $a\
  426. AC_DEFUN([gl_LOCK_EARLY], [])
  427. ' $1/$dir/$file >$dir/$file
  428. else
  429. cp_mark_as_generated $1/$dir/$file $dir/$file
  430. fi
  431. fi || exit
  432. done
  433. if test -n "$copied"; then
  434. copied="Makefile
  435. Makefile.in
  436. $copied"
  437. if test -d CVS; then
  438. dot_ig=.cvsignore
  439. else
  440. dor_ig=.gitignore
  441. fi
  442. ig=$dir/$dot_ig
  443. if [ -f $dir/.ignore.$$ ]; then
  444. tfile=$dir/.ignore.$$
  445. else
  446. tfile=
  447. fi
  448. if test -f $ig; then
  449. echo "$copied" | sort -u - $ig | cmp -s - $ig ||
  450. echo "$copied" | sort -u - $ig $tfile -o $ig
  451. else
  452. copied="$dot_ig
  453. $copied"
  454. if [ "$dir" = "po" ]; then
  455. copied="LINGUAS
  456. Makevars
  457. POTFILES
  458. *.mo
  459. *.gmo
  460. *.po
  461. remove-potcdate.sed
  462. stamp-po
  463. $package.pot
  464. $copied"
  465. fi
  466. echo "$copied" | sort -u - $tfile -o $ig
  467. fi || exit
  468. fi
  469. done
  470. }
  471. # Create boot temporary directories to import from gnulib and gettext.
  472. bt='.#bootmp'
  473. bt2=${bt}2
  474. rm -fr $bt $bt2 &&
  475. mkdir $bt $bt2 || exit
  476. # Import from gnulib.
  477. test -d build-aux || {
  478. echo "$0: mkdir build-aux ..." &&
  479. mkdir build-aux
  480. } || exit
  481. gnulib_tool_options="\
  482. --import\
  483. --no-changelog\
  484. --aux-dir $bt/build-aux\
  485. --doc-base $bt/doc\
  486. --lib lib$package\
  487. --m4-base $bt/m4/\
  488. --source-base $bt/lib/\
  489. --tests-base $bt/tests\
  490. --local-dir gl\
  491. "
  492. echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
  493. $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
  494. slurp $bt || exit
  495. for file in $gnulib_files; do
  496. symlink_to_gnulib $file || exit
  497. done
  498. # Import from gettext.
  499. echo "$0: (cd $bt2; autopoint) ..."
  500. cp configure.ac $bt2 &&
  501. (cd $bt2 && autopoint && rm configure.ac) &&
  502. slurp $bt2 $bt || exit
  503. rm -fr $bt $bt2 || exit
  504. # Import from paxutils
  505. copy_files ${PAXUTILS_SRCDIR}/m4 m4
  506. echo "$0: Creating m4/paxutils.m4"
  507. (echo "# This file is generated automatically. Please, do not edit."
  508. echo "#"
  509. echo "AC_DEFUN([${package}_PAXUTILS],["
  510. cat ${PAXUTILS_SRCDIR}/m4/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z
  511. echo "])") > ./m4/paxutils.m4
  512. ignorefile m4 paxutils.m4
  513. if [ -d rmt ]; then
  514. :
  515. else
  516. mkdir rmt
  517. fi
  518. for dir in doc rmt lib tests
  519. do
  520. copy_files ${PAXUTILS_SRCDIR}/$dir $dir
  521. done
  522. copy_files ${PAXUTILS_SRCDIR}/paxlib lib pax
  523. # Reconfigure, getting other files.
  524. for command in \
  525. 'aclocal --force -I m4' \
  526. 'autoconf --force' \
  527. 'autoheader --force' \
  528. 'automake --add-missing --copy --force-missing';
  529. do
  530. echo "$0: $command ..."
  531. $command || exit
  532. done
  533. # Get some extra files from gnulib, overriding existing files.
  534. for file in $gnulib_extra_files; do
  535. case $file in
  536. */INSTALL) dst=INSTALL;;
  537. *) dst=$file;;
  538. esac
  539. symlink_to_gnulib $file $dst || exit
  540. done
  541. # Create gettext configuration.
  542. echo "$0: Creating po/Makevars from po/Makevars.template ..."
  543. rm -f po/Makevars
  544. sed '
  545. /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
  546. /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
  547. /^XGETTEXT_OPTIONS *=/{
  548. s/$/ \\/
  549. a\
  550. '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
  551. }
  552. ' po/Makevars.template >po/Makevars
  553. if test -d runtime-po; then
  554. # Similarly for runtime-po/Makevars, but not quite the same.
  555. rm -f runtime-po/Makevars
  556. sed '
  557. /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
  558. /^subdir *=.*/s/=.*/= runtime-po/
  559. /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
  560. /^XGETTEXT_OPTIONS *=/{
  561. s/$/ \\/
  562. a\
  563. '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
  564. }
  565. ' <po/Makevars.template >runtime-po/Makevars
  566. # Copy identical files from po to runtime-po.
  567. (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
  568. fi
  569. cleanup_ifl
  570. echo "$0: done. Now you can run './configure'."