1# $NetBSD: Makefile,v 1.40 2024/06/30 16:10:22 christos Exp $ 2 3CPPFLAGS+= -I${.CURDIR}/arch/${BINUTILS_MACHINE_ARCH} \ 4 -I${DIST}/ld \ 5 -DDEFAULT_EMULATION=\"${G_EMUL}\" \ 6 -DSCRIPTDIR=\"${SCRIPTSDIR}\" \ 7 -DTARGET=\"${G_target_alias}\" \ 8 -DBINDIR=\"/usr/bin\" \ 9 -DTOOLBINDIR=\"/usr/bin\" \ 10 -DENABLE_PLUGINS \ 11 -DELF_LIST_OPTIONS=true \ 12 -DELF_SHLIB_LIST_OPTIONS=true \ 13 -DELF_PLT_UNWIND_LIST_OPTIONS=true 14 15.include "${.CURDIR}/../common/Makefile.inc" 16.include "${.CURDIR}/arch/${BINUTILS_MACHINE_ARCH}/defs.mk" 17 18SCRIPTSDIR= /usr/libdata 19 20PROG= ld 21SRCS= ${G_OFILES:.o=.c} 22 23COPTS.ldgram.c = -Wno-stack-protector 24 25PROGDPLIBS+= gnuctf ${TOP}/${BFDSUBDIR}/libgnuctf 26PROGDPLIBS+= bfd ${TOP}/${BFDSUBDIR}/libbfd 27PROGDPLIBS+= sframe ${TOP}/${BFDSUBDIR}/libsframe 28PROGDPLIBS+= iberty ${TOP}/${BFDSUBDIR}/libiberty 29 30TEXINFO= ${G_TEXINFOS} 31COMMONOBJDIR!= cd ${TOP}/usr.bin/common && ${PRINTOBJDIR} 32INFOFLAGS= -I${COMMONOBJDIR} -I${DIST}/ld -I${DIST}/bfd/doc -I${DIST}/libiberty 33 34FILESDIR= ${SCRIPTSDIR}/ldscripts 35 36.PATH: ${COMMONOBJDIR} ${DIST}/ld ${DIST}/ld/emulparams \ 37 ${DIST}/ld/emultempl ${DIST}/ld/scripttempl ldscripts 38 39BUILDSYMLINKS+= ${DIST}/ld/emultempl/stringify.sed stringify.sed 40BUILDSYMLINKS+= gen-doc.texi configdoc.texi 41 42${PROG}.info: configdoc.texi bfdver.texi 43 44.for f in ${G_EMULATION_OFILES:S/^e//:R} 45.if exists(.depend.${f}) && !(make(clean) || make(cleandir)) 46.include ".depend.${f}" 47.endif 48 49.depend.${f}: ${f}.sh 50 ${_MKTARGET_CREATE} 51 (alias source_sh=.; \ 52 srcdir=${DIST}/ld EMULATION_NAME=$f . ${>:M*.sh} && \ 53 if [ x"$$TEMPLATE_NAME" != x ]; then \ 54 temp_name=$$TEMPLATE_NAME.em; \ 55 else \ 56 temp_name=; \ 57 fi; \ 58 if [ x"$$SCRIPT_NAME" != x ]; then \ 59 script=$$SCRIPT_NAME.sc; \ 60 else \ 61 script=; \ 62 fi; \ 63 echo "e${f}.c: $$temp_name $$script" \ 64 ) >$@ 65 66DPSRCS+= .depend.${f} e${f}.c 67CLEANFILES+= .depend.${f} e${f}.c 68 69e${f}.c: ${DIST}/ld/genscripts.sh ${.CURDIR}/Makefile stringify.sed 70 ${_MKTARGET_CREATE} 71 unset MACHINE || true; \ 72 NATIVE=yes ${HOST_SH} ${DIST}/ld/genscripts.sh ${DIST}/ld \ 73 ${LIBDIR} "/usr" "/usr/bin" \ 74 ${G_target_alias} ${G_target_alias} ${G_target_alias} \ 75 "" "" ${G_EMUL} ${LIBDIR} yes ${G_enable_initfini_array} \ 76 ${f} "${G_target_alias}" 77 78. if ${BINUTILS_MACHINE_ARCH} == "x86_64" || \ 79 ${BINUTILS_MACHINE_ARCH} == "sparc64" || \ 80 ${BINUTILS_MACHINE_ARCH} == "riscv64" || \ 81 !empty(BINUTILS_MACHINE_ARCH:Maarch64*) || \ 82 !empty(BINUTILS_MACHINE_ARCH:Mearm*) || \ 83 !empty(BINUTILS_MACHINE_ARCH:Marm*) || \ 84 !empty(BINUTILS_MACHINE_ARCH:Mmips64*) || \ 85 !empty(BINUTILS_MACHINE_ARCH:Mmipsn64*) 86. for e in x xbn xc xd xdc xdw xn xr xs xsc xsw xu xw 87. if exists(ldscripts/${f}.${e}) 88FILES+= ${f}.${e} 89. endif 90. endfor 91. endif 92. if ${BINUTILS_MACHINE_ARCH} == "x86_64" 93. for e in xce xdce xde xdwe xe xsce xse xswe xwe 94. if exists(ldscripts/${f}.${e}) 95FILES+= ${f}.${e} 96. endif 97. endfor 98. endif 99.endfor 100 101.include <bsd.prog.mk> 102.include <bsd.info.mk> 103.include <bsd.subdir.mk> 104 105# Make sure we use the pre-generated C files 106.l.c .y.c .y.h: 107 @true 108 109cleandir: __cleanldscripts 110__cleanldscripts: 111 -rm -rf ldscripts tmpdir 112 113LDADD+= -lintl -lz 114DPADD+= ${LIBINTL} ${LIBZ} 115