Commit 8622767a8abff67877d0989131e64254a9a505bf

Guillem Jover 2023-04-11T00:24:13

build: Use an export symbols file if there is no version script support We generate the symbol list from the version script to avoid repeating ourselves and potentially getting the lists out-of-sync.

diff --git a/src/Makefile.am b/src/Makefile.am
index b892ab8..bc1add6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -66,6 +66,13 @@ if HAVE_LINKER_VERSION_SCRIPT
 libbsd_la_LDFLAGS += \
 	-Wl,--version-script=$(srcdir)/libbsd.map \
 	# EOL
+else
+libbsd_la_LDFLAGS += \
+	-export-symbols libbsd.sym \
+	# EOL
+EXTRA_libbsd_la_DEPENDENCIES += \
+	libbsd.sym \
+	# EOL
 endif
 libbsd_la_SOURCES = \
 	arc4random.c \
@@ -136,10 +143,19 @@ CLEANFILES += \
 	# EOL
 endif
 
+DISTCLEANFILES = \
+	libbsd.sym \
+	# EOL
+
 libbsd_ctor_a_SOURCES = \
 	setproctitle_ctor.c \
 	# EOL
 
+# Generate a simple libtool symbol export list to be used as a fallback if
+# there is no version script support.
+libbsd.sym: libbsd.map
+	$(AM_V_GEN) $(SED) -ne 's/^[[:space:]]\{1,\}\([A-Za-z0-9_]\{1,\}\);/\1/p' libbsd.map > $@
+
 if NEED_TRANSPARENT_LIBMD
 TRANSPARENT_LIBMD_DEPENDS = format.ld