Module Name: src
Committed By: riastradh
Date: Fri Jun 28 20:45:26 UTC 2024
Modified Files:
src/share/mk: bsd.README bsd.lib.mk
Log Message:
bsd.lib.mk: New variable VERSION_MAP.
This updates LDFLAGS with the right -Wl,--version-script=... argument
as well as DPADD so that changing the version script causes the
library to be rebuilt.
Name chosen to match FreeBSD.
PR lib/58376
To generate a diff of this commit:
cvs rdiff -u -r1.447 -r1.448 src/share/mk/bsd.README
cvs rdiff -u -r1.405 -r1.406 src/share/mk/bsd.lib.mk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/mk/bsd.README
diff -u src/share/mk/bsd.README:1.447 src/share/mk/bsd.README:1.448
--- src/share/mk/bsd.README:1.447 Fri Apr 5 01:16:00 2024
+++ src/share/mk/bsd.README Fri Jun 28 20:45:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.README,v 1.447 2024/04/05 01:16:00 christos Exp $
+# $NetBSD: bsd.README,v 1.448 2024/06/28 20:45:26 riastradh Exp $
# @(#)bsd.README 8.2 (Berkeley) 4/2/94
This is the README file for the make "include" files for the NetBSD
@@ -1013,6 +1013,13 @@ LIB_EXPSYM File listing all symbols expe
During development, you can update the expected symbols
from the actual ones with `make update-symbols'.
+VERSION_MAP Path to an ld version script to use when linking the
+ library. If a relative path, interpreted relative to
+ the object directory; use ${.CURDIR}/foo.map if foo.map
+ is in the source directory. Interpretation of relative
+ path may be changed later to search .PATH like target
+ prerequisites.
+
The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
if it exists, as well as the include file <bsd.man.mk>.
Index: src/share/mk/bsd.lib.mk
diff -u src/share/mk/bsd.lib.mk:1.405 src/share/mk/bsd.lib.mk:1.406
--- src/share/mk/bsd.lib.mk:1.405 Wed May 8 20:38:55 2024
+++ src/share/mk/bsd.lib.mk Fri Jun 28 20:45:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.lib.mk,v 1.405 2024/05/08 20:38:55 riastradh Exp $
+# $NetBSD: bsd.lib.mk,v 1.406 2024/06/28 20:45:26 riastradh Exp $
# @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94
.include <bsd.init.mk>
@@ -612,6 +612,41 @@ LIBDPLIBS+= stdc++ ${.CURDIR}/../../
LIBCC:= ${CC}
.endif
+# VERSION_MAP
+#
+# Path to an ld version script to use when linking the library.
+# If a relative path, interpreted relative to the object
+# directory; use ${.CURDIR}/foo.map if foo.map is in the source
+# directory. Interpretation of relative path may be changed
+# later to search .PATH like target prerequisites.
+#
+# Implemented by adding -Wl,--version-script=${VERSION_MAP} to
+# LDFLAGS.
+#
+.if !empty(VERSION_MAP)
+# It is tempting to use the make :P modifier here so that you can just
+# write
+#
+# VERSION_MAP= foo.map
+#
+# instead of
+#
+# VERSION_MAP= ${.CURDIR}/foo.map
+#
+# but it appears that :P works _only_ with literal names, not with
+# expansions, so while you could write
+#
+# VERSION_MAP= ${foo.map:P}
+#
+# in the makefile, we can't set
+#
+# LDFLAGS+= -Wl,--version-script=${${VERSION_MAP}:P}
+#
+# here.
+DPADD+= ${VERSION_MAP}
+LDFLAGS+= -Wl,--version-script=${VERSION_MAP}
+.endif
+
_LDADD.${_LIB}= ${LDADD} ${LDADD.${_LIB}}
_LDFLAGS.${_LIB}= ${LDFLAGS} ${LDFLAGS.${_LIB}}