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