aboutsummaryrefslogtreecommitdiffstats
path: root/mk/target-flags.mk
blob: f8932b2f17b993bbc2a3aa5ada30f49c706a2c80 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# NAME:
#	target-flags.mk - target specific flags
#
# DESCRIPTION:
#	Include this macro file after all others in a makefile and
#	follow it with any target specfic flag settings.
#	For each such variable v in TARGET_FLAG_VARS we set:
#.nf
#
#	_$v := ${$v}
#	$v = ${${v}_${.TARGET:T}:U${_$v}}
#.fi
#
#	This allows one to do things like:
#.nf
#
#	TARGET_FLAG_VARS= CFLAGS
#	.include <target-flags.mk>
#	CFLAGS_fu.o = ${_CFLAGS:N-Wall}
#.fi
#
#	To turn off -Wall for just the target fu.o
#	Actually CFLAGS is the default value for TARGET_FLAG_VARS.
#
# BUGS:
#	One must be careful to avoid creating circular references in
#	variables.  The original version of this macro file did
#	elaborate things with CFLAGS.  The current, simpler
#	implementation is ultimately more flexible.
#	
#	It is important that target-flags.mk is included after other
#	macro files and that target specific flags that may reference
#	_$v are set after that.
#	
#	Only works with a make(1) that does nested evaluation correctly.



# RCSid:
#	$Id: target-flags.mk,v 1.8 2002/05/08 06:01:00 sjg Exp $
#
#	@(#) Copyright (c) 1998-2002, 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
#

TARGET_FLAG_VARS?= CFLAGS
.for v in ${TARGET_FLAG_VARS}
.ifndef _$v
_$v := ${$v}
$v  =  ${${v}_${.TARGET:T}:U${_$v}}
.endif
.endfor