aboutsummaryrefslogtreecommitdiffstats
path: root/Mk/bsd.port.mk
diff options
context:
space:
mode:
authorasami <asami@FreeBSD.org>1998-10-30 16:28:02 +0800
committerasami <asami@FreeBSD.org>1998-10-30 16:28:02 +0800
commite6cd3559b516426eb2dd06356300d7ee2cbd104c (patch)
tree216a64f0c8ff9399070c477a187db42a179d131d /Mk/bsd.port.mk
parentba5d0184f2492bf623d3d26a7da3460766833fe9 (diff)
downloadfreebsd-ports-gnome-e6cd3559b516426eb2dd06356300d7ee2cbd104c.tar.gz
freebsd-ports-gnome-e6cd3559b516426eb2dd06356300d7ee2cbd104c.tar.zst
freebsd-ports-gnome-e6cd3559b516426eb2dd06356300d7ee2cbd104c.zip
(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.
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 \