diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-04-01 14:07:52 +0000 |
---|---|---|
committer | <> | 2013-05-17 14:06:43 +0000 |
commit | 986bc2ac05bc4c08c6a0ed30c9e97674932ccfeb (patch) | |
tree | 8346daf16e98e93415195acbf99f09cb5326b73b /mk/progs.mk | |
download | bmake-tarball-8d1ac348edb944f3af2e3b32db4eaa8fdf5b0e3a.tar.gz |
Diffstat (limited to 'mk/progs.mk')
-rw-r--r-- | mk/progs.mk | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/mk/progs.mk b/mk/progs.mk new file mode 100644 index 0000000..0fd2312 --- /dev/null +++ b/mk/progs.mk @@ -0,0 +1,87 @@ +# $Id: progs.mk,v 1.11 2012/11/06 17:18:54 sjg Exp $ +# +# @(#) Copyright (c) 2006, Simon J. Gerraty +# +# This file is provided in the hope that it will +# be of use. There is absolutely NO WARRANTY. +# Permission to copy, redistribute or otherwise +# use this file is hereby granted provided that +# the above copyright notice and this notice are +# left intact. +# +# Please send copies of changes and bug-fixes to: +# sjg@crufty.net +# + +.MAIN: all + +.if defined(PROGS) + +# In meta mode, we can capture dependenices for _one_ of the progs. +# if makefile doesn't nominate one, we use the first. +.ifndef UPDATE_DEPENDFILE_PROG +UPDATE_DEPENDFILE_PROG = ${PROGS:[1]} +.export UPDATE_DEPENDFILE_PROG +.endif + +.ifndef PROG +# They may have asked us to build just one +.for t in ${PROGS} +.if make($t) +PROG ?= $t +.endif +.endfor +.endif + +.if defined(PROG) +# just one of many +PROG_VARS += CFLAGS CPPFLAGS CXXFLAGS DPADD DPLIBS LDADD MAN SRCS +.for v in ${PROG_VARS:O:u} +$v += ${${v}_${PROG}:U${${v}.${PROG}}} +.endfor + +# for meta mode, there can be only one! +.if ${PROG} == ${UPDATE_DEPENDFILE_PROG:Uno} +UPDATE_DEPENDFILE ?= yes +.endif +UPDATE_DEPENDFILE ?= NO + +# ensure that we don't clobber each other's dependencies +DEPENDFILE?= .depend.${PROG} +# prog.mk will do the rest +.else +all: ${PROGS} + +# We cannot capture dependencies for meta mode here +UPDATE_DEPENDFILE = NO +# nor can we safely run in parallel. +.NOTPARALLEL: +.endif +.endif + +# handle being called [bsd.]progs.mk +.include <${.PARSEFILE:S,progs,prog,}> + +.ifndef PROG +PROGS_TARGETS += clean + +.for p in ${PROGS} +.if defined(PROGS_CXX) && !empty(PROGS_CXX:M$p) +# bsd.prog.mk may need to know this +x.$p= PROG_CXX=$p +.endif + +$p ${p}_p: .PHONY .MAKE + (cd ${.CURDIR} && ${.MAKE} -f ${MAKEFILE} PROG=$p ${x.$p}) + +.for t in ${PROGS_TARGETS:O:u} +$p.$t: .PHONY .MAKE + (cd ${.CURDIR} && ${.MAKE} -f ${MAKEFILE} PROG=$p ${x.$p} ${@:E}) +.endfor +.endfor + +.for t in ${PROGS_TARGETS:O:u} +$t: ${PROGS:%=%.$t} +.endfor + +.endif |