diff options
Diffstat (limited to 'libtoolize.m4sh')
-rw-r--r-- | libtoolize.m4sh | 1997 |
1 files changed, 861 insertions, 1136 deletions
diff --git a/libtoolize.m4sh b/libtoolize.m4sh index 31bbf3e7..cd15c58a 100644 --- a/libtoolize.m4sh +++ b/libtoolize.m4sh @@ -1,6 +1,6 @@ m4_pattern_allow([dnl]) AS_INIT[]m4_divert_push([HEADER-COPYRIGHT]) -# libtoolize (GNU @PACKAGE@) @VERSION@ +# libtoolize (GNU @PACKAGE@@TIMESTAMP@) @VERSION@ # Written by Gary V. Vaughan <gary@gnu.org>, 2003 # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 @@ -59,7 +59,7 @@ AS_INIT[]m4_divert_push([HEADER-COPYRIGHT]) # include the following information: # # host-triplet: @host_triplet@ -# $progname: (GNU @PACKAGE@) @VERSION@ +# $progname: (GNU @PACKAGE@@TIMESTAMP@) @VERSION@ # automake: $automake_version # autoconf: $autoconf_version # @@ -67,12 +67,22 @@ AS_INIT[]m4_divert_push([HEADER-COPYRIGHT]) # GNU @PACKAGE@ home page: <@PACKAGE_URL@>. # General help using GNU software: <http://www.gnu.org/gethelp/>. +: ${TAR=tar} + PROGRAM=libtoolize m4_divert_pop m4_include([getopt.m4sh]) M4SH_VERBATIM([[ +# ltdl can be installed to be self-contained (subproject, the default); +# or to be configured by a parent project, either with a recursive or +# nonrecursive automake driven make: +ltdl_mode= + +# Locations for important files: +ltdldir= + # Parse environment options { my_sed_env_opt='1s/^\([^,:; ]*\).*$/\1/;q' @@ -86,7 +96,7 @@ M4SH_VERBATIM([[ --debug|--no-warn|--quiet|--verbose) envopts="${envopts+$envopts }$opt" ;; --*) env_warning="${env_warning+$env_warning -}unrecognized environment option \`$opt'" ;; +}unrecognized environment option \`$opt'" ;; *) func_fatal_help "garbled LIBTOOLIZE_OPTIONS near \`$opt'" ;; esac done @@ -110,22 +120,23 @@ M4SH_GETOPTS( CP="func_echo_all $CP" test -n "$LN_S" && LN_S="func_echo_all $LN_S" MKDIR="func_echo_all $MKDIR" - RM="func_echo_all $RM"], + RM="func_echo_all $RM" + TAR="func_echo_all $TAR"], [q], [--quiet|--automake], [], [], [v], [--verbose], [], [], [], [--no-warning|--no-warn], [], [], [], [--nonrecursive|--non-recursive], [], [], [], [--recursive], [], [], - [], [--subproject], [], [], + [], [--standalone], [], [], [?], [--ltdl], [false], [ # This is tricky, since we're overloading $opt_ltdl to be the # optarg for --ltdl during option processing, but then stashing - # the (optional) optarg in $ltdl_dir and reusing $opt_ltdl to + # the (optional) optarg in $ltdldir and reusing $opt_ltdl to # indicate that --ltdl was seen during option processing. Also, - # be careful that --ltdl=foo --ltdl=bar results in ltdl_dir=bar: + # be careful that --ltdl=foo --ltdl=bar results in ltdldir=bar: case $opt_ltdl in false|:) ;; # a bare '--ltdl' followed by another option - *) ltdl_dir=`$ECHO "$optarg" |$SED 's|/*$||'` ;; + *) ltdldir=`$ECHO "$optarg" | $SED 's,/*$,,'` ;; esac opt_ltdl=:], [ @@ -133,18 +144,18 @@ M4SH_GETOPTS( test -n "$env_warning" && echo "$env_warning" |while read line; do func_warning "$line"; done - # validate $opt_nonrecursive, $opt_recursive and $opt_subproject + # validate $opt_nonrecursive, $opt_recursive and $opt_standalone if $opt_nonrecursive; then - if $opt_recursive || $opt_subproject; then - func_error "you can have at most one of --non-recursive, --recursive and --subproject" + if $opt_recursive || $opt_standalone; then + func_error "you can have at most one of --non-recursive, --recursive and --standalone" fi ltdl_mode=nonrecursive elif $opt_recursive; then - $opt_subproject && - func_error "you can have at most one of --non-recursive, --recursive and --subproject" + $opt_standalone && + func_error "you can have at most one of --non-recursive, --recursive and --standalone" ltdl_mode=recursive - elif $opt_subproject; then - ltdl_mode=subproject + elif $opt_standalone; then + ltdl_mode=standalone fi # any remaining arguments are an error @@ -154,179 +165,441 @@ M4SH_GETOPTS( M4SH_VERBATIM([[ -# func_whisper arg... -# Echo program name prefixed message unless $opt_quiet was given. -func_whisper () -{ - $debug_cmd - - $opt_quiet || func_echo ${1+"$@"} -} - -# func_whisper_once msg_var -# Call func_whisper with the value of MSG_VAR, and then set MSG_VAR='' so -# that subsequent calls will have no effect. -func_whisper_once () +# func_echo_once msg_var +# Calls func_echo with the value of MSG_VAR, and then sets MSG_VAR="" so +# that subsequent calls have no effect. +func_echo_once () { - $debug_cmd - + $opt_debug if test -n "$1"; then eval my_msg=\$$1 if test -n "$my_msg"; then - func_whisper "$my_msg" - eval $1= + func_echo "$my_msg" + eval $1="" fi fi } -# func_whisper_hdr msg_var arg... -# With at least 1 non-empty ARG, call func_whisper_once with MSG_VAR, -# and then func_whisper with the remaining arguments. -func_whisper_hdr () +# func_copy srcfile destfile [msg_var] +# A wrapper for func_copy_cb that accepts arguments in the same order +# as the cp(1) shell command. +func_copy () { - $debug_cmd + $opt_debug + + test -f "$1" || \ + { func_error "\`$1' not copied: not a regular file"; return 1; } - my_msg_var=$1; shift - test -n "$*" || return + func_dirname_and_basename "$1" + my_f1=$func_basename_result + + if test -d "$2"; then + + func_copy_cb "$my_f1" \ + `$ECHO "$1" | $SED "$dirname"` "$2" "$3" + + else - func_whisper_once "$my_msg_var" - func_whisper "$*" + # Supporting this would mean changing the timestamp: + func_dirname_and_basename "$2" + my_tname=$func_basename_result + test "X$my_f1" = "X$my_tname" \ + || func_fatal_error "func_copy() cannot change filename on copy" + + func_copy_cb "$my_f1" \ + `$ECHO "$1" | $SED "$dirname"` \ + `$ECHO "$2" | $SED "$dirname"` \ + "$3" + + fi + + return $copy_return_status # set in func_copy_cb } -# func_whisper_error_hdr msg_var arg... -# Much the same as func_whisper_header, but for (non-fatal) error -# messages. -func_whisper_error_hdr () +# func_copy_cb filename srcdir destdir [msg_var] +# If option `--copy' was specified, or soft-linking SRCFILE to DESTFILE fails, +# then try to copy SRCFILE to DESTFILE (without changing the timestamp if +# possible). +func_copy_cb () { - $debug_cmd + $opt_debug + my_file="$1" + my_srcdir="$2" + my_destdir="$3" + my_msg_var="$4" + copy_return_status=1 + + # Libtool is probably misinstalled if this happens: + test -f "$my_srcdir/$my_file" || + func_fatal_error "\`$my_file' not found in \`$my_srcdir'" + + case $opt_verbose in + false) my_copy_msg="file \`$my_destdir/$my_file'" ;; + *) my_copy_msg="file from \`$my_srcdir/$my_file'" ;; + esac + func_mkdir_p `$ECHO "$my_destdir/$my_file" | $SED "$dirname"` + + $RM "$my_destdir/$my_file" + if $opt_copy; then + if { ( cd "$my_srcdir" && $TAR chf - "$my_file" ) 2>/dev/null \ + | ( umask 0 && cd "$my_destdir" && $TAR xf - ) >/dev/null 2>&1; } \ + && touch "$my_destdir/$my_file"; then + $opt_quiet || func_echo_once "$my_msg_var" + $opt_quiet || func_echo "copying $my_copy_msg" + copy_return_status=0 + fi + else + if test "$my_file" = "aclocal.m4"; then + if { ( cd "$my_srcdir" && $TAR chf - "$my_file" ) 2>/dev/null \ + | ( umask 0 && cd "$my_destdir" && $TAR xf - ) >/dev/null 2>&1 ; } + then + $opt_quiet || func_echo_once "$my_msg_var" + $opt_quiet || func_echo "copying $my_copy_msg" + copy_return_status=0 + fi + else + if $LN_S "$my_srcdir/$my_file" "$my_destdir/$my_file"; then + $opt_quiet || func_echo_once "$my_msg_var" + $opt_quiet || func_echo "linking $my_copy_msg" + copy_return_status=0 + fi + fi + fi + if test "$copy_return_status" != 0; then + $opt_quiet || func_echo_once "$my_msg_var" + func_error "can not copy \`$my_srcdir/$my_file' to \`$my_destdir/'" + exit_status=$EXIT_FAILURE + fi +} - my_msg_var=$1; shift - test -n "$*" || return - func_whisper_once "$my_msg_var" - func_error "$*" +# func_copy_some_files srcfile_spec srcdir destdir [msg_var] [cb=func_copy_cb] +# Call COPY_CB for each regular file in SRCDIR named by the ':' delimited +# names in SRCFILE_SPEC. The odd calling convention is needed to allow +# spaces in file and directory names. +func_copy_some_files () +{ + $opt_debug + my_srcfile_spec="$1" + my_srcdir="$2" + my_destdir="$3" + my_msg_var="$4" + my_copy_cb="${5-func_copy_cb}" + + my_save_IFS="$IFS" + IFS=: + for my_filename in $my_srcfile_spec; do + IFS="$my_save_IFS" + if test -f "$my_srcdir/$my_filename"; then + if test "X$my_copy_cb" = Xfunc_copy_cb; then + $opt_force || if test -f "$my_destdir/$my_filename"; then + $opt_quiet || func_echo_once "$my_msg_var" + $opt_quiet \ + || func_error "\`$my_destdir/$my_filename' exists: use \`--force' to overwrite" + continue + fi + fi + else + func_echo_once "$my_msg_var" + func_fatal_error "\`$my_filename' not found in \`$my_srcdir'" + fi - exit_status=$EXIT_FAILURE + $my_copy_cb "$my_filename" "$my_srcdir" "$my_destdir" "$my_msg_var" + done + IFS="$my_save_IFS" } -# func_copy filename srcdir destdir [msg_var [filter]] -# If option `--copy' was specified, or soft-linking SRCFILE to DESTFILE -# fails, then try to copy SRCFILE to DESTFILE (making sure to update the -# timestamp so that a series of files with dependencies can be copied -# in the right order that their timestamps won't trigger rebuilds). If -# FILTER is non-empty, it is a sed script to apply to SRCFILE as it is -# copied. MSG_VAR names a variable for use with func_whisper_hdr. -func_copy () +# func_fixup_Makefile srcfile srcdir destdir +func_fixup_Makefile () { - $debug_cmd + $opt_debug + my_filename="$1" + my_srcdir="$2" + my_destdir="$3" + my_fixup_non_subpackage_script="\ + s,(LIBOBJS),(ltdl_LIBOBJS),g + s,(LTLIBOBJS),(ltdl_LTLIBOBJS),g + s,libltdl/configure.ac,, + s,libltdl/configure,, + s,libltdl/aclocal.m4,, + s,libltdl/config-h.in,, + s,libltdl/Makefile.am,, + s,libltdl/Makefile.in,, + /^[ ]*\\\\\$/d" + case $my_filename in + Makefile.am) + my_fixup_non_subpackage_script=`echo "$my_fixup_non_subpackage_script" | \ + sed 's,libltdl/,,'` + my_fixup_inc_paths_script= ;; + Makefile.inc) + repl=$ltdldir + repl_uscore=`$ECHO "$repl" | $SED 's,[/.+-],_,g'` + my_fixup_inc_paths_script="\ + s,libltdl_,@repl_uscore@_, + s,libltdl/,@repl@/, + s,: libltdl/,: @repl@/, + s, -Ilibltdl , -I@repl@ , + s,\\\$(libltdl_,\$(@repl_uscore@_, + s,)/libltdl ,)/@repl@ , + s,@repl_uscore@,${repl_uscore},g + s,@repl@,${repl},g" + ;; + esac - my_filename=$1 - my_srcdir=$2 - my_destdir=$3 - my_msg_var=$4 - my_filter=$5 + $RM "$my_destdir/$my_filename" 2>/dev/null + $opt_quiet || func_echo "creating file \`$my_destdir/$my_filename'" + if $opt_dry_run; then :; + else + $SED "$my_fixup_non_subpackage_script + $my_fixup_inc_paths_script" \ + < "$my_srcdir/$my_filename" > "$my_destdir/$my_filename" || + func_fatal_error "cannot create $my_destdir/$my_filename" + fi +} - my_srcfile=$my_srcdir/$my_filename - my_destfile=$my_destdir/$my_filename +# func_scan_files +# Scan configure.(ac|in) and aclocal.m4 (if present) for use of libltdl +# and libtool. Possibly running some of these tools if necessary. +# Libtoolize affects the contents of aclocal.m4, and should be run before +# aclocal, so we can't use configure --trace which relies on a consistent +# configure.(ac|in) and aclocal.m4. +func_scan_files () +{ + $opt_debug + # Prefer configure.ac to configure.in + test -f configure.ac && configure_ac=configure.ac + test -f "$configure_ac" || configure_ac= + + # Set local variables to reflect contents of configure.ac + my_sed_scan_configure_ac='s,#.*$,,; s,^dnl .*$,,; s, dnl .*$,,; + /AC_INIT/ { + s,^.*$,seen_autoconf=:, + p + } + d' + test -z "$configure_ac" \ + || eval `$SED "$my_sed_scan_configure_ac" "$configure_ac"` - # Libtool is probably misinstalled if this happens: - test -f "$my_srcfile" || { - func_whisper_error_hdr "$my_msg_var" "\`$my_srcfile' not found" - return 1 - } + $seen_autoconf || { + my_configure_ac= + test -n "$configure_ac" && my_configure_ac="$configure_ac: " + func_verbose "${my_configure_ac}not using Autoconf" - # Require --force to remove existing $my_destfile. - $opt_force && $RM "$my_destfile" - test -f "$my_destfile" && { - func_whisper_error_hdr "$my_msg_var" \ - "\`$my_destfile' exists: use \`--force' to overwrite" - return 1 + # Make sure ltdldir and ltdl_mode have sensible defaults + # since we return early here: + test -n "$ltdldir" || ltdldir=libltdl + test -n "$ltdl_mode" || ltdl_mode=subproject + + return } - # Be careful to support `func_copy dir/target srcbase destbase'. - func_dirname "$my_destfile" - func_mkdir_p "$func_dirname_result" + # ---------------------------------------------------- # + # Probe macro usage in configure.ac and/or aclocal.m4. # + # ---------------------------------------------------- # - # Filters always take priority. - if test -n "$my_filter"; then - if $opt_dry_run || { - ( umask 0 - $SED -e "$my_filter" "$my_srcfile" > "$my_destfile" - ) >/dev/null 2>&1 + my_sed_traces='s,#.*$,,; s,^dnl .*$,,; s, dnl .*$,, + s,^.*AC_REQUIRE(.*$,,; s,^.*m4@&t@_require(.*$,,; + s,^.*m4@&t@_define(.*$,, + s,^.*A[CU]_DEFUN(.*$,,; s,^.*m4@&t@_defun(.*$,, + /AC_CONFIG_AUX_DIR(/ { + s,^.*AC_CONFIG_AUX_DIR([[ ]*\([^])]*\).*$,ac_auxdir=\1, + p } - then - func_whisper_once "$my_msg_var" - if $opt_verbose; then - func_whisper "$SED -e '$my_filter' $my_srcfile > $my_destfile" - else - func_whisper "creating file \`$my_destfile'" - fi - else - func_whisper_error_hdr "$my_msg_var" "creating \`$my_destfile' from \`$my_srcfile' failed" - return 1 - fi - return 0 - fi + /AC_CONFIG_MACRO_DIR(/ { + s,^.*AC_CONFIG_MACRO_DIR([[ ]*\([^])]*\).*$,ac_macrodir=\1, + p + } + /_LT_CONFIG_LTDL_DIR(/d + /LT_CONFIG_LTDL_DIR(/ { + s,^.*LT_CONFIG_LTDL_DIR([[ ]*\([^])]*\).*$,ac_ltdldir=\1, + p + } + /\@<:@A[CM]_PROG_LIBTOOL/d + /A[CM]_PROG_LIBTOOL/ { + s,^.*$,seen_libtool=:, + p + } + /the.*option into.*LT_INIT.*parameter/d + /\@<:@LT_INIT/d + /LT_INIT/ { + s,^.*$,seen_libtool=:, + p + } + /\@<:@LTDL_INIT/d + /LTDL_INIT/ { + s,^.*LTDL_INIT([[ ]*\([^])]*\).*$,ltdl_options="\1", + s,^.*LTDL_INIT[ ]*$,seen_ltdl=:, + p + } + /LT_WITH_LTDL/ { + s,^.*$,seen_ltdl=:, + p + } + /AC_LIB_LTDL/ { + s,^.*$,seen_ltdl=:, + p + } + /AC_WITH_LTDL/ { + s,^.*$,seen_ltdl=:, + p + } + d' + eval `cat aclocal.m4 "$configure_ac" 2>/dev/null | $SED "$my_sed_traces"` - # Otherwise copy or link according to `--copy' option. - if $opt_copy; then - my_copycmd=$CP - my_copy_type=copying - else - my_copycmd=$LN_S - my_copy_type=linking - fi - my_copy_msg="$my_copy_type file \`$my_destfile'" - $opt_verbose && my_copy_msg="$my_copycmd $my_srcfile $my_destdir" - if $opt_dry_run || { - ( umask 0 - $my_copycmd "$my_srcfile" "$my_destfile" - ) >/dev/null 2>&1 - } - then - func_whisper_hdr "$my_msg_var" "$my_copy_msg" + # ----------------- # + # Validate ltdldir. # + # ----------------- # + + ac_ltdldir=`$ECHO "$ac_ltdldir" | $SED 's,/*$,,'` + + # If $configure_ac contains AC_CONFIG_LTDL_DIR, check that its + # arguments were not given in terms of a shell variable! + case "$ac_ltdldir" in + *\$*) + func_fatal_error "can not handle variables in LT_CONFIG_LTDL_DIR" + ;; + esac + + # If neither --ltdl nor LT_CONFIG_LTDL_DIR are specified, default to + # `libltdl'. If both are specified, they must be the same. Otherwise, + # take the one that is given! (If LT_CONFIG_LTDL_DIR is not specified + # we suggest adding it later in this code.) + case x$ac_ltdldir,x$ltdldir in + x,x) ltdldir=libltdl ;; + x*,x) ltdldir=$ac_ltdldir ;; + x,x*) ltdldir=$ltdldir ;; + *) + test x"$ac_ltdldir" = x"$ltdldir" || \ + func_fatal_error "--ltdl='$ltdldir' does not match LT_CONFIG_LTDL_DIR($ac_ltdldir)" + ;; + esac + + + # ------------------- # + # Validate ltdl_mode. # + # ------------------- # + + test -n "$ltdl_options" && seen_ltdl=: + + # If $configure_ac contains LTDL_INIT, check that its + # arguments were not given in terms of a shell variable! + case "$ltdl_options" in + *\$*) + func_fatal_error "can not handle variables in LTDL_INIT" + ;; + esac + + # Extract mode name from ltdl_options + # FIXME: Diagnose multiple conflicting modes in ltdl_options + ac_ltdl_mode= + case " $ltdl_options " in + *" nonrecursive "*) ac_ltdl_mode=nonrecursive ;; + *" recursive "*) ac_ltdl_mode=recursive ;; + *" subproject "*) ac_ltdl_mode=subproject ;; + esac + + # If neither --ltdl nor an LTDL_INIT mode are specified, default to + # `subproject'. If both are specified, they must be the same. Otherwise, + # take the one that is given! + case x$ac_ltdl_mode,x$ltdl_mode in + x,x) ltdl_mode=subproject ;; + x*,x) ltdl_mode=$ac_ltdl_mode ;; + x,x*) ltdl_mode=$ltdl_mode ;; + *) + test x"$ac_ltdl_mode" = x"$ltdl_mode" || \ + func_fatal_error "--$ltdl_mode does not match LTDL_INIT($ac_ltdl_mode)" + ;; + esac + + # ---------------- # + # Validate auxdir. # + # ---------------- # + + if test -n "$ac_auxdir"; then + # If $configure_ac contains AC_CONFIG_AUX_DIR, check that it was + # not given in terms of a shell variable! + case "$ac_auxdir" in + *\$*) + func_fatal_error "can not handle variables in AC_CONFIG_AUX_DIR" + ;; + *) + auxdir=$ac_auxdir + ;; + esac else - func_whisper_error_hdr "$my_msg_var" \ - "$my_copy_type \`$my_srcdir/$my_filename' to \`$my_destdir/' failed" - return 1 + # Try to discover auxdir the same way it is discovered by configure. + # Note that we default to the current directory. + for dir in . .. ../..; do + if test -f "$dir/install-sh"; then + auxdir=$dir + break + elif test -f "$dir/install.sh"; then + auxdir="$dir" + break + fi + done fi -} + # Just use the current directory if all else fails. + test -n "$auxdir" || auxdir=. -# func_extract_trace macro_name [filename ...] -# set `$func_extract_trace_result' to a colon delimited list of arguments -# to MACRO_NAME in FILENAME. If no FILENAME is given, then -# `configure.ac' is assumed. -func_extract_trace () -{ - $opt_debug - if test 1 -eq $#; then - test -n "$configure_ac" || return - set dummy "$@" "$configure_ac"; shift + # ------------------------------ # + # Find local m4 macro directory. # + # ------------------------------ # + + # Hunt for ACLOCAL_AMFLAGS in `Makefile.am' for a `-I' argument. + + my_sed_aclocal_flags=' + /^[ ]*ACLOCAL_[A-Z_]*FLAGS[ ]*=[ ]*/ { + s,,, + q + } + d' + if test -f Makefile.am; then + my_macrodir_is_next=false + for arg in `$SED "$my_sed_aclocal_flags" Makefile.am`; do + if $my_macrodir_is_next; then + am_macrodir="$arg" + break + else + case $arg in + -I) my_macrodir_is_next=: ;; + -I*) + am_macrodir=`$ECHO "$arg" | sed 's,^-I,,'` + break + ;; + *) my_macrodir_is_next=false ;; + esac + fi + done fi - func_extract_trace_result=`$extract_trace ${1+"$@"}` -} + macrodir="$ac_macrodir" + test -z "$macrodir" && macrodir="$am_macrodir" + if test -n "$am_macrodir" && test -n "$ac_macrodir"; then + test "$am_macrodir" = "$ac_macrodir" \ + || func_fatal_error "AC_CONFIG_MACRO_DIR([$ac_macrodir]) conflicts with ACLOCAL_AMFLAGS=-I $am_macrodir." + fi +} # func_included_files searchfile # Output INCLUDEFILE if SEARCHFILE m4_includes it, else output SEARCHFILE. func_included_files () { - $debug_cmd - - my_searchfile=$1 + $opt_debug + my_searchfile="$1" my_include_regex= my_sed_include=' /^m4@&t@_include(\[.*\])$/ { - s|^m4@&t@_include(\[\(.*\)\])$|\1| + s,^m4@&t@_include(\[\(.*\)\])$,\1, p } d' @@ -348,13 +621,12 @@ func_included_files () # comment line must also match MACRO_REGEX, if given. func_serial () { - $debug_cmd - - my_filename=$1 - my_macro_regex=$2 + $opt_debug + my_filename="$1" + my_macro_regex="$2" my_sed_serial=' /^# serial [1-9][0-9.]*[ ]*'"$my_macro_regex"'[ ]*$/ { - s|^# serial \([1-9][0-9.]*\).*$|\1| + s,^# serial \([1-9][0-9.]*\).*$,\1, q } d' @@ -366,7 +638,7 @@ func_serial () my_filebase=$func_basename_result for my_file in `func_included_files "$my_filename"`; do if test -z "$my_macro_regex" || - test aclocal.m4 = "$my_filename" || + test "$my_filename" = aclocal.m4 || test "X$my_macro_regex" = "X$my_filebase" || func_grep '^AC_DEFUN(\@<:@'"$my_macro_regex" "$my_file" then @@ -388,10 +660,9 @@ func_serial () # same, func_serial_max_result will be empty. func_serial_max () { - $debug_cmd - - my_serial1=$1 - my_serial2=$2 + $opt_debug + my_serial1="$1" + my_serial2="$2" my_sed_dot='s/\..*$//g' my_sed_rest='s/^[0-9][1-9]*\.*//' @@ -413,16 +684,16 @@ func_serial_max () && break test -z "$my_serial1_part" \ - && { func_serial_max_result=$2; break; } + && { func_serial_max_result="$2"; break; } test -z "$my_serial2_part" \ - && { func_serial_max_result=$1; break; } + && { func_serial_max_result="$1"; break; } test "$my_serial1_part" -gt "$my_serial2_part" \ - && { func_serial_max_result=$1; break; } + && { func_serial_max_result="$1"; break; } test "$my_serial2_part" -gt "$my_serial1_part" \ - && { func_serial_max_result=$2; break; } + && { func_serial_max_result="$2"; break; } my_serial1=`$ECHO "$my_serial1" | $SED "$my_sed_rest"` my_serial2=`$ECHO "$my_serial2" | $SED "$my_sed_rest"` @@ -435,19 +706,15 @@ func_serial_max () # to 'false'. func_serial_update_check () { - $debug_cmd - - $require_ac_ltdl_dir - $require_ac_macro_dir - - my_srcfile=$1 - my_src_serial=$2 - my_destfile=$3 - my_dest_serial=$4 + $opt_debug + my_srcfile="$1" + my_src_serial="$2" + my_destfile="$3" + my_dest_serial="$4" my_update_p=: if test -f "$my_destfile"; then - test 0 = "$my_src_serial" && { + test "X$my_src_serial" = "X0" && { func_warning "no serial number on \`$my_srcfile', not copying." return } @@ -461,13 +728,13 @@ func_serial_update_check () if test "X$my_dest_serial" = "X$func_serial_max_result"; then func_verbose "\`$my_srcfile' is serial $my_src_serial, less than $my_dest_serial in \`$my_destfile'" - $opt_force || if test -n "$ac_macro_dir$ac_ltdl_dir"; then + $opt_force || if test -n "$ac_macrodir$ac_ltdldir"; then func_error "\`$my_destfile' is newer: use \`--force' to overwrite" fi fi fi - func_serial_update_check_result=$my_update_p + func_serial_update_check_result="$my_update_p" } @@ -476,23 +743,20 @@ func_serial_update_check () # in aclocal.m4, set $func_aclocal_update_check to 'false'. func_aclocal_update_check () { - $debug_cmd - - my_filename=$1 - - my_srcfile=$aclocaldir/$1 - my_destfile=aclocal.m4 + $opt_debug + my_srcfile="$aclocaldir/$1" + my_destfile="aclocal.m4" - case $my_filename in + case $need in libtool.m4) my_src_serial=`func_serial "$my_srcfile" LT_INIT` my_dest_serial=`func_serial "$my_destfile" LT_INIT` # Strictly, this libtoolize ought not to have to deal with ancient # serial formats, but we accept them here to be complete: - test 0 = "$my_src_serial" && + test "X$my_src_serial" = "X0" && my_src_serial=`func_serial "$my_srcfile" 'A[CM]_PROG_LIBTOOL'` - test 0 = "$my_dest_serial" && + test "X$my_dest_serial" = "X0" && my_dest_serial=`func_serial "$my_destfile" 'A[CM]_PROG_LIBTOOL'` ;; ltdl.m4) @@ -500,15 +764,15 @@ func_aclocal_update_check () my_dest_serial=`func_serial "$my_destfile" LTDL_INIT` ;; *) - my_src_serial=`func_serial "$my_srcfile" "$my_filename"` - my_dest_serial=`func_serial "$my_destfile" "$my_filename"` + my_src_serial=`func_serial "$my_srcfile" "$need"` + my_dest_serial=`func_serial "$my_destfile" "$need"` ;; esac func_serial_update_check \ "$my_srcfile" "$my_src_serial" "$my_destfile" "$my_dest_serial" - func_aclocal_update_check_result=$func_serial_update_check_result + func_aclocal_update_check_result="$func_serial_update_check_result" } @@ -519,19 +783,18 @@ func_aclocal_update_check () # OLD_MACRO_REGEX must match any text after "# serial N" in both files. func_serial_update () { - $debug_cmd - - my_filename=$1 - my_srcdir=$2 - my_destdir=$3 - my_msg_var=$4 - my_macro_regex=$5 - my_old_macro_regex=$6 + $opt_debug + my_filename="$1" + my_srcdir="$2" + my_destdir="$3" + my_msg_var="$4" + my_macro_regex="$5" + my_old_macro_regex="$6" my_serial_update_p=: my_return_status=1 - my_srcfile=$my_srcdir/$my_filename - my_destfile=$my_destdir/$my_filename + my_srcfile="$my_srcdir/$my_filename" + my_destfile="$my_destdir/$my_filename" test -f "$my_srcfile" || func_fatal_error "\`$my_srcfile' does not exist." @@ -541,30 +804,31 @@ func_serial_update () # Strictly, this libtoolize ought not to have to deal with ancient # serial formats, but we accept them here to be complete: - test 0 = "$my_src_serial" && + test "X$my_src_serial" = "X0" && my_src_serial=`func_serial "$my_srcfile" "$my_old_macro_regex"` - test 0 = "$my_dest_serial" && + test "X$my_dest_serial" = "X0" && my_dest_serial=`func_serial "$my_destfile" "$my_old_macro_regex"` func_serial_update_check \ "$my_srcfile" "$my_src_serial" "$my_destfile" "$my_dest_serial" - my_serial_update_p=$func_serial_update_check_result + my_serial_update_p="$func_serial_update_check_result" fi if $my_serial_update_p || $opt_force; then - $RM "$my_destfile" - func_copy "$my_filename" "$my_srcdir" "$my_destdir" "$my_msg_var" + func_copy "$my_srcfile" "$my_destfile" "$my_msg_var" my_return_status=$? elif $opt_force && test "X$my_dest_serial" = "X$my_src_serial"; then - func_whisper_hdr "$my_msg_var" "\`$my_destfile' is already up to date." + $opt_quiet || func_echo_once "$my_msg_var" + $opt_quiet \ + || func_echo "\`$my_destfile' is already up to date." fi # Do this after the copy for hand maintained `aclocal.m4', incase # it has `m4_include([DESTFILE])', so the copy effectively already # updated `aclocal.m4'. my_included_files=`func_included_files aclocal.m4` - case `echo " "$my_included_files" "` in + case `echo " $my_included_files " | $NL2SP` in # Skip included files: *" $my_destfile "*) ;; @@ -578,8 +842,8 @@ func_serial_update () func_serial_max \ "$my_src_serial" `func_serial aclocal.m4 "$my_macro_regex"` if test "X$my_src_serial" = "X$func_serial_max_result"; then - func_whisper_hdr "$my_msg_var" \ - "You should add the contents of \`$my_destfile' to \`aclocal.m4'." + func_echo_once "$my_msg_var" + func_echo "You should add the contents of \`$my_destfile' to \`aclocal.m4'." fi fi ;; @@ -595,16 +859,15 @@ func_serial_update () # `--force' at the command line. func_keyword_update () { - $debug_cmd - - my_filename=$1 - my_srcdir=$2 - my_destdir=$3 - my_sed_script=$4 - my_msg_var=$5 + $opt_debug + my_filename="$1" + my_srcdir="$2" + my_destdir="$3" + my_sed_script="$4" + my_msg_var="$5" - my_srcfile=$my_srcdir/$my_filename - my_destfile=$my_destdir/$my_filename + my_srcfile="$my_srcdir/$my_filename" + my_destfile="$my_destdir/$my_filename" my_keyword_update_p=: @@ -622,14 +885,14 @@ func_keyword_update () func_serial_update_check \ "$my_srcfile" "$my_src_serial" "$my_destfile" "$my_dest_serial" - my_keyword_update_p=$func_serial_update_check_result + my_keyword_update_p="$func_serial_update_check_result" fi if $my_keyword_update_p || $opt_force; then - $RM "$my_destfile" - func_copy "$my_filename" "$my_srcdir" "$my_destdir" "$my_msg_var" + func_copy "$my_srcfile" "$my_destfile" "$my_msg_var" elif $opt_verbose || $opt_force && test "X$my_dest_serial" = "X$my_src_serial"; then - func_whisper_hdr "$my_msg_var" "\`$my_destfile' is already up to date." + func_echo_once "$my_msg_var" + func_echo "\`$my_destfile' is already up to date." fi } @@ -640,11 +903,10 @@ func_keyword_update () # specified `--force' at the command line. func_ltmain_update () { - $debug_cmd - + $opt_debug my_sed_ltmain=' /^package_revision='\''*[0-9][1-9.]*'\''*/ { - s|^package_revision='\''*\([0-9.]*\)'\''*[ ]*$|\1| + s,^package_revision='\''*\([0-9.]*\)'\''*[ ]*$,\1, p } d' @@ -661,12 +923,11 @@ func_ltmain_update () # specified `--force' at the command line. func_config_update () { - $debug_cmd - + $opt_debug my_sed_config=' /^timestamp='\''*[0-9][1-9-]*'\''*/ { - s|^timestamp='\''*\([0-9-]*\)'\''*|\1| - s|-|.|g + s,^timestamp='\''*\([0-9-]*\)'\''*,\1, + s/-/./g p } d' @@ -683,13 +944,12 @@ func_config_update () # specified `--force' at the command line. func_install_update () { - $debug_cmd - + $opt_debug my_sed_install=' /^scriptversion='\''*[0-9][1-9.-]*'\''*/ { - s|[#;].*|| - s|^scriptversion='\''*\([0-9.-]*\)'\''*|\1| - s|-|.|g + s,[#;].*,, + s,^scriptversion='\''*\([0-9.-]*\)'\''*,\1, + s/-/./g p } d' @@ -700,1035 +960,481 @@ func_install_update () } -# func_install_pkgmacro_files -# Install copies of the libtool and libltdl m4 macros into this package. -func_install_pkgmacro_files () +# func_massage_aclocal_DATA [glob_exclude] +# @aclocal_DATA\@ is substituted as per its value in Makefile.am; +# this function massages it into a suitable format for func_copy_some_files. +func_massage_aclocal_DATA () { - $debug_cmd - - $require_ac_macro_dir - $require_am_macro_dir - $require_ltdl_mode - $require_macro_dir + $opt_debug + pkgmacro_files= # GLOBAL VAR - $opt_ltdl || test -n "$ac_macro_dir$am_macro_dir" || return + my_glob_exclude="$1" - # Remove any lingering files that my have been installed by some - # previous libtoolize release: - $opt_force && for file in $all_pkgmacro_files; do - test -f "$macro_dir/$file" && func_verbose "rm -f '$macro_dir/$file'" - rm -f "$macro_dir/$file" - done + # Massage a value for pkgmacro_files from the value used in Makefile.am. + for my_filename in @aclocal_DATA@; do + func_dirname_and_basename "$my_filename" + my_filename=$func_basename_result - # Install the libltdl autoconf macros to this project's source tree. - $opt_quiet || if test -n "$ac_macro_dir"; then - my_pkgmacro_header="putting macros in AC_CONFIG_MACRO_DIR, \`$ac_macro_dir'." - else - my_pkgmacro_header="putting macros in \`$macro_dir'." - fi + # ignore excluded filenames + if test -n "$my_glob_exclude"; then + my_cont=false + eval 'case $my_filename in '$my_glob_exclude') my_cont=: ;; esac' + $my_cont && continue + fi - for file in $pkgmacro_files; do - case $file in - libtool.m4) - func_serial_update "$file" "$aclocaldir" "$macro_dir" \ - my_pkgmacro_header LT_INIT 'A[CM]_PROG_LIBTOOL' - ;; - ltdl.m4) - if $opt_ltdl; then - func_serial_update "$file" "$aclocaldir" "$macro_dir" \ - my_pkgmacro_header 'LTDL_INIT' - else - func_verbose "Not copying \`$macro_dir/$file', libltdl not used." - fi - ;; - ltoptions.m4|ltsugar.m4|ltversion.m4|lt~obsolete.m4) - func_serial_update "$file" "$aclocaldir" "$macro_dir" \ - my_pkgmacro_header "$file" - ;; - *) - if $opt_ltdl; then - func_serial_update "$file" "$aclocaldir" "$macro_dir" \ - my_pkgmacro_header "$file" - else - func_verbose "Not copying \`$macro_dir/$file', libltdl not used." - fi - ;; - esac + pkgmacro_files="$pkgmacro_files:$my_filename" done + + # strip spurious leading `:' + pkgmacro_files=`$ECHO "$pkgmacro_files" | $SED 's,^:*,,'` } -# func_install_pkgltdl_files -# Install copies of the libltdl files into this package. Any auxiliary -# or m4 macro files needed in the libltdl tree will also be copied by -# func_install_pkgaux_files and func_install_pkgmacro_files resp. -func_install_pkgltdl_files () +# func_install_pkgmacro_subproject +# Unless --quiet was passed, display a message. Then copy pkgmacro_files +# from libtool installation tree to subproject libltdl tree. +func_install_pkgmacro_subproject () { - $debug_cmd - - $opt_ltdl || return - - $require_ac_ltdl_dir - $require_ltdl_dir - $require_ltdl_mode + $opt_debug # Remove any lingering files that my have been installed by some # previous libtoolize release: - $opt_force && for file in $all_pkgltdl_files; do - test -f "$ltdl_dir/$file" && func_verbose "rm -f '$ltdl_dir/$file'" - rm -f "$ltdl_dir/$file" + $opt_force && for file in $all_pkgmacro_files; do + test -f "$subproject_macrodir/$file" && func_verbose "rm -f '$subproject_macrodir/$file'" + rm -f "$subproject_macrodir/$file" done # Copy all the files from installed libltdl to this project, if the - # user specified `--ltdl'. - $opt_quiet || if test -n "$ac_ltdl_dir"; then - pkgltdl_header="putting libltdl files in LT_CONFIG_LTDL_DIR, \`$ac_ltdl_dir'." - else - pkgltdl_header="putting libltdl files in \`$ltdl_dir'." + # user specified a macrodir. + $opt_quiet || if test "x$macrodir" != "x$subproject_macrodir"; then + pkgmacro_header="putting macros in \`$subproject_macrodir'." + elif test -n "$subproject_macrodir"; then + pkgmacro_header="putting macros in AC_CONFIG_MACRO_DIR, \`$subproject_macrodir'." fi - $require_Makefile_am_filter - $require_Makefile_inc_filter - - # Copy ltdl sources appropriate to the requested ltdl_mode. - for file in $pkgltdl_files; do - my_copy_filter= - case $file in - Makefile.am|Makefile.in) - test nonrecursive = "$ltdl_mode" && continue - my_copy_filter=$Makefile_am_filter - ;; - - ltdl.mk) - test nonrecursive = "$ltdl_mode" || continue - my_copy_filter=$Makefile_inc_filter - ;; - - aclocal.m4) - test subproject = "$ltdl_mode" && { - $require_aclocal_m4_filter - - # Always copy aclocal.m4, otherwise regenerating it can - # overwrite the destination if it is symlinked. - ( opt_copy=: - func_copy "$file" "$pkgltdldir" "$ltdl_dir" \ - pkgltdl_header "$aclocal_m4_filter" - ) - } - continue - ;; - - config-h.in) - test subproject = "$ltdl_mode" || continue - ;; - - configure) - test subproject = "$ltdl_mode" && { - $require_configure_ac_filter - - # Always copy configure, otherwise regenerating it can - # overwrite the destination if it is symlinked. - ( opt_copy=: - func_copy "$file" "$pkgltdldir" "$ltdl_dir" \ - pkgltdl_header "$configure_ac_filter" - ) - } - continue - ;; - - configure.ac) - test subproject = "$ltdl_mode" || continue - $require_configure_ac_filter - my_copy_filter=$configure_ac_filter - ;; - esac - - # Still here? Copy the file then, with selected filters. - func_copy "$file" "$pkgltdldir" "$ltdl_dir" \ - pkgltdl_header "$my_copy_filter" - - # FIXME: Remove in 2013 - # (along with deprecation warning in func_check_macros) - test ltdl.mk = "$file" \ - && func_grep "^-\?include $ltdl_dir/Makefile.inc\$" Makefile.am \ - && mv "$ltdl_dir/$file" "$ltdl_dir/Makefile.inc" \ - && func_whisper "renaming file \`$ltdl_dir/Makefile.inc'" - done + func_copy_some_files "argz.m4:libtool.m4:ltdl.m4:$pkgmacro_files" \ + "$aclocaldir" "$subproject_macrodir" pkgmacro_header } -# func_install_pkgaux_files -# Install copies of the auxiliary files into this package according to -# the whether libltdl is included as a subproject, and whether the parent -# shares the AC_CONFIG_AUX_DIR setting. -func_install_pkgaux_files () +# func_install_pkgmacro_parent +# Unless --quiet was passed, or AC_CONFIG_MACRO_DIR was not seen, display +# a message. Then update appropriate macros if newer ones are available +# from the libtool installation tree. +func_install_pkgmacro_parent () { - $debug_cmd - - $require_ac_aux_dir - $require_aux_dir - $require_configure_ac - $require_ltdl_mode + $opt_debug # Remove any lingering files that my have been installed by some # previous libtoolize release: - $opt_force && for file in $all_pkgaux_files; do - test -f "$aux_dir/$file" && func_verbose "rm -f '$aux_dir/$file'" - rm -f "$aux_dir/$file" + $opt_force && for file in $all_pkgmacro_files; do + test -f "$macrodir/$file" && func_verbose "rm -f '$macrodir/$file'" + rm -f "$macrodir/$file" done - if test -n "$ac_aux_dir"; then - pkgaux_header="putting auxiliary files in AC_CONFIG_AUX_DIR, \`$ac_aux_dir'." + # Copy all the files from installed libltdl to this project, if the + # user specified a macrodir. + $opt_quiet || if test -n "$ac_macrodir"; then + my_pkgmacro_header="putting macros in AC_CONFIG_MACRO_DIR, \`$ac_macrodir'." + elif test -n "$macrodir"; then + my_pkgmacro_header="putting macros in \`$macrodir'." + fi + + if $opt_ltdl; then + func_serial_update argz.m4 "$aclocaldir" "$macrodir" \ + my_pkgmacro_header argz.m4 else - pkgaux_header="putting auxiliary files in \`$aux_dir'." + func_verbose "Not copying \`$macrodir/argz.m4', libltdl not used." fi - for file in $pkgaux_files; do - case $file in - config.guess|config.sub) - $opt_install || test subproject = "$ltdl_mode" || continue - func_config_update "$file" "$pkgauxdir" "$aux_dir" pkgaux_header - ;; - install-sh) - $opt_install || test subproject = "$ltdl_mode" || continue - func_install_update "$file" "$pkgauxdir" "$aux_dir" pkgaux_header - ;; - ltmain.sh) - func_ltmain_update "$file" "$pkgauxdir" "$aux_dir" pkgaux_header - ;; - *) - test subproject = "$ltdl_mode" || continue - func_copy "$file" "$pkgauxdir" "$aux_dir" pkgaux_header - ;; - esac - done + func_serial_update libtool.m4 "$aclocaldir" "$macrodir" \ + my_pkgmacro_header LT_INIT 'A[CM]_PROG_LIBTOOL' - # If the parent project is using Autoconf and linking with Libtool, - # even if subproject libltdl already has a copy, the parent project - # will still need to build libtool for its own purposes, and might - # need another copy of ltmain.sh if the parent didn't declare an - # AC_CONFIG_AUX_DIR. - pkgaux_hdr="putting another copy of auxiliary files in \`.'" - test -f "$configure_ac" \ - && test -z "$ac_aux_dir" \ - && test subproject = "$ltdl_mode" \ - && test "$aux_dir" = "$ltdl_dir" \ - && func_ltmain_update "$file" "$pkgauxdir" . pkgaux_hdr - - # FIXME: Remove in 2013. - # Very old parent projects using `libtoolize --install --ltdl', and - # a top-level $configure_ac to build the ltdl subproject, but not - # using Automake themselves, might still be relying on the old - # behaviour of libtoolize to put a second copy of some `Auxiliary - # Programs' needed by the top-level configure (instead of using - # the recommended method: `automake --add-missing'). - test -f "$configure_ac" \ - && test subproject = "$ltdl_mode" \ - && test "$aux_dir" = "$ltdl_dir" \ - && func_config_update config.guess "$pkgauxdir" . pkgaux_hdr \ - && func_config_update config.sub "$pkgauxdir" . pkgaux_hdr \ - && func_install_update install-sh "$pkgauxdir" . pkgaux_hdr + if $opt_ltdl; then + func_serial_update ltdl.m4 "$aclocaldir" "$macrodir" \ + my_pkgmacro_header 'LTDL_INIT' + else + func_verbose "Not copying \`$macrodir/ltdl.m4', libltdl not used." + fi + + my_save_IFS="$IFS" + IFS=: + for file in $pkgmacro_files; do + IFS="$my_save_IFS" + func_serial_update "$file" "$aclocaldir" "$macrodir" \ + my_pkgmacro_header "$file" + done + IFS="$my_save_IFS" } -# func_nonemptydir_p dirvar -# DIRVAR is the name of a variable to evaluate. Unless DIRVAR names -# a directory that exists and is non-empty abort with a diagnostic. -func_nonemptydir_p () +# func_install_pkgmacro_files +# Install copies of the libtool and libltdl m4 macros into this package. +func_install_pkgmacro_files () { - $debug_cmd + $opt_debug - my_dirvar=$1 - my_dir=`eval echo "\\\$$my_dirvar"` + # argz.m4, libtool.m4 and ltdl.m4 are handled specially: + func_massage_aclocal_DATA 'argz.m4|libtool.m4|ltdl.m4' - # Is it a directory at all? - test -d "$my_dir" \ - || func_fatal_error "\$$my_dirvar is not a directory: \`$my_dir'" + # 1. Parent has separate macrodir to subproject ltdl: + if $opt_ltdl && test "x$ltdl_mode" = "xsubproject" && + test -n "$macrodir" && test "x$macrodir" != "x$subproject_macrodir" + then + func_install_pkgmacro_parent + func_install_pkgmacro_subproject - # check that the directories contents can be ls'ed - test -n "`{ cd $my_dir && ls; } 2>/dev/null`" \ - || func_fatal_error "cannot list files: \`$my_dir'" + # 2. Parent shares macrodir with subproject ltdl: + elif $opt_ltdl && test "x$ltdl_mode" = "xsubproject" + # && test "x$macrodir" = "x$subproject_macrodir" + then + func_install_pkgmacro_subproject + + # 3. Not a subproject, but macrodir was specified in parent: + elif test -n "$macrodir"; then + func_install_pkgmacro_parent + + # 4. AC_CONFIG_MACRO_DIR was not specified: + else + func_verbose "AC_CONFIG_MACRO_DIR not defined, not copying libtool macros." + fi } -# func_check_macros -# Sanity check macros from aclocal.m4 against installed versions. -func_check_macros () +# func_massage_pkgltdl_files [glob_exclude] +# @pkgltdl_files\@ is substituted as per its value in Makefile.am; this +# function massages it into a suitable format for func_copy_some_files. +func_massage_pkgltdl_files () { - $debug_cmd - - $require_ac_ltdl_dir - $require_ac_macro_dir - $require_am_macro_dir - $require_aux_dir - $require_configure_ac - $require_ltdl_dir - $require_ltdl_mode - $require_macro_dir - $require_seen_ltdl - $require_seen_libtool + $opt_debug + pkgltdl_files= # GLOBAL VAR - $opt_quiet && return - test -n "$configure_ac" || return + my_glob_exclude="$1" - ac_config_macro_dir_advised=false + # Massage a value for pkgltdl_files from the value used in Makefile.am + for my_filename in @pkgltdl_files@; do - if test -z "$ac_macro_dir$am_macro_dir"; then - my_missing= - for file in $pkgmacro_files; do - case $file in - argz.m4|ltdl.m4) $opt_ltdl || continue ;; - esac - if test -f "aclocal.m4"; then - func_aclocal_update_check $file - $func_aclocal_update_check_result || continue - fi - my_missing="$my_missing $file" - done + # Strip surplus leading 'libltdl/': + my_filename=`expr "X$my_filename" : 'Xlibltdl/\(.*\)'` - if test -n "$my_missing"; then - func_echo "You should add the contents of the following files to \`aclocal.m4':" - for need in $my_missing; do - func_echo " \`$aclocaldir/$need'" - done + # ignore excluded filenames + if test -n "$my_glob_exclude"; then + my_cont=false + eval 'case $my_filename in '$my_glob_exclude') my_cont=: ;; esac' + $my_cont && continue fi - fi - ## ---------------------------------------------------------- ## - ## Since we return early here when --no-warn was given: ## - ## DO NOT PUT ANYTHING BUT UPGRADE ADVICE MESSAGES BELOW HERE ## - ## ---------------------------------------------------------- ## - - $opt_warning || return - - $seen_libtool || - func_echo "Remember to add \`LT_INIT' to $configure_ac." - - # Suggest using LTDL_INIT if appropriate: - $opt_ltdl && if test : != "$seen_ltdl"; then - case $ltdl_mode in - subproject) ltdl_init_args= ;; - *) ltdl_init_args="([$ltdl_mode])" ;; + # ignore duplicates + case :$pkgltdl_files: in + *:$my_filename:*) ;; + *) pkgltdl_files="$pkgltdl_files:$my_filename" ;; esac - func_echo "Remember to add \`LTDL_INIT$ltdl_init_args' to $configure_ac." - fi - - if $opt_ltdl; then - # Remind the user to call LT_CONFIG_LTDL_DIR: - test -n "$ac_ltdl_dir" || - func_echo "Remember to add \`LT_CONFIG_LTDL_DIR([$ltdl_dir])' to \`$configure_ac'." - - # For nonrecursive mode, warn about continued use of Makefile.inc: - # FIXME: Remove in 2013 - # (along with last minute rename in func_install_pkgltdl_files) - if test nonrecursive = "$ltdl_mode"; then - if func_grep "^-\?include $ltdl_dir/Makefile.inc\$" Makefile.am; - then - func_error "Use of \`include $ltdl_dir/Makefile.inc' is deprecated!" - func_echo "Consider updating to use of \`include $ltdl_dir/ltdl.mk' in Makefile.am." - fi - fi - fi - - # Suggest modern idioms for storing autoconf macros: - $ac_config_macro_dir_advised || if test -z "$ac_macro_dir" || test . = "$macro_dir"; then - func_echo "Consider adding \`AC_CONFIG_MACRO_DIR([m4])' to $configure_ac and" - func_echo "rerunning $progname, to keep the correct libtool macros in-tree." - ac_config_macro_dir_advised=: - - elif test -z "$ac_macro_dir"; then - func_echo "Consider adding \`AC_CONFIG_MACRO_DIR([$macro_dir])' to $configure_ac," - func_echo "and rerunning $progname and aclocal." - ac_config_macro_dir_advised=: - fi - - if test -z "$am_macro_dir$ac_macro_dir"; then - func_echo "Consider adding \`-I m4' to ACLOCAL_AMFLAGS in Makefile.am." - - elif test -z "$am_macro_dir"; then - func_echo "Consider adding \`-I $macro_dir' to ACLOCAL_AMFLAGS in Makefile.am." - fi - - # Don't trace for this, we're just checking the user didn't invoke it - # directly from configure.ac. - $SED 's|dnl .*$||; s|# .*$||' "$configure_ac" | grep AC_PROG_RANLIB >/dev/null && - func_echo "\`AC_PROG_RANLIB' is rendered obsolete by \`LT_INIT'" + done - # FIXME: Ensure ltmain.sh, libtool.m4 and ltdl.m4 are from the same release + # strip spurious leading `:' + pkgltdl_files=`$ECHO "$pkgltdl_files" | $SED 's,^:*,,'` } - -## ------------------## -## Helper functions. ## -## ------------------## - -# This section contains the helper functions used by the rest of -# this script. - - -# func_autoconf_configure MAYBE-CONFIGURE-FILE -# ------------------------------------------ -# Ensure that MAYBE-CONFIGURE-FILE is the name of a file in the current -# directory which contains an uncommented call to AC_INIT. -func_autoconf_configure () +# func_install_pkgltdl_files +# Install copies of the libltdl files into this package. Any auxiliary +# or m4 macro files needed in the libltdl tree will also be copied by +# func_install_pkgconfig_files and func_install_pkgmacro_files resp. +func_install_pkgltdl_files () { - $debug_cmd - - _G_sed_no_comment='s|#.*$||; s|^dnl .*$||; s| dnl .*$||;' - _G_ac_init= - - # If we were passed a genuine file, make sure it calls AC_INIT. - test -f "$1" \ - && _G_ac_init=`$SED "$_G_sed_no_comment" "$1" |grep AC_INIT` - - # Otherwise it is not a genuine Autoconf input file. - test -n "$_G_ac_init" - _G_status=$? - - test 0 -ne $_G_status \ - && func_verbose "\`$1' not using Autoconf" - - (exit $_G_status) -} + $opt_debug + $opt_ltdl || return + # Remove any lingering files that my have been installed by some + # previous libtoolize release: + $opt_force && for file in $all_pkgltdl_files; do + test -f "$ltdldir/$file" && func_verbose "rm -f '$ltdldir/$file'" + rm -f "$ltdldir/$file" + done -## -------------------- ## -## Resource management. ## -## -------------------- ## + # Copy all the files from installed libltdl to this project, if the + # user specified `--ltdl'. + $opt_quiet || if test -n "$ac_ltdldir"; then + pkgltdl_header="putting libltdl files in LT_CONFIG_LTDL_DIR, \`$ac_ltdldir'." + elif test -n "$ltdldir"; then + pkgltdl_header="putting libltdl files in \`$ltdldir'." + fi -# This section contains definitions for functions that each ensure a -# particular resource (a file, or a non-empty configuration variable for -# example) is available, and if appropriate to extract default values -# from pertinent package files. Where a variable already has a non- -# empty value (as set by the package's `bootstrap.conf'), that value is -# used in preference to deriving the default. Call them using their -# associated `require_*' variable to ensure that they are executed, at -# most, once. -# -# Some of the require functions are very similar, so we generate those -# as this file is sourced. They look complicated, but they are the same -# as normal function declarations wrapped in "eval '<definition>'", so -# that embedded single quotes need to be escaped, and wherever a symbol -# is generated, we drop out of the single quotes and expand a variable -# that holds the symbol. -# -# After that, the rest appear in asciibetical order. - -for base in aux_dir macro_dir; do - - # require_ltdl_relative_aux_dir - # require_ltdl_relative_macro_dir - # ------------------------------- - # Set ltdl_relative_aux_dir to the relative path from $ltdl_dir to - # the parent project auxiliary directory, and similarly for relative - # macro directory. - r=ltdl_relative_$base # _r_esource acquired by calling this function - v=require_$r # _v_ariable pointing to the function - f=func_$v # _f_unction name - eval $v'='$f' - '$f' () - { - $debug_cmd - - $require_ltdl_dir - $require_'$base' - - func_relative_path "$ltdl_dir" "$'$base'" - '$r'=$func_relative_path_result - - test -n "$'$r'" && func_verbose "'$r'='\'\$$r\''" - - '$v'=: - }' - # Some of these functions need to acquire the resource managed by the - # lexically preceding function; $o serves that purpose. - o=$r - -done - -for base in '' ltdl_; do - if test ltdl_ = "$base"; then p='$pkgltdldir/'; else p=; fi - - # require_Makefile_am - # require_ltdl_Makefile_am - # ------------------------ - # If not already set, set Makefile_am to `Makefile.am' if that file is - # present in the current directory, and similarly for - # `$pkgltdldir/Makefile.am'. - r=${base}Makefile_am - v=require_$r - f=func_$v - eval $v'='$f' - '$f' () - { - $debug_cmd - - test -n "$'$r'" || '$r'='$p'Makefile.am - - if test -f "$'$r'"; then - func_verbose "found \`$'$r\''" + # These files are handled specially, depending on ltdl_mode: + if test "x$ltdl_mode" = "xsubproject"; then + func_massage_pkgltdl_files 'Makefile.inc' else - '$r'= + func_massage_pkgltdl_files 'Makefile.am|Makefile.in*|aclocal.m4|config*' fi - '$v'=: - }' - o=$r - - - # require_aclocal_amflags - # require_ltdl_aclocal_amflags - # ---------------------------- - # Extract `$aclocal_amflags' from `Makefile.am' if present, and - # similarly for `libltdl/Makefile.am'. - r=${base}aclocal_amflags - v=require_$r - f=func_$v - eval $v'='$f' - '$f' () - { - $debug_cmd - - $require_'$o' - - test -n "$'$o'" && { - _G_sed_extract_aclocal_amflags='\''s|#.*$|| - /^[ ]*ACLOCAL_AMFLAGS[ ]*=/ { - s|^.*=[ ]*\(.*\)|'$r'="\1"| - p - }'\'' - - _G_aclocal_flags_cmd=`$SED -n "$_G_sed_extract_aclocal_amflags" \ - "$'$o'"` - eval "$_G_aclocal_flags_cmd" - - test -n "$'$r'" && func_verbose "'$r'='\$$r\''" - } - - '$v'=: - }' - o=$r - - - # require_am_macro_dir - # require_ltdl_am_macro_dir - # ------------------------- - # Set am_macro_dir to the first directory specified in - # ACLOCAL_AMFLAGS from `Makefile.am', and similarly for - # 'libltdl/Makefile.am'. - r=${base}am_macro_dir - v=require_$r - f=func_$v - eval $v'='$f' - '$f' () - { - $debug_cmd - - $require_'$o' - - _G_minus_I_seen=false - for _G_arg in $'$o'; do - case $_G_minus_I_seen,$_G_arg in - :,*) '$r'=$_G_arg; break ;; - *,-I) _G_minus_I_seen=: ;; - *,-I*) '$r'=`expr x$_G_opt : '\''x-I\(.*\)$'\''`; break ;; - esac - done - - test -n "$'$r'" && func_verbose "'$r'='\'\$$r\''" - - '$v'=: - }' - o=$r - -done - - -# require_Makefile_am_filter -# -------------------------- -# Set `Makefile_am_filter' ready for passing to func_copy when libltdl's -# stock Makefile.am contents need to be filtered to work in recursive -# mode. -require_Makefile_am_filter=func_require_Makefile_am_filter -func_require_Makefile_am_filter () -{ - $debug_cmd - - $require_ltdl_mode + func_copy_some_files "$pkgltdl_files" \ + "$pkgltdldir/libltdl" "$ltdldir" pkgltdl_header + # For recursive ltdl modes, copy a suitable Makefile.{am,inc}: case $ltdl_mode in recursive) - Makefile_am_filter=' - /^[^#]/{ - s|(LIBOBJS)|(ltdl_LIBOBJS)|g - s|(LTLIBOBJS)|(ltdl_LTLIBOBJS)|g - }' + func_fixup_Makefile "Makefile.am" "$pkgltdldir/libltdl" "$ltdldir" ;; - - subproject) - $require_ltdl_ac_aux_dir - $require_ltdl_am_macro_dir - $require_ltdl_relative_aux_dir - $require_ltdl_relative_macro_dir - - test "$ltdl_am_macro_dir" = "$ltdl_relative_macro_dir" || { - my_am_macro_dir_regex=`$ECHO "\ -$ltdl_am_macro_dir" |$SED "$sed_make_literal_regex"` - - Makefile_am_filter=" - /^ACLOCAL_AMFLAGS = /{ - s| -I $my_am_macro_dir_regex\$| -I $ltdl_relative_macro_dir| - } - s|dir)/$my_am_macro_dir_regex|dir)/$ltdl_relative_macro_dir|g" - } - - test "$ltdl_ac_aux_dir" = "$ltdl_relative_aux_dir" || { - my_aux_dir_regex=`$ECHO "\ -$ltdl_ac_aux_dir" |$SED "$sed_make_literal_regex"` - - Makefile_am_filter="$Makefile_am_filter - s|$my_aux_dir_regex|$ltdl_relative_aux_dir|g - s|/\./|/|g - " - } + nonrecursive) + func_fixup_Makefile "Makefile.inc" "$pkgltdldir/libltdl" "$ltdldir" ;; esac - - require_Makefile_am_filter=: } -# require_Makefile_inc_filter -# --------------------------- -# Set `Makefile_inc_filter' ready for passing to func_copy in order for -# the contents of Makefile.inc to match the nonrecursive libltdl -# directory into which it is copied. -require_Makefile_inc_filter=func_require_Makefile_inc_filter -func_require_Makefile_inc_filter () +# func_massage_pkgconfig_files [glob_exclude] +# @pkgconfig_files\@ is substituted as per its value in Makefile.am; this +# function massages it into a suitable format for func_copy_some_files. +func_massage_pkgconfig_files () { - $debug_cmd - - $require_ltdl_dir - - # Note that we strip comments right here, rather than rely on - # using a $SED that allows comments. - my_uscore=`$ECHO "$ltdl_dir" | $SED 's|[/.+-]|_|g'` - Makefile_inc_filter=`$ECHO ' - /^[^#]/{ - - # Use only libltdl conditional objects. - s|(LIBOBJS)|(ltdl_LIBOBJS)|g - s|(LTLIBOBJS)|(ltdl_LTLIBOBJS)|g - - # Convert libltdl path and variable sections to $ltdl_dir. - s|libltdl_|@my_uscore@_| - s|libltdl/|@ltdl_dir@/| - s|: libltdl/|: @ltdl_dir@/| - s| -Ilibltdl | -I@ltdl_dir@ | - s|\$(libltdl_|\$(@my_uscore@_| - s|)/libltdl |)/@ltdl_dir@ | - s|@my_uscore@|'"$my_uscore"'|g - s|@ltdl_dir@|'"$ltdl_dir"'|g - - }' | $SED '/^[ ]*#/d;/^$/d'` - - require_Makefile_inc_filter=: -} - + $opt_debug + pkgconfig_files= # GLOBAL VAR -# require_ac_aux_dir -# ------------------ -# Extract ac_aux_dir from AC_CONFIG_AUX_DIR. -require_ac_aux_dir=func_require_ac_aux_dir -func_require_ac_aux_dir () -{ - $debug_cmd + my_glob_exclude="$1" - $require_configure_ac + # Massage a value for pkgconfig_files from the value used in Makefile.am + for my_filename in @pkgconfig_files@; do - test -n "$configure_ac" && { - func_extract_trace AC_CONFIG_AUX_DIR - ac_aux_dir=$func_extract_trace_result + # ignore excluded filenames + if test -n "$my_glob_exclude"; then + my_cont=false + eval 'case $my_filename in '$my_glob_exclude') my_cont=: ;; esac' + $my_cont && continue + fi - case $ac_aux_dir in - *\$*) - func_fatal_error "\ -cannot expand unknown variable in AC_CONFIG_AUX_DIR argument." - ;; + # ignore duplicates + case :$pkgconfig_files: in + *:$my_filename:*) ;; + *) pkgconfig_files="$pkgconfig_files:$my_filename" ;; esac - } - - test -n "$ac_aux_dir" && func_verbose "ac_aux_dir='$ac_aux_dir'" + done - require_ac_aux_dir=: + # strip spurious leading `:' + pkgconfig_files=`$ECHO "$pkgconfig_files" | $SED 's,^:*,,'` } -# require_ac_ltdl_dir -# ------------------- -# Extract ac_ltdl_dir from LT_CONFIG_LTDL_DIR. -require_ac_ltdl_dir=func_require_ac_ltdl_dir -func_require_ac_ltdl_dir () +# func_install_pkgconfig_subproject +# Unless --quiet was passed, display a message. Then copy pkgconfig_files +# from libtool installation tree to subproject libltdl tree. +func_install_pkgconfig_subproject () { - $debug_cmd - - $require_configure_ac + $opt_debug - if test -n "$configure_ac"; then - func_extract_trace LT_CONFIG_LTDL_DIR - ac_ltdl_dir=`expr "$func_extract_trace_result" : '\([^:]*\)'` + # Remove any lingering files that my have been installed by some + # previous libtoolize release: + $opt_force && for file in $all_pkgconfig_files; do + test -f "$subproject_auxdir/$file" && func_verbose "rm -f '$subproject_auxdir/$file'" + rm -f "$subproject_auxdir/$file" + done - case $ac_ltdl_dir in - *\$*) - func_fatal_error "\ -cannot expand unknown variable in LT_CONFIG_LTDL_DIR argument." - ;; - esac + # Copy all the files from installed libltdl to this project, if the + # user specified an auxdir. + $opt_quiet || if test "x$ac_auxdir" = "x$subproject_auxdir"; then + pkgconfig_header="putting auxiliary files in AC_CONFIG_AUX_DIR, \`$subproject_auxdir'." + elif test -n "$auxdir"; then + pkgconfig_header="putting auxiliary files in \`$auxdir'." fi - # Strip trailing slashes. - ac_ltdl_dir=`echo "$ac_ltdl_dir" |$SED 's|/*$||'` - - require_ac_ltdl_dir=: -} - - -# require_ac_ltdl_mode -# -------------------- -# Extract mode name from LTDL_INIT options. -require_ac_ltdl_mode=func_require_ac_ltdl_mode -func_require_ac_ltdl_mode () -{ - $debug_cmd - - $require_ac_ltdl_options - - case " $ac_ltdl_options " in - *" nonrecursive "*) ac_ltdl_mode=nonrecursive ;; - *" recursive "*) ac_ltdl_mode=recursive ;; - *" subproject "*) ac_ltdl_mode=subproject ;; - esac - - require_ac_ltdl_mode=: + func_copy_some_files "$pkgconfig_files" \ + "$pkgdatadir" "$ltdldir" pkgconfig_header } -# require_ac_ltdl_options -# ----------------------- -# Extract ac_ltdl_options from LTDL_INIT. -require_ac_ltdl_options=func_require_ac_ltdl_options -func_require_ac_ltdl_options () +# func_install_pkgconfig_parent +# Unless --quiet was passed, or AC_CONFIG_AUX_DIR was not seen, display a +# message. Then update appropriate auxiliary files if newer ones are +# available from the libtool installation tree. +func_install_pkgconfig_parent () { - $debug_cmd - - $require_configure_ac + $opt_debug - if test -n "$configure_ac"; then - func_extract_trace LTDL_INIT - ac_ltdl_options=$func_extract_trace_result + # Remove any lingering files that my have been installed by some + # previous libtoolize release: + $opt_force && for file in $all_pkgconfig_files; do + test -f "$auxdir/$file" && func_verbose "rm -f '$auxdir/$file'" + rm -f "$auxdir/$file" + done - case $ac_ltdl_options in - *\$*) - func_fatal_error "\ -cannot expand unknown variable in LTDL_INIT argument." - ;; - esac + if test -n "$ac_auxdir"; then + pkgconfig_header="putting auxiliary files in AC_CONFIG_AUX_DIR, \`$ac_auxdir'." + elif test -n "$auxdir" || test "x$ltdldir" = "x."; then + pkgconfig_header="putting auxiliary files in \`$auxdir'." fi - require_ac_ltdl_mode=: -} - - -# require_ac_macro_dir -# -------------------- -# Extract ac_macro_dir from AC_CONFIG_MACRO_DIR. -require_ac_macro_dir=func_require_ac_macro_dir -func_require_ac_macro_dir () -{ - $debug_cmd - - $require_configure_ac - - if test -n "$configure_ac"; then - func_extract_trace AC_CONFIG_MACRO_DIR - ac_macro_dir=$func_extract_trace_result + if $opt_install; then + func_config_update config.guess \ + "$pkgdatadir/config" "$auxdir" pkgconfig_header + func_config_update config.sub \ + "$pkgdatadir/config" "$auxdir" pkgconfig_header + func_install_update install-sh \ + "$pkgdatadir/config" "$auxdir" pkgconfig_header fi - - require_ac_macro_dir=: + func_ltmain_update ltmain.sh \ + "$pkgdatadir/config" "$auxdir" pkgconfig_header } -# require_aclocal_m4_filter -# ------------------------- -# Set `aclocal_m4_filter' ready for passing to func_copy when libltdl's -# stock aclocal.m4 contents need to be filtered to work in recursive -# mode. -require_aclocal_m4_filter=func_require_aclocal_m4_filter -func_require_aclocal_m4_filter () -{ - $debug_cmd - - $require_ltdl_am_macro_dir - $require_ltdl_relative_macro_dir - - test "$ltdl_am_macro_dir" = "$ltdl_relative_macro_dir" || { - my_am_macro_dir_regex=`$ECHO "\ -$ltdl_am_macro_dir" |$SED "$sed_make_literal_regex"` - - # Tricky [m] quoting to stop m4sh processing from flagging an - # undefined macro. - aclocal_m4_filter=" - /^[m]4_include(/{ - s|$my_am_macro_dir_regex|$ltdl_relative_macro_dir|g - }" - } - - require_aclocal_m4_filter=: -} - - -# require_aux_dir -# --------------- -# Set aux_dir according to AC_CONFIG_AUX_DIR or else use the same -# heuristics as Autoconf to intuit an appropriate setting. -require_aux_dir=func_require_aux_dir -func_require_aux_dir () +# func_install_pkgconfig_files +# Install copies of the auxiliary files into this package according to +# the whether libltdl is included as a subproject, and whether the parent +# shares the AC_CONFIG_AUX_DIR setting. +func_install_pkgconfig_files () { - $debug_cmd - - $require_ac_aux_dir - - test -z "$aux_dir" && aux_dir=$ac_aux_dir - - # Subproject ltdl without $configure_ac keeps pkgauxfiles in - # specified --ltdl optarg directory. - test -z "$aux_dir" && $opt_ltdl && { - $require_configure_ac - - test -n "$configure_ac" || { - $require_ltdl_dir - $require_ltdl_mode - - test subproject = "$ltdl_mode" && aux_dir=$ltdl_dir - } - } - - test -z "$aux_dir" && { - # Try to intuit aux_dir using the same heuristic as Autoconf. - for _G_dir in . .. ../..; do - if test -f "$_G_dir/install-sh" || test -f "$_G_dir/install.sh" - then - aux_dir=$_G_dir - break - fi - done - } - - # Use the current directory if all else fails. - test -z "$aux_dir" && aux_dir=. - - require_aux_dir=: -} + $opt_debug + func_massage_pkgconfig_files + # 1. Parent shares auxdir with subproject ltdl: + if $opt_ltdl && test "x$ltdl_mode" = "xsubproject" && + test "x$ac_auxdir" = "x$subproject_auxdir" + then + func_install_pkgconfig_subproject -# require_configure_ac -# -------------------- -# Ensure that there is a `configure.ac' or `configure.in' file in this -# directory, and that `$configure_ac' contains its name. -require_configure_ac=func_require_configure_ac -func_require_configure_ac () -{ - $debug_cmd + # 2. Parent has separate auxdir to subproject ltdl: + elif $opt_ltdl && test "x$ltdl_mode" = "xsubproject" + # && test "x$auxdir" != "x$subproject_auxdir" is implied + then + if $seen_autoconf; then + func_install_pkgconfig_parent + fi + func_install_pkgconfig_subproject - test -z "$configure_ac" \ - && func_autoconf_configure configure.ac && configure_ac=configure.ac - test -z "$configure_ac" \ - && func_autoconf_configure configure.in && configure_ac=configure.in - test -z "$configure_ac" \ - || func_verbose "found \`$configure_ac'" + # 3. Not subproject, but AC_CONFIG_AUX_DIR was used in parent: + elif test -n "$ac_auxdir" || test "x$auxdir" = "x."; then + func_install_pkgconfig_parent - require_configure_ac=: + # 4. AC_CONFIG_AUX_DIR was not specified: + else + func_verbose "AC_CONFIG_AUX_DIR not defined, not copying libtool auxiliary files." + fi } -# require_configure_ac_filter -# --------------------------- -# Set `configure_ac_filter' ready for passing to func_copy when -# libltdl's stock configure.ac contents need to be filtered to work in -# subproject mode. -require_configure_ac_filter=func_require_configure_ac_filter -func_require_configure_ac_filter () +# func_nonemptydir_p dirvar +# DIRVAR is the name of a variable to evaluate. Unless DIRVAR names +# a directory that exists and is non-empty abort with a diagnostic. +func_nonemptydir_p () { - $debug_cmd - - $require_ltdl_ac_aux_dir - $require_ltdl_relative_aux_dir - - test "$ltdl_ac_aux_dir" = "$ltdl_relative_aux_dir" || { - my_aux_dir_regex=`$ECHO "\ -$ltdl_ac_aux_dir" |$SED "$sed_make_literal_regex"` + $opt_debug + my_dirvar="$1" + my_dir=`eval echo "\\\$$my_dirvar"` - configure_ac_filter=" - s|$my_aux_dir_regex|$ltdl_relative_aux_dir|g - " - } + # Is it a directory at all? + test -d "$my_dir" \ + || func_fatal_error "\$$my_dirvar is not a directory: \`$my_dir'" - require_configure_ac_filter=: + # check that the directories contents can be ls'ed + test -n "`{ cd $my_dir && ls; } 2>/dev/null`" \ + || func_fatal_error "can not list files: \`$my_dir'" } -# require_ltdl_ac_aux_dir -# ----------------------- -# This needs to work in subproject mode, when GNU M4 may not be -# available and hence extract-trace can't be used. But since we -# installed libltdl/configure.ac, then we already know what value -# we used. -require_ltdl_ac_aux_dir=func_require_ltdl_ac_aux_dir -func_require_ltdl_ac_aux_dir () +# func_check_macros +# Sanity check macros from aclocal.m4 against installed versions. +func_check_macros () { - $debug_cmd - - ltdl_ac_aux_dir="@ltdl_ac_aux_dir@" - func_verbose "ltdl_ac_aux_dir='$ltdl_ac_aux_dir'" + $opt_debug + $opt_quiet && return + $seen_autoconf || return - require_ltdl_ac_aux_dir=: -} + ac_config_macro_dir_advised=false + if test -n "$ac_macrodir$ltdldir" && test -z "$macrodir"; then + my_ac_config_macro_srcdir="$aclocaldir" + if $opt_ltdl && test "$macrodir" != "$subproject_macrodir"; then + my_ac_config_macro_srcdir="$subproject_macrodir" + fi -# require_ltdl_dir -# ---------------- -# If both are specified, ensure both --ltdl=LTDL_DIR and -# LT_CONFIG_LTDL_DIR agree, and set ltdl_dir to the value of either. -require_ltdl_dir=func_require_ltdl_dir -func_require_ltdl_dir () -{ - $debug_cmd + my_needed="libtool.m4 ltoptions.m4 ltversion.m4 ltsugar.m4 lt~obsolete.m4" + $opt_ltdl && my_needed="$my_needed argz.m4 ltdl.m4" - $require_ac_ltdl_dir + if test -f "aclocal.m4"; then + for need in $my_needed; do + func_aclocal_update_check $need + $func_aclocal_update_check_result && my_missing="$my_missing $need" + done + else + my_missing="$my_needed" + fi - test -z "$ltdl_dir" && ltdl_dir=$ac_ltdl_dir - test -z "$ltdl_dir" && $opt_ltdl && ltdl_dir=libltdl + if test -n "$my_missing"; then + func_echo "You should add the contents of the following files to \`aclocal.m4':" + for need in $my_missing; do + func_echo " \`$my_ac_config_macro_srcdir/$need'" + done - if test -n "$ac_ltdl_dir"; then - test "$ac_ltdl_dir" = "$ltdl_dir" || func_fatal_error "\ ---ltdl='$ltdl_dir' does not match LT_CONFIG_LTDL_DIR($ac_ltdl_dir)" + if test "$my_ac_config_macro_srcdir" != "$aclocaldir"; then + func_echo "or else add \`AC_CONFIG_MACRO_DIR([$subproject_macrodir])' to $configure_ac." + ac_config_macro_dir_advised=: + fi + fi fi - require_ltdl_dir=: -} - - -# require_ltdl_mode -# ----------------- -# If both are specified, ensure both command line setting and LTDL_INIT -# option agree, and set ltdl_mode to the value of either. -require_ltdl_mode=func_require_ltdl_mode -func_require_ltdl_mode () -{ - $debug_cmd - - $require_ac_ltdl_mode + ## ---------------------------------------------------------- ## + ## Since we return early here when --no-warn was given: ## + ## DO NOT PUT ANYTHING BUT UPGRADE ADVICE MESSAGES BELOW HERE ## + ## ---------------------------------------------------------- ## - test -z "$ltdl_mode" && ltdl_mode=$ac_ltdl_mode - test -z "$ltdl_mode" && { - $require_ltdl_dir + $opt_warning || return - test -n "$ltdl_dir" && ltdl_mode=subproject - } + $seen_libtool || + func_echo "Remember to add \`LT_INIT' to $configure_ac." - if test -n "$ac_ltdl_mode"; then - test "$ac_ltdl_mode" = "$ltdl_mode" || func_fatal_error "\ ---$ltdl_mode does not match LTDL_INIT($ac_ltdl_mode)" + # Suggest using LTDL_INIT if appropriate: + $opt_ltdl && if test x$seen_ltdl != x:; then + case $ltdl_mode in + subproject) ltdl_init_args="" ;; + *) ltdl_init_args="([$ltdl_mode])" ;; + esac + func_echo "Remember to add \`LTDL_INIT$ltdl_init_args' to $configure_ac." fi - func_verbose "ltdl mode='$ltdl_mode'" - - require_ltdl_mode=: -} - - -# require_macro_dir -# ----------------- -# If both are specified, ensure both ACLOCAL_AMFLAGS and -# AC_CONFIG_MACRO_DIR agree, and set macro_dir to the value of either. -require_macro_dir=func_require_macro_dir -func_require_macro_dir () -{ - $debug_cmd - - $require_ac_macro_dir - $require_am_macro_dir - - # AC_CONFIG_MACRO_DIR takes precedence. - macro_dir=$ac_macro_dir - - # Followed by first -I optarg from ACLOCAL_AMFLAGS. - test -z "$macro_dir" && macro_dir=$am_macro_dir - - # Subproject ltdl without either of the above keeps macros in - # specified --ltdl optarg subdirectory. - test -z "$macro_dir" && $opt_ltdl && { - $require_ltdl_dir - $require_ltdl_mode - - test subproject = "$ltdl_mode" && macro_dir=$ltdl_dir/m4 - } - - # Use ./m4 as the last resort. - test -z "$macro_dir" && macro_dir=m4 - - # Diagnose conflicts. - if test -n "$ac_macro_dir" && test -n "$am_macro_dir"; then - test "$ac_macro_dir" = "$am_macro_dir" || func_fatal_error "\ -AC_CONFIG_MACRO_DIR([$ac_macro_dir]) conflicts with ACLOCAL_AMFLAGS=-I $am_macro_dir." + if $opt_ltdl; then + # Remind the user to call LT_CONFIG_LTDL_DIR: + test -n "$ac_ltdldir" || + func_echo "Remember to add \`LT_CONFIG_LTDL_DIR([$ltdldir])' to \`$configure_ac'." + + # For subproject mode, offer some suggestions for avoiding duplicate + # files in a project that uses libltdl: + if test "x$ltdl_mode" = "xsubproject"; then + test "$subproject_auxdir" = "$auxdir" || + func_echo "Consider using \`AC_CONFIG_AUX_DIR([$subproject_auxdir])' in $configure_ac." + $ac_config_macro_dir_advised || test "$subproject_macrodir" = "$macrodir" || + func_echo "Consider using \`AC_CONFIG_MACRO_DIR([$subproject_macrodir])' in $configure_ac." + ac_config_macro_dir_advised=: + fi fi - require_macro_dir=: -} - - -# require_seen_ltdl -# ----------------- -# Determine from contents of $configure_ac whether this project contains -# libltdl. -require_seen_ltdl=func_require_seen_ltdl -func_require_seen_ltdl () -{ - $debug_cmd - - $require_configure_ac + # Suggest modern idioms for storing autoconf macros: + $ac_config_macro_dir_advised || if test -z "$ac_macrodir" || test x"$macrodir" = x.; then + func_echo "Consider adding \`AC_CONFIG_MACRO_DIR([m4])' to $configure_ac and" + func_echo "rerunning $progname, to keep the correct libtool macros in-tree." + ac_config_macro_dir_advised=: - if test -n "$configure_ac"; then - func_extract_trace AC_LIB_LTDL,AC_WITH_LTDL,LT_WITH_LTDL,LTDL_INIT - test -n "$func_extract_trace_result" && seen_ltdl=: + elif test -z "$ac_macrodir$ltdldir"; then + func_echo "Consider adding \`AC_CONFIG_MACRO_DIR([$macrodir])' to $configure_ac," + func_echo "and rerunning $progname and aclocal." + ac_config_macro_dir_advised=: fi - test -n "$seen_ltdl" || seen_ltdl=false - - require_seen_ltdl=: -} - - -# require_seen_libtool -# -------------------- -# Determine from contents of $configure_ac whether this project is using -# Libtool to compile (some of) its objects. -require_seen_libtool=func_require_seen_libtool -func_require_seen_libtool () -{ - $debug_cmd - $require_configure_ac + if test -z "$am_macrodir$macrodir"; then + func_echo "Consider adding \`-I m4' to ACLOCAL_AMFLAGS in Makefile.am." - if test -n "$configure_ac"; then - func_extract_trace AM_PROG_LIBTOOL,AC_PROG_LIBTOOL,LT_INIT - test -n "$func_extract_trace_result" && seen_libtool=: + elif test -z "$am_macrodir"; then + if $opt_ltdl && test "x$ltdl_mode" = "xsubproject" && test "$subproject_macrodir" != "$macrodir"; then + func_echo "Consider adding \`-I $subproject_macrodir' to ACLOCAL_AMFLAGS in Makefile.am." + else + func_echo "Consider adding \`-I $macrodir' to ACLOCAL_AMFLAGS in Makefile.am." + fi fi - test -n "$seen_libtool" || seen_libtool=false - require_seen_libtool=: -} + # Don't trace for this, we're just checking the user didn't invoke it + # directly from configure.ac. + $SED 's,dnl .*$,,; s,# .*$,,' "$configure_ac" | grep AC_PROG_RANLIB >/dev/null && + func_echo "\`AC_PROG_RANLIB' is rendered obsolete by \`LT_INIT'" + # FIXME: Ensure ltmain.sh, libtool.m4 and ltdl.m4 are from the same release +} ## ----------- ## @@ -1741,35 +1447,55 @@ func_require_seen_libtool () # ensure a clean upgrade. # Do not remove config.guess nor config.sub, we don't install them # without --install, and the project may not be using Automake. - all_pkgaux_files="compile install-sh depcomp missing ltmain.sh snippet/_Noreturn.h snippet/arg-nonnull.h snippet/c++defs.h snippet/warn-on-use.h" + all_pkgconfig_files="ltmain.sh" all_pkgmacro_files="argz.m4 libtool.m4 ltdl.m4 ltoptions.m4 ltsugar.m4 ltversion.in ltversion.m4 lt~obsolete.m4" - all_pkgltdl_files="COPYING.LIB Makefile Makefile.in Makefile.inc Makefile.am README acinclude.m4 aclocal.m4 argz_.h argz.c config.h.in config-h.in configure configure.ac configure.in libltdl/lt__alloc.h libltdl/lt__dirent.h libltdl/lt__glibc.h libltdl/lt__private.h libltdl/lt__strl.h libltdl/lt_dlloader.h libltdl/lt_error.h libltdl/lt_system.h libltdl/slist.h loaders/dld_link.c loaders/dlopen.c loaders/dyld.c loaders/load_add_on.c loaders/loadlibrary.c loaders/preopen.c loaders/shl_load.c lt__alloc.c lt__dirent.c lt__strl.c lt_dlloader.c lt_error.c ltdl.c ltdl.h ltdl.mk slist.c" - - # Files installed by func_install_*, some files are missing from these - # lists deliberately because their respective func_install has to handle - # the missing filenames specially. - pkgaux_files="@pkgaux_files@" - pkgltdl_files="@pkgltdl_files@" - pkgmacro_files="@pkgmacro_files@" + all_pkgltdl_files="COPYING.LIB Makefile Makefile.in Makefile.inc Makefile.am README acinclude.m4 aclocal.m4 argz_.h argz.c config.h.in config-h.in configure configure.ac configure.in libltdl/lt__alloc.h libltdl/lt__dirent.h libltdl/lt__glibc.h libltdl/lt__private.h libltdl/lt__strl.h libltdl/lt_dlloader.h libltdl/lt_error.h libltdl/lt_system.h libltdl/slist.h loaders/dld_link.c loaders/dlopen.c loaders/dyld.c loaders/load_add_on.c loaders/loadlibrary.c loaders/preopen.c loaders/shl_load.c lt__alloc.c lt__dirent.c lt__strl.c lt_dlloader.c lt_error.c ltdl.c ltdl.h slist.c" # Locations for important files: - prefix="@prefix@" - datadir="@datadir@" - pkgauxdir="@pkgauxdir@" - pkgltdldir="@pkgdatadir@" - aclocaldir="@aclocaldir@" + prefix=@prefix@ + datadir=@datadir@ + pkgdatadir=@pkgdatadir@ + pkgltdldir=@pkgdatadir@ + aclocaldir=@aclocaldir@ + auxdir= + macrodir= + configure_ac=configure.in + + seen_autoconf=false + seen_libtool=false + seen_ltdl=false + + # test EBCDIC or ASCII + case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + SP2NL='tr \040 \012' + NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + SP2NL='tr \100 \n' + NL2SP='tr \r\n \100\100' + ;; + esac # Allow the user to override the master libtoolize repository: if test -n "$_lt_pkgdatadir"; then - pkgauxdir=$_lt_pkgdatadir/build-aux - pkgltdldir=$_lt_pkgdatadir/libltdl - aclocaldir=$_lt_pkgdatadir/m4 + pkgltdldir="$_lt_pkgdatadir" + pkgdatadir="$_lt_pkgdatadir/libltdl" + aclocaldir="$_lt_pkgdatadir/libltdl/m4" fi - func_nonemptydir_p pkgauxdir func_nonemptydir_p pkgltdldir + func_nonemptydir_p pkgdatadir func_nonemptydir_p aclocaldir - extract_trace=$pkgauxdir/extract-trace + func_scan_files + + case $ltdldir in + .) ltdlprefix= ;; + *) ltdlprefix=$ltdldir/ ;; + esac + subproject_auxdir=${ltdlprefix}config + subproject_macrodir=${ltdlprefix}m4 # :::BE CAREFUL HERE::: # func_check_macros needs to check whether --ltdl was specified when @@ -1777,10 +1503,9 @@ func_require_seen_libtool () # conditions, or that check will be impossible. No need to clutter the # rest of the code with '$opt_ltdl || $seen_ltdl' though, because we CAN # safely set opt_ltdl to true if LTDL_INIT was seen: - $require_seen_ltdl $seen_ltdl && opt_ltdl=: - func_install_pkgaux_files + func_install_pkgconfig_files func_install_pkgmacro_files func_install_pkgltdl_files |