]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
build-sys: autotoolify build of check libraries
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 26 Jan 2012 14:18:23 +0000 (12:18 -0200)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 26 Jan 2012 18:05:05 +0000 (16:05 -0200)
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
testsuite/testsuite.c

index 0ccad6231e27f7c708a8eef67ab8af272cd4021b..242d3e6288ad5e886b7657e7b390a872c5a32458 100644 (file)
@@ -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 \
index 7788b98876bcc102c6f3ba22b91afbc0839a1136..b66427f19231a78160d470dc33eb876fa0b79860 100644 (file)
@@ -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)