2004-06-17 01:17:40 +08:00
|
|
|
## Process this file with autoconf to create configure. -*- autoconf -*-
|
|
|
|
# Copyright (C) 2004 Free Software Foundation, Inc.
|
|
|
|
#
|
|
|
|
# This program 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.
|
|
|
|
#
|
|
|
|
# This program 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 this program; if not, write to the Free Software
|
|
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
|
|
# 02111-1307 USA
|
|
|
|
|
|
|
|
# This configure.ac is not used at all by the libtool bootstrap, but
|
|
|
|
# is copied to the ltdl subdirectory if you libtoolize --ltdl your own
|
|
|
|
# project. Adding AC_WITH_LTDL to your project configure.ac will then
|
|
|
|
# configure this directory if your user doesn't want to use the installed
|
|
|
|
# libltdl.
|
|
|
|
|
|
|
|
AC_PREREQ(2.57)
|
|
|
|
|
|
|
|
|
|
|
|
## ------------------------ ##
|
|
|
|
## Autoconf initialisation. ##
|
|
|
|
## ------------------------ ##
|
|
|
|
AC_INIT([libltdl], [1.5a], [bug-libtool@gnu.org])
|
|
|
|
AC_CONFIG_HEADERS([config.h:config-h.in])
|
|
|
|
AC_CONFIG_SRCDIR([ltdl.c])
|
|
|
|
AC_CONFIG_AUX_DIR([config])
|
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
|
|
|
|
|
|
|
|
## ---------------------------------------- ##
|
|
|
|
## Display a configure time version banner. ##
|
|
|
|
## ---------------------------------------- ##
|
|
|
|
|
|
|
|
# This is a sanity check so we can see which version is used in bug reports.
|
|
|
|
# It is assumed that we only want to see the date extension for cvs libtool
|
|
|
|
# versions (i.e. "odd" letters) and not actual alpha releases.
|
|
|
|
TIMESTAMP=
|
|
|
|
case $lt_alpha in
|
|
|
|
[[acegikmoqsuwy]])
|
|
|
|
TIMESTAMP=`${CONFIG_SHELL} ${ac_aux_dir}/mkstamp < ${srcdir}/ChangeLog`
|
|
|
|
AS_BOX([Configuring AC_PACKAGE_TARNAME (Build:$TIMESTAMP) AC_PACKAGE_VERSION])
|
|
|
|
echo
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
AC_SUBST([TIMESTAMP])
|
|
|
|
|
|
|
|
|
|
|
|
## ------------------------ ##
|
|
|
|
## Automake Initialisation. ##
|
|
|
|
## ------------------------ ##
|
|
|
|
|
|
|
|
AM_INIT_AUTOMAKE([gnits])
|
|
|
|
|
|
|
|
## ------------------------------- ##
|
|
|
|
## Libtool specific configuration. ##
|
|
|
|
## ------------------------------- ##
|
|
|
|
pkgdatadir='${datadir}'"/${PACKAGE}"
|
|
|
|
|
|
|
|
|
|
|
|
## ---------------- ##
|
|
|
|
## compiler checks. ##
|
|
|
|
## ---------------- ##
|
|
|
|
|
|
|
|
# Use the specified CC and LD
|
|
|
|
AC_PROG_CC
|
|
|
|
AC_EXEEXT
|
|
|
|
AC_PROG_LD
|
|
|
|
AC_PROG_NM
|
|
|
|
AC_PROG_LN_S
|
|
|
|
|
|
|
|
|
|
|
|
## ----------------------- ##
|
|
|
|
## Libtool initialisation. ##
|
|
|
|
## ----------------------- ##
|
|
|
|
LT_INIT([dlopen win32-dll])
|
|
|
|
AC_LIBLTDL_CONVENIENCE
|
|
|
|
AC_LIB_LTDL
|
|
|
|
|
|
|
|
|
|
|
|
## -------- ##
|
|
|
|
## Outputs. ##
|
|
|
|
## -------- ##
|
This pervasive changeset makes two intertwined deep changes to the
operation of libtool (neither would work alone). First, there is
a new feature that allows libraries to preopen modules. This
entails a backwards incompatible change to the libltdl API for
separating out the preloaded symbol lists by owner. Second, in
the tradition of "eating our own dogfood", libltdl now preloads
its own dlloaders. The internal API for dlloaders has also had to
change in a backwards incompatible way in support of the new
library preloading feature. If you don't use preloaded libraries,
you needn't change your project sources, though you will need to
recompile against the new libltdl. The API changes are mostly
confined to dlloaders, so you probably needn't worry about those
(unless you have written a custom loader that you want libltdl to
use):
* configure.ac (AC_CONFIG_FILES): Add libltdl/loaders/Makefile.
* libltdl/configure.ac (AC_CONFIG_FILES): Add loaders/Makefile.
* libltdl/loaders: New directory for module loaders, to simplify
Makefile rules, and to give the loaders themselves names that are
unique in the first few characters.
* libtoolize.in (func_copy_all_files): Copy recursively to pick up
the loaders directory contents.
* libltdl/loaders/Makefile.am: New file. Move module building
rules to here...
* libltdl/Makefile.am: ...from here.
(VERSION_INFO): Bumped version info to signify interface changes.
(libltdl_la_CPPFLAGS, libltdlc_la_CPPFLAGS): Set LTDLOPEN
appropriately for each library.
* libltdl/loader-dld_link.c, libltdl/loader-dlopen.c,
libltdl/loader-dyld.c, libltdl/loader-load_add_on.c,
libltdl/loader-loadlibrary.c libltdl/loader-preopen.c,
libltdl/loader-shl_load.c: Moved from here...
* libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c,
libltdl/loaders/dyld.c, libltdl/loaders/load_add_on.c,
libltdl/loaders/loadlibrary.c libltdl/loaders/preopen.c,
libltdl/loaders/shl_load.c: ...to here.
(get_vtable): New entry function for each.
* libltdl/loaders/preopen.c (lt_dlsymlists_t): Replaced by...
(symlist_chain): ...a new structure which maps lists of preloaded
symbols from the object that loads them.
(lt_dlpreload_open): New function to automatically open all
preloaded modules belonging to a named object (ORIGINATOR).
* libltdl/lt__alloc.c (lt__zalloc): New function to return a block
of zeroed out new memory.
* libltdl/lt__alloc.h (lt__zalloc): Prototype it.
* libltdl/lt__private.h (lt__alloc_die_callback): Add missing
prototype.
(lt__error_strings): Make this opaque to callers.
* libltdl/lt_error.c (lt__error_strings): Move the implementation
to here.
* libltdl/lt_dlloader.h (lt_user_dlloader): Add extra fields to
make originator focused preloading possible. *BREAKS BACKWARDS
COMPATIBILITY*
(lt_dlloader_add): Take advantage of new fields to simplify
paramater list.
* libltdl/lt_system.h (LT_STR): New ANSI stringification macro.
(LT_CONC): Fix it to work from within macros.
* libltdl/ltdl.c (loader_init, loader_init_callback): Simplify
dlloader loading.
(get_vtable, preloaded_symbols): Point these at the preopen.c
symbols to bootstrap the loader chain.
(lt_dlinit): Load the preopen dlloader manually, and then use it
to load any other preloaded dlloaders.
(lt_dlloader_add): Simplify parameter list. Populate new
fields. Chain new loaders according to priority field.
* libltdl/ltdl.h (lt_dlsymlist): Add a new originator field.
(lt_dlpreload_callback_func): Type of a callback for automatic
lt_dlpreload_open loading.
(LTDL_SET_PRELOADED_SYMBOLS): Adjust to hook into preloaded
symbols from the "@PROGRAM@" originator.
* tests/demo/dlmain.c (main): Use mangled preloaded_symbols symbol.
* tests/pdemo/longer_file_name_dlmain.c (main): Ditto.
* ltmain.in: Don't spew spurious warnings when dlopening and
dlpreopening modules.
(func_generate_dlsyms): Factored out from multiple copies in the
rest of the code. Generate originator keyed symbol lists.
(func_extract_archives): Also factored. Extract the contents of
convenience archives for linking with dependent libraries when
--whole-archive is not available.
[darwin]: Don't try to link $old_library unless it exists, and
$lib is a bundle.
* m4/ltdl.m4 (AC_LTDL_DLLIB): Check for all possible dynamic
loading libraries/apis rather that stopping when an acceptable one
is discovered.
(LT_DLLOADERS): New variable for holding dlloaders that can be
preloaded.
* doc/libtool.texi: Document interface changes.
* NEWS: Updated.
2004-07-15 20:14:48 +08:00
|
|
|
AC_CONFIG_FILES([Makefile loaders/Makefile])
|
2004-06-17 01:17:40 +08:00
|
|
|
AC_OUTPUT
|