diff options
author | marcel <marcel@FreeBSD.org> | 2012-10-03 00:41:46 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2012-10-03 00:41:46 +0000 |
commit | 22657893cf406906bc90adf4d67c26444ea9930f (patch) | |
tree | 44c94755fb4ba80c59b08896c9ba2bb09dddf5c8 /contrib/bmake/bsd.after-import.mk | |
parent | 5277f913de0e34474af844aed711a14c28c20d2b (diff) | |
parent | 7a30e7c5f81ddf34bba5a09b97fe6ba90544fd1b (diff) | |
download | FreeBSD-src-22657893cf406906bc90adf4d67c26444ea9930f.zip FreeBSD-src-22657893cf406906bc90adf4d67c26444ea9930f.tar.gz |
Merge bmake-20120831 from vendor/NetBSD/bmake/dist.
Provenance: ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg
Diffstat (limited to 'contrib/bmake/bsd.after-import.mk')
-rw-r--r-- | contrib/bmake/bsd.after-import.mk | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/contrib/bmake/bsd.after-import.mk b/contrib/bmake/bsd.after-import.mk new file mode 100644 index 0000000..b2b2187 --- /dev/null +++ b/contrib/bmake/bsd.after-import.mk @@ -0,0 +1,109 @@ +# $Id: bsd.after-import.mk,v 1.7 2012/07/06 03:03:44 sjg Exp $ + +# This makefile is for use when integrating bmake into a BSD build +# system. Use this makefile after importing bmake. +# It will bootstrap the new version, +# capture the generated files we need, and add an after-import +# target to allow the process to be easily repeated. + +# The goal is to allow the benefits of autoconf without +# the overhead of running configure. + +all: _makefile +all: after-import + +# we rely on bmake +.if !defined(.PARSEDIR) +.error this makefile requires bmake +.endif + +_this := ${MAKEFILE:tA} +BMAKE_SRC := ${.PARSEDIR} + +# it helps to know where the top of the tree is. +.if !defined(SRCTOP) +srctop := ${.MAKE.MAKEFILES:M*src/share/mk/sys.mk:H:H:H} +.if empty(srctop) +# likely locations? +.for d in contrib/bmake external/bsd/bmake/dist +.if ${BMAKE_SRC:M*/$d} != "" +srctop := ${BMAKE_SRC:tA:S,/$d,,} +.endif +.endfor +.endif +.if !empty(srctop) +SRCTOP := ${srctop} +.endif +.endif + +# This lets us match what boot-strap does +.if !defined(HOST_OS) +HOST_OS!= uname +.endif + +# .../share/mk will find ${SRCTOP}/share/mk +# if we are within ${SRCTOP} +DEFAULT_SYS_PATH= .../share/mk:/usr/share/mk + +BOOTSTRAP_ARGS = \ + --with-default-sys-path='${DEFAULT_SYS_PATH}' \ + --prefix /usr \ + --share /usr/share \ + --mksrc none + +# run boot-strap with minimal influence +bootstrap: ${BMAKE_SRC}/boot-strap ${MAKEFILE} + HOME=/ ${BMAKE_SRC}/boot-strap ${BOOTSTRAP_ARGS} ${BOOTSTRAP_XTRAS} + touch ${.TARGET} + +# Makefiles need a little more tweaking than say config.h +MAKEFILE_SED = sed -e '/^MACHINE/d' \ + -e '/^PROG/s,bmake,${.CURDIR:T},' \ + -e 's,^.-include,.sinclude,' \ + -e 's,${SRCTOP},$${SRCTOP},g' + +# These are the simple files we want to capture +configured_files= config.h unit-tests/Makefile + +after-import: bootstrap ${MAKEFILE} +.for f in ${configured_files:N*Makefile} + @echo Capturing $f + @mkdir -p ${${.CURDIR}/$f:L:H} + @cmp -s ${.CURDIR}/$f ${HOST_OS}/$f || \ + cp ${HOST_OS}/$f ${.CURDIR}/$f +.endfor +.for f in ${configured_files:M*Makefile} + @echo Capturing $f + @mkdir -p ${${.CURDIR}/$f:L:H} + @(echo '# This is a generated file, do NOT edit!'; \ + echo '# See ${_this:S,${SRCTOP}/,,}'; \ + echo '#'; echo '# $$${OS}$$'; echo; \ + echo 'SRCTOP?= $${.CURDIR:${${.CURDIR}/$f:L:H:S,${SRCTOP}/,,:C,[^/]+,H,g:S,/,:,g}}'; echo; \ + ${MAKEFILE_SED} ${HOST_OS}/$f ) > ${.CURDIR}/$f +.endfor + +# this needs the most work +_makefile: bootstrap ${MAKEFILE} + @echo Generating ${.CURDIR}/Makefile + @(echo '# This is a generated file, do NOT edit!'; \ + echo '# See ${_this:S,${SRCTOP}/,,}'; \ + echo '#'; echo '# $$${OS}$$'; echo; \ + echo 'SRCTOP?= $${.CURDIR:${.CURDIR:S,${SRCTOP}/,,:C,[^/]+,H,g:S,/,:,g}}'; echo; \ + echo; echo '# look here first for config.h'; \ + echo 'CFLAGS+= -I$${.CURDIR}'; echo; \ + ${MAKEFILE_SED} ${HOST_OS}/Makefile; \ + echo; echo '# override some simple things'; \ + echo 'BINDIR= /usr/bin'; \ + echo 'MANDIR= /usr/share/man'; \ + echo; echo '# make sure we get this'; \ + echo 'CFLAGS+= $${COPTS.$${.IMPSRC:T}}'; \ + echo 'CLEANFILES+= bootstrap'; \ + echo; echo 'after-import: ${_this:S,${SRCTOP},\${SRCTOP},}'; \ + echo ' cd $${.CURDIR} && $${.MAKE} -f ${_this:S,${SRCTOP},\${SRCTOP},}'; \ + echo; echo '.sinclude "Makefile.inc"'; \ + echo ) > ${.TARGET} + @cmp -s ${.TARGET} ${.CURDIR}/Makefile || \ + mv ${.TARGET} ${.CURDIR}/Makefile + +.include <bsd.obj.mk> + |