Fix: Do not install health tests helper libraries
authorChristian Babeux <christian.babeux@efficios.com>
Tue, 6 Nov 2012 18:32:05 +0000 (13:32 -0500)
committerDavid Goulet <dgoulet@efficios.com>
Tue, 6 Nov 2012 19:41:53 +0000 (14:41 -0500)
The libraries libhealthexit and libhealthstall should not be installed
on the user system. They are only useful for the health check tests.

Furthermore, when adding libraries to noinst_LTLIBRARIES, libtool will
only build these as static libraries (see [1] for a workaround). This is
fine for most use cases, but for the health tests, we _must_ have shared
libraries (the nature of the tests require LD_PRELOAD), hence we force
the build of a shared object.

Forcing shared object has the unfortunate side-effect of breaking builds
where configure was invoked with "--disable-shared" flag.  Instead of
failing badly, detect this flag and skip the health tests altogether.

noinst shared libs:
[1] - https://lists.gnu.org/archive/html/libtool/2008-06/msg00082.html

Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
configure.ac
tests/tools/health/Makefile.am

index 72daf7e0f32c42770bfa2a60fb04c13bd66b527c..a3120fc041568bc37ea919d708fec8c46ab86a74 100644 (file)
@@ -39,6 +39,8 @@ AS_IF([test "x$libtool_fixup" = "xyes"],
                  ])
            ])
 
+AM_CONDITIONAL([NO_SHARED], [test x$enable_shared = xno])
+
 AC_CHECK_HEADERS([ \
        sys/types.h unistd.h fcntl.h string.h pthread.h limits.h \
        signal.h stdlib.h sys/un.h sys/socket.h stdlib.h stdio.h \
index 9fab58234a370f7ed0b6a5c41b53cfa663ae40be..f1a5d915d9350c8506a8a58800ab07dff00bbc28 100644 (file)
@@ -8,23 +8,27 @@ if LTTNG_TOOLS_BUILD_WITH_LIBC_DL
 AM_LDFLAGS += -lc
 endif
 
-UTILS=
-
-lib_LTLIBRARIES=libhealthexit.la libhealthstall.la
+if NO_SHARED
+# Do not build this test if shared libraries support was
+# explicitly disabled.
+else
+# In order to test the health check feature, the libhealth* libs
+# must be built as .so to be able to LD_PRELOAD them.
+FORCE_SHARED_LIB_OPTIONS = -module -shared -avoid-version \
+                          -rpath $(abs_builddir)
 
 # Health thread exit ld_preloaded test lib
 libhealthexit_la_SOURCES=health_exit.c
-libhealthexit_la_LDFLAGS= -module
+libhealthexit_la_LDFLAGS= $(FORCE_SHARED_LIB_OPTIONS)
 
 # Health thread stall ld_preloaded test lib
 libhealthstall_la_SOURCES=health_stall.c
-libhealthstall_la_LDFLAGS= -module
+libhealthstall_la_LDFLAGS= $(FORCE_SHARED_LIB_OPTIONS)
 
 noinst_PROGRAMS = health_check
+noinst_LTLIBRARIES = libhealthexit.la libhealthstall.la
 
 health_check_SOURCES = health_check.c $(UTILS)
 health_check_LDADD = $(top_builddir)/src/lib/lttng-ctl/liblttng-ctl.la \
                     $(top_builddir)/src/common/libcommon.la
-
-noinst_SCRIPTS =
-EXTRA_DIST =
+endif
This page took 0.027232 seconds and 4 git commands to generate.