From d2c2b8b500bfea8882dea0b6f0b68d8531860ea8 Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Thu, 26 Jan 2012 12:18:23 -0200 Subject: [PATCH] build-sys: autotoolify build of check libraries MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Many thanks to Iván Briano (sachieru@gmail.com) for pointing out this thread in libtool mailing list: http://www.mail-archive.com/libtool@gnu.org/msg09627.html Passing '-rpath /nowhere' in LDFLAGS we are able to create shared libs that are not installed. --- Makefile.am | 36 +++++++++++++----------------------- testsuite/testsuite.c | 8 +++++--- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/Makefile.am b/Makefile.am index 0ccad623..242d3e62 100644 --- a/Makefile.am +++ b/Makefile.am @@ -133,27 +133,20 @@ endif # TESTSUITE # ------------------------------------------------------------------------------ -# libtool will not create a shared library that is not installed. Workaround -# this by creating it by ourselves -CREATE_SHARED_OVERRIDE_LIB = \ - $(AM_V_CCLD)gcc -fPIC $(AM_CPPFLAGS) $(AM_CFLAGS) -shared $^ \ - -o $@ $(AM_LDFLAGS) -ldl +TESTSUITE_OVERRIDE_LIBS = testsuite/uname.la testsuite/path.la \ + testsuite/init_module.la +TESTSUITE_OVERRIDE_LIBS_LDFLAGS = avoid-version -module -shared -export-dynamic \ + -rpath /nowhere -ldl -testsuite/uname.so: testsuite/uname.c - $(CREATE_SHARED_OVERRIDE_LIB) +check_LTLIBRARIES = $(TESTSUITE_OVERRIDE_LIBS) -testsuite/path.so: testsuite/path.c - $(CREATE_SHARED_OVERRIDE_LIB) +testsuite_uname_la_LDFLAGS = $(TESTSUITE_OVERRIDE_LIBS_LDFLAGS) +testsuite_path_la_LDFLAGS = $(TESTSUITE_OVERRIDE_LIBS_LDFLAGS) -testsuite/init_module.so: testsuite/init_module.c $(abs_top_builddir)/libkmod/.libs/libkmod-private.a - $(CREATE_SHARED_OVERRIDE_LIB) - -EXTRA_DIST += testsuite/uname.c testsuite/path.c testsuite/init_module.c -CLEANFILES += testsuite/uname.so testsuite/path.so testsuite/init_module.so - -testsuite/rootfs: - $(AM_V_GEN) tar -C testsuite/ \ - -xJf $(top_srcdir)/testsuite/rootfs.tar.xz +testsuite_init_module_la_LDFLAGS = $(TESTSUITE_OVERRIDE_LIBS_LDFLAGS) +testsuite_init_module_la_SOURCES = testsuite/init_module.c \ + testsuite/stripped_module.h +testsuite_init_module_la_LIBADD = libkmod/libkmod-private.la testsuite-distclean: -rm -rf testsuite/rootfs @@ -165,13 +158,10 @@ TESTSUITE_CPPFLAGS = $(AM_CPPFLAGS) \ -DTESTSUITE_ROOTFS=\"$(abs_top_builddir)/testsuite/rootfs/\" \ -DABS_TOP_BUILDDIR=\"$(abs_top_builddir)\" -check_LTLIBRARIES = testsuite/libtestsuite.la +check_LTLIBRARIES += testsuite/libtestsuite.la testsuite_libtestsuite_la_SOURCES = testsuite/testsuite.c \ testsuite/testsuite.h -testsuite_libtestsuite_la_DEPENDENCIES = testsuite/uname.so \ - testsuite/path.so \ - testsuite/init_module.so \ - testsuite/rootfs +testsuite_libtestsuite_la_DEPENDENCIES = testsuite/rootfs testsuite_libtestsuite_la_CPPFLAGS = $(TESTSUITE_CPPFLAGS) TESTSUITE = testsuite/test-init testsuite/test-testsuite testsuite/test-loaded \ diff --git a/testsuite/testsuite.c b/testsuite/testsuite.c index 7788b988..b66427f1 100644 --- a/testsuite/testsuite.c +++ b/testsuite/testsuite.c @@ -26,13 +26,15 @@ static const struct option options[] = { { NULL, 0, 0, 0 } }; +#define OVERRIDE_LIBDIR ABS_TOP_BUILDDIR "/testsuite/.libs/" + struct _env_config { const char *key; const char *ldpreload; } env_config[_TC_LAST] = { - [TC_UNAME_R] = { S_TC_UNAME_R, ABS_TOP_BUILDDIR "/testsuite/uname.so" }, - [TC_ROOTFS] = { S_TC_ROOTFS, ABS_TOP_BUILDDIR "/testsuite/path.so" }, - [TC_INIT_MODULE_RETCODES] = { S_TC_INIT_MODULE_RETCODES, ABS_TOP_BUILDDIR "/testsuite/init_module.so" }, + [TC_UNAME_R] = { S_TC_UNAME_R, OVERRIDE_LIBDIR "uname.so" }, + [TC_ROOTFS] = { S_TC_ROOTFS, OVERRIDE_LIBDIR "path.so" }, + [TC_INIT_MODULE_RETCODES] = { S_TC_INIT_MODULE_RETCODES, OVERRIDE_LIBDIR "init_module.so" }, }; static void help(void) -- 2.47.2