For every instance of '.if ${CC} == "foo"' or '.if ${CC} != "foo"' in

Makefiles or *.mk files, use ${CC:T:Mfoo} instead, so only the basename
of the compiler command (excluding any arguments) is considered.

This allows you to use, for example, CC="/nondefault/path/clang -xxx",
and still have the various tests in bsd.*.mk identify your compiler as
clang correctly.

ICC if cases were also changed.

Submitted by:	Dimitry Andric <dimitry at andric.com>
This commit is contained in:
Rui Paulo 2010-08-17 20:39:28 +00:00
parent d350d2cd94
commit 187278cadc
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=211437
8 changed files with 22 additions and 22 deletions

View File

@ -125,7 +125,7 @@ depend: beforedepend ${DEPENDFILE} afterdepend
# Different types of sources are compiled with slightly different flags.
# Split up the sources, and filter out headers and non-applicable flags.
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
MKDEP_CFLAGS= ${CFLAGS:M-X*} ${CFLAGS:M-[BIDU]*}
MKDEP_CXXFLAGS= ${CXXFLAGS:M-X*} ${CXXFLAGS:M-[BIDU]*}
MKDEP_OBJCFLAGS=${OBJCFLAGS:M-X*} ${OBJCFLAGS:M-[BIDU]*}

View File

@ -65,7 +65,7 @@ PICFLAG=-fpic
.endif
.endif
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
PO_FLAG=-p
.else
PO_FLAG=-pg

View File

@ -11,7 +11,7 @@
# the default is gnu99 for now
CSTD ?= gnu99
.if ${CC} != "icc"
.if ${CC:T:Micc} != "icc"
. if ${CSTD} == "k&r"
CFLAGS += -traditional
. elif ${CSTD} == "c89" || ${CSTD} == "c90"
@ -24,7 +24,7 @@ CFLAGS += -std=iso9899:1999
CFLAGS += -std=${CSTD}
. endif
.endif
.if !defined(NO_WARNS) && ${CC} != "icc"
.if !defined(NO_WARNS) && ${CC:T:Micc} != "icc"
# -pedantic is problematic because it also imposes namespace restrictions
#CFLAGS += -pedantic
. if defined(WARNS)
@ -79,7 +79,7 @@ CWARNFLAGS += -Werror
CWARNFLAGS += -Wno-unknown-pragmas
.endif
.if ${MK_SSP} != "no" && ${CC} != "icc" && ${MACHINE_ARCH} != "ia64" && \
.if ${MK_SSP} != "no" && ${CC:T:Micc} != "icc" && ${MACHINE_ARCH} != "ia64" && \
${MACHINE_ARCH} != "arm" && ${MACHINE_ARCH} != "mips"
# Don't use -Wstack-protector as it breaks world with -Werror.
SSP_CFLAGS ?= -fstack-protector

View File

@ -6,7 +6,7 @@
# Note that the newly added -Wcast-qual is responsible for generating
# most of the remaining warnings. Warnings introduced with -Wall will
# also pop up, but are easier to fix.
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
#CWARNFLAGS= -w2 # use this if you are terribly bored
CWARNFLAGS=
.else
@ -29,8 +29,8 @@ CWARNFLAGS?= -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes \
# operations inside the kernel itself. These operations are exclusively
# reserved for user applications.
#
.if ${MACHINE_ARCH} == "i386" && ${CC} != "icc"
.if ${CC} != "clang"
.if ${MACHINE_ARCH} == "i386" && ${CC:T:Micc} != "icc"
.if ${CC:T:Mclang} != "clang"
CFLAGS+= -mno-align-long-strings -mpreferred-stack-boundary=2
.endif
CFLAGS+= -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3
@ -93,20 +93,20 @@ INLINE_LIMIT?= 8000
# GCC 3.0 and above like to do certain optimizations based on the
# assumption that the program is linked against libc. Stop this.
#
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
CFLAGS+= -nolib_inline
.else
CFLAGS+= -ffreestanding
.endif
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
CFLAGS+= -restrict
.endif
#
# GCC SSP support.
#
.if ${MK_SSP} != "no" && ${CC} != "icc" && ${MACHINE_ARCH} != "ia64" && \
.if ${MK_SSP} != "no" && ${CC:T:Micc} != "icc" && ${MACHINE_ARCH} != "ia64" && \
${MACHINE_ARCH} != "arm" && ${MACHINE_ARCH} != "mips"
CFLAGS+= -fstack-protector
.endif

View File

@ -23,7 +23,7 @@ NM?= nm
OBJCOPY?= objcopy
SIZE?= size
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
COPTFLAGS?= -O
.else
. if defined(DEBUG)
@ -48,7 +48,7 @@ COPTFLAGS+= ${_ICC_CPUCFLAGS:C/(-x[^M^K^W]+)[MKW]+|-x[MKW]+/\1/}
COPTFLAGS+= ${_CPUCFLAGS}
. endif
.endif
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
C_DIALECT=
NOSTDINC= -X
.else
@ -92,8 +92,8 @@ INCLUDES+= -I$S/dev/cxgb
CFLAGS= ${COPTFLAGS} ${C_DIALECT} ${DEBUG} ${CWARNFLAGS}
CFLAGS+= ${INCLUDES} -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h
.if ${CC} != "icc"
.if ${CC} != "clang"
.if ${CC:T:Micc} != "icc"
.if ${CC:T:Mclang} != "clang"
CFLAGS+= -fno-common -finline-limit=${INLINE_LIMIT}
.if ${MACHINE_CPUARCH} != "mips"
CFLAGS+= --param inline-unit-growth=100
@ -111,7 +111,7 @@ WERROR?= -Werror
ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS}
.if defined(PROFLEVEL) && ${PROFLEVEL} >= 1
.if ${CC} == "icc" || ${CC} == "clang"
.if ${CC:T:Micc} == "icc" || ${CC:T:Mclang} == "clang"
.error "Profiling doesn't work with icc or clang yet"
.endif
CFLAGS+= -DGPROF -falign-functions=16

View File

@ -81,7 +81,7 @@ OBJCOPY?= objcopy
.SUFFIXES: .out .o .c .cc .cxx .C .y .l .s .S
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
CFLAGS:= ${CFLAGS:C/(-x[^M^K^W]+)[MKW]+|-x[MKW]+/\1/}
.else
. if !empty(CFLAGS:M-O[23s]) && empty(CFLAGS:M-fno-strict-aliasing)
@ -94,7 +94,7 @@ CFLAGS+= -D_KERNEL
CFLAGS+= -DKLD_MODULE
# Don't use any standard or source-relative include directories.
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
NOSTDINC= -X
.else
CSTD= c99
@ -114,7 +114,7 @@ CFLAGS+= -I. -I@
# for example.
CFLAGS+= -I@/contrib/altq
.if ${CC} != "icc" && ${CC} != "clang"
.if ${CC:T:Micc} != "icc" && ${CC:T:Mclang} != "clang"
CFLAGS+= -finline-limit=${INLINE_LIMIT}
CFLAGS+= --param inline-unit-growth=100
CFLAGS+= --param large-function-growth=1000
@ -122,7 +122,7 @@ CFLAGS+= --param large-function-growth=1000
# Disallow common variables, and if we end up with commons from
# somewhere unexpected, allocate storage for them in the module itself.
.if ${CC} != "icc"
.if ${CC:T:Micc} != "icc"
CFLAGS+= -fno-common
.endif
LDFLAGS+= -d -warn-common

View File

@ -24,7 +24,7 @@ WARNS?= 5
DEPENDFILE= .depend_aicasm
.endif
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
CFLAGS+= -restrict
NOSTDINC= -X
.else

View File

@ -9,7 +9,7 @@ DEPENDFILE=
MAKESRCPATH= ${.CURDIR}
CLEANFILES= acpi_wakecode.h acpi_wakecode.bin acpi_wakecode.o
.endif
.if ${CC} == "icc"
.if ${CC:T:Micc} == "icc"
CFLAGS+= -restrict
NOSTDINC= -X
.else