Changeset View
Changeset View
Standalone View
Standalone View
share/mk/bsd.compiler.mk
Show First 20 Lines • Show All 138 Lines • ▼ Show 20 Lines | |||||
.endif | .endif | ||||
.for cc X_ in ${_cc_vars} | .for cc X_ in ${_cc_vars} | ||||
.if ${cc} == "CC" || !empty(XCC) | .if ${cc} == "CC" || !empty(XCC) | ||||
# Try to import COMPILER_TYPE and COMPILER_VERSION from parent make. | # Try to import COMPILER_TYPE and COMPILER_VERSION from parent make. | ||||
# The value is only used/exported for the same environment that impacts | # The value is only used/exported for the same environment that impacts | ||||
# CC and COMPILER_* settings here. | # CC and COMPILER_* settings here. | ||||
_exported_vars= ${X_}COMPILER_TYPE ${X_}COMPILER_VERSION \ | _exported_vars= ${X_}COMPILER_TYPE ${X_}COMPILER_VERSION \ | ||||
${X_}COMPILER_FREEBSD_VERSION ${X_}COMPILER_RESOURCE_DIR | ${X_}COMPILER_FREEBSD_VERSION ${X_}COMPILER_RESOURCE_DIR \ | ||||
${X_}COMPILER_ABSOLUTE_PATH | |||||
${X_}_cc_hash= ${${cc}}${MACHINE}${PATH} | ${X_}_cc_hash= ${${cc}}${MACHINE}${PATH} | ||||
${X_}_cc_hash:= ${${X_}_cc_hash:hash} | ${X_}_cc_hash:= ${${X_}_cc_hash:hash} | ||||
# Only import if none of the vars are set differently somehow else. | # Only import if none of the vars are set differently somehow else. | ||||
_can_export= yes | _can_export= yes | ||||
.for var in ${_exported_vars} | .for var in ${_exported_vars} | ||||
.if defined(${var}) && (!defined(${var}__${${X_}_cc_hash}) || ${${var}__${${X_}_cc_hash}} != ${${var}}) | .if defined(${var}) && (!defined(${var}__${${X_}_cc_hash}) || ${${var}__${${X_}_cc_hash}} != ${${var}}) | ||||
.if defined(${var}__${${X_}_ld_hash}) | .if defined(${var}__${${X_}_ld_hash}) | ||||
.info "Cannot import ${X_}COMPILER variables since cached ${var} is different: ${${var}__${${X_}_cc_hash}} != ${${var}}" | .info "Cannot import ${X_}COMPILER variables since cached ${var} is different: ${${var}__${${X_}_cc_hash}} != ${${var}}" | ||||
▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | |||||
.if ${${X_}COMPILER_TYPE} == "clang" || \ | .if ${${X_}COMPILER_TYPE} == "clang" || \ | ||||
(${${X_}COMPILER_TYPE} == "gcc" && ${${X_}COMPILER_VERSION} >= 70000) | (${${X_}COMPILER_TYPE} == "gcc" && ${${X_}COMPILER_VERSION} >= 70000) | ||||
${X_}COMPILER_FEATURES+= c++17 | ${X_}COMPILER_FEATURES+= c++17 | ||||
.endif | .endif | ||||
.if ${${X_}COMPILER_TYPE} == "clang" | .if ${${X_}COMPILER_TYPE} == "clang" | ||||
${X_}COMPILER_FEATURES+= retpoline init-all | ${X_}COMPILER_FEATURES+= retpoline init-all | ||||
.endif | .endif | ||||
.if ${${cc}:N${CCACHE_BIN}:[1]:M/*} && exists(${${cc}:N${CCACHE_BIN}:[1]}) | |||||
${X_}COMPILER_ABSOLUTE_PATH= ${${cc}:N${CCACHE_BIN}:[1]} | |||||
.else | .else | ||||
${X_}COMPILER_ABSOLUTE_PATH!= which ${${cc}:N${CCACHE_BIN}:[1]} | |||||
.endif | |||||
.if empty(${X_}COMPILER_ABSOLUTE_PATH) | |||||
.error Could not find $$CC (${${cc}:N${CCACHE_BIN}:[1]}) in $$PATH. \ | |||||
Please pass an absolute path to CC instead. | |||||
.endif | |||||
.else | |||||
# Use CC's values | # Use CC's values | ||||
X_COMPILER_TYPE= ${COMPILER_TYPE} | X_COMPILER_TYPE= ${COMPILER_TYPE} | ||||
X_COMPILER_VERSION= ${COMPILER_VERSION} | X_COMPILER_VERSION= ${COMPILER_VERSION} | ||||
X_COMPILER_FREEBSD_VERSION= ${COMPILER_FREEBSD_VERSION} | X_COMPILER_FREEBSD_VERSION= ${COMPILER_FREEBSD_VERSION} | ||||
X_COMPILER_FEATURES= ${COMPILER_FEATURES} | X_COMPILER_FEATURES= ${COMPILER_FEATURES} | ||||
X_COMPILER_RESOURCE_DIR= ${COMPILER_RESOURCE_DIR} | X_COMPILER_RESOURCE_DIR= ${COMPILER_RESOURCE_DIR} | ||||
X_COMPILER_ABSOLUTE_PATH= ${COMPILER_ABSOLUTE_PATH} | |||||
.endif # ${cc} == "CC" || (${cc} == "XCC" && ${XCC} != ${CC}) | .endif # ${cc} == "CC" || (${cc} == "XCC" && ${XCC} != ${CC}) | ||||
# Export the values so sub-makes don't have to look them up again, using the | # Export the values so sub-makes don't have to look them up again, using the | ||||
# hash key computed above. | # hash key computed above. | ||||
.for var in ${_exported_vars} | .for var in ${_exported_vars} | ||||
${var}__${${X_}_cc_hash}:= ${${var}} | ${var}__${${X_}_cc_hash}:= ${${var}} | ||||
.export-env ${var}__${${X_}_cc_hash} | .export-env ${var}__${${X_}_cc_hash} | ||||
.undef ${var}__${${X_}_cc_hash} | .undef ${var}__${${X_}_cc_hash} | ||||
Show All 10 Lines |