summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjlam <jlam@pkgsrc.org>2004-03-29 05:21:17 +0000
committerjlam <jlam@pkgsrc.org>2004-03-29 05:21:17 +0000
commitd1b4206bbaf09ec928c6e1b6ec13d31eb700519d (patch)
treee8e8e26b569a402d0978816d1b5de7f17557c363
parent34ac3f0cdf17ba8fb5ca33bcbf7e9dda2492623f (diff)
downloadpkgsrc-d1b4206bbaf09ec928c6e1b6ec13d31eb700519d.tar.gz
Instead of saving all of the buildlink3 variables into the command-line
environment, it creates a Makefile fragment that is included within bsd.buildlink3.mk that contains all of the buildlink3 variable definitions that we want to pass to make(1) invocations on the same package Makefile. Change the make variables that are only relevant for the current package to use BUILDLINK_VARS instead of MAKEFLAGS. This avoids overflowing the command line with lots of extra arguments.
-rw-r--r--mk/buildlink3/bsd.buildlink3.mk34
1 files changed, 30 insertions, 4 deletions
diff --git a/mk/buildlink3/bsd.buildlink3.mk b/mk/buildlink3/bsd.buildlink3.mk
index fd5997cd19c..b5480d04079 100644
--- a/mk/buildlink3/bsd.buildlink3.mk
+++ b/mk/buildlink3/bsd.buildlink3.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.buildlink3.mk,v 1.129 2004/03/28 22:25:35 xtraeme Exp $
+# $NetBSD: bsd.buildlink3.mk,v 1.130 2004/03/29 05:21:17 jlam Exp $
#
# An example package buildlink3.mk file:
#
@@ -53,6 +53,11 @@ BUILDLINK_DIR= ${WRKDIR}/.buildlink
BUILDLINK_X11_DIR= ${BUILDLINK_DIR:H}/.x11-buildlink
BUILDLINK_SHELL?= ${SH}
BUILDLINK_OPSYS?= ${OPSYS}
+_BLNK_VARS_MK= ${BUILDLINK_DIR}/vars.mk
+
+.if exists(${_BLNK_VARS_MK})
+. include "${_BLNK_VARS_MK}"
+.endif
# Prepend ${BUILDLINK_DIR}/bin to the PATH so that the wrappers are found
# first when searching for executables.
@@ -309,7 +314,7 @@ _BLNK_PKG_DBDIR.${_pkg_}!= \
. endif
. endfor
. if empty(_BLNK_PKG_DBDIR.${_pkg_}:M*not_found)
-MAKEFLAGS+= _BLNK_PKG_DBDIR.${_pkg_}=${_BLNK_PKG_DBDIR.${_pkg_}}
+BUILDLINK_VARS+= _BLNK_PKG_DBDIR.${_pkg_}
. endif
. endif
@@ -340,7 +345,7 @@ BUILDLINK_PREFIX.${_pkg_}= BUILDLINK_PREFIX.${_pkg_}_not_found
. endif
. endif
. if empty(BUILDLINK_PREFIX.${_pkg_}:M*not_found)
-MAKEFLAGS+= BUILDLINK_PREFIX.${_pkg_}=${BUILDLINK_PREFIX.${_pkg_}}
+BUILDLINK_VARS+= BUILDLINK_PREFIX.${_pkg_}
. endif
. endif
@@ -500,6 +505,11 @@ buildlink-directories:
${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${BUILDLINK_DIR}/include
${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${BUILDLINK_DIR}/lib
+# Create the saved variables Makefile fragment to pass variables through
+# to sub-make processes invoked on the same Makefile.
+#
+do-buildlink: ${_BLNK_VARS_MK}
+
# Create the buildlink wrappers before any of the other buildlink targets
# are run, as the wrappers may need to be used in some of those targets.
#
@@ -850,7 +860,7 @@ _BLNK_PHYSICAL_PATH.${_var_}!= \
else \
${ECHO} ${${_var_}}; \
fi
-MAKEFLAGS+= _BLNK_PHYSICAL_PATH.${_var_}=${_BLNK_PHYSICAL_PATH.${_var_}:Q}
+BUILDLINK_VARS+= _BLNK_PHYSICAL_PATH.${_var_}
. endif
.endfor
@@ -1742,3 +1752,19 @@ ${_BLNK_TRANSFORM_SEDFILE} ${_BLNK_UNTRANSFORM_SEDFILE} ${_BLNK_REORDERLIBS}: \
${_PKG_SILENT}${_PKG_DEBUG}${_BLNK_GEN_TRANSFORM} \
${_BLNK_TRANSFORM}
.endif # BUILDLINK_PHASES
+
+.PHONY: buildlink-vars-mk
+buildlink-vars-mk: ${_BLNK_VARS_MK}
+${_BLNK_VARS_MK}:
+ ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H}
+ ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${.TARGET}.tmp
+.for _var_ in ${BUILDLINK_VARS}
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ ${ECHO} "${_var_}= ${${_var_}}" >> ${.TARGET}.tmp
+.endfor
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ if [ -f ${.TARGET}.tmp ]; then \
+ ${SORT} -u ${.TARGET}.tmp > ${.TARGET}; \
+ ${RM} -f ${.TARGET}.tmp; \
+ fi
+ ${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${.TARGET}