[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gnulib-bug
Subject:    gnulib-tool: Fix link errors with a particular set of modules on mingw
From:       Bruno Haible <bruno () clisp ! org>
Date:       2020-05-30 1:26:44
Message-ID: 2548845.afKNszp0b5 () omega
[Download RAW message or body]

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,


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic