1#	$OpenBSD: Makefile.bsd-wrapper,v 1.24 2021/11/23 10:30:08 robert Exp $
2
3.include <bsd.own.mk>
4
5TARGET_ARCH?=	${MACHINE_ARCH}
6
7SUBDIRS=	opcodes bfd
8CONF_SUBDIRS=	opcodes bfd
9
10CFLAGS+=	${PIE_DEFAULT}
11XCFLAGS=	CC="${CC}" CFLAGS="${CFLAGS} ${COPTS}" LDFLAGS="${LDSTATIC}"
12# This allows moving the whole binutils installation around for
13# testing purposes
14PREFIX=/usr
15.if ${PREFIX} != "/usr"
16MANDIR=${PREFIX}/share/man/man
17.endif
18
19MAN=		binutils/doc/addr2line.1 binutils/doc/objcopy.1 \
20		binutils/doc/objdump.1 binutils/doc/readelf.1 \
21		c++filt.1
22
23#### gdb comes from older binutils at the moment
24###CONF_SUBDIRS+=      gdb
25###SUBDIRS+=   gdb
26###INST_SUBDIRS+=      gdb
27###MAN+=               gdb/gdb.1
28
29SUBDIRS+=	binutils
30CONF_SUBDIRS+=	binutils
31INST_SUBDIRS+=	binutils
32MAN+=		binutils/doc/ranlib.1 \
33		binutils/doc/strings.1 binutils/doc/strip.1
34
35.if (${TARGET_ARCH} != "aarch64" && ${TARGET_ARCH} != "powerpc64" && \
36    ${TARGET_ARCH} != "riscv64")
37SUBDIRS+=	 ld gas
38CONF_SUBDIRS+=	 ld gas
39INST_SUBDIRS+=	 ld gas
40MAN+=		gas/doc/as.1	ld/ld.bfd.1
41.if ${AR_VERSION:L} == "binutils"
42MAN+=		binutils/doc/ar.1
43.else
44# skip installing ar(1) which is am__EXEEXT_7
45SKIP_AR=	am__EXEEXT_7=
46.endif
47.if ${LINKER_VERSION:L} == "bfd"
48maninstall:
49		cd ${DESTDIR}${MANDIR}1 && rm -f ld.1 && ln ld.bfd.1 ld.1
50.endif
51.endif
52
53# Used by the GNU Makefile
54ALL_MODULES=${SUBDIRS:S/^/all-/g}
55CONFIGURE_MODULES=${CONF_SUBDIRS:S/^/configure-/g}
56CONFIGURE_HOST_MODULES=${CONF_SUBDIRS:S/^/configure-/g}
57ALL_HOST_MODULES=${SUBDIRS:S/^/all-/g}
58INSTALL_MODULES=${INST_SUBDIRS:S/^/install-/g}
59INFO_HOST_MODULES=${SUBDIRS:S/^/info-/g}
60INSTALL_INFO_HOST_MODULES=${INST_SUBDIRS:S/^/install-info-/g}
61
62.if defined(CROSSDIR)
63CONFIGTARGET=--target=${TARGET_ARCH}-unknown-openbsd${OSREV}
64.else
65CONFIGTARGET=
66.endif
67
68.if ${TARGET_ARCH} == "aarch64" || ${TARGET_ARCH} == "powerpc64" || \
69    ${TARGET_ARCH} == "riscv64"
70CONFIGTARGET+=--without-gnu-ld
71CONFIGTARGET+=--without-gnu-as
72.endif
73
74all:	config.status
75.for t in all info
76	SUBDIRS='${SUBDIRS}' \
77	  CONFIGURE_HOST_MODULES='${CONFIGURE_HOST_MODULES}' \
78	  ${MAKE} ${XCFLAGS} \
79	    scriptdir=${PREFIX}/libdata \
80	    tooldir=${PREFIX} \
81	    MAKEINFO='makeinfo --no-split' \
82	    MAKEINFOFLAGS='' \
83	    BSDSRCDIR=${BSDSRCDIR} \
84	    ALL_MODULES="${ALL_MODULES}" \
85	    ALL_HOST_MODULES='${ALL_HOST_MODULES}' \
86	    INFO_HOST_MODULES='${INFO_HOST_MODULES}' $t
87.endfor
88
89.include <bsd.own.mk>
90
91.ifdef GLOBAL_AUTOCONF_CACHE
92CF=	--cache-file=${GLOBAL_AUTOCONF_CACHE}
93.else
94CF=
95.endif
96
97do-config: .USE
98	PATH="/bin:/usr/bin:/sbin:/usr/sbin" \
99	MAKEINFO='makeinfo --no-split' \
100	${XCFLAGS} \
101	sh ${.CURDIR}/configure --prefix=${PREFIX} \
102	    --infodir='$${prefix}/share/info' \
103	    --disable-nls --disable-gdbtk --disable-install-libbfd ${CF} \
104	    ${CONFIGTARGET}
105	cd ${.OBJDIR} && \
106	    sed -e 's,SUBDIRS *=,SUBDIRS ?=,' <Makefile >Makefile.tmp && \
107	    mv -f Makefile.tmp Makefile
108	cd ${.OBJDIR} && \
109	    ${XCFLAGS} \
110	    ${MAKE} ${CONFIGURE_MODULES}
111
112gas/doc/as.1: config.status
113	cd ${.OBJDIR}/gas/doc && ${MAKE} as.1
114
115ld/ld.bfd.1: config.status
116	cd ${.OBJDIR}/ld && ${MAKE} ld.1
117	mv ld/ld.1 ld/ld.bfd.1
118
119config: do-config
120.ifndef GLOBAL_AUTOCONF_CACHE
121	-rm -f config.cache
122.endif
123
124config.status: do-config
125
126# Need to pass SUBDIRS because of install-info
127install: maninstall
128.for t in install install-info
129	${INSTALL} -d -o ${BINOWN} -g ${BINGRP} \
130	    ${DESTDIR}${PREFIX}/libdata/ldscripts
131	SUBDIRS='${INST_SUBDIRS}' ${MAKE} DESTDIR='${DESTDIR}' \
132	    INSTALL_MAN= \
133	    scriptdir=${PREFIX}/libdata \
134	    tooldir=${PREFIX} \
135	    BSDSRCDIR=${BSDSRCDIR} \
136	    INSTALL_MODULES='${INSTALL_MODULES}' \
137	    INSTALL_PROGRAM='${INSTALL} -c ${INSTALL_STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}' \
138	    INSTALL_DATA='${INSTALL} -c -o ${DOCOWN} -g ${DOCGRP} -m ${NONBINMODE}' \
139	    INSTALL_INFO_HOST_MODULES='${INSTALL_INFO_HOST_MODULES}' \
140	    ${SKIP_AR} \
141	      $t
142.endfor
143.if ${LINKER_VERSION:L} == "bfd"
144	rm -f ${DESTDIR}${PREFIX}/bin/ld
145	ln ${DESTDIR}${PREFIX}/bin/ld.bfd ${DESTDIR}${PREFIX}/bin/ld
146.endif
147
148clean cleandir:
149	-@if [ -e Makefile ]; then ${MAKE} distclean; fi
150
151c++filt.1: binutils/doc/cxxfilt.man
152	sed -e 's,@PROGRAM@,c++filt,' <${.CURDIR}/binutils/doc/cxxfilt.man >$@
153
154tags:
155	# Nothing here so far...
156
157BEFOREMAN=config.status
158
159.PHONY: config
160
161.include <bsd.obj.mk>
162.include <bsd.subdir.mk>
163
164.ifdef NOMAN
165maninstall:
166	@echo NOMAN is set
167.else
168.include <bsd.man.mk>
169.endif
170