summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1994-08-21 16:37:09 +0000
committerjkh <jkh@FreeBSD.org>1994-08-21 16:37:09 +0000
commitf8db12ca5eb182853476bd3b1fd3f9b824ad09b3 (patch)
treef9fa8a767599e836ac66135322ae5b4b2570c3d6 /share
parentc0580115373686743c8830b561cadb16dde2e849 (diff)
downloadFreeBSD-src-f8db12ca5eb182853476bd3b1fd3f9b824ad09b3.zip
FreeBSD-src-f8db12ca5eb182853476bd3b1fd3f9b824ad09b3.tar.gz
Start really adding some features here. Let's see:
1. New variable DEPENDS lets you list packages that this depends on, relative to the top (lang/tcl, x11/tk, etc). These packages will always get made first. 2. Don't configure again if you've already done so successfully. 3. Add pre-configure and post-configure hooks. You can now do a pre-configure, a local configure, a port-provided configure and finally a post-configure if you really really want to. I can't imagine anything this will leave us not being able to do! :) [ Yes, I have actually found a use for at least two of these in one port - see x11/tk!]. Submitted by: jkh
Diffstat (limited to 'share')
-rw-r--r--share/mk/bsd.port.mk41
1 files changed, 33 insertions, 8 deletions
diff --git a/share/mk/bsd.port.mk b/share/mk/bsd.port.mk
index 1f16b84..a5a4283 100644
--- a/share/mk/bsd.port.mk
+++ b/share/mk/bsd.port.mk
@@ -1,7 +1,7 @@
# bsd.port.mk - 940820 Jordan K. Hubbard.
# This file is in the public domain.
#
-# $Id: bsd.port.mk,v 1.3 1994/08/21 14:32:40 jkh Exp $
+# $Id: bsd.port.mk,v 1.4 1994/08/21 15:04:03 jkh Exp $
#
# Supported Variables and their behaviors:
@@ -23,6 +23,8 @@
# HOME_LOCATION - site/path name (or user's email address) describing
# where this package came from or can be obtained if the
# tarball is missing.
+# DEPENDS - A list of other packages this package depends on being
+# made first.
#
#
# Default targets and their behaviors:
@@ -41,10 +43,11 @@
GMAKE?= gmake
-# This needs to be absolute since we don't know how deep in the ports
+# These need to be absolute since we don't know how deep in the ports
# tree we are and thus can't go relative. It can, of course, be overridden
# by individual Makefiles.
-DISTDIR?= /usr/ports/distfiles
+PORTSDIR?= /usr/ports
+DISTDIR?= ${PORTSDIR}/distfiles
WRKDIR?= ${.CURDIR}/work
WRKSRC?= ${WRKDIR}/${DISTNAME}
@@ -87,6 +90,16 @@ package:
.if !target(build)
build: configure
@echo "===> Building for ${DISTNAME}"
+.if defined(DEPENDS)
+ @for i in $(DEPENDS); do \
+ echo "===> ${DISTNAME} depends on $$i - submaking"; \
+ if [ ! -d ${PORTSDIR}/$$i ]; then \
+ echo " No directory ${PORTSDIR}/$$i. Skipping.."; \
+ else \
+ (cd ${PORTSDIR}/$$i; ${MAKE}) ; \
+ fi \
+ done
+.endif
.if defined(USE_GMAKE)
@(cd ${WRKSRC}; ${GMAKE} all)
.else defined(USE_GMAKE)
@@ -95,7 +108,12 @@ build: configure
.endif
.if !target(configure)
-configure: extract
+# This is done with a .configure because configures are often expensive,
+# and you don't want it done again gratuitously when you're trying to get
+# a make of the whole tree to work.
+configure: ${.CURDIR}/.configure_done
+
+${.CURDIR}/.configure_done: extract
@echo "===> Configuring for ${DISTNAME}"
@if [ -d ${PATCHDIR} ]; then \
echo "===> Applying patches for ${DISTNAME}" ; \
@@ -103,16 +121,23 @@ configure: extract
patch -d ${WRKSRC} --quiet -E -p0 < $$i; \
done; \
fi
-.if defined(HAS_CONFIGURE)
- @(cd ${WRKSRC}; ./configure ${CONFIGURE_ARGS})
-.endif
# We have a small convention for our local configure scripts, which
# is that ${.CURDIR} and the package working directory get passed as
# command-line arguments since all other methods are a little
# problematic.
+ @if [ -f ${SCRIPTDIR}/pre-configure ]; then \
+ sh ${SCRIPTDIR}/pre-configure ${.CURDIR} ${WRKSRC}; \
+ fi
@if [ -f ${SCRIPTDIR}/configure ]; then \
sh ${SCRIPTDIR}/configure ${.CURDIR} ${WRKSRC}; \
fi
+.if defined(HAS_CONFIGURE)
+ @(cd ${WRKSRC}; ./configure ${CONFIGURE_ARGS})
+.endif
+ @if [ -f ${SCRIPTDIR}/post-configure ]; then \
+ sh ${SCRIPTDIR}/post-configure ${.CURDIR} ${WRKSRC}; \
+ fi
+ @touch -f ${.CURDIR}/.configure_done
.endif
.if !target(extract)
@@ -140,7 +165,7 @@ ${.CURDIR}/.extract_done:
.if !target(clean)
clean:
@echo "===> Cleaning for ${DISTNAME}"
- @rm -f ${.CURDIR}/.extract_done
+ @rm -f ${.CURDIR}/.extract_done ${.CURDIR}/.configure_done
@rm -rf ${WRKDIR}
.endif
OpenPOWER on IntegriCloud