bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnulib-tool: Fix link errors with a particular set of modules on mingw


From: Bruno Haible
Subject: gnulib-tool: Fix link errors with a particular set of modules on mingw
Date: Sat, 30 May 2020 03:26:44 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-177-generic; KDE/5.18.0; x86_64; ; )

A testdir created by this command:

./gnulib-tool --create-testdir --dir=../testdir --single-configure clean-temp 
crypto/gc getaddrinfo getlogin getlogin_r gettimeofday isatty link localename 
opendir physmem poll putenv read readdir relocatable-prog rename rewinddir 
select sethostname socket stat fstat tmpdir tmpfile uname utime write cond lock

produces link errors on mingw, regarding symbols such as rpl_malloc, rpl_strdup,
etc., all found in the generated gllib/libgnu.a.

This patch fixes it.


2020-05-29  Bruno Haible  <bruno@clisp.org>

        gnulib-tool: Fix link errors with a particular set of modules on mingw.
        * gnulib-tool (func_emit_tests_Makefile_am): Add ../lib/libgnu.a to
        LDADD a second time, after the second occurrence of libtests.a.
        * pygnulib/GLEmiter.py (tests_Makefile_am): Likewise.

diff --git a/gnulib-tool b/gnulib-tool
index 01c6745..20a2a3e 100755
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -4165,8 +4165,6 @@ func_emit_tests_Makefile_am ()
   echo "  -I${testsbase_inverse} -I\$(srcdir)/${testsbase_inverse} \\"
   echo "  -I${testsbase_inverse}/${sourcebase-lib} 
-I\$(srcdir)/${testsbase_inverse}/${sourcebase-lib}"
   echo
-  local_ldadd_before=''
-  local_ldadd_after=''
   if $use_libtests; then
     # All test programs need to be linked with libtests.a.
     # It needs to be passed to the linker before ${libname}.${libext}, since
@@ -4176,10 +4174,10 @@ func_emit_tests_Makefile_am ()
     # module whose dependency to 'progname' is voluntarily omitted).
     # The LIBTESTS_LIBDEPS can be passed to the linker once or twice, it does
     # not matter.
-    local_ldadd_before=' libtests.a'
-    local_ldadd_after=' libtests.a $(LIBTESTS_LIBDEPS)'
+    echo "LDADD = libtests.a 
${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext} libtests.a 
${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext} 
\$(LIBTESTS_LIBDEPS)"
+  else
+    echo "LDADD = ${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext}"
   fi
-  echo "LDADD =${local_ldadd_before} 
${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext}${local_ldadd_after}"
   echo
   if $use_libtests; then
     echo "libtests_a_SOURCES ="
diff --git a/pygnulib/GLEmiter.py b/pygnulib/GLEmiter.py
index f0746f8..441d295 100644
--- a/pygnulib/GLEmiter.py
+++ b/pygnulib/GLEmiter.py
@@ -1123,8 +1123,6 @@ AC_DEFUN([%V1%_LIBSOURCES], [
             (testsbase_inverse, sourcebase, testsbase_inverse, sourcebase)
         emit += '\n'
 
-        local_ldadd_before = string()
-        local_ldadd_after = string()
         if libtests:
             # All test programs need to be linked with libtests.a.
             # It needs to be passed to the linker before ${libname}.${libext}, 
since
@@ -1134,11 +1132,12 @@ AC_DEFUN([%V1%_LIBSOURCES], [
             # 'error' module whose dependency to 'progname' is voluntarily 
omitted).
             # The LIBTESTS_LIBDEPS can be passed to the linker once or twice, 
it does
             # not matter.
-            local_ldadd_before = ' libtests.a'
-            local_ldadd_after = ' libtests.a $(LIBTESTS_LIBDEPS)'
-        emit += 'LDADD =%s %s/%s/%s.%s%s\n\n' % \
-            (local_ldadd_before, testsbase_inverse, sourcebase, libname, 
libext,
-             local_ldadd_after)
+            emit += 'LDADD = libtests.a %s/%s/%s.%s libtests.a %s/%s/%s.%s 
$(LIBTESTS_LIBDEPS)\n\n' % \
+                (testsbase_inverse, sourcebase, libname, libext,
+                 testsbase_inverse, sourcebase, libname, libext)
+        else:
+            emit += 'LDADD = %s/%s/%s.%s\n\n' % \
+                (testsbase_inverse, sourcebase, libname, libext)
         if libtests:
             emit += 'libtests_a_SOURCES =\n'
             # Here we use $(LIBOBJS), not @LIBOBJS@. The value is the same. 
However,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]