From 730e9ae62a646756be2d9a49b6ec49d7b9ab88da Mon Sep 17 00:00:00 2001 From: jlam Date: Thu, 31 Oct 2002 22:14:08 +0000 Subject: Copy the x11-links tree into ${BUILDLINK_X11PKG_DIR} (${BUILDLINK_DIR}) if the package uses X11 and merge the BUILDLINK_X11PKG_DIR and BUILDLINK_X11_DIR variables into a single variable: BUILDLINK_X11_DIR. This creates a one-to-one mapping between X11BASE and BUILDLINK_X11_DIR, instead of X11BASE mapping to both BUILDLINK_X11_DIR and to BUILDLINK_X11PKG_DIR. Remove the now unused II and LL parts of the BUILDLINK_TRANSFORM language. Add a new "static" keyword to the mini-language and fix building statically-linked binaries when building with libtool. --- mk/buildlink2/bsd.buildlink2.mk | 57 ++++++++++++++++++++--------------------- mk/buildlink2/gen-transform.sh | 26 +++++-------------- mk/buildlink2/pre-cache | 4 +-- 3 files changed, 37 insertions(+), 50 deletions(-) diff --git a/mk/buildlink2/bsd.buildlink2.mk b/mk/buildlink2/bsd.buildlink2.mk index 5d3e1098ac8..349df6e42b3 100644 --- a/mk/buildlink2/bsd.buildlink2.mk +++ b/mk/buildlink2/bsd.buildlink2.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.buildlink2.mk,v 1.47 2002/10/30 14:07:53 seb Exp $ +# $NetBSD: bsd.buildlink2.mk,v 1.48 2002/10/31 22:14:08 jlam Exp $ # # An example package buildlink2.mk file: # @@ -51,11 +51,11 @@ ECHO_BUILDLINK_MSG?= ${TRUE} BUILDLINK_DIR= ${WRKDIR}/.buildlink -BUILDLINK_X11PKG_DIR= ${BUILDLINK_DIR:H}/.buildlink-x11pkg +BUILDLINK_X11_DIR= ${BUILDLINK_DIR:H}/.buildlink-x11 CONFIGURE_ENV+= BUILDLINK_DIR="${BUILDLINK_DIR}" MAKE_ENV+= BUILDLINK_DIR="${BUILDLINK_DIR}" -CONFIGURE_ENV+= BUILDLINK_X11PKG_DIR="${BUILDLINK_X11PKG_DIR}" -MAKE_ENV+= BUILDLINK_X11PKG_DIR="${BUILDLINK_X11PKG_DIR}" +CONFIGURE_ENV+= BUILDLINK_X11_DIR="${BUILDLINK_X11_DIR}" +MAKE_ENV+= BUILDLINK_X11_DIR="${BUILDLINK_X11_DIR}" _BLNK_CPPFLAGS= -I${LOCALBASE}/include _BLNK_LDFLAGS= -L${LOCALBASE}/lib -Wl,-R${LOCALBASE}/lib _BLNK_OPSYS= ${OPSYS} @@ -69,13 +69,10 @@ CONFIGURE_ENV+= BUILDLINK_UPDATE_CACHE=no USE_X11_LINKS?= YES . if !empty(USE_X11_LINKS:M[nN][oO]) . include "../../mk/x11.buildlink2.mk" -BUILDLINK_X11_DIR= ${BUILDLINK_X11PKG_DIR} . else BUILD_DEPENDS+= x11-links>=0.8:../../pkgtools/x11-links -BUILDLINK_X11_DIR= ${LOCALBASE}/share/x11-links +_BLNK_X11_DIR= ${LOCALBASE}/share/x11-links . endif -CONFIGURE_ENV+= BUILDLINK_X11_DIR="${BUILDLINK_X11_DIR}" -MAKE_ENV+= BUILDLINK_X11_DIR="${BUILDLINK_X11_DIR}" _BLNK_CPPFLAGS+= -I${X11BASE}/include _BLNK_LDFLAGS+= -L${X11BASE}/lib -Wl,-R${X11BASE}/lib .endif @@ -146,6 +143,14 @@ BUILDLINK_PLIST_CMD.${_pkg_}= \ # do-buildlink: buildlink-directories buildlink-directories: + ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${BUILDLINK_DIR} +.if defined(USE_X11) + ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${BUILDLINK_X11_DIR} + ${_PKG_SILENT}${_PKG_DEBUG}${LN} -sf ${BUILDLINK_DIR} ${BUILDLINK_X11_DIR} +. if empty(USE_X11_LINKS:M[nN][oO]) + ${_PKG_SILENT}${_PKG_DEBUG}${CP} -R ${_BLNK_X11_DIR}/* ${BUILDLINK_X11_DIR} +. endif +.endif ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${BUILDLINK_DIR}/include ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${BUILDLINK_DIR}/lib @@ -218,9 +223,7 @@ _BUILDLINK_USE: .USE ${MKDIR} ${BUILDLINK_DIR}; \ case "${BUILDLINK_PREFIX.${.TARGET:S/-buildlink//}}" in \ ${X11BASE}) \ - ${RM} -f ${BUILDLINK_X11PKG_DIR} 2>/dev/null; \ - ${LN} -sf ${BUILDLINK_DIR} ${BUILDLINK_X11PKG_DIR}; \ - buildlink_dir="${BUILDLINK_X11PKG_DIR}"; \ + buildlink_dir="${BUILDLINK_X11_DIR}"; \ ;; \ *) \ buildlink_dir="${BUILDLINK_DIR}"; \ @@ -278,12 +281,10 @@ _BLNK_UNPROTECT= # empty _BLNK_PROTECT_DIRS= # empty _BLNK_UNPROTECT_DIRS= # empty -_BLNK_MANGLE_DIR.BUILDLINK_X11PKG_DIR= _bUiLdLiNk_x11pKg_dIr_ _BLNK_MANGLE_DIR.BUILDLINK_X11_DIR= _bUiLdLiNk_x11_dIr_ _BLNK_MANGLE_DIR.BUILDLINK_DIR= _bUiLdLiNk_dIr_ _BLNK_MANGLE_DIR.ZOULARISBASE= _zOuLaRiSbAsE_ -_BLNK_PROTECT_DIRS+= BUILDLINK_X11PKG_DIR _BLNK_PROTECT_DIRS+= BUILDLINK_X11_DIR _BLNK_PROTECT_DIRS+= BUILDLINK_DIR .if defined(ZOULARISBASE) && (${ZOULARISBASE} != ${LOCALBASE}) @@ -292,7 +293,6 @@ _BLNK_UNPROTECT_DIRS+= ZOULARISBASE .endif _BLNK_UNPROTECT_DIRS+= BUILDLINK_DIR _BLNK_UNPROTECT_DIRS+= BUILDLINK_X11_DIR -_BLNK_UNPROTECT_DIRS+= BUILDLINK_X11PKG_DIR .for _dir_ in ${_BLNK_PROTECT_DIRS} _BLNK_PROTECT+= s:${${_dir_}}:${_BLNK_MANGLE_DIR.${_dir_}} @@ -303,30 +303,30 @@ _BLNK_UNPROTECT+= s:${_BLNK_MANGLE_DIR.${_dir_}}:${${_dir_}} _BLNK_TRANSFORM+= ${_BLNK_PROTECT} # -# Convert direct paths to libraries into "-Ldir -llib" equivalents. +# Convert direct paths to shared libraries into "-Ldir -llib" equivalents. # _BLNK_TRANSFORM+= p:${LOCALBASE} _BLNK_TRANSFORM+= p:${X11BASE} _BLNK_TRANSFORM+= p:/usr/lib # +# Convert direct paths to static libraries in ${LOCALBASE} or ${X11BASE} +# into references into ${BUILDLINK_DIR}. +# +_BLNK_TRANSFORM+= static:${LOCALBASE}:${_BLNK_MANGLE_DIR.BUILDLINK_DIR} +_BLNK_TRANSFORM+= static:${X11BASE}:${_BLNK_MANGLE_DIR.BUILDLINK_X11_DIR} +# # Transform references into ${LOCALBASE} into ${BUILDLINK_DIR}. # _BLNK_TRANSFORM+= ${BUILDLINK_TRANSFORM} _BLNK_TRANSFORM+= I:${LOCALBASE}:${_BLNK_MANGLE_DIR.BUILDLINK_DIR} _BLNK_TRANSFORM+= L:${LOCALBASE}:${_BLNK_MANGLE_DIR.BUILDLINK_DIR} # -# Transform references into ${X11BASE} into ${BUILDLINK_X11PKG_DIR} and -# into ${BUILDLINK_X11_DIR}, but the package doesn't use X11, then just -# remove these references altogether. +# Transform references into ${X11BASE} into ${BUILDLINK_X11_DIR} but if +# the package doesn't use X11, then just remove these references altogether. # .if defined(USE_X11) -. if !empty(USE_X11_LINKS:M[nN][oO]) -_BLNK_TRANSFORM+= I:${X11BASE}:${_BLNK_MANGLE_DIR.BUILDLINK_X11PKG_DIR} -_BLNK_TRANSFORM+= L:${X11BASE}:${_BLNK_MANGLE_DIR.BUILDLINK_X11PKG_DIR} -. else -_BLNK_TRANSFORM+= II:${X11BASE}:${_BLNK_MANGLE_DIR.BUILDLINK_X11PKG_DIR}:${BUILDLINK_X11_DIR} -_BLNK_TRANSFORM+= LL:${X11BASE}:${_BLNK_MANGLE_DIR.BUILDLINK_X11PKG_DIR}:${BUILDLINK_X11_DIR} -. endif +_BLNK_TRANSFORM+= I:${X11BASE}:${_BLNK_MANGLE_DIR.BUILDLINK_X11_DIR} +_BLNK_TRANSFORM+= L:${X11BASE}:${_BLNK_MANGLE_DIR.BUILDLINK_X11_DIR} .else _BLNK_TRANSFORM+= r:${X11BASE} .endif @@ -448,9 +448,9 @@ BUILDLINK_FAKE_LA= \ # Generate wrapper scripts for the compiler tools that sanitize the # argument list by converting references to ${LOCALBASE} and ${X11BASE} -# into references to ${BUILDLINK_DIR}, ${BUILDLINK_X11PKG_DIR}, and -# ${BUILDLINK_X11_DIR}. These wrapper scripts are to be used instead of -# the actual compiler tools when building software. +# into references to ${BUILDLINK_DIR} and ${BUILDLINK_X11_DIR}. These +# wrapper scripts are to be used instead of the actual compiler tools when +# building software. # # BUILDLINK_CC, BUILDLINK_LD, etc. are the full paths to the wrapper # scripts. @@ -709,7 +709,6 @@ ${_BLNK_WRAP_PRE_CACHE}: ${.CURDIR}/../../mk/buildlink2/pre-cache -e "s|@WRKDIR@|${WRKDIR}|g" \ -e "s|@BUILDLINK_DIR@|${BUILDLINK_DIR}|g" \ -e "s|@BUILDLINK_X11_DIR@|${BUILDLINK_X11_DIR}|g" \ - -e "s|@BUILDLINK_X11PKG_DIR@|${BUILDLINK_X11PKG_DIR}|g" \ ${.ALLSRC} > ${.TARGET}.tmp ${_PKG_SILENT}${_PKG_DEBUG}${MV} -f ${.TARGET}.tmp ${.TARGET} diff --git a/mk/buildlink2/gen-transform.sh b/mk/buildlink2/gen-transform.sh index caf248f864c..99a0d10a2ea 100644 --- a/mk/buildlink2/gen-transform.sh +++ b/mk/buildlink2/gen-transform.sh @@ -7,9 +7,7 @@ untransform="@_BLNK_UNTRANSFORM_SEDFILE@" # equivalents: # # I:src:dst translates "-Isrc" into "-Idst" -# II:src:dst1:dst2 translates "-Isrc" into "-Idst1 -Idst2" # L:src:dst translates "-Lsrc" into "-Ldst" -# LL:src:dst1:dst2 translates "-Lsrc" into "-Ldst1 -Ldst2" # l:foo:bar translates "-lfoo" into "-lbar" # p:path translates "/usr/pkg/lib/libfoo.{a,so}" into # "-L/usr/pkg/lib -lfoo" @@ -44,31 +42,22 @@ EOF ;; esac ;; - II|LL) - case "$1" in II) opt=I ;; LL) opt=L ;; esac + l) case "$action" in - transform) - @CAT@ >> $sedfile << EOF -s|-$opt$2[ ]$|-$opt$3 -$opt$4 |g -s|-$opt$2$|-$opt$3 -$opt$4|g -s|-$opt$2\([^ ]*\)|-$opt$3\1 -$opt$4\1|g -EOF - ;; - untransform) + transform|untransform) @CAT@ >> $sedfile << EOF -s|-$opt$3[ ]$|-$opt$2 |g -s|-$opt$4$|-$opt$2|g -s|-$opt$4\([^ ]*\)|-$opt$2\1|g +s|-$1$2[ ]|-$1$3 |g +s|-$1$2$|-$1$3|g EOF ;; esac ;; - l) + static) case "$action" in transform|untransform) @CAT@ >> $sedfile << EOF -s|-$1$2[ ]|-$1$3 |g -s|-$1$2$|-$1$3|g +s|$2\(/[^ ]*/lib[^ /]*\.a\)[ ]|$3\1 |g +s|$2\(/[^ ]*/lib[^ /]*\.a\)$|$3\1|g EOF ;; esac @@ -77,7 +66,6 @@ EOF case "$action" in transform|untransform) @CAT@ >> $sedfile << EOF -s|\($2/[^ ]*\)/lib\([^ /]*\)\.a|-L\1 -l\2|g s|\($2/[^ ]*\)/lib\([^ /]*\)\.so|-L\1 -l\2|g EOF ;; diff --git a/mk/buildlink2/pre-cache b/mk/buildlink2/pre-cache index ba6ee6363bb..9b530ab0174 100644 --- a/mk/buildlink2/pre-cache +++ b/mk/buildlink2/pre-cache @@ -1,7 +1,7 @@ -# $NetBSD: pre-cache,v 1.4 2002/10/30 00:23:00 jlam Exp $ +# $NetBSD: pre-cache,v 1.5 2002/10/31 22:14:09 jlam Exp $ case $arg in --[IL]@WRKDIR@*|-[IL]@BUILDLINK_DIR@*|-[IL]@BUILDLINK_X11PKG_DIR@*) +-[IL]@WRKDIR@*|-[IL]@BUILDLINK_DIR@*|-[IL]@BUILDLINK_X11_DIR@*) ;; -[IL].|-[IL]./..*|-[IL]..*) ;; -- cgit v1.2.3