From e35d827cc54d7f9b2aacefcbb295c821edfd4273 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 29 Jul 2024 21:51:44 +0200 Subject: [PATCH 1/4] BUILD: set install_name for libgap on macOS ... but only for the installed version of the library --- Makefile.rules | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Makefile.rules b/Makefile.rules index 8bfd3dba07..a1e3ea5db0 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -448,9 +448,6 @@ else ifneq (,$(findstring darwin,$(host_os))) LINK_SHLIB_FLAGS += -current_version $(LIBGAP_CURRENT_VER) LINK_SHLIB_FLAGS += -Wl,-single_module - # TODO: set install_name, at least for installed version of the lib? - #LINK_SHLIB_FLAGS += -install_name $(libdir)/$(LIBGAP_FULL) - GAP_CPPFLAGS += -DPIC GAP_CFLAGS += -fno-common GAP_CXXFLAGS += -fno-common @@ -516,6 +513,7 @@ build/main.c: src/main.c # build rule for the gap executable used by the `install-bin` target build/gap-install: libgap$(SHLIB_EXT) cnf/GAP-LDFLAGS cnf/GAP-LIBS cnf/GAP-OBJS build/obj/build/main.c.o $(QUIET_LINK)$(LINK) $(GAP_LDFLAGS) build/obj/build/main.c.o $(GAP_LIBS) -L${abs_builddir} -lgap -o $@ + @install_name_tool -change $(LIBGAP_FULL) $(libdir)/$(LIBGAP_FULL) $@ endif @@ -687,6 +685,7 @@ install-libgap: $(LIBGAP_FULL) libgap.pc $(INSTALL) -d -m 0755 $(DESTDIR)$(libdir) $(INSTALL) -m 0644 $(LIBGAP_FULL) $(DESTDIR)$(libdir) ln -sf $(LIBGAP_FULL) $(DESTDIR)$(libdir)/libgap$(SHLIB_EXT) + install_name_tool -id $(libdir)/$(LIBGAP_FULL) $(DESTDIR)$(libdir)/$(LIBGAP_FULL) $(INSTALL) -d -m 0755 $(DESTDIR)$(libdir)/pkgconfig $(INSTALL) -m 0644 libgap.pc $(DESTDIR)$(libdir)/pkgconfig From 983fb2ff4ff96a177073cf091a76b0ca319c92e6 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Tue, 27 Aug 2024 17:21:22 +0100 Subject: [PATCH 2/4] Ensure install_name_tool is only called when targetting macOS --- Makefile.rules | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile.rules b/Makefile.rules index a1e3ea5db0..ced7a6c257 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -464,6 +464,12 @@ else GAP_LDFLAGS += -Wl,--export-dynamic endif +ifneq (,$(findstring darwin,$(host_os))) +INSTALL_NAME_TOOL = install_name_tool +else +INSTALL_NAME_TOOL = @echo > /dev/null +endif + libgap: libgap$(SHLIB_EXT) $(LIBGAP_FULL) .PHONY: libgap @@ -513,7 +519,7 @@ build/main.c: src/main.c # build rule for the gap executable used by the `install-bin` target build/gap-install: libgap$(SHLIB_EXT) cnf/GAP-LDFLAGS cnf/GAP-LIBS cnf/GAP-OBJS build/obj/build/main.c.o $(QUIET_LINK)$(LINK) $(GAP_LDFLAGS) build/obj/build/main.c.o $(GAP_LIBS) -L${abs_builddir} -lgap -o $@ - @install_name_tool -change $(LIBGAP_FULL) $(libdir)/$(LIBGAP_FULL) $@ + $(INSTALL_NAME_TOOL) -change $(LIBGAP_FULL) $(libdir)/$(LIBGAP_FULL) $@ endif @@ -685,7 +691,7 @@ install-libgap: $(LIBGAP_FULL) libgap.pc $(INSTALL) -d -m 0755 $(DESTDIR)$(libdir) $(INSTALL) -m 0644 $(LIBGAP_FULL) $(DESTDIR)$(libdir) ln -sf $(LIBGAP_FULL) $(DESTDIR)$(libdir)/libgap$(SHLIB_EXT) - install_name_tool -id $(libdir)/$(LIBGAP_FULL) $(DESTDIR)$(libdir)/$(LIBGAP_FULL) + $(INSTALL_NAME_TOOL) -id $(libdir)/$(LIBGAP_FULL) $(DESTDIR)$(libdir)/$(LIBGAP_FULL) $(INSTALL) -d -m 0755 $(DESTDIR)$(libdir)/pkgconfig $(INSTALL) -m 0644 libgap.pc $(DESTDIR)$(libdir)/pkgconfig From 51b11747b6cec06f2251618346f252172795f8ce Mon Sep 17 00:00:00 2001 From: Max Horn Date: Tue, 27 Aug 2024 17:22:05 +0100 Subject: [PATCH 3/4] fixup --- Makefile.rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.rules b/Makefile.rules index ced7a6c257..2c86e077c1 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -465,7 +465,7 @@ else endif ifneq (,$(findstring darwin,$(host_os))) -INSTALL_NAME_TOOL = install_name_tool +INSTALL_NAME_TOOL = @install_name_tool else INSTALL_NAME_TOOL = @echo > /dev/null endif From d5e63d39e0c42b63b88ef811b0c13bc3673ec637 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Tue, 27 Aug 2024 18:36:48 +0100 Subject: [PATCH 4/4] Set -headerpad_max_install_names --- Makefile.rules | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.rules b/Makefile.rules index 2c86e077c1..dc90c483c3 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -447,6 +447,7 @@ else ifneq (,$(findstring darwin,$(host_os))) LINK_SHLIB_FLAGS += -compatibility_version $(LIBGAP_COMPAT_VER) LINK_SHLIB_FLAGS += -current_version $(LIBGAP_CURRENT_VER) LINK_SHLIB_FLAGS += -Wl,-single_module + LINK_SHLIB_FLAGS += -headerpad_max_install_names GAP_CPPFLAGS += -DPIC GAP_CFLAGS += -fno-common