Update to latest config.guess and config.sub
[xapian.git] / bootstrap
blob4453f7d9b9d0c64bdc52cacf11b267bbb7b79e80
1 #!/bin/sh
2 # bootstrap a xapian source tree obtained from git to produce a tree like
3 # you'd get from unpacking the results of "make dist"
5 # Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015 Olly Betts
7 # This program is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU General Public License as
9 # published by the Free Software Foundation; either version 2 of the
10 # License, or (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, write to the Free Software
19 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
20 # USA
22 if [ "$1" = "--help" ] ; then
23 cat <<__END__
24 $0 [--ftp] [--without-autotools|--clean] [MODULE...]
26 The default is to bootstrap all known modules. Any modules which have a
27 file called ".nobootstrap" in their top-level will be skipped.
28 __END__
29 exit 0
32 trap 'echo "Bootstrap failed"' EXIT
33 set -e
35 # The variables which specify the autotools to use. And doxygen.
36 autotools="AUTORECONF AUTOCONF AUTOHEADER AUTOM4TE AUTOMAKE ACLOCAL LIBTOOLIZE DOXYGEN"
38 # Tool for downloading a file from a URL (currently wget or curl).
39 FETCH_URL_TOOL=
41 check_sha1sum() {
42 checksum=$1
43 tarball=$2
45 if [ -z "$SHA1SUM_TOOL" ] ; then
46 for SHA1SUM_TOOL in \
47 '${SHA1SUM-sha1sum} 2>/dev/null|cut -d\ -f1' \
48 '${SHASUM-shasum} 2>/dev/null|cut -d\ -f1' \
49 '$(OPENSSL-openssl} sha1 2>/dev/null|sed "s/.* //"' \
50 '' ; do
51 if [ -z "$SHA1SUM_TOOL" ] ; then
52 echo <<'END'
53 Need sha1sum or shasum or openssl installed to check SHA1 checksums.
54 Set environment variable SHA1SUM, SHASUM or OPENSSL if the tool isn't on
55 your PATH.
56 END
57 exit 1
59 r=`:|eval "$SHA1SUM_TOOL"`
60 [ X"$r" != Xda39a3ee5e6b4b0d3255bfef95601890afd80709 ] || break
61 done
63 r=`< $tarball eval "$SHA1SUM_TOOL"`
64 if [ X"$r" != X"$checksum" ] ; then
65 echo "$tarball: computed SHA1 checksum did NOT match"
66 echo "computed: $r with $SHA1SUM_TOOL"
67 echo "expected: $checksum"
68 ls -l $tarball
69 file $tarball || true
70 mv "$tarball" "$tarball.$r"
71 echo "Renamed $tarball to $tarball.$r"
72 exit 1
76 lazy_build() {
77 package=$1
78 basename=$package-$2
79 ext=$3
80 checksum=$4
81 if [ "$ext" = "tar.xz" ] ; then
82 if [ -z "$xz_ok" ] ; then
83 if ${XZ-xz} --version > /dev/null 2>&1 ; then
84 xz_ok=1
85 else
86 xz_ok=0
89 if [ "$xz_ok" = 0 ] ; then
90 shift 2
91 ext=$3
92 checksum=$4
95 if [ "$ext" = "tar.bz2" ] ; then
96 if [ -z "$bz2_ok" ] ; then
97 # bzip2 --version doesn't exit with code 0 in upstream version (though
98 # Debian at least patch this bug), so use --help to check it.
99 if bzip2 --help > /dev/null 2>&1 ; then
100 bz2_ok=1
101 else
102 bz2_ok=0
105 if [ "$bz2_ok" = 0 ] ; then
106 shift 2
107 ext=$3
108 checksum=$4
111 tarball=$basename.$ext
112 case $basename in
113 *[24680][a-z]) basename=`echo "$basename"|sed 's/[a-z]$//'` ;;
114 esac
116 # Create the stamp file in INST so that rerunning bootstrap after
117 # "rm -rf INST" recovers nicely.
118 stamp=../INST/$package.stamp
120 # Download the tarball if required.
121 if [ ! -f "$tarball" ] ; then
122 if [ -z "$FETCH_URL_TOOL" ] ; then
123 if ${WGET-wget} --version > /dev/null 2>&1 ; then
124 FETCH_URL_TOOL="${WGET-wget} -O-"
125 elif ${CURL-curl} --version > /dev/null 2>&1 || [ "$?" = 2 ] ; then
126 # curl --version exits with code 2.
127 # -L is needed to follow HTTP redirects.
128 FETCH_URL_TOOL="${CURL-curl} -L"
129 elif ${LWP_REQUEST-lwp-request} -v > /dev/null 2>&1 || [ "$?" = 9 -o "$?" = 255 ] ; then
130 # lwp-request -v exits with code 9 (5.810) or 255 (6.03)
131 FETCH_URL_TOOL="${LWP_REQUEST-lwp-request} -mGET"
132 else
133 cat <<END >&2
134 Neither wget nor curl nor lwp-request found - install one of them or if already
135 installed, set WGET, CURL or LWP_REQUEST to the full path. Alternatively,
136 download $url
137 to directory `pwd`
138 then rerun this script.
140 exit 1
143 case $basename in
144 doxygen-*)
145 if [ "$use_ftp" = yes ] ; then
146 url="ftp://ftp.stack.nl/pub/users/dimitri/$tarball"
147 else
148 url="http://ftp.stack.nl/pub/users/dimitri/$tarball"
149 fi ;;
150 file-*)
151 if [ "$use_ftp" = yes ] ; then
152 url="ftp://ftp.astron.com/pub/file/$tarball"
153 else
154 url="http://fossies.org/unix/misc/$tarball"
155 fi ;;
156 *[13579][a-z])
157 # GNU alpha release
158 if [ "$use_ftp" = yes ] ; then
159 url="ftp://alpha.gnu.org/gnu/$package/$tarball"
160 else
161 url="http://alpha.gnu.org/gnu/$package/$tarball"
162 fi ;;
164 if [ "$use_ftp" = yes ] ; then
165 url="ftp://ftp.gnu.org/gnu/$package/$tarball"
166 else
167 url="http://ftpmirror.gnu.org/$package/$tarball"
168 fi ;;
169 esac
170 rm -f download.tmp
171 echo "Downloading <$url>"
172 $FETCH_URL_TOOL "$url" > download.tmp && mv download.tmp "$tarball"
175 if [ -f "$stamp" ] ; then
176 find_stdout=`find "$tarball" ../patches/"$package"/* -newer "$stamp" -print 2> /dev/null||true`
177 else
178 find_stdout=force
181 if [ -n "$find_stdout" ] ; then
182 # Verify the tarball's checksum before building it.
183 check_sha1sum "$checksum" "$tarball"
185 # Remove tarballs of other versions.
186 for f in "$package"-* ; do
187 [ "$f" = "$tarball" ] || rm -rf "$f"
188 done
190 case $ext in
191 tar.xz)
192 ${XZ-xz} -dc "$tarball"| tar xf - ;;
193 tar.bz2)
194 bzip2 -dc "$tarball"| tar xf - ;;
196 gzip -dc "$tarball"| tar xf - ;;
197 esac
199 cd "$basename"
201 if [ ! -f "../../patches/$package/series" ] ; then
202 cat <<END >&2
203 No patch series file 'patches/$package/series' - if there are no patches,
204 this should just be an empty file.
206 exit 1
208 echo "Applying patches from $package/series"
209 sed -n 's/[ ]*\(#.*\)\?$//;/./p' "../../patches/$package/series" | \
210 while read p ; do
211 echo "Applying patch $package/$p"
212 patch -p1 < "../../patches/$package/$p"
213 done
215 # Fix doxygen/Qt stupid and pointless enumerating of Mac OS X releases
216 # which stops it building on each new OS X release.
217 if [ -f qtools/qglobal.h ] ; then
218 sed 's!^[ ]*#[ ]*\(error\|warning\).*Mac *OS *X is unsupported!// &!' \
219 qtools/qglobal.h > qtools/qglobal.hT
220 mv qtools/qglobal.hT qtools/qglobal.h
223 if test -n "$AUTOCONF" ; then
224 ./configure --prefix "$instdir" AUTOCONF="$AUTOCONF"
225 else
226 ./configure --prefix "$instdir"
228 make
229 make install
230 cd ..
231 rm -rf "$basename"
233 touch "$stamp"
237 handle_git_external() {
238 path=$1
239 if [ ! -f "$path/.nobootstrap" ] ; then
240 rev=$2
241 url=$3
242 if [ ! -d "$path" ] ; then
243 git clone --no-checkout -- "$url" "$path"
244 elif (cd "$path" && git reflog "$rev" -- 2>/dev/null) ; then
245 : # Already have that revision locally
246 else
247 (cd "$path" && git fetch)
249 (cd "$path" && git checkout "$rev")
253 update_config() {
254 from=$1
255 to=$2
256 ts_from=`perl -ne '/^timestamp=(\W?)([-\d]+)$1/ and do {$_=$2;y/-//d;print;exit}' "$from"`
257 ts_to=`perl -ne '/^timestamp=(\W?)([-\d]+)$1/ and do {$_=$2;y/-//d;print;exit}' "$to"`
258 if [ "$ts_from" -gt "$ts_to" ] ; then
259 echo "Updating $to ($ts_to) with $from ($ts_from)"
260 # rm first in case the existing file is a symlink.
261 rm -f "$to"
262 cp "$from" "$to"
266 curdir=`pwd`
268 # cd to srcdir if we aren't already there.
269 srcdir=`echo "$0"|sed 's!/*[^/]*$!!'`
270 case $srcdir in
271 ""|.)
272 srcdir=. ;;
274 cd "$srcdir" ;;
275 esac
277 if [ ! -d .git ] ; then
278 echo "$0: No '.git' directory found - this script should be run from a"
279 echo "git repo cloned from git://git.xapian.org/xapian or a mirror of it"
280 exit 1
283 for emptydir in xapian-applications/omega/m4 xapian-bindings/m4 ; do
284 if test -d "$emptydir" ; then
286 else
287 parent=`echo "$emptydir"|sed 's,/[^/]*$,,'`
288 if test -d "$parent" ; then
289 mkdir "$emptydir"
292 done
294 if [ -f .git/info/exclude ] ; then
295 sed '/^\(swig\|xapian-applications\/omega\/common$\)/d' .git/info/exclude > .git/info/exclude~
296 else
297 [ -d .git/info ] || mkdir .git/info
299 cat <<END >> .git/info/exclude~
300 swig
301 xapian-applications/omega/common
303 if [ -f .git/info/exclude ] &&
304 cmp .git/info/exclude~ .git/info/exclude 2> /dev/null ; then
305 rm .git/info/exclude~
306 else
307 mv .git/info/exclude~ .git/info/exclude
310 # If this tree is checked out from the github mirror, use the same access
311 # method for swig, so we avoid firewall issues. If there's no default
312 # remote, the git config command will exit with status 1, so ignore that
313 # failure.
314 origin_url=`git config remote.origin.url||:`
315 case $origin_url in
316 *[@/]github.com[:/]*)
317 swig_origin_url=`echo "X$origin_url"|sed 's/^X//;s!\([@/]github.com[:/]\).*!\1!'` ;;
319 swig_origin_url=git://github.com/ ;;
320 esac
321 swig_origin_url=${swig_origin_url}swig/swig.git
322 handle_git_external swig 210266cd7004108b074fac9da4fc97d1df0adc53 "$swig_origin_url"
324 # If someone's created a directory for common, leave it be.
325 if [ ! -d xapian-applications/omega/common ] ; then
326 handle_git_external xapian-applications/omega/.common.git 3e1602681002833b38b1bc2355fb557f35c70536 .
327 ln -sf .common.git/xapian-core/common xapian-applications/omega/common
330 # Prefer http downloads as they are more likely to work through firewalls.
331 use_ftp=no
332 if [ "$1" = "--ftp" ] ; then
333 shift
334 use_ftp=yes
337 if [ "$1" = "--without-autotools" ] ; then
338 shift
339 else
340 if [ "$1" = "--clean" ] ; then
341 shift
342 rm -rf INST
345 [ -d INST ] || mkdir INST
346 instdir=`pwd`/INST
348 [ -d BUILD ] || mkdir BUILD
349 cd BUILD
351 # The last field is the SHA1 checksum of the tarball.
352 lazy_build doxygen 1.8.5 \
353 src.tar.gz 1fc5ceec21122fe5037edee4c308ac94b59ee33e
354 lazy_build autoconf 2.68 \
355 tar.xz 63a3b495400c1c053f2f6b62efb7a5c0ad4156c9 \
356 tar.bz2 b534c293b22048c022b1ff3a372b9c03f26170b4 \
357 tar.gz 843f7dfcc6addf129dc2c8b12f7d72d371478f42
358 AUTOCONF=$instdir/bin/autoconf \
359 lazy_build automake 1.11.6 tar.gz 29d7832b148e2157e03ad0d3620fbb7f5a13bc21
360 lazy_build libtool 2.4.6 \
361 tar.xz 3e7504b832eb2dd23170c91b6af72e15b56eb94e \
362 tar.gz 25b6931265230a06f0fc2146df64c04e5ae6ec33
363 if [ "$1" = "--deps=libmagic" ] ; then
364 shift
365 lazy_build file 5.25 \
366 tar.gz fea78106dd0b7a09a61714cdbe545135563e84bd
369 for v in $autotools ; do
370 tool=`echo "$v"|tr A-Z a-z`
371 eval "$v=\"\$instdir\"/bin/$tool;export $v"
372 done
374 cd ..
377 case `${LIBTOOLIZE-libtoolize} --version` in
379 echo "${LIBTOOLIZE-libtoolize} not found"
380 exit 1 ;;
381 "libtoolize (GNU libtool) 1.4.*")
382 echo "${LIBTOOLIZE-libtoolize} is from libtool 1.4 which is too old - libtool 2.2 is required."
383 echo "If you have both installed, set LIBTOOLIZE to point to the correct version."
384 exit 1 ;;
385 "libtoolize (GNU libtool) 1.5.*")
386 echo "${LIBTOOLIZE-libtoolize} is from libtool 1.5 which is too old - libtool 2.2 is required."
387 echo "If you have both installed, set LIBTOOLIZE to point to the correct version."
388 exit 1 ;;
389 esac
391 ACLOCAL="${ACLOCAL-aclocal} -I `pwd`/xapian-core/m4-macros"
392 export ACLOCAL
394 intree_swig=no
395 modules=
396 for module in ${@:-xapian-core xapian-applications/omega swig xapian-bindings} ; do
397 d=$module
398 if [ -f "$d/configure.ac" -o -f "$d/configure.in" ] ; then
400 else
401 # Skip any directories we can't bootstrap.
402 continue
404 if [ -f "$d/.nobootstrap" ] ; then
405 # Report why to save head scratching when someone forgets they created
406 # a .nobootstrap file.
407 echo "Skipping '$module' due to presence of '$d/.nobootstrap'."
408 continue
410 if [ "$d" = swig ] && [ -f "xapian-bindings/.nobootstrap" ] ; then
411 # No point bootstrapping SWIG if we aren't going to use it.
412 echo "Skipping '$d' due to presence of 'xapian-bindings/.nobootstrap'."
413 continue
415 echo "Bootstrapping \`$module'"
416 [ -f "$d/preautoreconf" ] && "$d/preautoreconf"
418 # If we have a custom INSTALL file, preserve it since autoreconf insists on
419 # replacing INSTALL with "generic installation instructions" when --force
420 # is used. Be careful to replace it if autoreconf fails.
421 if [ -f "$d/INSTALL" ] ; then
422 if grep 'generic installation instructions' "$d/INSTALL" >/dev/null 2>&1 ; then
424 else
425 mv -f "$d/INSTALL" "$d/INSTALL.preserved-by-bootstrap"
429 autoreconf_rc=
430 if [ swig = "$module" ] ; then
431 # SWIG provides its own bootstrapping script.
432 curdir=`pwd`
433 cd "$d"
434 ./autogen.sh || autoreconf_rc=$?
435 cd "$curdir"
436 # Use the uninstalled wrapper for the in-tree copy of SWIG.
437 intree_swig=yes
438 else
439 # Use --install as debian's autoconf wrapper uses 2.5X if it sees it
440 # (but it doesn't check for -i).
442 # Use --force so that we update files if autoconf, automake, or libtool
443 # has been upgraded.
444 ${AUTORECONF-autoreconf} --install --force "$d" || autoreconf_rc=$?
446 if [ -f "$d/INSTALL.preserved-by-bootstrap" ] ; then
447 mv -f "$d/INSTALL.preserved-by-bootstrap" "$d/INSTALL"
449 if [ -n "$autoreconf_rc" ] ; then
450 exit $autoreconf_rc
452 for f in config.guess config.sub ; do
453 if [ -f "$d/$f" ] ; then
454 update_config "config/$f" "$d/$f"
456 done
457 modules="$modules $module"
458 done
460 # Search::Xapian doesn't use autotools.
461 if [ -f "$srcdir/search-xapian/Makefile.PL" ] ; then
462 cd "$srcdir/search-xapian"
463 perl generate-perl-exceptions
464 cd "$curdir"
465 modules="$modules search-xapian"
468 # Generate the top-level configure script.
469 rm -f configure.tmp
470 cat <<'TOP_OF_CONFIGURE' > configure.tmp
471 #!/bin/sh
472 # configure each submodule in a xapian source tree
473 # Generated by Xapian top-level bootstrap script.
475 # Copyright (C) 2003,2004,2007,2008 Olly Betts
477 # This program is free software; you can redistribute it and/or
478 # modify it under the terms of the GNU General Public License as
479 # published by the Free Software Foundation; either version 2 of the
480 # License, or (at your option) any later version.
482 # This program is distributed in the hope that it will be useful,
483 # but WITHOUT ANY WARRANTY; without even the implied warranty of
484 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
485 # GNU General Public License for more details.
487 # You should have received a copy of the GNU General Public License
488 # along with this program; if not, write to the Free Software
489 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
490 # USA
492 trap 'echo "configure failed"' EXIT
493 set -e
495 # Produced escaped version of command suitable for pasting back into sh
496 cmd=$0
497 for a ; do
498 case $a in
499 *[^-A-Za-z0-9_+=:@/.,]*)
500 esc_a=`echo "$a"|sed 's!\([^-A-Za-z0-9_+=:@/.,]\)!\\\\\\1!g'`
501 cmd="$cmd $esc_a" ;;
503 cmd="$cmd $a" ;;
504 esac
505 done
507 here=`pwd`
508 TOP_OF_CONFIGURE
510 # Produce an absolute path to srcdir.
511 srcdir_abs=`pwd`
512 # This section is unquoted so we can substitute variables.
513 cat <<MIDDLE_OF_CONFIGURE >> configure.tmp
514 srcdir="$srcdir_abs"
515 modules="$modules"
516 MIDDLE_OF_CONFIGURE
518 vars=
519 if [ yes = "$intree_swig" ] ; then
520 # We want the path to SWIG to point into srcdir, which isn't known until
521 # configure-time, so we need to expand $here in configure. We can't just set
522 # SWIG here and let the case below handle it as that would escape the value
523 # such that $here didn't get expanded at all.
524 echo ': ${SWIG="$here/swig/preinst-swig"}' >> configure.tmp
525 echo "export SWIG" >> configure.tmp
526 vars=' SWIG=$here/swig/preinst-swig'
527 # Kill any existing setting of SWIG so that we don't try to handle it again
528 # below.
529 SWIG=
531 for tool in SWIG $autotools ; do
532 eval "val=\$$tool"
533 if [ -n "$val" ] ; then
534 echo ': ${'"$tool='$val'"'}' >> configure.tmp
535 echo "export $tool" >> configure.tmp
536 vars="$vars $tool='"`echo "$val"|sed 's/\(['"\\'"']\)/\\\1/g'`"'"
538 done
539 if [ -n "$vars" ] ; then
540 # $vars will always have a leading space.
541 echo "set$vars "'"$@"' >> configure.tmp
544 cat <<'END_OF_CONFIGURE' >> configure.tmp
545 dirs=
546 revdirs=
547 XAPIAN_CONFIG=$here/xapian-core/xapian-config
548 for d in $modules ; do
549 if [ "$here" = "$srcdir" ] ; then
550 configure=./configure
551 configure_from_here=$d/configure
552 else
553 configure=$srcdir/$d/configure
554 configure_from_here=$configure
556 if [ -f "$configure_from_here" ] ; then
557 if [ -d "$d" ] ; then : ; else
558 case $d in
559 xapian-applications/*) [ -d xapian-applications ] || mkdir xapian-applications ;;
560 esac
561 mkdir "$d"
563 echo "Configuring \`$d'"
564 # Use a shared config.cache for speed and to save a bit of diskspace, but
565 # don't share it with SWIG just in case it manages to probe and cache
566 # different answers (e.g. because it uses a C compiler).
567 case $d in
568 swig)
569 cd "$d" && "$configure" ${1+"$@"}
571 xapian-core)
572 cd "$d" && "$configure" --enable-maintainer-mode --disable-option-checking --cache-file="$here/config.cache" ${1+"$@"}
574 xapian-applications/omega)
575 cd "$d" && "$configure" --enable-maintainer-mode --disable-option-checking XAPIAN_CONFIG="$XAPIAN_CONFIG" CPPFLAGS="-I$srcdir/INST/include" LDFLAGS="-L$srcdir/INST/lib" ${1+"$@"}
578 cd "$d" && "$configure" --enable-maintainer-mode --disable-option-checking --cache-file="$here/config.cache" XAPIAN_CONFIG="$XAPIAN_CONFIG" ${1+"$@"}
580 esac
581 cd "$here"
582 dirs="$dirs $d"
583 revdirs="$d $revdirs"
584 elif [ search-xapian = "$d" ] ; then
585 if [ "$here" = "$srcdir" ] ; then
586 makefilepl=Makefile.PL
587 else
588 [ -d "$d" ] || mkdir "$d"
589 makefilepl=$srcdir/$d/Makefile.PL
591 cd "$d"
592 if [ -f "$makefilepl" ] ; then
593 echo "Configuring \`$d'"
594 # Extract any parameters which we know Makefile.PL understands from
595 # from those passed to us.
596 unset cxx_arg
597 unset cxxflags_arg
598 unset cppflags_arg
599 for arg
601 case $arg in
602 CXX=*)
603 cxx_arg=$arg ;;
604 CXXFLAGS=*)
605 cxxflags_arg=$arg ;;
606 CPPFLAGS=*)
607 cppflags_arg=$arg ;;
608 esac
609 done
610 perl "$makefilepl" XAPIAN_CONFIG="$XAPIAN_CONFIG" ${cxx_arg+"$cxx_arg"} \
611 ${cxxflags_arg+"$cxxflags_arg"} ${cppflags_arg+"$cppflags_arg"}
612 dirs="$dirs $d"
613 revdirs="$d $revdirs"
615 cd "$here"
617 done
619 rm -f Makefile.tmp
620 cat <<EOF > Makefile.tmp
621 # Makefile generated by:
622 CONFIGURE_COMMAND := $cmd
624 if [ "$srcdir" != . ] ; then
625 cat <<EOF >> Makefile.tmp
627 VPATH = $srcdir
630 targets='all install uninstall install-strip clean distclean mostlyclean maintainer-clean dist check distcheck'
631 for target in $targets ; do
632 echo
633 echo "$target:"
634 case $target in
635 uninstall|*clean)
636 # When uninstalling or cleaning, process directories in reverse order, so
637 # that we process a directory after any directories which might use it.
638 list=$revdirs ;;
640 list=$dirs ;;
641 esac
642 for d in $list ; do
643 case $d,$target in
644 swig,install*|swig,uninstall)
645 # Nothing to do with swig when installing/uninstalling.
647 swig,dist|swig,check|swig,distcheck|swig,all)
648 # Need to ensure swig is built before "make dist", "make check", etc.
649 echo " cd $d && \$(MAKE)" ;;
650 swig,mostlyclean|search-xapian,mostlyclean)
651 echo " cd $d && \$(MAKE) clean" ;;
652 search-xapian,install-strip)
653 echo " cd $d && \$(MAKE) install" ;;
654 search-xapian,maintainer-clean)
655 echo " cd $d && \$(MAKE) realclean" ;;
656 search-xapian,dist)
657 echo " cd $d && \$(MAKE) dist GZIP=-f" ;;
658 search-xapian,distcheck)
659 echo " cd $d && \$(MAKE) disttest && \$(MAKE) dist GZIP=-f" ;;
660 xapian-bindings,distcheck)
661 # FIXME: distcheck doesn't currently work for xapian-bindings because
662 # xapian-core isn't installed.
663 echo " cd $d && \$(MAKE) check && \$(MAKE) dist" ;;
665 echo " cd $d && \$(MAKE) $target" ;;
666 esac
667 done
668 case $target in
669 distclean|maintainer-clean) echo " rm -f Makefile config.cache" ;;
670 esac
671 done >> Makefile.tmp
672 cat <<EOF >> Makefile.tmp
674 recheck:
675 \$(CONFIGURE_COMMAND)
677 Makefile: $srcdir/configure
678 \$(CONFIGURE_COMMAND)
680 $srcdir/configure: \\
681 END_OF_CONFIGURE
683 : > configure.tmp2
685 # We want to rerun bootstrap if a series file changes (patch added or removed)
686 # or an existing patch changes. Since we always have an series file (even if
687 # it is empty), this also handles us adding the first patch for something.
688 patches=
689 for d in patches/* ; do
690 series=$d/series
691 echo "$series:" >> configure.tmp2
692 cat << END
693 $series\\\\
695 sed -n 's/[ ]*\(#.*\)\?$//;/./p' "$series" |\
696 while read p ; do
697 patch=$d/$p
698 cat << END
699 $patch\\\\
701 # Because there's a pipeline, this is a subshell, so use a temporary file
702 # rather than a variable to compile a list of patches to use below.
703 echo "$patch:" >> configure.tmp2
704 done
705 done >> configure.tmp
707 cat <<'END_OF_CONFIGURE' >> configure.tmp
708 $srcdir/bootstrap
709 $srcdir/bootstrap
711 .PHONY: $targets recheck
713 # Dummy dependencies to allow removing patches we no longer need.
714 END_OF_CONFIGURE
716 cat configure.tmp2 >> configure.tmp
718 cat <<'END_OF_CONFIGURE' >> configure.tmp
720 mv -f Makefile.tmp Makefile
721 trap - EXIT
722 echo "Configured successfully - now run \"${MAKE-make}\""
723 END_OF_CONFIGURE
725 rm -f configure.tmp2
727 chmod +x configure.tmp
728 mv -f configure.tmp configure
730 trap - EXIT
731 echo "Bootstrapped successfully - now run \"$srcdir/configure\" and \"${MAKE-make}\""