1*125902b6SBryan Drewery# $FreeBSD$ 2*125902b6SBryan Drewery 3*125902b6SBryan Drewery# Setup variables for the linker. 4*125902b6SBryan Drewery# 5*125902b6SBryan Drewery# LINKER_TYPE is the major type of linker. Currently binutils and lld support 6*125902b6SBryan Drewery# automatic detection. 7*125902b6SBryan Drewery# 8*125902b6SBryan Drewery# LINKER_VERSION is a numeric constant equal to: 9*125902b6SBryan Drewery# major * 10000 + minor * 100 + tiny 10*125902b6SBryan Drewery# It too can be overridden on the command line. 11*125902b6SBryan Drewery# 12*125902b6SBryan Drewery# This file may be included multiple times, but only has effect the first time. 13*125902b6SBryan Drewery# 14*125902b6SBryan Drewery 15*125902b6SBryan Drewery.if !target(__<bsd.linker.mk>__) 16*125902b6SBryan Drewery__<bsd.linker.mk>__: 17*125902b6SBryan Drewery 18*125902b6SBryan Drewery_ld_version!= ${LD} --version 2>/dev/null | head -n 1 || echo none 19*125902b6SBryan Drewery.if ${_ld_version} == "none" 20*125902b6SBryan Drewery.error Unable to determine linker type from LD=${LD} 21*125902b6SBryan Drewery.endif 22*125902b6SBryan Drewery.if ${_ld_version:[1..2]} == "GNU ld" 23*125902b6SBryan DreweryLINKER_TYPE= binutils 24*125902b6SBryan Drewery_v= ${_ld_version:[3]} 25*125902b6SBryan Drewery.elif ${_ld_version:[1]} == "LLD" 26*125902b6SBryan DreweryLINKER_TYPE= lld 27*125902b6SBryan Drewery_v= ${_ld_version:[2]} 28*125902b6SBryan Drewery.else 29*125902b6SBryan Drewery.error Unknown linker from LD=${LD}: ${_ld_version} 30*125902b6SBryan Drewery.endif 31*125902b6SBryan DreweryLINKER_VERSION!=echo "${_v:M[1-9].[0-9]*}" | awk -F. '{print $$1 * 10000 + $$2 * 100 + $$3;}' 32*125902b6SBryan Drewery 33*125902b6SBryan Drewery.endif # !target(__<bsd.linker.mk>__) 34