| @@ -1,120 +1,132 @@ | | | @@ -1,120 +1,132 @@ |
1 | # $NetBSD: Makefile,v 1.6 2009/11/27 14:39:39 skrll Exp $ | | 1 | # $NetBSD: Makefile,v 1.7 2009/12/13 09:38:22 mrg Exp $ |
2 | | | 2 | |
3 | .include <bsd.own.mk> | | 3 | .include <bsd.own.mk> |
4 | | | 4 | |
5 | TOP= ${NETBSDSRCDIR}/external/gpl3/binutils | | 5 | TOP= ${NETBSDSRCDIR}/external/gpl3/binutils |
6 | | | 6 | |
7 | .include "${.CURDIR}/../common/Makefile.inc" | | 7 | .include "${.CURDIR}/../common/Makefile.inc" |
8 | .include "${.CURDIR}/arch/${MACHINE_ARCH}/defs.mk" | | 8 | .include "${.CURDIR}/arch/${MACHINE_ARCH}/defs.mk" |
9 | | | 9 | |
10 | SCRIPTSDIR= /usr/libdata | | 10 | SCRIPTSDIR= /usr/libdata |
11 | | | 11 | |
12 | PROG= ld | | 12 | PROG= ld |
13 | SRCS= ${G_OFILES:.o=.c} | | 13 | SRCS= ${G_OFILES:.o=.c} |
14 | CPPFLAGS+= -I${.CURDIR}/arch/${MACHINE_ARCH} \ | | 14 | CPPFLAGS+= -I${.CURDIR}/arch/${MACHINE_ARCH} \ |
15 | -I${DIST}/ld \ | | 15 | -I${DIST}/ld \ |
16 | -DDEFAULT_EMULATION=\"${G_EMUL}\" \ | | 16 | -DDEFAULT_EMULATION=\"${G_EMUL}\" \ |
17 | -DSCRIPTDIR=\"${SCRIPTSDIR}\" \ | | 17 | -DSCRIPTDIR=\"${SCRIPTSDIR}\" \ |
18 | -DTARGET=\"${G_target_alias}\" \ | | 18 | -DTARGET=\"${G_target_alias}\" \ |
19 | -DBINDIR=\"/usr/bin\" \ | | 19 | -DBINDIR=\"/usr/bin\" \ |
20 | -DTOOLBINDIR=\"/usr/bin\" | | 20 | -DTOOLBINDIR=\"/usr/bin\" |
21 | | | 21 | |
22 | LDADD= -lintl | | 22 | LDADD= -lintl |
23 | DPADD= ${LIBINTL} | | 23 | DPADD= ${LIBINTL} |
24 | | | 24 | |
25 | COPTS.ldgram.c = -Wno-stack-protector | | 25 | COPTS.ldgram.c = -Wno-stack-protector |
26 | | | 26 | |
27 | BFDOBJ!= cd ${TOP}/${BFDSUBDIR}/libbfd && ${PRINTOBJDIR} | | 27 | BFDOBJ!= cd ${TOP}/${BFDSUBDIR}/libbfd && ${PRINTOBJDIR} |
28 | LDADD+= -L${BFDOBJ} -lbfd | | 28 | LDADD+= -L${BFDOBJ} -lbfd |
29 | .if ${MKPICLIB} != "no" | | 29 | .if ${MKPICLIB} != "no" |
30 | DPADD+= ${BFDOBJ}/libbfd_pic.a | | 30 | DPADD+= ${BFDOBJ}/libbfd_pic.a |
31 | .else | | 31 | .else |
32 | DPADD+= ${BFDOBJ}/libbfd.a | | 32 | DPADD+= ${BFDOBJ}/libbfd.a |
33 | .endif | | 33 | .endif |
34 | | | 34 | |
35 | IBERTYOBJ!= cd ${TOP}/${BFDSUBDIR}/libiberty && ${PRINTOBJDIR} | | 35 | IBERTYOBJ!= cd ${TOP}/${BFDSUBDIR}/libiberty && ${PRINTOBJDIR} |
36 | LDADD+= -L${IBERTYOBJ} -liberty | | 36 | LDADD+= -L${IBERTYOBJ} -liberty |
37 | DPADD+= ${IBERTYOBJ}/libiberty.a | | 37 | DPADD+= ${IBERTYOBJ}/libiberty.a |
38 | | | 38 | |
39 | TEXINFO= ${G_TEXINFOS} | | 39 | TEXINFO= ${G_TEXINFOS} |
40 | COMMONOBJDIR!= cd ${TOP}/usr.bin/common && ${PRINTOBJDIR} | | 40 | COMMONOBJDIR!= cd ${TOP}/usr.bin/common && ${PRINTOBJDIR} |
41 | INFOFLAGS= -I${COMMONOBJDIR} -I${DIST}/ld -I${DIST}/bfd/doc -I${DIST}/libiberty | | 41 | INFOFLAGS= -I${COMMONOBJDIR} -I${DIST}/ld -I${DIST}/bfd/doc -I${DIST}/libiberty |
42 | | | 42 | |
43 | FILESDIR= ${SCRIPTSDIR}/ldscripts | | 43 | FILESDIR= ${SCRIPTSDIR}/ldscripts |
44 | | | 44 | |
45 | .PATH: ${COMMONOBJDIR} ${DIST}/ld ${DIST}/ld/emulparams \ | | 45 | .PATH: ${COMMONOBJDIR} ${DIST}/ld ${DIST}/ld/emulparams \ |
46 | ${DIST}/ld/emultempl ${DIST}/ld/scripttempl ldscripts | | 46 | ${DIST}/ld/emultempl ${DIST}/ld/scripttempl ldscripts |
47 | | | 47 | |
48 | BUILDSYMLINKS+= ${G_STRINGIFY} stringify.sed | | 48 | BUILDSYMLINKS+= ${G_STRINGIFY} stringify.sed |
49 | BUILDSYMLINKS+= gen-doc.texi configdoc.texi | | 49 | BUILDSYMLINKS+= gen-doc.texi configdoc.texi |
50 | | | 50 | |
51 | ${PROG}.info: configdoc.texi bfdver.texi | | 51 | ${PROG}.info: configdoc.texi bfdver.texi |
52 | | | 52 | |
53 | .for f in ${G_EMULATION_OFILES:S/^e//:R} | | 53 | .for f in ${G_EMULATION_OFILES:S/^e//:R} |
54 | .if exists(.depend.${f}) | | 54 | .if exists(.depend.${f}) |
55 | .include ".depend.${f}" | | 55 | .include ".depend.${f}" |
56 | .endif | | 56 | .endif |
57 | | | 57 | |
58 | .depend.${f}: ${f}.sh | | 58 | .depend.${f}: ${f}.sh |
59 | ${_MKTARGET_CREATE} | | 59 | ${_MKTARGET_CREATE} |
60 | (srcdir=${DIST}/ld EMULATION_NAME=$f . ${>:M*.sh} && \ | | 60 | (srcdir=${DIST}/ld EMULATION_NAME=$f . ${>:M*.sh} && \ |
61 | if [ x"$$TEMPLATE_NAME" != x ]; then \ | | 61 | if [ x"$$TEMPLATE_NAME" != x ]; then \ |
62 | temp_name=$$TEMPLATE_NAME.em; \ | | 62 | temp_name=$$TEMPLATE_NAME.em; \ |
63 | else \ | | 63 | else \ |
64 | temp_name=; \ | | 64 | temp_name=; \ |
65 | fi; \ | | 65 | fi; \ |
66 | if [ x"$$SCRIPT_NAME" != x ]; then \ | | 66 | if [ x"$$SCRIPT_NAME" != x ]; then \ |
67 | script=$$SCRIPT_NAME.sc; \ | | 67 | script=$$SCRIPT_NAME.sc; \ |
68 | else \ | | 68 | else \ |
69 | script=; \ | | 69 | script=; \ |
70 | fi; \ | | 70 | fi; \ |
71 | echo "e${f}.c: $$temp_name $$script" \ | | 71 | echo "e${f}.c: $$temp_name $$script" \ |
72 | ) >$@ | | 72 | ) >$@ |
73 | | | 73 | |
74 | DPSRCS+= .depend.${f} e${f}.c | | 74 | DPSRCS+= .depend.${f} e${f}.c |
75 | CLEANFILES+= .depend.${f} e${f}.c | | 75 | CLEANFILES+= .depend.${f} e${f}.c |
76 | | | 76 | |
77 | # XXX super hack | | 77 | # XXX super hack |
78 | . if (${MACHINE_ARCH} == "x86_64" && \ | | 78 | . if (${MACHINE_ARCH} == "x86_64" && \ |
79 | ("${f}" == "elf_i386" || "${f}" == "i386nbsd")) | | 79 | ("${f}" == "elf_i386" || "${f}" == "i386nbsd")) |
80 | EMUL_LIB_PATH.${f}=/usr/lib/i386 | | 80 | EMUL_LIB_PATH.${f}=/usr/lib/i386 |
81 | . elif (${MACHINE_ARCH} == "sparc64" && \ | | 81 | . elif (${MACHINE_ARCH} == "sparc64" && \ |
82 | ("${f}" == "elf32_sparc" || "${f}" == "sparcnbsd")) | | 82 | ("${f}" == "elf32_sparc" || "${f}" == "sparcnbsd")) |
83 | EMUL_LIB_PATH.${f}=/usr/lib/sparc | | 83 | EMUL_LIB_PATH.${f}=/usr/lib/sparc |
84 | . else | | 84 | . else |
85 | EMUL_LIB_PATH.${f}=/usr/lib | | 85 | EMUL_LIB_PATH.${f}=/usr/lib |
| | | 86 | . elif ${MACHINE_ARCH} == "mips64el" |
| | | 87 | . if "${f}" == "elf32ltsmip" || "${f}" == "elf32btsmip" |
| | | 88 | EMUL_LIB_PATH.${f}:=/usr/lib/o32 |
| | | 89 | . elif "${f}" == "elf64btsmip" || "${f}" == "elf64btsmip" |
| | | 90 | EMUL_LIB_PATH.${f}:=/usr/lib/64 |
| | | 91 | . endif |
86 | . endif | | 92 | . endif |
87 | | | 93 | |
88 | #GENSCRIPTS = LIB_PATH='${LIB_PATH}' $(SHELL) $(srcdir)/genscripts.sh "${srcdir}" "${libdir}" "${prefix}" "${exec_prefix}" @host@ @target@ @ta rget_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@" @use_sysroot@ | | 94 | #GENSCRIPTS = LIB_PATH='${LIB_PATH}' $(SHELL) $(srcdir)/genscripts.sh "${srcdir}" "${libdir}" "${prefix}" "${exec_prefix}" @host@ @target@ @ta rget_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@" @use_sysroot@ |
89 | | | 95 | |
90 | e${f}.c: ${DIST}/ld/genscripts.sh ${.CURDIR}/Makefile stringify.sed | | 96 | e${f}.c: ${DIST}/ld/genscripts.sh ${.CURDIR}/Makefile stringify.sed |
91 | ${_MKTARGET_CREATE} | | 97 | ${_MKTARGET_CREATE} |
92 | unset MACHINE || true; \ | | 98 | unset MACHINE || true; \ |
93 | LIB_PATH=${EMUL_LIB_PATH.${f}} NATIVE=yes \ | | 99 | LIB_PATH=${EMUL_LIB_PATH.${f}} NATIVE=yes \ |
94 | ${HOST_SH} ${DIST}/ld/genscripts.sh ${DIST}/ld ${LIBDIR} "/usr" "/usr/bin" \ | | 100 | ${HOST_SH} ${DIST}/ld/genscripts.sh ${DIST}/ld ${LIBDIR} "/usr" "/usr/bin" \ |
95 | ${G_target_alias} ${G_target_alias} ${G_target_alias} \ | | 101 | ${G_target_alias} ${G_target_alias} ${G_target_alias} \ |
96 | ${G_EMUL} ${LIBDIR} yes ${f} "${G_target_alias}" | | 102 | ${G_EMUL} ${LIBDIR} yes ${f} "${G_target_alias}" |
97 | | | 103 | |
98 | .if ${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "sparc64" | | 104 | .if ${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "sparc64" || \ |
| | | 105 | ${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "mips64eb" |
99 | FILES+= ${f}.x ${f}.xbn ${f}.xn ${f}.xr ${f}.xu | | 106 | FILES+= ${f}.x ${f}.xbn ${f}.xn ${f}.xr ${f}.xu |
100 | | | 107 | |
101 | # XXX hack to find out if .xs exists - slow! | | 108 | # XXX hack to find out if .xs/.xc exists - slow! |
102 | HAS_XS!= grep '^GENERATE_SHLIB_SCRIPT' ${DIST}/ld/emulparams/${f}.sh || echo | | 109 | HAS_XS!= grep '^GENERATE_SHLIB_SCRIPT' ${DIST}/ld/emulparams/${f}.sh || echo |
| | | 110 | # XXX |
| | | 111 | #HAS_XC!= grep '^GENERATE_COMBRELOC_SCRIPT' ${DIST}/ld/emulparams/${f}.sh || echo |
103 | .if !empty(HAS_XS) | | 112 | .if !empty(HAS_XS) |
104 | FILES+= ${f}.xc ${f}.xd ${f}.xdc ${f}.xdw ${f}.xs ${f}.xsc ${f}.xsw ${f}.xw | | 113 | FILES+= ${f}.xc ${f}.xd ${f}.xdc ${f}.xdw ${f}.xs ${f}.xsc ${f}.xsw ${f}.xw |
| | | 114 | # only do this if we don't have GENERATE_SHLIB_SCRIPT |
| | | 115 | .elif ${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "mips64eb" |
| | | 116 | FILES+= ${f}.xc ${f}.xs ${f}.xsc ${f}.xsw ${f}.xw |
105 | .endif | | 117 | .endif |
106 | .endif # x64_64 || sparc64 | | 118 | .endif # x64_64 || sparc64 |
107 | | | 119 | |
108 | .endfor | | 120 | .endfor |
109 | | | 121 | |
110 | .include <bsd.prog.mk> | | 122 | .include <bsd.prog.mk> |
111 | .include <bsd.info.mk> | | 123 | .include <bsd.info.mk> |
112 | .include <bsd.subdir.mk> | | 124 | .include <bsd.subdir.mk> |
113 | | | 125 | |
114 | # Make sure we use the pre-generated C files | | 126 | # Make sure we use the pre-generated C files |
115 | .l.c .y.c .y.h: | | 127 | .l.c .y.c .y.h: |
116 | @true | | 128 | @true |
117 | | | 129 | |
118 | cleanprog: __cleanldscripts | | 130 | cleanprog: __cleanldscripts |
119 | __cleanldscripts: | | 131 | __cleanldscripts: |
120 | -rm -rf ldscripts tmpdir | | 132 | -rm -rf ldscripts tmpdir |