Changeset View
Changeset View
Standalone View
Standalone View
head/share/mk/bsd.linker.mk
Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | |||||
.if defined(${var}__${${X_}_ld_hash}) | .if defined(${var}__${${X_}_ld_hash}) | ||||
${var}= ${${var}__${${X_}_ld_hash}} | ${var}= ${${var}__${${X_}_ld_hash}} | ||||
.endif | .endif | ||||
.endfor | .endfor | ||||
.endif | .endif | ||||
.if ${ld} == "LD" || (${ld} == "XLD" && ${XLD} != ${LD}) | .if ${ld} == "LD" || (${ld} == "XLD" && ${XLD} != ${LD}) | ||||
.if !defined(${X_}LINKER_TYPE) || !defined(${X_}LINKER_VERSION) | .if !defined(${X_}LINKER_TYPE) || !defined(${X_}LINKER_VERSION) | ||||
_ld_version!= (${${ld}} --version || echo none) | sed -n 1p | _ld_version!= (${${ld}} -v 2>&1 || echo none) | sed -n 1p | ||||
.if ${_ld_version} == "none" | .if ${_ld_version} == "none" | ||||
.warning Unable to determine linker type from ${ld}=${${ld}} | .warning Unable to determine linker type from ${ld}=${${ld}} | ||||
.endif | .endif | ||||
.if ${_ld_version:[1..2]} == "GNU ld" | .if ${_ld_version:[1..2]} == "GNU ld" | ||||
${X_}LINKER_TYPE= bfd | ${X_}LINKER_TYPE= bfd | ||||
${X_}LINKER_FREEBSD_VERSION= 0 | ${X_}LINKER_FREEBSD_VERSION= 0 | ||||
_v= ${_ld_version:M[1-9]*.[0-9]*:[1]} | _v= ${_ld_version:M[1-9]*.[0-9]*:[1]} | ||||
.elif ${_ld_version:[1]} == "LLD" | .elif ${_ld_version:[1]} == "LLD" | ||||
${X_}LINKER_TYPE= lld | ${X_}LINKER_TYPE= lld | ||||
_v= ${_ld_version:[2]} | _v= ${_ld_version:[2]} | ||||
.if ${_ld_version:[3]} == "(FreeBSD" | .if ${_ld_version:[3]} == "(FreeBSD" | ||||
${X_}LINKER_FREEBSD_VERSION:= ${_ld_version:[4]:C/.*-([^-]*)\)/\1/} | ${X_}LINKER_FREEBSD_VERSION:= ${_ld_version:[4]:C/.*-([^-]*)\)/\1/} | ||||
.else | .else | ||||
${X_}LINKER_FREEBSD_VERSION= 0 | ${X_}LINKER_FREEBSD_VERSION= 0 | ||||
.endif | |||||
.elif ${_ld_version:[1]} == "@(\#)PROGRAM:ld" | |||||
# bootstrap linker on MacOS | |||||
${X_}LINKER_TYPE= mac | |||||
_v= ${_ld_version:[2]:S/PROJECT:ld64-//} | |||||
# Convert version 409.12 to 409.12.0 so that the echo + awk below works | |||||
.if empty(_v:M[1-9]*.[0-9]*.[0-9]*) && !empty(_v:M[1-9]*.[0-9]*) | |||||
_v:=${_v}.0 | |||||
.else | |||||
# Some versions do not contain a minor version so we need to append .0.0 there | |||||
_v:=${_v}.0.0 | |||||
.endif | .endif | ||||
.else | .else | ||||
.warning Unknown linker from ${ld}=${${ld}}: ${_ld_version}, defaulting to bfd | .warning Unknown linker from ${ld}=${${ld}}: ${_ld_version}, defaulting to bfd | ||||
${X_}LINKER_TYPE= bfd | ${X_}LINKER_TYPE= bfd | ||||
_v= 2.17.50 | _v= 2.17.50 | ||||
.endif | .endif | ||||
${X_}LINKER_VERSION!= echo "${_v:M[1-9]*.[0-9]*}" | \ | ${X_}LINKER_VERSION!= echo "${_v:M[1-9]*.[0-9]*}" | \ | ||||
awk -F. '{print $$1 * 10000 + $$2 * 100 + $$3;}' | awk -F. '{print $$1 * 10000 + $$2 * 100 + $$3;}' | ||||
Show All 38 Lines |