summaryrefslogtreecommitdiff
path: root/Mk/bsd.port.mk
diff options
context:
space:
mode:
authorSatoshi Asami <asami@FreeBSD.org>1998-10-30 08:28:02 +0000
committerSatoshi Asami <asami@FreeBSD.org>1998-10-30 08:28:02 +0000
commit584030d6044c02f451cb2ff96e3428e39c7d2c53 (patch)
treebde9a51a97aaafa7e72357dc7a8cac531bacf58d /Mk/bsd.port.mk
parentUpgrade to 0.20.2. (diff)
(1) Add new variables LOOP_VAR and LOOP_OPTIONS to implement building several
packages from a single port. LOOP_VAR is the name of the variable and LOOP_OPTIONS is a space-separated list of values it should take. When these are set, the target "package-loop" will go through a clean and package loop for all the options. The "package-loop" target is defined as "package" when LOOP_VAR is not defined, so if you are in the business for building packages, you should use "package-loop" all the time. (This target is added to bsd.port.subdir.mk too.) Also, the "describe" target prints out multiple lines so that all options will go into the INDEX. (In other words, if you define these variables, INDEX is going to look real silly if you don't put ${${LOOP_VAR}} in PKGNAME.) Seconded by: obrien ("ANYTHING") (2) Turn off regexp support for LIB_DEPENDS. It is a fixed string of the form <NAME>.<VER> now. Tested by: several rounds of complete package builds (3) Check checksum even if NO_EXTRACT is defined. (4) Cosmetic fix for message in MANUAL_PACKAGE_BUILD case.
Notes
Notes: svn path=/head/; revision=14257
Diffstat (limited to 'Mk/bsd.port.mk')
-rw-r--r--Mk/bsd.port.mk55
1 files changed, 51 insertions, 4 deletions
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 39eafd6837d6..c16fcd4b97ba 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -1,7 +1,7 @@
#-*- mode: Fundamental; tab-width: 4; -*-
# ex:ts=4
#
-# $Id: bsd.port.mk,v 1.292 1998/10/06 21:12:14 asami Exp $
+# $Id: bsd.port.mk,v 1.293 1998/10/09 01:27:21 asami Exp $
# $NetBSD: $
#
# bsd.port.mk - 940820 Jordan K. Hubbard.
@@ -246,6 +246,18 @@ OpenBSD_MAINTAINER= imp@OpenBSD.ORG
# is set and NO_INSTALL_MANPAGES is not set, and
# "no" otherwise.
#
+# If your port wants the package to be built with several options,
+# set the following variables.
+#
+# LOOP_VAR - The name of the variable.
+# LOOP_OPTIONS - The value of the options.
+#
+# If they are set, there will be a target "package-loop" which will
+# iterate several times, each time cleaning up afterwards, with the
+# value of ${LOOP_VAR} set to one of ${LOOP_OPTIONS}. In addition,
+# the "describe" target will print out multiple lines with the variable
+# set accordingly.
+#
# Default targets and their behaviors:
#
# fetch - Retrieves ${DISTFILES} (and ${PATCHFILES} if defined)
@@ -1034,7 +1046,7 @@ IGNORE= "is marked as broken: ${BROKEN}"
.endif
.if (defined(MANUAL_PACKAGE_BUILD) && defined(PACKAGE_BUILDING))
-IGNORE= "package has to be built manually: ${MANUAL_PACKAGE_BUILD}"
+IGNORE= "has to be built manually: ${MANUAL_PACKAGE_BUILD}"
clean:
@${IGNORECMD}
.endif
@@ -1109,6 +1121,7 @@ checksum: fetch
# Disable extract
.if defined(NO_EXTRACT) && !target(extract)
extract: fetch
+ @cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} checksum REAL_EXTRACT=yes
@${TOUCH} ${TOUCH_FLAGS} ${EXTRACT_COOKIE}
.endif
@@ -1761,6 +1774,26 @@ package-noinstall:
@cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} PACKAGE_NOINSTALL=yes real-package
.endif
+# Loop through several options for package building
+
+.if !target(package-loop)
+.if defined(LOOP_VAR)
+package-loop:
+.if !exists(${PACKAGE_COOKIE})
+.for option in ${LOOP_OPTIONS}
+ @cd ${.CURDIR} && ${SETENV} ${LOOP_VAR}=${option} LOOP=yes \
+ ${MAKE} ${.MAKEFLAGS} clean
+ @cd ${.CURDIR} && ${SETENV} ${LOOP_VAR}=${option} LOOP=yes \
+ ${MAKE} ${.MAKEFLAGS} package
+.endfor
+.else
+ @${DO_NADA}
+.endif
+.else
+package-loop: package
+.endif
+.endif
+
################################################################
# Dependency checking
################################################################
@@ -1843,7 +1876,7 @@ lib-depends:
else \
target=${DEPENDS_TARGET}; \
fi; \
- if ${LDCONFIG} -r | ${GREP} -q -e "-l$$lib"; then \
+ if ${LDCONFIG} -r | ${GREP} -qwF -e "-l$$lib"; then \
${ECHO_MSG} "===> ${PKGNAME} depends on shared library: $$lib - found"; \
else \
${ECHO_MSG} "===> ${PKGNAME} depends on shared library: $$lib - not found"; \
@@ -1853,7 +1886,7 @@ lib-depends:
else \
(cd $$dir; ${MAKE} ${.MAKEFLAGS} $$target) ; \
${ECHO_MSG} "===> Returning to build of ${PKGNAME}"; \
- if ${LDCONFIG} -r | ${GREP} -q -e "-l$$lib"; then \
+ if ${LDCONFIG} -r | ${GREP} -qwF -e "-l$$lib"; then \
${TRUE}; \
else \
${ECHO_MSG} "Error: shared library \"$$lib\" does not exist"; \
@@ -1934,8 +1967,22 @@ depends-list:
# distribution-name|port-path|installation-prefix|comment| \
# description-file|maintainer|categories|build deps|run deps
#
+# If LOOP_VAR is set, multiple lines will be printed with the
+# variable set to each value of LOOP_OPTIONS.
+
.if !target(describe)
describe:
+.if !defined(LOOP_VAR)
+ @cd ${.CURDIR} && ${MAKE} do-describe
+.else
+.for option in ${LOOP_OPTIONS}
+ @cd ${.CURDIR} && ${SETENV} ${LOOP_VAR}=${option} ${MAKE} do-describe
+.endfor
+.endif
+.endif
+
+.if !target(do-describe)
+do-describe:
@${ECHO} -n "${PKGNAME}|${.CURDIR}|"; \
${ECHO} -n "${PREFIX}|"; \
if [ -f ${COMMENT} ]; then \