mirror of
git://git.savannah.gnu.org/libtool.git
synced 2024-11-21 01:40:57 +08:00
0024c50ba3
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>
407 lines
11 KiB
Plaintext
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:
|