1 # $NetBSD: Makefile,v 1.12 2025/08/24 17:57:27 christos Exp $ 2 3 CPPFLAGS+= -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 18 SCRIPTSDIR= /usr/libdata 19 20 PROG= ld 21 SRCS= ${G_OFILES:.o=.c} 22 23 COPTS.ldgram.c = -Wno-stack-protector 24 25 PROGDPLIBS+= gnuctf ${TOP}/${BFDSUBDIR}/libgnuctf 26 PROGDPLIBS+= bfd ${TOP}/${BFDSUBDIR}/libbfd 27 PROGDPLIBS+= sframe ${TOP}/${BFDSUBDIR}/libsframe 28 PROGDPLIBS+= iberty ${TOP}/${BFDSUBDIR}/libiberty 29 30 TEXINFO= ${G_TEXINFOS} 31 COMMONOBJDIR!= cd ${TOP}/usr.bin/common && ${PRINTOBJDIR} 32 INFOFLAGS= -I${COMMONOBJDIR} -I${DIST}/ld -I${DIST}/bfd/doc -I${DIST}/libiberty 33 34 FILESDIR= ${SCRIPTSDIR}/ldscripts 35 36 .PATH: ${COMMONOBJDIR} ${DIST}/ld ${DIST}/ld/emulparams \ 37 ${DIST}/ld/emultempl ${DIST}/ld/scripttempl ldscripts 38 39 BUILDSYMLINKS+= ${DIST}/ld/emultempl/stringify.sed stringify.sed 40 BUILDSYMLINKS+= 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 66 DPSRCS+= .depend.${f} e${f}.c 67 CLEANFILES+= .depend.${f} e${f}.c 68 69 e${f}.c: ${DIST}/ld/genscripts.sh ${.CURDIR}/Makefile stringify.sed 70 ${_MKTARGET_CREATE} 71 unset MACHINE || true; \ 72 mkdir -p ldscripts && \ 73 NATIVE=yes ${HOST_SH} ${DIST}/ld/genscripts.sh ${DIST}/ld \ 74 ${LIBDIR} "/usr" "/usr/bin" \ 75 ${G_target_alias} ${G_target_alias} ${G_target_alias} \ 76 "" "" ${G_EMUL} ${LIBDIR} yes ${G_enable_initfini_array} \ 77 ${f} "${G_target_alias}" 78 79 . if ${BINUTILS_MACHINE_ARCH} == "x86_64" || \ 80 ${BINUTILS_MACHINE_ARCH} == "sparc64" || \ 81 ${BINUTILS_MACHINE_ARCH} == "riscv64" || \ 82 !empty(BINUTILS_MACHINE_ARCH:Maarch64*) || \ 83 !empty(BINUTILS_MACHINE_ARCH:Mearm*) || \ 84 !empty(BINUTILS_MACHINE_ARCH:Marm*) || \ 85 !empty(BINUTILS_MACHINE_ARCH:Mmips64*) || \ 86 !empty(BINUTILS_MACHINE_ARCH:Mmipsn64*) 87 . for e in x xbn xc xd xdc xdw xn xr xs xsc xsw xu xw 88 . if exists(ldscripts/${f}.${e}) 89 FILES+= ${f}.${e} 90 . endif 91 . endfor 92 . endif 93 . if ${BINUTILS_MACHINE_ARCH} == "x86_64" 94 . for e in xce xdce xde xdwe xe xsce xse xswe xwe 95 . if exists(ldscripts/${f}.${e}) 96 FILES+= ${f}.${e} 97 . endif 98 . endfor 99 . endif 100 .endfor 101 102 .include <bsd.prog.mk> 103 .include <bsd.info.mk> 104 .include <bsd.subdir.mk> 105 106 # Make sure we use the pre-generated C files 107 .l.c .y.c .y.h: 108 @true 109 110 cleandir: __cleanldscripts 111 __cleanldscripts: 112 -rm -rf ldscripts tmpdir 113 114 LDADD+= -lintl -lz 115 DPADD+= ${LIBINTL} ${LIBZ} 116