1# bootstrap.conf (GNU Libtool) version 2014-11-18
2#
3# Copyright (C) 2010-2015 Free Software Foundation, Inc.
4# Written by Gary V. Vaughan, 2010
5
6# This is free software; see the source for copying conditions.  There is NO
7# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8#
9# GNU Libtool is free software; you can redistribute it and/or
10# modify it under the terms of the GNU General Public License as
11# published by the Free Software Foundation; either version 2 of
12# the License, or (at your option) any later version.
13#
14# GNU Libtool is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with GNU Libtool; see the file COPYING.  If not, a copy
21# can be downloaded from  http://www.gnu.org/licenses/gpl.html,
22# or obtained by writing to the Free Software Foundation, Inc.,
23# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24
25
26## -------------------------------- ##
27## User overrideable command paths. ##
28## -------------------------------- ##
29
30: "${MAKE=make}"
31
32export MAKE
33
34
35
36## -------------- ##
37## Configuration. ##
38## -------------- ##
39
40# File that should exist in the top directory of a checked out hierarchy,
41# but not in a distribution tarball.
42checkout_only_file=HACKING
43
44# List of programs (and minimum versions) required to bootstrap, maintain
45# and release Libtool.
46buildreq="
47        help2man   1.29        http://www.gnu.org/s/help2man
48        make       3.81        http://www.gnu.org/s/make
49        makeinfo   4.8         http://www.gnu.org/s/texinfo
50        xz         4.999.8beta http://tukaani.org/xz
51"
52
53# Instructions on how to install packages in $buildreq.
54buildreq_readme=HACKING
55
56# Non-default gnulib directory options.
57local_gl_dir=gl
58
59# Additional gnulib-tool options to use.
60gnulib_tool_options=$gnulib_tool_options"
61        --avoid=dummy
62        --libtool
63        --macro-prefix=GL
64"
65
66# gnulib modules used by this package.
67gnulib_modules='
68        announce-gen
69        bootstrap
70        do-release-commit-and-tag
71        extract-trace
72        gendocs
73        git-version-gen
74        gitlog-to-changelog
75        gnu-web-doc-update
76        gnupload
77        inline-source
78        maintainer-makefile
79        options-parser
80        readme-release
81        update-copyright
82'
83
84# Extra gnulib files that are not in modules, which override files of
85# the same name installed by other bootstrap tools.
86gnulib_non_module_files=$gnulib_non_module_files'
87        doc/COPYINGv2
88        doc/fdl.texi
89'
90
91# What ignore files to maintain.
92vc_ignore=.gitignore
93
94# Running the installed 'libtoolize' will trash the local (newer) libtool.m4
95# among others.  Don't use ':', since autoreconf can't exec it!
96LIBTOOLIZE=true
97
98# List of file droppings from old releases of Libtool.
99libtool_obsolete_files="
100        acinclude.m4
101        argz.c
102        libltdl/config.h
103        lt__dirent.c
104        lt__strl.c
105"
106
107
108## ------------------- ##
109## Override functions. ##
110## ------------------- ##
111
112# func_autopoint
113# --------------
114# Libtool does not use autopoint.
115func_autopoint ()
116{
117    $debug_cmd
118}
119
120
121# func_libtoolize
122# ---------------
123# Libtoolize is part of Libtool!
124func_libtoolize ()
125{
126    $debug_cmd
127}
128
129
130
131## ---------------------------- ##
132## Libtool bootstrap functions. ##
133## ---------------------------- ##
134
135# libtool_prep
136# ------------
137# Libtool bootstrap initialisation after successful option parse and
138# validation.
139libtool_prep ()
140{
141    $debug_cmd
142
143    # initial clean-up of checked out tree
144    find . -depth \( -name autom4te.cache -o -name libtool \) -print \
145      | grep -v '{arch}' \
146      | xargs rm -rf
147
148    # remove obsolete file droppings from old Libtool versions
149    for file in $libtool_obsolete_files; do
150      rm -f $file
151    done
152}
153func_add_hook func_prep libtool_prep
154
155
156# libtool_add_libltdl_copying
157# ---------------------------
158# Use the canonical COPYING.LESSERv2 from gnulib.
159libtool_add_libltdl_copying ()
160{
161    $debug_cmd
162
163    func_gnulib_tool_copy_file doc/COPYING.LESSERv2 libltdl/COPYING.LIB
164}
165func_add_hook func_gnulib_tool libtool_add_libltdl_copying
166
167
168# libtool_build_prerequisites
169# ---------------------------
170# Libtool generates some files that are required before any autotools
171# can be run successfully.
172libtool_build_prerequisites ()
173{
174    $debug_cmd
175
176    $require_build_aux
177    $require_ltdl_dir
178    $require_macro_dir
179    $require_package
180    $require_package_bugreport
181    $require_package_name
182    $require_package_url
183    $require_package_version
184
185    # Whip up a dirty Makefile:
186    makes='Makefile.am libltdl/ltdl.mk'
187    rm -f Makefile
188    {
189      echo "aux_dir = $build_aux"
190      echo "ltdl_dir = $ltdl_dir"
191      echo "macro_dir = $macro_dir"
192
193      # The following allow us to tie bootstrap-deps output verbosity
194      # into the bootstrap --verbose option:
195      echo 'AM_V_GEN = $(am__v_GEN_$(V))'
196      echo 'am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))'
197      echo 'am__v_GEN_0 = @echo "  GEN     " $@;'
198      echo 'AM_V_at = $(am__v_at_$(V))'
199      echo 'am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))'
200      echo 'am__v_at_0 = @'
201
202      $SED '/^if /,/^endif$/d;/^else$/,/^endif$/d;/^include /d' $makes
203    } > Makefile
204
205    # Building distributed files from configure is bad for automake, so we
206    # generate them here, and have Makefile rules to keep them up to date.
207    func_show_eval "$MAKE bootstrap-deps \
208        AM_DEFAULT_VERBOSITY=0 `$opt_verbose && echo V=1` \
209        PACKAGE='$package' PACKAGE_BUGREPORT='$package_bugreport' \
210        PACKAGE_NAME='$package_name' PACKAGE_URL='$package_url' \
211        SED='$SED' srcdir=. VERSION='$package_version'"
212    status=$?
213
214    rm -f Makefile
215    test 0 -eq "$status" ||exit $EXIT_FAILURE
216}
217func_add_hook func_gnulib_tool libtool_build_prerequisites
218
219
220# libtool_autoreconf_libltdl
221# --------------------------
222# Libtldl directory needs to be autoreconfed too.
223libtool_autoreconf_libltdl ()
224{
225    $debug_cmd
226
227    # Also bootstrap libltdl ready for installation.
228    func_autoreconf libltdl
229}
230func_add_hook func_reconfigure libtool_autoreconf_libltdl
231
232
233# libtool_readme_release_package_substitutions
234# --------------------------------------------
235# Show our own package details instead of generic strings.
236libtool_readme_release_package_substitutions ()
237{
238    $debug_cmd
239
240    $require_build_aux
241    $require_package
242
243    my_readme=README-release
244
245    test -f "$my_readme" \
246        || func_fatal_error "error: '$my_readme' does not exist"
247
248    # Perform substitutions to a temporary file
249    $SED -e "\
250        s|\@PACKAGE\@|$package|g
251    " "$my_readme" > "${my_readme}T" \
252        && mv "${my_readme}T" "$my_readme"
253}
254func_add_hook func_fini libtool_readme_release_package_substitutions
255
256
257# libtool_fudge_timestamps
258# ------------------------
259# Autoheader valiantly tries to prevent needless reconfigurations by
260# not changing the timestamp of config-h.in unless the file contents
261# are updated.  Unfortunately config-h.in depends on aclocal.m4, which
262# *is* updated, so running 'libtoolize --ltdl=. && configure && make'
263# causes autoheader to be called... undesireable for users that do not
264# have it!  Fudge the timestamp to prevent that:
265libtool_fudge_timestamps ()
266{
267    $debug_cmd
268
269    sleep 2 && touch libltdl/config-h.in
270}
271func_add_hook func_fini libtool_fudge_timestamps
272
273
274# libtool_cleanup
275# ---------------
276libtool_cleanup ()
277{
278    $debug_cmd
279
280    # These files can cause an infinite configure loop if left behind.
281    rm -f Makefile libltdl/Makefile libtool vcl.tmp
282}
283func_add_hook func_fini libtool_cleanup
284
285
286# libtool_check_for_bogus_macros
287# ------------------------------
288# Try to catch the case where 'aclocal' pulls installed libtool macro
289# file contents from another version of libtool into the current package
290# 'aclocal.m4'.
291libtool_check_for_bogus_macros ()
292{
293    $debug_cmd
294
295    $opt_dry_run ||
296        for macro in LT_INIT AC_PROG_LIBTOOL AM_PROG_LIBTOOL; do
297          if grep $macro aclocal.m4 libltdl/aclocal.m4; then
298            func_fatal_error "Bogus $macro macro contents in an aclocal.m4 file"
299          else :; fi
300        done
301}
302func_add_hook func_fini libtool_check_for_bogus_macros
303
304
305# libtool_cleanup_empty_dirs
306# --------------------------
307# Gnulib leaves behind a few files we don't need.
308libtool_cleanup_empty_dirs ()
309{
310    $debug_cmd
311
312    my_gnulib_source=${source_base:-'lib'}
313
314    if test -d "$my_gnulib_source"; then
315      rm -f "$my_gnulib_source/.gitignore" "$my_gnulib_source/Makefile.am" || exit 1
316      rmdir "$my_gnulib_source" || exit 1
317    fi
318}
319func_add_hook func_fini libtool_cleanup_empty_dirs
320
321
322
323## -------------------- ##
324## Resource management. ##
325## -------------------- ##
326
327# require_ltdl_dir
328# ----------------
329# Extract libtool's ltdl directory from configure.ac.
330require_ltdl_dir=func_require_ltdl_dir
331func_require_ltdl_dir ()
332{
333    $debug_cmd
334
335    $require_configure_ac
336
337    func_extract_trace LT_CONFIG_LTDL_DIR
338
339    save_ifs=$IFS
340    IFS=:
341    set dummy $func_extract_trace_result
342    IFS=$save_ifs
343    shift
344
345    ltdl_dir=$1
346    func_check_configuration ltdl_dir \
347        "LT_CONFIG_LTDL_DIR([name of your libltdl directory])"
348
349    func_verbose "ltdl_dir='$ltdl_dir'"
350
351    require_ltdl_dir=:
352}
353
354
355# require_package_url
356# -------------------
357# Ensure that package_url has a sensible default.
358require_package_url=libtool_require_package_url
359libtool_require_package_url ()
360{
361    $debug_cmd
362
363    $require_configure_ac
364
365    func_extract_trace AC_INIT
366
367    save_IFS=$IFS
368    IFS=:
369    set dummy $func_extract_trace_result
370    IFS=$save_IFS
371    shift
372
373    test -n "$package_url " || package_url=$5
374    test -n "$package_url" || {
375      # How to extract the parameters for 'make bootstrap-deps' from
376      # configure.ac.  This is very specific to the way Libtool's
377      # configure.ac layout.
378      sed_extract_package_url='s|#.*$||; s|^dnl .*$||; s| dnl .*$||;
379        /AC_SUBST([[]*PACKAGE_URL/{
380            s|.*AC_SUBST([[	 ]*PACKAGE_URL[]	 ]*,[[	 ]*|package_url="|
381            s|[])	 ]*$|"|
382            p
383        }'
384
385      # Extract package_url setting from configure.ac.
386      eval `$SED -n "$sed_extract_package_url" < configure.ac`
387    }
388
389    test -n "$package_url" \
390      || func_fatal_error "unable to determine 'package_url' from '$configure_ac'."
391
392    func_verbose "package_url='$package_url'"
393
394    require_package_url=:
395}
396
397
398# Local variables:
399# mode: shell-script
400# sh-indentation: 2
401# eval: (add-hook 'write-file-hooks 'time-stamp)
402# time-stamp-start: "# bootstrap.conf (GNU Libtool) version "
403# time-stamp-format: "%:y-%02m-%02d"
404# time-stamp-end: "$"
405# End:
406