Avoid recomputing COMPILER_/LINKER_ variables when set explicitly
I noticed that when we build libraries for a different ABI (in CheriBSD) we were calling ${XCC}/${LD} --version for every directory. It turns out that this was caused by bsd.compat.mk explicitly setting (X_)COMPILER variables for that build stage and this stops the _can_export logic from working. To fix this, we change the check to only set _can_export=no if the variable is set and it is set to a different value than the cached value. This noticeably speeds up the tree walk while building compat libraries. During an upstream amd64 buildworld this also removes 8 --version calls. Obtained from: CheriBSD Reviewed By: brooks, emaste Differential Revision: https://reviews.freebsd.org/D25986
This commit is contained in:
parent
18de62a94a
commit
489377c0a4
@ -146,10 +146,13 @@ _exported_vars= ${X_}COMPILER_TYPE ${X_}COMPILER_VERSION \
|
||||
${X_}COMPILER_FREEBSD_VERSION ${X_}COMPILER_RESOURCE_DIR
|
||||
${X_}_cc_hash= ${${cc}}${MACHINE}${PATH}
|
||||
${X_}_cc_hash:= ${${X_}_cc_hash:hash}
|
||||
# Only import if none of the vars are set somehow else.
|
||||
# Only import if none of the vars are set differently somehow else.
|
||||
_can_export= yes
|
||||
.for var in ${_exported_vars}
|
||||
.if defined(${var})
|
||||
.if defined(${var}) && (!defined(${var}__${${X_}_cc_hash}) || ${${var}__${${X_}_cc_hash}} != ${${var}})
|
||||
.if defined(${var}__${${X_}_ld_hash})
|
||||
.info "Cannot import ${X_}COMPILER variables since cached ${var} is different: ${${var}__${${X_}_cc_hash}} != ${${var}}"
|
||||
.endif
|
||||
_can_export= no
|
||||
.endif
|
||||
.endfor
|
||||
|
@ -41,10 +41,13 @@ _exported_vars= ${X_}LINKER_TYPE ${X_}LINKER_VERSION ${X_}LINKER_FEATURES \
|
||||
${X_}LINKER_FREEBSD_VERSION
|
||||
${X_}_ld_hash= ${${ld}}${MACHINE}${PATH}
|
||||
${X_}_ld_hash:= ${${X_}_ld_hash:hash}
|
||||
# Only import if none of the vars are set somehow else.
|
||||
# Only import if none of the vars are set differently somehow else.
|
||||
_can_export= yes
|
||||
.for var in ${_exported_vars}
|
||||
.if defined(${var})
|
||||
.if defined(${var}) && (!defined(${var}__${${X_}_ld_hash}) || ${${var}__${${X_}_ld_hash}} != ${${var}})
|
||||
.if defined(${var}__${${X_}_ld_hash})
|
||||
.info "Cannot import ${X_}LINKER variables since cached ${var} is different: ${${var}__${${X_}_ld_hash}} != ${${var}}"
|
||||
.endif
|
||||
_can_export= no
|
||||
.endif
|
||||
.endfor
|
||||
|
Loading…
Reference in New Issue
Block a user