diff --git a/Makefile.am b/Makefile.am index efee56afeb576fce061eb5fe05bc4b1fd1c0661a..52902d4775fc211e454c0c2387f6b70af7cc9904 100644 --- a/Makefile.am +++ b/Makefile.am @@ -27,12 +27,14 @@ static_docs = Building Debugging Limitations Quick-Start Capsules # installable items: bin_PROGRAMS = capsule-capture-libs capsule-symbols capsule-version +if ENABLE_SHARED dist_bin_SCRIPTS = data/capsule-init-project lib_LTLIBRARIES = libcapsule.la pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = data/libcapsule.pc data/libcapsule-tools.pc nobase_include_HEADERS = capsule/capsule.h dist_doc_DATA = $(foreach doc,$(static_docs),doc/$(doc).txt) +endif if ENABLE_TOOLS_RPATH # Use -Wl to hide it from libtool @@ -40,6 +42,7 @@ tools_ldflags = -Wl,-rpath,$(enable_tools_rpath) endif if ENABLE_HOST_PREFIX +if ENABLE_SHARED bin_SCRIPTS = data/$(HOST_PREFIX)capsule-mkstublib # Write out a version of capsule-mkstublib with different defaults @@ -52,6 +55,7 @@ data/$(HOST_PREFIX)capsule-mkstublib: data/capsule-mkstublib Makefile echo ': "$${CAPSULE_SYMBOLS_TOOL:="$(bindir)/$(HOST_PREFIX)capsule-symbols"}"';\ sed -e 1d $<; \ ) > $@.tmp; chmod +x $@.tmp; mv $@.tmp $@ +endif install-exec-hook: cd $(DESTDIR)$(bindir) && ln -f capsule-symbols $(HOST_PREFIX)capsule-symbols @@ -65,12 +69,16 @@ uninstall-hook: cd $(DESTDIR)$(bindir) && rm -f $(HOST_PREFIX)capsule-symbols cd $(DESTDIR)$(bindir) && rm -f $(HOST_PREFIX)capsule-version else +if ENABLE_SHARED dist_bin_SCRIPTS += data/capsule-mkstublib endif +endif +if ENABLE_SHARED # Headers to be included by shim libraries nobase_include_HEADERS += capsule/capsule-shim.h \ capsule/_int_dlopen.h +endif noinst_LTLIBRARIES = utils/libutils.la \ utils/libld.la @@ -103,6 +111,7 @@ capsule_version_SOURCES = utils/print-version.c capsule_version_LDADD = utils/libld.la capsule_version_LDFLAGS = $(AM_LDFLAGS) $(tools_ldflags) +if ENABLE_SHARED libcapsule_la_SOURCES = capsule/capsule-dlmopen.c \ capsule/capsule-relocate.c \ capsule/capsule-init.c \ @@ -126,17 +135,13 @@ dist_pkgdata_DATA = data/capsule-shim.mk \ data/shim-README.in \ data/shim-configure.ac.in \ data/shim-target-Makefile.am +endif BUILT_SOURCES = $(top_srcdir)/.version $(top_srcdir)/.version: $(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@ -dist-hook: dist-hook-git-version-gen -.PHONY: dist-hook-git-version-gen -dist-hook-git-version-gen: - $(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version - include $(top_srcdir)/data/disabled.mk # ============================================================================ @@ -144,6 +149,7 @@ include $(top_srcdir)/data/disabled.mk insttestsdir = $(libexecdir)/installed-tests/$(PACKAGE_TARNAME) +if ENABLE_SHARED # /!\ Order is important here: the helper library must come first nobase_insttests_LTLIBRARIES = tests/red/libhelper.la \ tests/green/libhelper.la \ @@ -195,6 +201,7 @@ nobase_dist_insttests_DATA += $(patsubst %,examples/shim/%.excluded,$(g tests/shim/libnotgles.so.1.excluded \ tests/shim/libnotgles.so.1.shared \ tests/shim/libnotgles.so.1.symbols +endif maintainer-update-gl-shims: @if test -z "${GL_SHIMS_SOURCE_MACHINE}"; then \ @@ -214,6 +221,7 @@ maintainer-update-gl-shims: : > $(abs_top_srcdir)/examples/shim/"$$lib.symbols.updated-for"; \ done +if ENABLE_SHARED tests_lib_libnotgl_la_SOURCES = tests/notgl-ref.c \ tests/notgl.h \ tests/notgl-helper.h @@ -288,6 +296,7 @@ tests/shim/%.c: tests/shim/%.excluded tests/shim/%.shared tests/shim/%.symbols d $(srcdir)/tests/shim/$*.excluded \ $(srcdir)/tests/shim/$*.shared \ $@ +endif LOG_DRIVER = env AM_TAP_AWK='$(AWK)' \ $(SHELL) $(top_srcdir)/build-aux/tap-driver.sh @@ -309,6 +318,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 test_extra_programs = tests/notgl-user \ tests/notgl-helper-user \ tests/notgl-dlopener @@ -317,6 +327,7 @@ tests_notgl_helper_user_LDADD = tests/lib/libnotgl.la \ tests/lib/libnotgles.la \ tests/helper/libhelper.la tests_notgl_dlopener_LDADD = -ldl +endif test_extra_scripts = tests/manual/gl.pl test_programs = @@ -328,11 +339,15 @@ tests_utils_t_SOURCES = tests/utils.c tests_utils_t_LDADD = utils/libutils.la $(GLIB_LIBS) test_scripts = tests/capture-libs.pl \ - tests/gl-shim.pl \ - tests/init-project.pl \ - tests/notgl.pl \ tests/symbols.pl \ tests/version.pl + +if ENABLE_SHARED +test_scripts += tests/gl-shim.pl \ + tests/init-project.pl \ + tests/notgl.pl +endif + nobase_insttests_PROGRAMS = $(test_programs) \ $(test_extra_programs) nobase_dist_insttests_SCRIPTS = $(test_scripts) \ @@ -357,6 +372,7 @@ $(testmeta_DATA): tests/%.test: tests/% Makefile echo "Exec=$(insttestsdir)/tests/$*$$maybe_tap"; \ ) > $@.tmp && mv $@.tmp $@ +if ENABLE_SHARED # ============================================================================ # gtk-doc configuration: see /usr/share/doc/gtk-doc-tools/examples/Makefile.am DOC_MODULE = libcapsule @@ -384,9 +400,18 @@ include $(top_srcdir)/documentation.mk # Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=786174 $(DOC_MAIN_SGML_FILE): sgml-build.stamp @true +else +CLEANFILES = +EXTRA_DIST = +endif # These need to come after we include gtk-doc.make, which unconditionally -# defines these variables +# defines these variables and targets +dist-hook: dist-hook-git-version-gen +.PHONY: dist-hook-git-version-gen +dist-hook-git-version-gen: + $(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version + CLEANFILES += $(testmeta_DATA) if ENABLE_HOST_PREFIX CLEANFILES += data/$(HOST_PREFIX)capsule-mkstublib diff --git a/configure.ac b/configure.ac index 0b15fdf4376078d5f8ea1507e82b6c85d2f5762c..daea195e02fec3434b2ce2e717a9556dd588d94d 100644 --- a/configure.ac +++ b/configure.ac @@ -48,6 +48,8 @@ AX_COMPILER_FLAGS([], [], [], [], [ \ -Wno-declaration-after-statement \ ]) +AM_CONDITIONAL([ENABLE_SHARED], [test "x$enable_shared" = 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])