libtool/bootstrap.conf
Gary V. Vaughan 0024c50ba3 bootstrap: remove support for -r' and reconf_dirs'.
With all those extra demo directories out of the way, we can
revert to a more canonical bootstrap process, and jettison the
cruft that was only there to work around the pain of
needing to autoreconf 11 directories.  Bootstrap is now an order
of magnitude faster.
* bootstrap.conf (require_ltdl_dir): New function. Factored out
of `libtool_build_prerequisites'.
(libtool_build_prerequisites): Adjust.
(func_reconfigure): Use `require_ltdl_dir' to determine the name
of the other directory we need to autoreconf during bootstrap.
(libtool_options_prep, libtool_parse_options)
(libtool_validate_options): Remove.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-04 20:11:06 +07:00

407 lines
11 KiB
Plaintext

# bootstrap.conf (GNU Libtool) version 2011-11-24
#
# Copyright (C) 2010-2012 Free Software Foundation, Inc.
# Written by Gary V. Vaughan, 2010
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# GNU Libtool is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# GNU Libtool is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Libtool; see the file COPYING. If not, a copy
# can be downloaded from http://www.gnu.org/licenses/gpl.html,
# or obtained by writing to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
## -------------------------------- ##
## User overrideable command paths. ##
## -------------------------------- ##
: "${MAKE=make}"
export MAKE
## -------------- ##
## Configuration. ##
## -------------- ##
# File that should exist in the top directory of a checked out hierarchy,
# but not in a distribution tarball.
checkout_only_file=HACKING
# List of programs (and minimum versions) required to bootstrap, maintain
# and release Libtool.
buildreq="
help2man 1.29 http://www.gnu.org/software/help2man
makeinfo 4.8 http://www.gnu.org/software/texinfo
xz 4.999.8beta http://tukaani.org/xz
"
# Instructions on how to install packages in $buildreq.
buildreq_readme=HACKING
# Non-default gnulib directory options.
local_gl_dir=gl
# Additional gnulib-tool options to use.
gnulib_tool_options=$gnulib_tool_options"
--avoid=dummy
--libtool
--macro-prefix=GL
"
# gnulib modules used by this package.
gnulib_modules='
announce-gen
do-release-commit-and-tag
gendocs
git-version-gen
gitlog-to-changelog
gnu-web-doc-update
gnupload
maintainer-makefile
readme-release
update-copyright
'
# Extra gnulib files that are not in modules, which override files of
# the same name installed by other bootstrap tools.
gnulib_non_module_files=$gnulib_non_module_files'
doc/COPYINGv2
doc/fdl.texi
'
# What ignore files to maintain.
vc_ignore=.gitignore
# Running the installed `libtoolize' will trash the local (newer) libtool.m4
# among others. Don't use `:', since autoreconf can't exec it!
LIBTOOLIZE=true
# List of file droppings from old releases of Libtool.
libtool_obsolete_files="
acinclude.m4
argz.c
libltdl/config.h
lt__dirent.c
lt__strl.c
"
# The not-synced with gnulib warning is bogus until upstream adopts
# the saner bootstrap script.
require_bootstrap_uptodate=:
## ------------------- ##
## Override functions. ##
## ------------------- ##
# func_reconfigure
# ------------------
# In addition to needing to autoreconf two directories, Libtool provides
# `libtoolize' and doesn't use `autopoint', so we can use a somewhat
# simpler `func_reconfigure' implementation than bootstrap's version.
func_reconfigure ()
{
$debug_cmd
$require_autoheader
$require_build_aux
$require_ltdl_dir
$require_macro_dir
# Only need this from the top level directory
func_gnulib_tool
export LIBTOOLIZE
func_verbose "export LIBTOOLIZE='$LIBTOOLIZE'"
my_autoreconf_options=
$opt_copy || func_append my_autoreconf_options " --symlink"
$opt_force && func_append my_autoreconf_options " --force"
$opt_verbose && func_append my_autoreconf_options " --verbose"
func_show_eval "$AUTORECONF$my_autoreconf_options --install ." \
'exit $?'
# Also bootstrap libltdl ready for installation.
func_show_eval "$AUTORECONF$my_autoreconf_options --install $ltdl_dir" \
'exit $?'
}
## ---------------------------- ##
## Libtool bootstrap functions. ##
## ---------------------------- ##
# libtool_prep
# ------------
# Libtool bootstrap initialisation after successful option parse and
# validation.
libtool_prep ()
{
# initial clean-up of checked out tree
find . -depth \( -name autom4te.cache -o -name libtool \) -print \
| grep -v '{arch}' \
| xargs rm -rf
# remove obsolete file droppings from old Libtool versions
for file in $libtool_obsolete_files; do
rm -f $file
done
}
func_add_hook func_prep libtool_prep
# libtool_add_libltdl_copying
# ---------------------------
# Use the canonical COPYING.LESSERv2 from gnulib.
libtool_add_libltdl_copying ()
{
$debug_cmd
func_gnulib_tool_copy_file doc/COPYING.LESSERv2 libltdl/COPYING.LIB
}
func_add_hook func_gnulib_tool libtool_add_libltdl_copying
# libtool_build_prerequisites
# ---------------------------
# Libtool generates some files that are required before any autotools
# can be run successfully.
libtool_build_prerequisites ()
{
$debug_cmd
$require_build_aux
$require_ltdl_dir
$require_macro_dir
$require_package
$require_package_bugreport
$require_package_name
$require_package_url
$require_package_version
# Whip up a dirty Makefile:
makes='Makefile.am libltdl/ltdl.mk'
rm -f Makefile
{
echo "aux_dir = $build_aux"
echo "ltdl_dir = $ltdl_dir"
echo "macro_dir = $macro_dir"
$SED '/^if /,/^endif$/d;/^else$/,/^endif$/d;/^include /d' $makes
} > Makefile
# Building distributed files from configure is bad for automake, so we
# generate them here, and have Makefile rules to keep them up to date.
func_echo "running: $MAKE bootstrap-deps ..."
$opt_dry_run || {
output=`$MAKE bootstrap-deps \
M4SH="$AUTOM4TE --language=m4sh" PACKAGE="$package" \
PACKAGE_BUGREPORT="$package_bugreport" PACKAGE_NAME="$package_name" \
PACKAGE_URL="$package_url" SED="$SED" srcdir=. \
VERSION="$package_version" 2>&1`
}
status=$?
test 0 -eq "$status" || echo "$output"
rm -f Makefile
test 0 -eq "$status" ||exit $EXIT_FAILURE
}
func_add_hook func_gnulib_tool libtool_build_prerequisites
# libtool_force_changelog
# -----------------------
# Automake requires that ChangeLog exist.
libtool_force_changelog ()
{
$debug_cmd
echo "Autogenerated by \`make dist'" > ChangeLog || exit 1
}
func_add_hook func_gnulib_tool libtool_force_changelog
# libtool_readme_release_package_substitutions
# --------------------------------------------
# Show our own package details instead of generic strings.
libtool_readme_release_package_substitutions ()
{
$debug_cmd
$require_build_aux
$require_package
my_readme=README-release
test -f "$my_readme" \
|| func_fatal_error "error: \`$my_readme' does not exist"
# Perform substitutions to a temporary file
$SED -e "\
s|\@PACKAGE\@|$package|g
" "$my_readme" > "${my_readme}T" \
&& mv "${my_readme}T" "$my_readme"
}
func_add_hook func_fini libtool_readme_release_package_substitutions
# libtool_fudge_timestamps
# ------------------------
# Autoheader valiantly tries to prevent needless reconfigurations by
# not changing the timestamp of config-h.in unless the file contents
# are updated. Unfortunately config-h.in depends on aclocal.m4 which
# *is* updated, so running 'libtoolize --ltdl=. && configure && make'
# causes autoheader to be called... undesireable for users that do not
# have it! Fudge the timestamp to prevent that:
libtool_fudge_timestamps ()
{
$debug_cmd
sleep 2 && touch libltdl/config-h.in
}
func_add_hook func_fini libtool_fudge_timestamps
# libtool_cleanup
# ---------------
libtool_cleanup ()
{
$debug_cmd
# These files can cause an infinite configure loop if left behind.
rm -f Makefile libltdl/Makefile libtool vcl.tmp
}
func_add_hook func_fini libtool_cleanup
# libtool_check_for_bogus_macros
# ------------------------------
# Try to catch the case where `aclocal' pulls installed libtool macro
# file contents from another version of libtool into the current package
# `aclocal.m4'.
libtool_check_for_bogus_macros ()
{
$debug_cmd
$opt_dry_run ||
for macro in LT_INIT AC_PROG_LIBTOOL AM_PROG_LIBTOOL; do
if grep $macro aclocal.m4 libltdl/aclocal.m4; then
func_fatal_error "Bogus $macro macro contents in an aclocal.m4 file"
else :; fi
done
}
func_add_hook func_fini libtool_check_for_bogus_macros
# libtool_cleanup_empty_dirs
# --------------------------
# Gnulib leaves behind a few files we don't need.
libtool_cleanup_empty_dirs ()
{
$debug_cmd
my_gnulib_source=${source_base-'lib'}
if test -d "$my_gnulib_source"; then
rm -f "$my_gnulib_source/.gitignore" "$my_gnulib_source/Makefile.am" || exit 1
rmdir "$my_gnulib_source" || exit 1
fi
}
func_add_hook func_fini libtool_cleanup_empty_dirs
## -------------------- ##
## Resource management. ##
## -------------------- ##
# require_ltdl_dir
# ----------------
# Extract libtool's ltdl directory from configure.ac.
require_ltdl_dir=func_require_ltdl_dir
func_require_ltdl_dir ()
{
$require_configure_ac
func_extract_trace LT_CONFIG_LTDL_DIR
save_ifs=$IFS
IFS=:
set dummy $func_extract_trace_result
IFS=$save_ifs
shift
ltdl_dir=$1
func_check_configuration ltdl_dir \
"LT_CONFIG_LTDL_DIR([name of your libltdl directory])"
func_verbose "ltdl_dir='$ltdl_dir'"
require_ltdl_dir=:
}
# require_package_url
# -------------------
# Ensure that package_url has a sensible default.
require_package_url=libtool_require_package_url
libtool_require_package_url ()
{
$require_configure_ac
func_extract_trace AC_INIT
save_IFS=$IFS
IFS=:
set dummy $func_extract_trace_result
IFS=$save_IFS
shift
test -n "$package_url " || package_url=$5
test -n "$package_url" || {
# How to extract the parameters for `make bootstrap-deps' from
# configure.ac. This is very specific to the way Libtool's
# configure.ac layout.
sed_extract_package_url='s|#.*$||; s|^dnl .*$||; s| dnl .*$||;
/AC_SUBST([[]*PACKAGE_URL/{
s|.*AC_SUBST([[ ]*PACKAGE_URL[] ]*,[[ ]*|package_url="|
s|[]) ]*$|"|
p
}'
# Extract package_url setting from configure.ac.
eval `$SED -n "$sed_extract_package_url" < configure.ac`
}
test -n "$package_url" \
|| func_fatal_error "unable to determine \`package_url' from \`$configure_ac'."
func_verbose "package_url='$package_url'"
require_package_url=:
}
# Local variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "# bootstrap.conf (GNU Libtool) version "
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "$"
# End: