changeset 7286:727bb5526bad

For libraries not built with libtool: - Fix the _LDFLAGS issue. - Generate _LIBDEPS and _LTLIBDEPS variables.
author Bruno Haible <bruno@clisp.org>
date Sat, 09 Sep 2006 19:02:08 +0000
parents 31b9ea94ad09
children 7a33bd049052
files ChangeLog gnulib-tool modules/gc modules/iconvme modules/striconv
diffstat 5 files changed, 89 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2006-09-09  Bruno Haible  <bruno@clisp.org>
+
+	* gnulib-tool (func_emit_lib_Makefile_am): Eliminate lib_LDFLAGS
+	assignments if building a library without libtool.
+	(func_emit_tests_Makefile_am): Likewise. Handle lib_* variables as
+	in func_emit_lib_Makefile_am.
+	(func_import): When building a static library libfoo.a, arrange to
+	define variables LIBFOO_LIBDEPS and LIBFOO_LTLIBDEPS.
+	(func_create_testdir): Likewise.
+	* modules/gc (configure.ac, Makefile.am): If building statically,
+	augment gl_libdeps and gl_ltlibdeps instead of lib_LDFLAGS.
+	* modules/iconvme (configure.ac, Makefile.am): Likewise.
+	* modules/striconv (configure.ac, Makefile.am): Likewise.
+	Based on a suggestion by Ralf Wildenhues.
+
 2006-09-08  Jim Meyering  <jim@meyering.net>
 
 	Don't make generated files read-only.  That would bother too many
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -22,7 +22,7 @@
 
 progname=$0
 package=gnulib
-cvsdatestamp='$Date: 2006-09-07 13:00:56 $'
+cvsdatestamp='$Date: 2006-09-09 19:02:08 $'
 last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'`
 version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'`
 
@@ -1043,9 +1043,11 @@
   if test "$libtool" = true; then
     libext=la
     perhapsLT=LT
+    sed_eliminate_LDFLAGS=
   else
     libext=a
     perhapsLT=
+    sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ 	]*+=/d'
   fi
   echo "## Process this file with automake to produce Makefile.in."
   func_emit_copyright_notice
@@ -1066,6 +1068,7 @@
           func_get_automake_snippet "$module" |
             sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \
                 -e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' |
+            sed -e "$sed_eliminate_LDFLAGS" |
             sed -e 's,lib_\([A-Z][A-Z]*\),'"${libname}_${libext}"'_\1,g' |
             sed -e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
                 -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g'
@@ -1096,7 +1099,9 @@
   echo
   echo "${libname}_${libext}_SOURCES ="
   echo "${libname}_${libext}_LIBADD = @${perhapsLT}LIBOBJS@"
-  echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)"
+  if test "$libtool" = true; then
+    echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)"
+  fi
   if test -z "$makefile_name"; then
     echo "noinst_HEADERS ="
     # Automake versions < 1.9b create an empty pkgdatadir at installation time
@@ -1148,6 +1153,13 @@
   else
     libext=a
   fi
+  if test "$libtool" = true; then
+    libext=la
+    sed_eliminate_LDFLAGS=
+  else
+    libext=a
+    sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ 	]*+=/d'
+  fi
   testsbase_inverse=`echo "$testsbase" | sed -e 's,/$,,' | sed -e 's,[^/][^/]*,..,g'`
   echo "## Process this file with automake to produce Makefile.in."
   func_emit_copyright_notice
@@ -1161,7 +1173,15 @@
     for module in $modules; do
       func_verify_tests_module
       if test -n "$module"; then
-        func_get_automake_snippet "$module" > amsnippet.tmp
+        {
+          func_get_automake_snippet "$module" |
+            sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \
+                -e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' |
+            sed -e "$sed_eliminate_LDFLAGS" |
+            sed -e 's,lib_\([A-Z][A-Z]*\),'"${libname}_${libext}"'_\1,g' |
+            sed -e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
+                -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g'
+        } > amsnippet.tmp
         # Skip the contents if its entirely empty.
         if grep '[^	 ]' amsnippet.tmp > /dev/null ; then
           echo "## begin gnulib module $module"
@@ -1816,8 +1836,12 @@
     echo "["
     if test "$libtool" = true; then
       echo "  AM_CONDITIONAL([GL_COND_LIBTOOL], [true])"
+      echo "  gl_cond_libtool=true"
     else
       echo "  AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
+      echo "  gl_cond_libtool=false"
+      echo "  gl_libdeps="
+      echo "  gl_ltlibdeps="
     fi
     if test "$auxdir" != "build-aux"; then
       sed_replace_build_aux='
@@ -1845,6 +1869,15 @@
         fi
       fi
     done
+    # _LIBDEPS and _LTLIBDEPS variables are not needed if this library is
+    # created using libtool, because libtool already handles the dependencies.
+    if test "$libtool" != true; then
+      libname_upper=`echo "$libname" | tr 'a-z' 'A-Z'`
+      echo "  ${libname_upper}_LIBDEPS=\"\$gl_libdeps\""
+      echo "  AC_SUBST([${libname_upper}_LIBDEPS])"
+      echo "  ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
+      echo "  AC_SUBST([${libname_upper}_LTLIBDEPS])"
+    fi
     echo "])"
     echo
     echo "# This macro records the list of files which have been installed by"
@@ -2089,8 +2122,12 @@
      fi
      if test "$libtool" = true; then
        echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [true])"
+       echo "gl_cond_libtool=true"
      else
        echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
+       echo "gl_cond_libtool=false"
+       echo "gl_libdeps="
+       echo "gl_ltlibdeps="
      fi
      # Wrap the set of autoconf snippets into an autoconf macro that is then
      # invoked. This is needed because autoconf does not support AC_REQUIRE
@@ -2128,6 +2165,15 @@
            | sed -e "$sed_replace_build_aux"
        fi
      done
+     # _LIBDEPS and _LTLIBDEPS variables are not needed if this library is
+     # created using libtool, because libtool already handles the dependencies.
+     if test "$libtool" != true; then
+       libname_upper=`echo "$libname" | tr 'a-z' 'A-Z'`
+       echo "  ${libname_upper}_LIBDEPS=\"\$gl_libdeps\""
+       echo "  AC_SUBST([${libname_upper}_LIBDEPS])"
+       echo "  ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
+       echo "  AC_SUBST([${libname_upper}_LTLIBDEPS])"
+     fi
      echo "])"
      echo "gl_INIT"
      echo
@@ -2184,8 +2230,12 @@
    fi
    if test "$libtool" = true; then
      echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [true])"
+     echo "gl_cond_libtool=true"
    else
      echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
+     echo "gl_cond_libtool=false"
+     echo "gl_libdeps="
+     echo "gl_ltlibdeps="
    fi
    # Wrap the set of autoconf snippets into an autoconf macro that is then
    # invoked. This is needed because autoconf does not support AC_REQUIRE
@@ -2213,6 +2263,15 @@
          | sed -e "$sed_replace_build_aux"
      fi
    done
+   # _LIBDEPS and _LTLIBDEPS variables are not needed if this library is
+   # created using libtool, because libtool already handles the dependencies.
+   if test "$libtool" != true; then
+     libname_upper=`echo "$libname" | tr 'a-z' 'A-Z'`
+     echo "  ${libname_upper}_LIBDEPS=\"\$gl_libdeps\""
+     echo "  AC_SUBST([${libname_upper}_LIBDEPS])"
+     echo "  ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
+     echo "  AC_SUBST([${libname_upper}_LTLIBDEPS])"
+   fi
    echo "])"
    echo "gl_INIT"
    echo
--- a/modules/gc
+++ b/modules/gc
@@ -12,13 +12,15 @@
 
 configure.ac:
 gl_GC
+if test $gl_cond_libtool = false; then
+  gl_ltlibdeps="$gl_ltlibdeps $LTLIBGCRYPT"
+  gl_libdeps="$gl_libdeps $LIBGCRYPT"
+fi
 
 Makefile.am:
 EXTRA_DIST += gc.h
 if GL_COND_LIBTOOL
 lib_LDFLAGS += $(LTLIBGCRYPT)
-else
-lib_LDFLAGS += $(LIBGCRYPT)
 endif
 
 Include:
--- a/modules/iconvme
+++ b/modules/iconvme
@@ -12,13 +12,15 @@
 
 configure.ac:
 gl_ICONVME
+if test $gl_cond_libtool = false; then
+  gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV"
+  gl_libdeps="$gl_libdeps $LIBICONV"
+fi
 
 Makefile.am:
 lib_SOURCES += iconvme.h iconvme.c
 if GL_COND_LIBTOOL
 lib_LDFLAGS += $(LTLIBICONV)
-else
-lib_LDFLAGS += $(LIBICONV)
 endif
 
 Include:
--- a/modules/striconv
+++ b/modules/striconv
@@ -11,13 +11,15 @@
 c-strcase
 
 configure.ac:
+if test $gl_cond_libtool = false; then
+  gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV"
+  gl_libdeps="$gl_libdeps $LIBICONV"
+fi
 
 Makefile.am:
 lib_SOURCES += striconv.h striconv.c
 if GL_COND_LIBTOOL
 lib_LDFLAGS += $(LTLIBICONV)
-else
-lib_LDFLAGS += $(LIBICONV)
 endif
 
 Include: