freebsd-src/mk/target-flags.mk
Simon J. Gerraty 6bbc783f48 Import bmake-20200902
Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.

Other significant changes:

o new read-only variable .SHELL which provides the path of the shell
  used to run scripts (as defined by  the .SHELL target).

o new debug option -dl: LINT mode, does the equivalent of := for all
  variable assignments so that file and line number are reported for
  variable parse errors.
2020-09-05 16:11:04 +00:00

63 lines
1.6 KiB
Makefile

# NAME:
# target-flags.mk - target specific flags
#
# DESCRIPTION:
# Include this macro file after all others in a makefile and
# follow it with any target specific 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.10 2020/08/19 17:51:53 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