X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=gnulib-tool;h=f19645191aca5c2be87bb86bb94cb2bcec5da5cf;hb=e8684643a28f1bf6a0839bf6a0c10f630c0f6335;hp=b334e18d13117161b377d4ab12869b35c0f46205;hpb=b857fd90570b0775d9f577c67632e4b2d3581bb1;p=gnulib.git diff --git a/gnulib-tool b/gnulib-tool index b334e18d1..f19645191 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -22,7 +22,7 @@ progname=$0 package=gnulib -cvsdatestamp='$Date: 2006-09-22 12:47:54 $' +cvsdatestamp='$Date: 2006-10-12 12:33:50 $' last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'` version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'` nl=' @@ -40,11 +40,17 @@ AUTOCONFPATH= # You can set AUTOMAKEPATH to empty if automake 1.9.x is already in your PATH. AUTOMAKEPATH= +# You can set GETTEXTPATH to empty if autopoint 0.15 is already in your PATH. +GETTEXTPATH= + # If you didn't set AUTOCONFPATH and AUTOMAKEPATH, you can also set the -# variables AUTOCONF, ACLOCAL, AUTOMAKE, AUTORECONF individually. +# variables AUTOCONF, AUTOHEADER, ACLOCAL, AUTOMAKE, AUTORECONF individually. if test -z "${AUTOCONF}" || test -n "${AUTOCONFPATH}"; then AUTOCONF="${AUTOCONFPATH}autoconf" fi +if test -z "${AUTOHEADER}" || test -n "${AUTOCONFPATH}"; then + AUTOHEADER="${AUTOCONFPATH}autoheader" +fi if test -z "${ACLOCAL}" || test -n "${AUTOMAKEPATH}"; then ACLOCAL="${AUTOMAKEPATH}aclocal" fi @@ -55,6 +61,11 @@ if test -z "${AUTORECONF}" || test -n "${AUTOCONFPATH}"; then AUTORECONF="${AUTOCONFPATH}autoreconf" fi +# If you didn't set GETTEXTPATH, you can also set the variable AUTOPOINT. +if test -z "${AUTOPOINT}" || test -n "${GETTEXTPATH}"; then + AUTOPOINT="${GETTEXTPATH}autopoint" +fi + # GNU sort is needed. Set SORT to its location (not needed if it's called # 'sort' and already in the PATH). if test -z "$SORT"; then @@ -69,7 +80,7 @@ func_usage () Usage: gnulib-tool --list gnulib-tool --import [module1 ... moduleN] gnulib-tool --update - gnulib-tool --create-testdir --dir=directory module1 ... moduleN + gnulib-tool --create-testdir --dir=directory [module1 ... moduleN] gnulib-tool --create-megatestdir --dir=directory [module1 ... moduleN] gnulib-tool --test --dir=directory module1 ... moduleN gnulib-tool --megatest --dir=directory [module1 ... moduleN] @@ -1067,6 +1078,7 @@ func_modules_to_filelist () # - libname library name # - makefile_name from --makefile-name # - libtool true if libtool will be used, false or blank otherwise +# - macro_prefix prefix of gl_LIBOBJS macros to use # - actioncmd (optional) command that will reproduce this invocation func_emit_lib_Makefile_am () { @@ -1086,6 +1098,7 @@ func_emit_lib_Makefile_am () perhapsLT= sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ ]*+=/d' fi + echo "## DO NOT EDIT! GENERATED AUTOMATICALLY!" echo "## Process this file with automake to produce Makefile.in." func_emit_copyright_notice if test -n "$actioncmd"; then @@ -1093,8 +1106,7 @@ func_emit_lib_Makefile_am () fi echo if test -z "$makefile_name"; then - # No need to generate dependencies since the sources are in gnulib, not here. - echo "AUTOMAKE_OPTIONS = 1.5 gnits no-dependencies" + echo "AUTOMAKE_OPTIONS = 1.5 gnits" fi echo ( @@ -1111,6 +1123,7 @@ func_emit_lib_Makefile_am () -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g' if test "$module" = 'alloca'; then echo "${libname}_${libext}_LIBADD += @${perhapsLT}ALLOCA@" + echo "${libname}_${libext}_DEPENDENCIES += @${perhapsLT}ALLOCA@" fi } > amsnippet.tmp # Skip the contents if its entirely empty. @@ -1137,7 +1150,8 @@ func_emit_lib_Makefile_am () echo "${libname}_${libext}_SOURCES =" # Here we use $(LIBOBJS), not @LIBOBJS@. The value is the same. However, # automake during its analyses looks for $(LIBOBJS), not for @LIBOBJS@. - echo "${libname}_${libext}_LIBADD = \$(${perhapsLT}LIBOBJS)" + echo "${libname}_${libext}_LIBADD = \$(${macro_prefix}_${perhapsLT}LIBOBJS)" + echo "${libname}_${libext}_DEPENDENCIES = \$(${macro_prefix}_${perhapsLT}LIBOBJS)" if test "$libtool" = true; then echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)" fi @@ -1200,6 +1214,7 @@ func_emit_tests_Makefile_am () sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ ]*+=/d' fi testsbase_inverse=`echo "$testsbase" | sed -e 's,/$,,' | sed -e 's,[^/][^/]*,..,g'` + echo "## DO NOT EDIT! GENERATED AUTOMATICALLY!" echo "## Process this file with automake to produce Makefile.in." func_emit_copyright_notice echo @@ -1276,6 +1291,56 @@ func_emit_tests_Makefile_am () rm -f allsnippets.tmp } +# func_emit_initmacro_start +# emits the first few statements of the gl_INIT macro to standard output. +# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use +func_emit_initmacro_start () +{ + echo " m4_pushdef([AC_LIBOBJ], m4_defn([${macro_prefix}_LIBOBJ]))" + echo " m4_pushdef([AC_REPLACE_FUNCS], m4_defn([${macro_prefix}_REPLACE_FUNCS]))" +} + +# func_emit_initmacro_end +# emits the last few statements of the gl_INIT macro to standard output. +# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use +func_emit_initmacro_end () +{ + echo " m4_popdef([AC_REPLACE_FUNCS])" + echo " m4_popdef([AC_LIBOBJ])" + echo " AC_CONFIG_COMMANDS_PRE([" + echo " ${macro_prefix}_libobjs=" + echo " ${macro_prefix}_ltlibobjs=" + echo " if test -n \"\$${macro_prefix}_LIBOBJS\"; then" + echo " for i in \$${macro_prefix}_LIBOBJS; do" + echo " # Remove the extension." + echo " sed_drop_objext='s/\\.o\$//;s/\\.obj\$//'" + echo " i=\`echo \"\$i\" | sed \"\$sed_drop_objext\"\`" + echo " ${macro_prefix}_libobjs=\"\$${macro_prefix}_libobjs \$i.\$ac_objext\"" + echo " ${macro_prefix}_ltlibobjs=\"\$${macro_prefix}_ltlibobjs \$i.lo\"" + echo " done" + echo " fi" + echo " AC_SUBST([${macro_prefix}_LIBOBJS], [\$${macro_prefix}_libobjs])" + echo " AC_SUBST([${macro_prefix}_LTLIBOBJS], [\$${macro_prefix}_ltlibobjs])" + echo " ])" +} + +# func_emit_initmacro_done +# emits a few statements after the gl_INIT macro to standard output. +# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use +func_emit_initmacro_done () +{ + echo + echo "# Like AC_LIBOBJ, except that the module name goes" + echo "# into ${macro_prefix}_LIBOBJS instead of into LIBOBJS." + echo "AC_DEFUN([${macro_prefix}_LIBOBJ]," + echo " [${macro_prefix}_LIBOBJS=\"\$${macro_prefix}_LIBOBJS \$1.\$ac_objext\"])" + echo + echo "# Like AC_REPLACE_FUNCS, except that the module name goes" + echo "# into ${macro_prefix}_LIBOBJS instead of into LIBOBJS." + echo "AC_DEFUN([${macro_prefix}_REPLACE_FUNCS]," + echo " [AC_CHECK_FUNCS([\$1], , [${macro_prefix}_LIBOBJ(\$ac_func)])])" +} + # func_import modules # Uses also the variables # - destdir target directory @@ -1691,11 +1756,11 @@ func_import () | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" > "$tmp"/added-files { # Rearrange file descriptors. Needed because "while ... done < ..." # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh. - exec 5<&1 < "$tmp"/added-files + exec 5<&0 < "$tmp"/added-files while read g f; do func_add_or_update done - exec 1<&5 5<&- + exec 0<&5 5<&- } # Then the files that are in new-files and in old-files: already_present=true @@ -1704,11 +1769,11 @@ func_import () | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" > "$tmp"/kept-files { # Rearrange file descriptors. Needed because "while ... done < ..." # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh. - exec 5<&1 < "$tmp"/kept-files + exec 5<&0 < "$tmp"/kept-files while read g f; do func_add_or_update done - exec 1<&5 5<&- + exec 0<&5 5<&- } # Command-line invocation printed in a comment in generated gnulib-cache.m4. @@ -1847,6 +1912,7 @@ func_import () # Create m4/gnulib-comp.m4. func_dest_tmpfilename $m4base/gnulib-comp.m4 ( + echo "# DO NOT EDIT! GENERATED AUTOMATICALLY!" func_emit_copyright_notice echo "#" echo "# This file represents the compiled summary of the specification in" @@ -1861,7 +1927,9 @@ func_import () echo "AC_DEFUN([${macro_prefix}_EARLY]," echo "[" echo " m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace" - echo " m4_pattern_allow([^gl_ES$])dnl a valid locale name" + echo " m4_pattern_allow([^gl_ES\$])dnl a valid locale name" + echo " m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable" + echo " m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable" echo " AC_REQUIRE([AC_PROG_RANLIB])" if grep AC_GNU_SOURCE "$destdir"/$m4base/*.m4 >/dev/null 2>/dev/null; then echo " AC_REQUIRE([AC_GNU_SOURCE])" @@ -1878,6 +1946,7 @@ func_import () echo "# \"Check for header files, types and library functions\"." echo "AC_DEFUN([${macro_prefix}_INIT]," echo "[" + func_emit_initmacro_start if test "$libtool" = true; then echo " AM_CONDITIONAL([GL_COND_LIBTOOL], [true])" echo " gl_cond_libtool=true" @@ -1923,7 +1992,9 @@ func_import () echo " ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\"" echo " AC_SUBST([${libname_upper}_LTLIBDEPS])" fi + func_emit_initmacro_end echo "])" + func_emit_initmacro_done echo echo "# This macro records the list of files which have been installed by" echo "# gnulib-tool and may be removed by future gnulib-tool invocations." @@ -2052,6 +2123,13 @@ func_create_testdir () { testdir="$1" modules="$2" + if test -z "$modules"; then + # All modules together. + # Except config-h, which breaks all modules which use HAVE_CONFIG_H. + # Except fnmatch-posix, which conflicts with fnmatch-gnu. FIXME. + modules=`func_all_modules` + modules=`for m in $modules; do if test $m != config-h && test $m != fnmatch-posix; then echo $m; fi; done` + fi modules=`for m in $modules; do echo $m; done | LC_ALL=C sort -u` # Subdirectory names. @@ -2059,6 +2137,7 @@ func_create_testdir () m4base=glm4 docbase=gldoc testsbase=gltests + macro_prefix=gl # Determine final module list. func_modules_transitive_closure @@ -2099,7 +2178,7 @@ func_create_testdir () > "$tmp"/files { # Rearrange file descriptors. Needed because "while ... done < ..." # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh. - exec 5<&1 < "$tmp"/files + exec 5<&0 < "$tmp"/files while read g f; do func_lookup_file "$f" if test -n "$lookedup_tmp"; then @@ -2113,7 +2192,7 @@ func_create_testdir () fi fi done - exec 1<&5 5<&- + exec 0<&5 5<&- } # Create $sourcebase/Makefile.am. @@ -2136,7 +2215,7 @@ func_create_testdir () subdirs="$sourcebase $m4base" subdirs_with_configure_ac="" - if test -f "$testdir"/$m4base/gettext.m4; then + if false && test -f "$testdir"/$m4base/gettext.m4; then # Avoid stupid error message from automake: # "AM_GNU_GETTEXT used but `po' not in SUBDIRS" mkdir -p "$testdir/po" @@ -2192,6 +2271,7 @@ func_create_testdir () # expansion of the required macro before the current point, and only one # expansion total). echo "AC_DEFUN([gl_INIT], [" + func_emit_initmacro_start if test "$auxdir" != "build-aux"; then sed_replace_build_aux=' :a @@ -2229,7 +2309,10 @@ func_create_testdir () echo " ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\"" echo " AC_SUBST([${libname_upper}_LTLIBDEPS])" fi + func_emit_initmacro_end echo "])" + func_emit_initmacro_done + echo echo "gl_INIT" echo # Usually $testsbase/config.h will be a superset of config.h. Verify this @@ -2267,7 +2350,9 @@ func_create_testdir () echo "AC_PROG_MAKE_SET" echo echo "m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace" - echo "m4_pattern_allow([^gl_ES$])dnl a valid locale name" + echo "m4_pattern_allow([^gl_ES\$])dnl a valid locale name" + echo "m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable" + echo "m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable" echo echo "AC_PROG_RANLIB" echo @@ -2301,6 +2386,7 @@ func_create_testdir () # expansion of the required macro before the current point, and only one # expansion total). echo "AC_DEFUN([gl_INIT], [" + func_emit_initmacro_start if test "$auxdir" != "build-aux"; then sed_replace_build_aux=' :a @@ -2328,7 +2414,10 @@ func_create_testdir () echo " ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\"" echo " AC_SUBST([${libname_upper}_LTLIBDEPS])" fi + func_emit_initmacro_end echo "])" + func_emit_initmacro_done + echo echo "gl_INIT" echo if test -n "$subdirs_with_configure_ac"; then @@ -2348,8 +2437,27 @@ func_create_testdir () # Create autogenerated files. (cd "$testdir" - echo "executing ${AUTORECONF} --force --install" - ${AUTORECONF} --force --install + # Do not use "${AUTORECONF} --force --install", because it may invoke + # autopoint, which brings in older versions of some of our .m4 files. + if test -f $m4base/gettext.m4; then + echo "executing ${AUTOPOINT} --force" + ${AUTOPOINT} --force + for f in $m4base/*.m4~; do + mv $f `echo $f | sed -e 's,~$,,'` + done + fi + echo "executing ${ACLOCAL} --force -I $m4base" + ${ACLOCAL} --force -I $m4base + if ! test -d build-aux; then + echo "executing mkdir build-aux" + mkdir build-aux + fi + echo "executing ${AUTOCONF} --force" + ${AUTOCONF} --force + echo "executing ${AUTOHEADER} --force" + ${AUTOHEADER} --force + echo "executing ${AUTOMAKE} --add-missing --copy --force-missing" + ${AUTOMAKE} --add-missing --copy --force-missing ) if grep '^BUILT_SOURCES *+=' "$testdir/$sourcebase/Makefile.am" > /dev/null; then (cd "$testdir" @@ -2382,8 +2490,9 @@ func_create_megatestdir () func_append megasubdirs "$onemodule " done # Then, all modules all together. + # Except config-h, which breaks all modules which use HAVE_CONFIG_H. # Except fnmatch-posix, which conflicts with fnmatch-gnu. FIXME. - allmodules=`for m in $allmodules; do if test $m != fnmatch-posix; then echo $m; fi; done` + allmodules=`for m in $allmodules; do if test $m != config-h && test $m != fnmatch-posix; then echo $m; fi; done` func_create_testdir "$megatestdir/ALL" "$allmodules" func_append megasubdirs "ALL"