Blob Blame History Raw
# bootstrap.conf (GNU Libtool) version 2014-11-18
#
# Copyright (C) 2010-2015 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/s/help2man
        make       3.81        http://www.gnu.org/s/make
        makeinfo   4.8         http://www.gnu.org/s/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
        bootstrap
        do-release-commit-and-tag
        extract-trace
        gendocs
        git-version-gen
        gitlog-to-changelog
        gnu-web-doc-update
        gnupload
        inline-source
        maintainer-makefile
        options-parser
        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
"


## ------------------- ##
## Override functions. ##
## ------------------- ##

# func_autopoint
# --------------
# Libtool does not use autopoint.
func_autopoint ()
{
    $debug_cmd
}


# func_libtoolize
# ---------------
# Libtoolize is part of Libtool!
func_libtoolize ()
{
    $debug_cmd
}



## ---------------------------- ##
## Libtool bootstrap functions. ##
## ---------------------------- ##

# libtool_prep
# ------------
# Libtool bootstrap initialisation after successful option parse and
# validation.
libtool_prep ()
{
    $debug_cmd

    # 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"

      # The following allow us to tie bootstrap-deps output verbosity
      # into the bootstrap --verbose option:
      echo 'AM_V_GEN = $(am__v_GEN_$(V))'
      echo 'am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))'
      echo 'am__v_GEN_0 = @echo "  GEN     " $@;'
      echo 'AM_V_at = $(am__v_at_$(V))'
      echo 'am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))'
      echo 'am__v_at_0 = @'

      $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_show_eval "$MAKE bootstrap-deps \
        AM_DEFAULT_VERBOSITY=0 `$opt_verbose && echo V=1` \
        PACKAGE='$package' PACKAGE_BUGREPORT='$package_bugreport' \
        PACKAGE_NAME='$package_name' PACKAGE_URL='$package_url' \
        SED='$SED' srcdir=. VERSION='$package_version'"
    status=$?

    rm -f Makefile
    test 0 -eq "$status" ||exit $EXIT_FAILURE
}
func_add_hook func_gnulib_tool libtool_build_prerequisites


# libtool_autoreconf_libltdl
# --------------------------
# Libtldl directory needs to be autoreconfed too.
libtool_autoreconf_libltdl ()
{
    $debug_cmd

    # Also bootstrap libltdl ready for installation.
    func_autoreconf libltdl
}
func_add_hook func_reconfigure libtool_autoreconf_libltdl


# 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 ()
{
    $debug_cmd

    $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 ()
{
    $debug_cmd

    $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: