Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F164352043
D6355.id16650.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D6355.id16650.diff
View Options
Index: head/share/mk/bsd.compiler.mk
===================================================================
--- head/share/mk/bsd.compiler.mk
+++ head/share/mk/bsd.compiler.mk
@@ -19,6 +19,8 @@
#
# - c++11 : supports full (or nearly full) C++11 programming environment.
#
+# These variables with an X_ prefix will also be provided if XCC is set.
+#
# This file may be included multiple times, but only has effect the first time.
#
@@ -97,12 +99,14 @@
.endif # exists(${CCACHE_BIN})
.endif # ${MK_CCACHE_BUILD} == "yes"
+.for cc X_ in CC $${_empty_var_} XCC X_
+.if ${cc} == "CC" || !empty(XCC)
# Try to import COMPILER_TYPE and COMPILER_VERSION from parent make.
# The value is only used/exported for the same environment that impacts
# CC and COMPILER_* settings here.
-_exported_vars= COMPILER_TYPE COMPILER_VERSION
-_cc_hash= ${CC}${MACHINE}${PATH}
-_cc_hash:= ${_cc_hash:hash}
+_exported_vars= ${X_}COMPILER_TYPE ${X_}COMPILER_VERSION
+${X_}_cc_hash= ${${cc}}${MACHINE}${PATH}
+${X_}_cc_hash:= ${${X_}_cc_hash:hash}
# Only import if none of the vars are set somehow else.
_can_export= yes
.for var in ${_exported_vars}
@@ -112,54 +116,65 @@
.endfor
.if ${_can_export} == yes
.for var in ${_exported_vars}
-.if defined(${var}.${_cc_hash})
-${var}= ${${var}.${_cc_hash}}
+.if defined(${var}.${${X_}_cc_hash})
+${var}= ${${var}.${${X_}_cc_hash}}
.endif
.endfor
.endif
+.if ${cc} == "CC" || (${cc} == "XCC" && ${XCC} != ${CC})
.if ${MACHINE} == "common"
# common is a pseudo machine for architecture independent
# generated files - thus there is no compiler.
-COMPILER_TYPE= none
-COMPILER_VERSION= 0
-.elif !defined(COMPILER_TYPE) || !defined(COMPILER_VERSION)
-_v!= ${CC} --version || echo 0.0.0
-
-.if !defined(COMPILER_TYPE)
-. if ${CC:T:M*gcc*}
-COMPILER_TYPE:= gcc
-. elif ${CC:T:M*clang*}
-COMPILER_TYPE:= clang
+${X_}COMPILER_TYPE= none
+${X_}COMPILER_VERSION= 0
+.elif !defined(${X_}COMPILER_TYPE) || !defined(${X_}COMPILER_VERSION)
+_v!= ${${cc}} --version || echo 0.0.0
+
+.if !defined(${X_}COMPILER_TYPE)
+. if ${${cc}:T:M*gcc*}
+${X_}COMPILER_TYPE:= gcc
+. elif ${${cc}:T:M*clang*}
+${X_}COMPILER_TYPE:= clang
. elif ${_v:Mgcc}
-COMPILER_TYPE:= gcc
+${X_}COMPILER_TYPE:= gcc
. elif ${_v:M\(GCC\)}
-COMPILER_TYPE:= gcc
+${X_}COMPILER_TYPE:= gcc
. elif ${_v:Mclang}
-COMPILER_TYPE:= clang
+${X_}COMPILER_TYPE:= clang
. else
-.error Unable to determine compiler type for ${CC}. Consider setting COMPILER_TYPE.
+.error Unable to determine compiler type for ${cc}=${${cc}}. Consider setting ${X_}COMPILER_TYPE.
. endif
.endif
-.if !defined(COMPILER_VERSION)
-COMPILER_VERSION!=echo "${_v:M[1-9].[0-9]*}" | awk -F. '{print $$1 * 10000 + $$2 * 100 + $$3;}'
+.if !defined(${X_}COMPILER_VERSION)
+${X_}COMPILER_VERSION!=echo "${_v:M[1-9].[0-9]*}" | awk -F. '{print $$1 * 10000 + $$2 * 100 + $$3;}'
.endif
.undef _v
.endif
+.if ${${X_}COMPILER_TYPE} == "clang" || \
+ (${${X_}COMPILER_TYPE} == "gcc" && ${${X_}COMPILER_VERSION} >= 40800)
+${X_}COMPILER_FEATURES= c++11
+.else
+${X_}COMPILER_FEATURES=
+.endif
+
+.else
+# Use CC's values
+X_COMPILER_TYPE= ${COMPILER_TYPE}
+X_COMPILER_VERSION= ${COMPILER_VERSION}
+X_COMPILER_FEATURES= ${COMPILER_FEATURES}
+.endif # ${cc} == "CC" || (${cc} == "XCC" && ${XCC} != ${CC})
+
# Export the values so sub-makes don't have to look them up again, using the
# hash key computed above.
.for var in ${_exported_vars}
-${var}.${_cc_hash}:= ${${var}}
-.export-env ${var}.${_cc_hash}
-.undef ${var}.${_cc_hash}
+${var}.${${X_}_cc_hash}:= ${${var}}
+.export-env ${var}.${${X_}_cc_hash}
+.undef ${var}.${${X_}_cc_hash}
.endfor
-.if ${COMPILER_TYPE} == "clang" || \
- (${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40800)
-COMPILER_FEATURES= c++11
-.else
-COMPILER_FEATURES=
-.endif
+.endif # ${cc} == "CC" || !empty(XCC)
+.endfor # .for cc in CC XCC
.endif # !target(__<bsd.compiler.mk>__)
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Aug 1, 2:36 AM (19 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35804245
Default Alt Text
D6355.id16650.diff (3 KB)
Attached To
Mode
D6355: Auto determine X_COMPILER_TYPE/X_COMPILER_VERSION if XCC is set.
Attached
Detach File
Event Timeline
Log In to Comment