Gold linker support for entire source tree
This commit is contained in:
@@ -193,6 +193,9 @@ MKSHLIBOBJS= no
|
||||
SHLIB_SOVERSION= ${SHLIB_MAJOR}
|
||||
SHLIB_SHFLAGS= -Wl,-soname,${_LIB_PREFIX}${LIB}.so.${SHLIB_SOVERSION}
|
||||
SHLIB_SHFLAGS+= -Wl,--warn-shared-textrel
|
||||
.if defined(__MINIX)
|
||||
SHLIB_SHFLAGS+= ${${HAVE_GOLD:Uno} != "no":? -Wl,--script,${LDS_SHARED_LIB}:}
|
||||
.endif # defined(__MINIX)
|
||||
SHLIB_LDSTARTFILE?= ${_GCC_CRTI} ${_GCC_CRTBEGINS}
|
||||
SHLIB_LDENDFILE?= ${_GCC_CRTENDS} ${_GCC_CRTN}
|
||||
|
||||
|
||||
@@ -26,9 +26,6 @@ MKBINUTILS:= no
|
||||
MKGDB:= no
|
||||
MKGCC?= no
|
||||
|
||||
# LSC To check if works
|
||||
#DESTDIR?= /usr/destdir.${MACHINE_ARCH}
|
||||
|
||||
# LSC MINIX SMP Support?
|
||||
.ifdef CONFIG_SMP
|
||||
SMP_FLAGS += -DCONFIG_SMP
|
||||
@@ -42,17 +39,46 @@ CPPFLAGS+= ${SMP_FLAGS}
|
||||
__uname_s!= uname -s
|
||||
.if ${__uname_s:Uunknown} == "Minix"
|
||||
USETOOLS?= never
|
||||
. if ${USETOOLS:Uno} != "yes" && ${HAVE_LLVM:U} == ""
|
||||
HAVE_LLVM!= clang --version | grep version | cut -d' ' -f 3
|
||||
. endif
|
||||
. if ${USETOOLS:Uno} != "yes"
|
||||
. if ${_HAVE_LLVM:U} == ""
|
||||
_HAVE_LLVM!= (exec 2>&1; clang --version || echo "")
|
||||
_HAVE_LLVM:= ${_HAVE_LLVM:M[0-9]\.[0-9]}
|
||||
. if ${_HAVE_LLVM} != ""
|
||||
HAVE_LLVM?= ${_HAVE_LLVM}
|
||||
. endif
|
||||
. endif # ${_HAVE_LLVM:U} == ""
|
||||
|
||||
. if ${_HAVE_GOLD:U} == ""
|
||||
_HAVE_GOLD!= (exec 2>&1; ld --version || echo "")
|
||||
_GOLD_MATCH:=${_HAVE_GOLD:Mgold}
|
||||
_HAVE_GOLD:= ${_HAVE_GOLD:M[0-9]\.[0-9][0-9]}
|
||||
. if ${_GOLD_MATCH} != "" && ${_HAVE_GOLD} != ""
|
||||
HAVE_GOLD?= ${_HAVE_GOLD}
|
||||
CFLAGS+= -DHAVE_GOLD=${_HAVE_GOLD}
|
||||
AFLAGS+= -DHAVE_GOLD=${_HAVE_GOLD}
|
||||
. endif
|
||||
. endif # ${_HAVE_GOLD:U} == ""
|
||||
. endif # ${USETOOLS:Uno} != "yes"
|
||||
|
||||
. if !defined(HOSTPROG) && !defined(HOSTLIB)
|
||||
# LSC FIXME: Override MACHINE as the native minix host make command will set
|
||||
# it to i686.
|
||||
. if ${MACHINE_ARCH} == "i386"
|
||||
MACHINE:= i386
|
||||
MACHINE:= i386
|
||||
. endif
|
||||
. endif # !defined(HOSTPROG) && !defined(HOSTLIB)
|
||||
.endif # __uname_s == "Minix"
|
||||
|
||||
#
|
||||
# linker script files that have to be specified explicitely for the gold linker
|
||||
#
|
||||
|
||||
LDS_PATH= ${NETBSDSRCDIR}/external/gpl3/binutils/ldscripts
|
||||
LDS_STATIC_BIN= ${LDS_PATH}/elf_${MACHINE_ARCH}_minix.xc
|
||||
LDS_DYNAMIC_BIN= ${LDS_PATH}/elf_${MACHINE_ARCH}_minix.xc
|
||||
LDS_RELOC= ${LDS_PATH}/elf_${MACHINE_ARCH}_minix.xr
|
||||
LDS_SHARED_LIB= ${LDS_PATH}/elf_${MACHINE_ARCH}_minix.xsc
|
||||
LDS_N= ${LDS_PATH}/elf_${MACHINE_ARCH}_minix.xbn
|
||||
.endif # defined(__MINIX)
|
||||
|
||||
MAKECONF?= /etc/mk.conf
|
||||
|
||||
@@ -317,6 +317,20 @@ _CCLINK.${_P}= ${CXX} ${_CCLINKFLAGS}
|
||||
# Language-independent definitions.
|
||||
.for _P in ${PROGS} ${PROGS_CXX} # {
|
||||
|
||||
.if defined(__MINIX) && ${HAVE_GOLD:U} != ""
|
||||
. if ${LD_STATIC:U} != "-static"
|
||||
GOLDLINKERSCRIPT?= ${LDS_DYNAMIC_BIN}
|
||||
. else
|
||||
GOLDLINKERSCRIPT?= ${LDS_STATIC_BIN}
|
||||
. endif
|
||||
|
||||
GOLDLINKERSCRIPT.${_P}?= ${GOLDLINKERSCRIPT}
|
||||
|
||||
. if ${GOLDLINKERSCRIPT.${_P}:U} != ""
|
||||
LDFLAGS.${_P}:=-Wl,--script,${GOLDLINKERSCRIPT.${_P}} ${LDFLAGS.${_P}}
|
||||
. endif
|
||||
.endif # defined(__MINIX) && ${HAVE_GOLD:U} == ""
|
||||
|
||||
BINDIR.${_P}?= ${BINDIR}
|
||||
PROGNAME.${_P}?= ${_P}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user