From 5f8c84f51ffd6766da4869629cac98cbfc787f89 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Thu, 2 Jan 2025 13:23:24 +0000 Subject: [PATCH 1/5] tests/Makefile.am: do not LDADD libnutclient.la where we (also) use libnutclientstub.la Avoid linker warning: CXXLD cppnit ld: warning: file /export/home/abuild/nut/obj/nut-2.8.2.1775.28/_build/sub/clients/.libs/libnutclient.so: linked to ../clients/.libs/libnutclient.so: attempted multiple inclusion of file Signed-off-by: Jim Klimov --- tests/Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index 48beeac5fd..1b155fd791 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -145,11 +145,11 @@ TESTS += $(TESTS_CXX11) # Note: we only build it, but do not run directly (NIT prepares the sandbox) check_PROGRAMS += cppnit +# NOTE: libnutclientstub includes libnutclient and adds nutclientmem cppunittest_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUNIT_CFLAGS) $(CPPUNIT_CXXFLAGS) $(CPPUNIT_NUT_CXXFLAGS) $(CXXFLAGS) ###cppunittest_CXXFLAGS += -I$(top_srcdir)/include -DTOP_SRCDIR="\"$(top_srcdir)\"" cppunittest_LDFLAGS = $(CPPUNIT_LDFLAGS) $(CPPUNIT_LIBS) -cppunittest_LDADD = $(top_builddir)/clients/libnutclient.la -cppunittest_LDADD += $(top_builddir)/clients/libnutclientstub.la +cppunittest_LDADD = $(top_builddir)/clients/libnutclientstub.la cppunittest_SOURCES = $(CPPUNITTESTSRC) $(CPPUNITTESTERSRC) # Currently nutconf and related codebase causes woes for static analysis @@ -161,7 +161,7 @@ endif WITH_NUTCONF cppnit_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUNIT_CFLAGS) $(CPPUNIT_CXXFLAGS) $(CPPUNIT_NUT_CXXFLAGS) $(CXXFLAGS) cppnit_LDFLAGS = $(CPPUNIT_LDFLAGS) $(CPPUNIT_LIBS) -cppnit_LDADD = $(top_builddir)/clients/libnutclient.la $(top_builddir)/clients/libnutclientstub.la +cppnit_LDADD = $(top_builddir)/clients/libnutclientstub.la cppnit_SOURCES = $(CPPCLIENTTESTSRC) $(CPPUNITTESTERSRC) # Make sure out-of-dir C++ dependencies exist (especially when dev-building From ca1b067015fa92c33e235e56d4d7bad0e5a51854 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Thu, 2 Jan 2025 13:55:52 +0000 Subject: [PATCH 2/5] clients/Makefile.am: do not LDADD libnutclient.la to libnutclientstub.la, we use them both in ultimate test program linking This reverts commit c5b34c765edb4ae9d71079410a334f4cadd13d09 "tests/Makefile.am: do not LDADD libnutclient.la where we (also) use libnutclientstub.la": (on Linux) without the "extra" link we get CXXLD cppunittest /usr/bin/ld: cppunittest-nutclienttest.o: undefined reference to symbol '_ZTIN3nut12NutExceptionE' /usr/bin/ld: /home/runner/work/nut/nut/clients/.libs/libnutclient.so.2: error adding symbols: DSO missing from command line clang: error: linker command failed with exit code 1 (use -v to see invocation) Signed-off-by: Jim Klimov --- clients/Makefile.am | 2 +- tests/Makefile.am | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clients/Makefile.am b/clients/Makefile.am index 1b59ce990f..824404f8a8 100644 --- a/clients/Makefile.am +++ b/clients/Makefile.am @@ -163,7 +163,7 @@ if HAVE_CXX11 # libnutclientstub version information and build libnutclientstub_la_SOURCES = nutclientmem.h nutclientmem.cpp libnutclientstub_la_LDFLAGS = -version-info 1:1:0 -libnutclientstub_la_LIBADD = libnutclient.la +#libnutclientstub_la_LIBADD = libnutclient.la if HAVE_WINDOWS # Many versions of MingW seem to fail to build non-static DLL without this libnutclientstub_la_LDFLAGS += -no-undefined diff --git a/tests/Makefile.am b/tests/Makefile.am index 1b155fd791..48beeac5fd 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -145,11 +145,11 @@ TESTS += $(TESTS_CXX11) # Note: we only build it, but do not run directly (NIT prepares the sandbox) check_PROGRAMS += cppnit -# NOTE: libnutclientstub includes libnutclient and adds nutclientmem cppunittest_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUNIT_CFLAGS) $(CPPUNIT_CXXFLAGS) $(CPPUNIT_NUT_CXXFLAGS) $(CXXFLAGS) ###cppunittest_CXXFLAGS += -I$(top_srcdir)/include -DTOP_SRCDIR="\"$(top_srcdir)\"" cppunittest_LDFLAGS = $(CPPUNIT_LDFLAGS) $(CPPUNIT_LIBS) -cppunittest_LDADD = $(top_builddir)/clients/libnutclientstub.la +cppunittest_LDADD = $(top_builddir)/clients/libnutclient.la +cppunittest_LDADD += $(top_builddir)/clients/libnutclientstub.la cppunittest_SOURCES = $(CPPUNITTESTSRC) $(CPPUNITTESTERSRC) # Currently nutconf and related codebase causes woes for static analysis @@ -161,7 +161,7 @@ endif WITH_NUTCONF cppnit_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUNIT_CFLAGS) $(CPPUNIT_CXXFLAGS) $(CPPUNIT_NUT_CXXFLAGS) $(CXXFLAGS) cppnit_LDFLAGS = $(CPPUNIT_LDFLAGS) $(CPPUNIT_LIBS) -cppnit_LDADD = $(top_builddir)/clients/libnutclientstub.la +cppnit_LDADD = $(top_builddir)/clients/libnutclient.la $(top_builddir)/clients/libnutclientstub.la cppnit_SOURCES = $(CPPCLIENTTESTSRC) $(CPPUNITTESTERSRC) # Make sure out-of-dir C++ dependencies exist (especially when dev-building From 4d9c5bed9fd82eeebd7c28e263fc817309ea16d0 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Fri, 25 Apr 2025 15:01:40 +0200 Subject: [PATCH 3/5] clients/Makefile.am: require that libnutclient.la is built when/before libnutclientstub.la is [#2744] Signed-off-by: Jim Klimov --- clients/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clients/Makefile.am b/clients/Makefile.am index 5906d024ab..fde4d2ae9d 100644 --- a/clients/Makefile.am +++ b/clients/Makefile.am @@ -193,6 +193,8 @@ EXTRA_DIST += nutclient.h nutclient.cpp endif !HAVE_CXX11 if HAVE_CXX11 +# Need main lib built first +libnutclientstub.la: libnutclient.la # libnutclientstub version information and build libnutclientstub_la_SOURCES = nutclientmem.h nutclientmem.cpp libnutclientstub_la_LDFLAGS = -version-info 1:1:0 From b5482ec054883b8969ccf8e6568a4d608fea94b6 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Fri, 25 Apr 2025 15:02:32 +0200 Subject: [PATCH 4/5] tests/Makefile.am, clients/Makefile.am: use only libnutclientstub.la in test programs, have it include libnutclient.la [#2744] Signed-off-by: Jim Klimov --- clients/Makefile.am | 2 +- tests/Makefile.am | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/clients/Makefile.am b/clients/Makefile.am index fde4d2ae9d..34f6b0f500 100644 --- a/clients/Makefile.am +++ b/clients/Makefile.am @@ -198,7 +198,7 @@ libnutclientstub.la: libnutclient.la # libnutclientstub version information and build libnutclientstub_la_SOURCES = nutclientmem.h nutclientmem.cpp libnutclientstub_la_LDFLAGS = -version-info 1:1:0 -#libnutclientstub_la_LIBADD = libnutclient.la +libnutclientstub_la_LIBADD = libnutclient.la if HAVE_WINDOWS # Many versions of MingW seem to fail to build non-static DLL without this libnutclientstub_la_LDFLAGS += -no-undefined diff --git a/tests/Makefile.am b/tests/Makefile.am index 508f081cd6..7be05aaa6f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -152,11 +152,12 @@ TESTS += $(TESTS_CXX11) # Note: we only build it, but do not run directly (NIT prepares the sandbox) check_PROGRAMS += cppnit +# NOTE: libnutclientstub includes libnutclient and adds nutclientmem cppunittest_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUNIT_CFLAGS) $(CPPUNIT_CXXFLAGS) $(CPPUNIT_NUT_CXXFLAGS) $(CXXFLAGS) ###cppunittest_CXXFLAGS += -I$(top_srcdir)/include -DTOP_SRCDIR="\"$(top_srcdir)\"" cppunittest_LDFLAGS = $(CPPUNIT_LDFLAGS) $(CPPUNIT_LIBS) -cppunittest_LDADD = $(top_builddir)/clients/libnutclient.la -cppunittest_LDADD += $(top_builddir)/clients/libnutclientstub.la +cppunittest_LDADD = $(top_builddir)/clients/libnutclientstub.la +#cppunittest_LDADD += $(top_builddir)/clients/libnutclient.la cppunittest_SOURCES = $(CPPUNITTESTSRC) $(CPPUNITTESTERSRC) # Currently nutconf and related codebase causes woes for static analysis @@ -168,7 +169,8 @@ endif WITH_LIBNUTCONF cppnit_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUNIT_CFLAGS) $(CPPUNIT_CXXFLAGS) $(CPPUNIT_NUT_CXXFLAGS) $(CXXFLAGS) cppnit_LDFLAGS = $(CPPUNIT_LDFLAGS) $(CPPUNIT_LIBS) -cppnit_LDADD = $(top_builddir)/clients/libnutclient.la $(top_builddir)/clients/libnutclientstub.la +cppnit_LDADD = $(top_builddir)/clients/libnutclientstub.la +#cppnit_LDADD += $(top_builddir)/clients/libnutclient.la cppnit_SOURCES = $(CPPCLIENTTESTSRC) $(CPPUNITTESTERSRC) # Make sure out-of-dir C++ dependencies exist (especially when dev-building From a9a5cf753ee156d655e2f5349aa955b1120d59cb Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Fri, 25 Apr 2025 15:09:15 +0200 Subject: [PATCH 5/5] Revert "clients/Makefile.am: require that libnutclient.la is built when/before libnutclientstub.la is [#2744]" This reverts commit f7b76b5123199f2bd5c90216325c5e3a09f335c4: added dependency seems to be treated as an empty recipe which blocks the actual build. --- clients/Makefile.am | 2 -- 1 file changed, 2 deletions(-) diff --git a/clients/Makefile.am b/clients/Makefile.am index 34f6b0f500..e9f913c0a0 100644 --- a/clients/Makefile.am +++ b/clients/Makefile.am @@ -193,8 +193,6 @@ EXTRA_DIST += nutclient.h nutclient.cpp endif !HAVE_CXX11 if HAVE_CXX11 -# Need main lib built first -libnutclientstub.la: libnutclient.la # libnutclientstub version information and build libnutclientstub_la_SOURCES = nutclientmem.h nutclientmem.cpp libnutclientstub_la_LDFLAGS = -version-info 1:1:0