4
0

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. copy_files ${PAXUTILS_SRCDIR}/m4 m4
  290. echo "$0: Creating m4/paxutils.m4"
  291. (echo "# This file is generated automatically. Please, do not edit."
  292. echo "#"
  293. echo "AC_DEFUN([${package}_PAXUTILS],["
  294. cat ${PAXUTILS_SRCDIR}/m4/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z
  295. echo "])") > ./m4/paxutils.m4
  296. ignorefile m4 paxutils.m4
  297. if [ -d rmt ]; then
  298. :
  299. else
  300. mkdir rmt
  301. fi
  302. for dir in doc rmt lib tests
  303. do
  304. copy_files ${PAXUTILS_SRCDIR}/$dir $dir
  305. done
  306. copy_files ${PAXUTILS_SRCDIR}/paxlib lib pax
  307. # Get gnulib files.
  308. case ${GNULIB_SRCDIR--} in
  309. -)
  310. checkout gnulib
  311. GNULIB_SRCDIR=gnulib
  312. esac
  313. gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
  314. <$gnulib_tool || exit
  315. ensure_dir_exists()
  316. {
  317. d=`dirname $dst`
  318. test -d "$d" || mkdir -p -- "$d"
  319. }
  320. symlink_to_gnulib()
  321. {
  322. src=$GNULIB_SRCDIR/$1
  323. dst=${2-$1}
  324. test -f "$src" && {
  325. if $copy; then
  326. {
  327. test ! -h "$dst" || {
  328. echo "$0: rm -f $dst" &&
  329. rm -f "$dst"
  330. }
  331. } &&
  332. test -f "$dst" &&
  333. cmp -s "$src" "$dst" || {
  334. echo "$0: cp -fp $src $dst" &&
  335. ensure_dir_exists $dst &&
  336. cp -fp "$src" "$dst"
  337. }
  338. else
  339. test -h "$dst" &&
  340. src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
  341. dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
  342. test "$src_i" = "$dst_i" || {
  343. dot_dots=
  344. case $src in
  345. /*) ;;
  346. *)
  347. case /$dst/ in
  348. *//* | */../* | */./* | /*/*/*/*/*/)
  349. echo >&2 "$0: invalid symlink calculation: $src -> $dst"
  350. exit 1;;
  351. /*/*/*/*/) dot_dots=../../../;;
  352. /*/*/*/) dot_dots=../../;;
  353. /*/*/) dot_dots=../;;
  354. esac;;
  355. esac
  356. echo "$0: ln -fs $dot_dots$src $dst" &&
  357. ensure_dir_exists $dst &&
  358. ln -fs "$dot_dots$src" "$dst"
  359. }
  360. fi
  361. }
  362. }
  363. cp_mark_as_generated()
  364. {
  365. cp_src=$1
  366. cp_dst=$2
  367. if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
  368. symlink_to_gnulib "$cp_dst"
  369. else
  370. case $cp_dst in
  371. *.[ch]) c1='/* '; c2=' */';;
  372. *.texi) c1='@c '; c2= ;;
  373. *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
  374. *) c1= ; c2= ;;
  375. esac
  376. if test -z "$c1"; then
  377. cmp -s "$cp_src" "$cp_dst" || {
  378. echo "$0: cp -f $cp_src $cp_dst" &&
  379. cp -f "$cp_src" "$cp_dst"
  380. }
  381. else
  382. # Copy the file first to get proper permissions if it
  383. # doesn't already exist. Then overwrite the copy.
  384. cp "$cp_src" "$cp_dst-t" &&
  385. (
  386. echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
  387. echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
  388. cat "$cp_src"
  389. ) > $cp_dst-t &&
  390. if cmp -s "$cp_dst-t" "$cp_dst"; then
  391. rm -f "$cp_dst-t"
  392. else
  393. echo "$0: cp $cp_src $cp_dst # with edits" &&
  394. mv -f "$cp_dst-t" "$cp_dst"
  395. fi
  396. fi
  397. fi
  398. }
  399. version_controlled_file() {
  400. dir=$1
  401. file=$2
  402. found=no
  403. if test -d CVS; then
  404. grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
  405. grep '^/[^/]*/[0-9]' > /dev/null && found=yes
  406. elif test -d .git; then
  407. git-rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
  408. else
  409. echo "$0: no version control for $dir/$file?" >&2
  410. fi
  411. test $found = yes
  412. }
  413. slurp() {
  414. for dir in . `(cd $1 && find * -type d -print)`; do
  415. copied=
  416. sep=
  417. for file in `ls $1/$dir`; do
  418. test -d $1/$dir/$file && continue
  419. for excluded_file in $excluded_files; do
  420. test "$dir/$file" = "$excluded_file" && continue 2
  421. done
  422. if test $file = Makefile.am; then
  423. copied=$copied${sep}gnulib.mk; sep=$nl
  424. remove_intl='/^[^#].*\/intl/s/^/#/;'"s,/$bt,,g"
  425. sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk || {
  426. echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." &&
  427. rm -f $dir/gnulib.mk &&
  428. sed "$remove_intl" $1/$dir/$file >$dir/gnulib.mk
  429. }
  430. elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
  431. version_controlled_file $dir $file; then
  432. echo "$0: $dir/$file overrides $1/$dir/$file"
  433. else
  434. copied=$copied$sep$file; sep=$nl
  435. if test $file = gettext.m4; then
  436. echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
  437. rm -f $dir/$file
  438. sed '
  439. /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
  440. AC_DEFUN([AM_INTL_SUBDIR], [
  441. /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
  442. AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
  443. $a\
  444. AC_DEFUN([gl_LOCK_EARLY], [])
  445. ' $1/$dir/$file >$dir/$file
  446. else
  447. cp_mark_as_generated $1/$dir/$file $dir/$file
  448. fi
  449. fi || exit
  450. done
  451. if test -n "$copied"; then
  452. copied="Makefile
  453. Makefile.in
  454. $copied"
  455. if test -d CVS; then
  456. dot_ig=.cvsignore
  457. else
  458. dor_ig=.gitignore
  459. fi
  460. ig=$dir/$dot_ig
  461. if [ -f $dir/.ignore.$$ ]; then
  462. tfile=$dir/.ignore.$$
  463. else
  464. tfile=
  465. fi
  466. if test -f $ig; then
  467. echo "$copied" | sort -u - $ig | cmp -s - $ig ||
  468. echo "$copied" | sort -u - $ig $tfile -o $ig
  469. else
  470. copied="$dot_ig
  471. $copied"
  472. if [ "$dir" = "po" ]; then
  473. copied="LINGUAS
  474. Makevars
  475. POTFILES
  476. *.mo
  477. *.gmo
  478. *.po
  479. remove-potcdate.sed
  480. stamp-po
  481. $package.pot
  482. $copied"
  483. fi
  484. echo "$copied" | sort -u - $tfile -o $ig
  485. fi || exit
  486. fi
  487. done
  488. }
  489. # Create boot temporary directories to import from gnulib and gettext.
  490. bt='.#bootmp'
  491. bt2=${bt}2
  492. rm -fr $bt $bt2 &&
  493. mkdir $bt $bt2 || exit
  494. # Import from gnulib.
  495. test -d build-aux || {
  496. echo "$0: mkdir build-aux ..." &&
  497. mkdir build-aux
  498. } || exit
  499. gnulib_tool_options="\
  500. --import\
  501. --no-changelog\
  502. --aux-dir $bt/build-aux\
  503. --doc-base $bt/doc\
  504. --lib lib$package\
  505. --m4-base $bt/m4/\
  506. --source-base $bt/lib/\
  507. --tests-base $bt/tests\
  508. --local-dir gl\
  509. "
  510. echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
  511. $gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
  512. slurp $bt || exit
  513. for file in $gnulib_files; do
  514. symlink_to_gnulib $file || exit
  515. done
  516. # Import from gettext.
  517. echo "$0: (cd $bt2; autopoint) ..."
  518. cp configure.ac $bt2 &&
  519. (cd $bt2 && autopoint && rm configure.ac) &&
  520. slurp $bt2 $bt || exit
  521. rm -fr $bt $bt2 || exit
  522. # Reconfigure, getting other files.
  523. for command in \
  524. 'aclocal --force -I m4' \
  525. 'autoconf --force' \
  526. 'autoheader --force' \
  527. 'automake --add-missing --copy --force-missing';
  528. do
  529. echo "$0: $command ..."
  530. $command || exit
  531. done
  532. # Get some extra files from gnulib, overriding existing files.
  533. for file in $gnulib_extra_files; do
  534. case $file in
  535. */INSTALL) dst=INSTALL;;
  536. *) dst=$file;;
  537. esac
  538. symlink_to_gnulib $file $dst || exit
  539. done
  540. # Create gettext configuration.
  541. echo "$0: Creating po/Makevars from po/Makevars.template ..."
  542. rm -f po/Makevars
  543. sed '
  544. /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
  545. /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
  546. /^XGETTEXT_OPTIONS *=/{
  547. s/$/ \\/
  548. a\
  549. '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
  550. }
  551. ' po/Makevars.template >po/Makevars
  552. if test -d runtime-po; then
  553. # Similarly for runtime-po/Makevars, but not quite the same.
  554. rm -f runtime-po/Makevars
  555. sed '
  556. /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
  557. /^subdir *=.*/s/=.*/= runtime-po/
  558. /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
  559. /^XGETTEXT_OPTIONS *=/{
  560. s/$/ \\/
  561. a\
  562. '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
  563. }
  564. ' <po/Makevars.template >runtime-po/Makevars
  565. # Copy identical files from po to runtime-po.
  566. (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
  567. fi
  568. cleanup_ifl
  569. echo "$0: done. Now you can run './configure'."