1.include "../../Makefile.inc1"
2.include "../Makefile.block2"
3
4.PATH: ${SRCDIR}/ld
5
6PROG=	ld.bfd
7MFILE=	ld${MANPAGEVER}.1
8MAN=	${MFILE}
9SRCS+=	ldgram.y	\
10	ldlex.l		\
11	lexsup.c	\
12	ldlang.c	\
13	mri.c		\
14	ldctor.c	\
15	ldmain.c	\
16	ldwrite.c	\
17	ldexp.c		\
18	ldemul.c	\
19	ldver.c		\
20	ldmisc.c	\
21	ldfile.c	\
22	ldcref.c	\
23	plugin.c	\
24	ldbuildid.c
25LDADD=	${LDADD_CTF} ${LDADD_BFD} ${LDADD_IBERTY} -lz
26
27LIBEXEC_BINUTILS=	${BINDIR}/..
28SCRIPTDIR=		${LIBEXEC_BINUTILS}/ldscripts
29ELF_SCR_EXT=		x xbn xc xd xdc xdw xn xr xs xsc xsw xu xw
30
31.include "Makefile.x86_64"
32
33# We need to change CFLAGS, so that not to pick up bulibs's config.h first.
34BULIBS_INC:=	# empty
35
36CFLAGS+=	-I${SRCDIR}/include -I${SRCDIR}/bfd
37CFLAGS+=	-I${SRCDIR}/ld -I${.OBJDIR} -I${.CURDIR}
38CFLAGS+=	${_BULIBS_INC}	# for bfd.h
39
40CFLAGS+=	-DSCRIPTDIR=\"${TOOLS_PREFIX}${LIBEXEC_BINUTILS}\"
41CFLAGS+=	-DBINDIR=\"${TOOLS_PREFIX}${LIBEXEC_BINUTILS}\"
42CFLAGS+=	-DTOOLBINDIR=\"${TOOLS_PREFIX}${LIBEXEC_BINUTILS}\"
43CFLAGS+=	-DENABLE_PLUGINS -DHAVE_CONFIG_H
44CFLAGS+=	-DTARGET_SYSTEM_ROOT=\"${USRDATA_PREFIX}\"
45
46CFLAGS+=	-DELF_LIST_OPTIONS=TRUE
47CFLAGS+=	-DELF_SHLIB_LIST_OPTIONS=TRUE
48CFLAGS+=	-DELF_PLT_UNWIND_LIST_OPTIONS=TRUE
49
50# XXX: Do we want -Wl,-z,relro on by default? Differs for ld.bfd and lg.gold.
51CFLAGS+=	-DDEFAULT_LD_Z_RELRO=0
52
53# link-time optimization requires dlopen() which means ld cannot be built
54# statically and also support -plugin, not even for cross-tools.
55.if !defined(REALLY_NOSHARED)
56.undef NOSHARED
57.endif
58
59ldemul.c: ldemul-list.h
60
61CLEANDIRS+=	ldscripts tmpdir
62CLEANFILES+=	ldemul-list.h stringify.sed
63
64EMXFR=
65EMLST=
66.for _e in ${EMS}
67EMXFR+=	extern ld_emulation_xfer_type ld_${_e}_emulation;
68EMLST+=	&ld_${_e}_emulation,
69.endfor
70
71ldemul-list.h:
72	echo "${EMXFR}" > ${.TARGET}
73	echo "#define EMULATION_LIST ${EMLST} 0" >> ${.TARGET}
74
75stringify.sed:
76	${LN} -sf ${SRCDIR}/ld/emultempl/astring.sed ${.TARGET}
77
78install-ldscripts: ${LDSCRIPTS:S|^|ldscripts/|}
79	${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
80	     ${.ALLSRC} ${DESTDIR}${SCRIPTDIR}
81
82.if defined(IS_PRIMARY)
83MLINKS+=	${MFILE} ld.1
84.endif
85
86afterinstall: install-ldscripts
87
88CLEANDIRS+=	ldscripts tmpdir
89CLEANFILES+=	ldemul-list.h stringify.sed
90
91.include <bsd.prog.mk>
92