1*99d38c70Szrj.include "../../Makefile.inc1"
2*99d38c70Szrj.include "../Makefile.block1"
3*99d38c70Szrj
4*99d38c70SzrjLIB=		bfd
5*99d38c70SzrjINTERNALLIB=	true
6*99d38c70Szrj
7*99d38c70SzrjCONTRIBDIR=	${SRCDIR}/bfd
8*99d38c70Szrj.PATH:		${CONTRIBDIR}
9*99d38c70Szrj
10*99d38c70SzrjCFLAGS+=	-I${SRCDIR}/include -I${CONTRIBDIR} -I${.CURDIR} -I${.OBJDIR}
11*99d38c70SzrjCFLAGS+=	-DDEBUGDIR='"/usr/lib/debug"'  # no clue why this is needed
12*99d38c70SzrjFLAGS_GROUPS=	target plugins
13*99d38c70Szrj
14*99d38c70Szrj# BFD32_LIBS_CFILES
15*99d38c70SzrjSRCS=	archive.c archures.c bfd.c bfdio.c cache.c \
16*99d38c70Szrj	coff-bfd.c compress.c corefile.c elf-properties.c format.c \
17*99d38c70Szrj	hash.c init.c libbfd.c linker.c merge.c opncls.c reloc.c \
18*99d38c70Szrj	section.c simple.c stab-syms.c stabs.c syms.c targets.c \
19*99d38c70Szrj	binary.c ihex.c srec.c tekhex.c verilog.c
20*99d38c70Szrj
21*99d38c70Szrj# only when USE_MMAP (--with-mmap)
22*99d38c70Szrj#SRCS+= bfdwin.c
23*99d38c70Szrj
24*99d38c70Szrj# from Makefile, BFD_BACKENDS  (x86-64 specific)
25*99d38c70SzrjSRCS+=	elf64-x86-64.co elfxx-x86.c elf-ifunc.c elf-nacl.c elf-vxworks.c \
26*99d38c70Szrj	elf64.c elf.c elflink.c elf-attrs.c elf-strtab.c elf-eh-frame.c \
27*99d38c70Szrj	dwarf1.c dwarf2.c elf32-i386.c elf32.c \
28*99d38c70Szrj	pei-x86_64.c pex64igen.c cofflink.c coffgen.c \
29*99d38c70Szrj	elf64-gen.c elf32-gen.c
30*99d38c70Szrj
31*99d38c70Szrj# ALL_MACHINES_CFILES
32*99d38c70SzrjSRCS+=	cpu-i386.c cpu-iamcu.c cpu-l1om.c cpu-k1om.c
33*99d38c70Szrj
34*99d38c70Szrj# BFD64_LIBS_CFILES
35*99d38c70SzrjSRCS+=		archive64.c
36*99d38c70Szrj
37*99d38c70SzrjVECTORS=	x86_64_elf64_vec \
38*99d38c70Szrj		x86_64_pei_vec \
39*99d38c70Szrj		i386_elf32_vec \
40*99d38c70Szrj		iamcu_elf32_vec \
41*99d38c70Szrj		l1om_elf64_vec \
42*99d38c70Szrj		k1om_elf64_vec \
43*99d38c70Szrj		elf64_le_vec \
44*99d38c70Szrj		elf64_be_vec \
45*99d38c70Szrj		elf32_le_vec \
46*99d38c70Szrj		elf32_be_vec
47*99d38c70Szrj
48*99d38c70Szrj# plugin support mainly for LTO ar, nm, ranlib
49*99d38c70SzrjSRCS+=		plugin.c
50*99d38c70SzrjVECTORS+=	plugin_vec
51*99d38c70Szrj# allow users to put plugin dirs in common place for testing, but use relative to exec
52*99d38c70Szrjplugins_FLAGS+=	-DBINDIR=\"${TOOLS_PREFIX}${BINDIR}\" -DPLUGINLIBDIR=\"/usr/lib\"
53*99d38c70Szrjplugins_FLAGS+=	-DRELPLUGINDIR=\"/../bfd-plugins\" # standard one uses lib/bfd-plugins
54*99d38c70Szrjplugins_FLAGS_FILES=	plugin.c
55*99d38c70Szrj
56*99d38c70SzrjDEFAULT_VECTOR=	x86_64_elf64_vec
57*99d38c70SzrjARCHITECTURES=	bfd_i386_arch bfd_iamcu_arch bfd_l1om_arch bfd_k1om_arch
58*99d38c70Szrj
59*99d38c70Szrj_selvec=
60*99d38c70Szrj.for _v in ${VECTORS}
61*99d38c70Szrjtarget_FLAGS+= -DHAVE_${_v}
62*99d38c70Szrj.if !empty(_selvec)
63*99d38c70Szrj_selvec+= ,
64*99d38c70Szrj.endif
65*99d38c70Szrj_selvec+= &${_v}
66*99d38c70Szrj.endfor
67*99d38c70Szrjtarget_FLAGS+= -DSELECT_VECS='${_selvec}'
68*99d38c70Szrjtarget_FLAGS+= -DSELECT_ARCHITECTURES='${ARCHITECTURES:S/^/\&/:S/$/,/} 0'
69*99d38c70Szrjtarget_FLAGS+= -DDEFAULT_VECTOR=${DEFAULT_VECTOR}
70*99d38c70Szrjtarget_FLAGS_FILES=	targets.c archures.c
71*99d38c70Szrj
72*99d38c70Szrj${SRCS}: bfd.h
73*99d38c70Szrjtargets.c: targmatch.h
74*99d38c70Szrjelf32-gen.c elf32-i386.c elf64-x86-64.c: elf32-target.h
75*99d38c70Szrjelf64-gen.c elf64-x86-64.c: elf64-target.h
76*99d38c70Szrj
77*99d38c70Szrjtargmatch.h: config.bfd targmatch.sed
78*99d38c70Szrj	sed -f ${CONTRIBDIR}/targmatch.sed < ${CONTRIBDIR}/config.bfd \
79*99d38c70Szrj	> ${.TARGET}
80*99d38c70Szrj
81*99d38c70Szrjelf32-target.h: elfxx-target.h
82*99d38c70Szrj	sed -e s/NN/32/g < ${CONTRIBDIR}/elfxx-target.h > ${.TARGET}
83*99d38c70Szrjelf64-target.h: elfxx-target.h
84*99d38c70Szrj	sed -e s/NN/64/g < ${CONTRIBDIR}/elfxx-target.h > ${.TARGET}
85*99d38c70Szrjpex64igen.c: peXXigen.c
86*99d38c70Szrj	sed -e s/XX/pex64/g < ${CONTRIBDIR}/peXXigen.c > ${.TARGET}
87*99d38c70Szrj
88*99d38c70SzrjCLEANFILES=	bfd.h elf64-target.h elf32-target.h targmatch.h pex64igen.c
89*99d38c70Szrj
90*99d38c70Szrj.include <bsd.lib.mk>
91