bsd.progs.mk revision 242710
1112158Sdas# $FreeBSD: head/share/mk/bsd.progs.mk 242710 2012-11-07 21:44:04Z sjg $
2112158Sdas# $Id: progs.mk,v 1.11 2012/11/06 17:18:54 sjg Exp $
3112158Sdas#
4112158Sdas#	@(#) Copyright (c) 2006, Simon J. Gerraty
5112158Sdas#
6112158Sdas#	This file is provided in the hope that it will
7112158Sdas#	be of use.  There is absolutely NO WARRANTY.
8112158Sdas#	Permission to copy, redistribute or otherwise
9112158Sdas#	use this file is hereby granted provided that 
10112158Sdas#	the above copyright notice and this notice are
11112158Sdas#	left intact. 
12112158Sdas#      
13112158Sdas#	Please send copies of changes and bug-fixes to:
14112158Sdas#	sjg@crufty.net
15112158Sdas#
16112158Sdas
17112158Sdas.MAIN: all
18112158Sdas
19112158Sdas.if defined(PROGS)
20112158Sdas
21112158Sdas# In meta mode, we can capture dependenices for _one_ of the progs.
22112158Sdas# if makefile doesn't nominate one, we use the first.
23112158Sdas.ifndef UPDATE_DEPENDFILE_PROG
24112158SdasUPDATE_DEPENDFILE_PROG = ${PROGS:[1]}
25112158Sdas.export UPDATE_DEPENDFILE_PROG
26112158Sdas.endif
27112158Sdas
28187808Sdas.ifndef PROG
29243933Seadler# They may have asked us to build just one
30243933Seadler.for t in ${PROGS}
31112158Sdas.if make($t)
32112158SdasPROG ?= $t
33112158Sdas.endif
34112158Sdas.endfor
35219557Sdas.endif
36219557Sdas
37165743Sdas.if defined(PROG)
38112158Sdas# just one of many
39112158SdasPROG_VARS += CFLAGS CPPFLAGS CXXFLAGS DPADD DPLIBS LDADD MAN SRCS
40112158Sdas.for v in ${PROG_VARS:O:u}
41112158Sdas$v += ${${v}_${PROG}:U${${v}.${PROG}}}
42112158Sdas.endfor
43112158Sdas
44165743Sdas# for meta mode, there can be only one!
45165743Sdas.if ${PROG} == ${UPDATE_DEPENDFILE_PROG:Uno}
46165743SdasUPDATE_DEPENDFILE ?= yes
47165743Sdas.endif
48165743SdasUPDATE_DEPENDFILE ?= NO
49219557Sdas
50219557Sdas# ensure that we don't clobber each other's dependencies
51219557SdasDEPENDFILE?= .depend.${PROG}
52219557Sdas# prog.mk will do the rest
53219557Sdas.else
54219557Sdasall: ${PROGS}
55219557Sdas
56112158Sdas# We cannot capture dependencies for meta mode here
57243933SeadlerUPDATE_DEPENDFILE = NO
58112158Sdas# nor can we safely run in parallel.
59112158Sdas.NOTPARALLEL:
60219557Sdas.endif
61219557Sdas.endif
62243933Seadler
63219557Sdas# handle being called [bsd.]progs.mk
64219557Sdas.include <${.PARSEFILE:S,progs,prog,}>
65219557Sdas
66112158Sdas.ifndef PROG
67112158SdasPROGS_TARGETS += clean
68219557Sdas
69219557Sdas.for p in ${PROGS}
70219557Sdas.if defined(PROGS_CXX) && !empty(PROGS_CXX:M$p)
71219557Sdas# bsd.prog.mk may need to know this
72219557Sdasx.$p= PROG_CXX=$p
73219557Sdas.endif
74219557Sdas
75219557Sdas$p ${p}_p: .PHONY .MAKE
76219557Sdas	(cd ${.CURDIR} && ${.MAKE} -f ${MAKEFILE} PROG=$p ${x.$p})
77112158Sdas
78219557Sdas.for t in ${PROGS_TARGETS:O:u}
79112158Sdas$p.$t: .PHONY .MAKE
80112158Sdas	(cd ${.CURDIR} && ${.MAKE} -f ${MAKEFILE} PROG=$p ${x.$p} ${@:E})
81112158Sdas.endfor
82112158Sdas.endfor
83112158Sdas
84112158Sdas.for t in ${PROGS_TARGETS:O:u}
85112158Sdas$t: ${PROGS:%=%.$t}
86112158Sdas.endfor
87219557Sdas
88.endif
89