From c9f1dc7a376cc41e086d0bd3b782dd5ea8e71310 Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@collabora.com> Date: Thu, 16 Jan 2020 13:44:40 +0000 Subject: [PATCH] Distinguish between enabling the library and enabling shared libraries Some tests for capsule-capture-libs will need to compile shared libraries, even if libcapsule itself is not built. Signed-off-by: Simon McVittie <smcv@collabora.com> --- Makefile.am | 20 ++++++++++---------- configure.ac | 9 +++++++++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index f08382e3b..c06a93181 100644 --- a/Makefile.am +++ b/Makefile.am @@ -28,7 +28,7 @@ static_docs = Building Debugging Limitations Quick-Start Capsules # installable items: bin_PROGRAMS = capsule-capture-libs capsule-symbols capsule-version -if ENABLE_SHARED +if ENABLE_LIBRARY dist_bin_SCRIPTS = data/capsule-init-project lib_LTLIBRARIES = libcapsule.la pkgconfigdir = $(libdir)/pkgconfig @@ -43,7 +43,7 @@ tools_ldflags = -Wl,-rpath,$(enable_tools_rpath) endif if ENABLE_HOST_PREFIX -if ENABLE_SHARED +if ENABLE_LIBRARY bin_SCRIPTS = data/$(HOST_PREFIX)capsule-mkstublib # Write out a version of capsule-mkstublib with different defaults @@ -72,12 +72,12 @@ uninstall-hook-host-prefix: cd $(DESTDIR)$(bindir) && rm -f $(HOST_PREFIX)capsule-symbols cd $(DESTDIR)$(bindir) && rm -f $(HOST_PREFIX)capsule-version else -if ENABLE_SHARED +if ENABLE_LIBRARY dist_bin_SCRIPTS += data/capsule-mkstublib endif endif -if ENABLE_SHARED +if ENABLE_LIBRARY # Headers to be included by shim libraries nobase_include_HEADERS += capsule/capsule-shim.h \ capsule/_int_dlopen.h @@ -115,7 +115,7 @@ capsule_version_SOURCES = utils/print-version.c utils/tools.c utils/tools.h capsule_version_LDADD = utils/libld.la capsule_version_LDFLAGS = $(AM_LDFLAGS) $(tools_ldflags) -if ENABLE_SHARED +if ENABLE_LIBRARY libcapsule_la_SOURCES = capsule/capsule-dlmopen.c \ capsule/capsule-relocate.c \ capsule/capsule-init.c \ @@ -153,7 +153,7 @@ include $(top_srcdir)/data/disabled.mk insttestsdir = $(libexecdir)/installed-tests/$(PACKAGE_TARNAME) -if ENABLE_SHARED +if ENABLE_LIBRARY # /!\ Order is important here: the helper library must come first nobase_insttests_LTLIBRARIES = tests/red/libhelper.la \ tests/green/libhelper.la \ @@ -256,7 +256,7 @@ maintainer-update-gl-shims: : > $(abs_top_srcdir)/examples/shim/"$$lib.symbols.updated-for"; \ done -if ENABLE_SHARED +if ENABLE_LIBRARY tests_lib_libnotgl_la_SOURCES = tests/notgl-ref.c \ tests/notgl.h \ tests/notgl-helper.h @@ -356,7 +356,7 @@ AM_TESTS_ENVIRONMENT = export CAPSULE_CAPTURE_LIBS_TOOL="$(abs_b export MALLOC_CHECK_=2; \ export NM="$(NM)"; \ export PKG_CONFIG_PATH="$(abs_builddir)/data"; -if ENABLE_SHARED +if ENABLE_LIBRARY test_extra_programs = tests/notgl-user \ tests/notgl-helper-user \ tests/notgl-dlopener @@ -380,7 +380,7 @@ test_scripts = tests/capture-libs.pl \ tests/symbols.pl \ tests/version.pl -if ENABLE_SHARED +if ENABLE_LIBRARY test_scripts += tests/gl-shim.pl \ tests/init-project.pl \ tests/notgl.pl @@ -410,7 +410,7 @@ $(testmeta_DATA): tests/%.test: tests/% Makefile echo "Exec=env CAPSULE_TESTS_GNU_HOST=$(host) $(insttestsdir)/tests/$*$$maybe_tap"; \ ) > $@.tmp && mv $@.tmp $@ -if ENABLE_SHARED +if ENABLE_LIBRARY # ============================================================================ # gtk-doc configuration: see /usr/share/doc/gtk-doc-tools/examples/Makefile.am DOC_MODULE = libcapsule diff --git a/configure.ac b/configure.ac index 5306d60be..c134e3a0c 100644 --- a/configure.ac +++ b/configure.ac @@ -57,6 +57,15 @@ AC_CHECK_FUNCS_ONCE([secure_getenv]) AM_CONDITIONAL([ENABLE_SHARED], [test "x$enable_shared" = xyes]) +AC_ARG_ENABLE([library], + [AS_HELP_STRING([--enable-library], + [build the libcapsule library (disable if you only want CLI tools)])], + [], + [enable_library="$enable_shared"]) +AS_IF([test "x$enable_shared" != xyes && test "x$enable_library" = xyes], + [AC_MSG_ERROR([libcapsule is only useful as a shared library])]) +AM_CONDITIONAL([ENABLE_LIBRARY], [test "x$enable_library" = xyes]) + dnl make sure we've got the _right_ libelf (doesn't always ship a .pc) PKG_CHECK_MODULES([LIBELF], [libelf >= 0.152], [have_libelf=yes], [ AC_MSG_WARN([libelf.pc not found]) -- GitLab