git: 9294a2c7195a - main - ncurses: convert libncursesw.a into a static ldscript
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 10 Oct 2021 05:51:06 UTC
The branch main has been updated by bapt:
URL: https://cgit.FreeBSD.org/src/commit/?id=9294a2c7195ade0055c9d0b2917d929f5b20c035
commit 9294a2c7195ade0055c9d0b2917d929f5b20c035
Author: Baptiste Daroussin <bapt@FreeBSD.org>
AuthorDate: 2021-10-10 05:37:26 +0000
Commit: Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2021-10-10 05:51:00 +0000
ncurses: convert libncursesw.a into a static ldscript
Introduce the notion of static linker scripts to allow libncursesw.a to
track its dependency on libtinfow.a
this allows the build of older freebsd source tree to happen and make
static linking in part with dynamic linking which already provides a
ldscript
This fixes a bootstrapping FreeBSD 12 or 13 on recent FreeBSD 14
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D32435
---
lib/ncurses/ncurses/Makefile | 14 ++++++++++++++
share/mk/bsd.lib.mk | 9 ++++++---
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/lib/ncurses/ncurses/Makefile b/lib/ncurses/ncurses/Makefile
index d2ba1007b54a..5f80def49458 100644
--- a/lib/ncurses/ncurses/Makefile
+++ b/lib/ncurses/ncurses/Makefile
@@ -169,6 +169,11 @@ SYMLINKS+= libncursesw_p.a ${LIBDIR}/libcurses_p.a
LIBADD+= tinfow
SHLIB_LDSCRIPT= libncursesw.ldscript
+STATIC_LDSCRIPT= libncursesw.aldscript
+CLEANFILES+= ${STATIC_LDSCRIPT}
+
+libncursesw.aldscript:
+ @${ECHO} "INPUT(-lncursesw_real -ltinfow)" >$@
libncurses.ldscript:
@${ECHO} "INPUT(${SHLIB_NAME} AS NEEDED(-ltinfow))" >$@
@@ -180,4 +185,13 @@ lib_gen.c: MKlib_gen.sh ${.OBJDIR:H}/tinfo/curses.h ncurses_dll.h
expanded.c: MKexpanded.sh
sh ${NCURSES_DIR}/ncurses/tty/MKexpanded.sh "${CC:N${CCACHE_BIN}} -E" ${CFLAGS} >expanded.c
+all: ${STATIC_LDSCRIPT}
+
+install-aldscript: ${STATIC_LDSCRIPT}
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${_INSTALLFLAGS} ${STATIC_LDSCRIPT} ${DESTDIR}${_LIBDI}/lib${LIB}.a
+
+realinstall: install-aldscript
+
+
.include <bsd.lib.mk>
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index 4afe719b8152..10262e6bb80c 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -271,9 +271,12 @@ CLEANFILES+= ${OBJS} ${BCOBJS} ${LLOBJS} ${STATICOBJS}
.endif
.if defined(LIB) && !empty(LIB)
-_LIBS= lib${LIB_PRIVATE}${LIB}.a
+.if defined(STATIC_LDSCRIPT)
+_STATICLIB_SUFFIX= _real
+.endif
+_LIBS= lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a
-lib${LIB_PRIVATE}${LIB}.a: ${OBJS} ${STATICOBJS}
+lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a: ${OBJS} ${STATICOBJS}
@${ECHO} building static ${LIB} library
@rm -f ${.TARGET}
${AR} ${ARFLAGS} ${.TARGET} ${OBJS} ${STATICOBJS} ${ARADD}
@@ -477,7 +480,7 @@ realinstall: _libinstall installpcfiles
_libinstall:
.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no"
${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}.a ${DESTDIR}${_LIBDIR}/
+ ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a ${DESTDIR}${_LIBDIR}/
.endif
.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \