xref: /openbsd-src/gnu/usr.bin/binutils-2.17/Makefile.bsd-wrapper (revision 9f11ffb7133c203312a01e4b986886bc88c7d74b)
1#	$OpenBSD: Makefile.bsd-wrapper,v 1.16 2018/09/14 13:37:52 naddy 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/ar.1 binutils/doc/ranlib.1 \
33		binutils/doc/strings.1 binutils/doc/strip.1
34
35.if ${TARGET_ARCH} != "aarch64"
36SUBDIRS+=	ld gas
37CONF_SUBDIRS+=	ld gas
38INST_SUBDIRS+=	ld gas
39MAN+=		gas/doc/as.1	ld/ld.bfd.1
40.if ${LINKER_VERSION:L} == "bfd"
41MLINKS+=	ld.bfd.1 ld.1
42.endif
43.endif
44
45# Used by the GNU Makefile
46ALL_MODULES=${SUBDIRS:S/^/all-/g}
47CONFIGURE_MODULES=${CONF_SUBDIRS:S/^/configure-/g}
48CONFIGURE_HOST_MODULES=${CONF_SUBDIRS:S/^/configure-/g}
49ALL_HOST_MODULES=${SUBDIRS:S/^/all-/g}
50INSTALL_MODULES=${INST_SUBDIRS:S/^/install-/g}
51INFO_HOST_MODULES=${SUBDIRS:S/^/info-/g}
52INSTALL_INFO_HOST_MODULES=${INST_SUBDIRS:S/^/install-info-/g}
53
54.if defined(CROSSDIR)
55CONFIGTARGET=--target=${TARGET_ARCH}-unknown-openbsd${OSREV}
56.else
57CONFIGTARGET=
58.endif
59
60.if ${TARGET_ARCH} == "aarch64"
61CONFIGTARGET+=--without-gnu-ld
62CONFIGTARGET+=--without-gnu-as
63.endif
64
65all:	config.status
66	SUBDIRS='${SUBDIRS}' \
67	  CONFIGURE_HOST_MODULES='${CONFIGURE_HOST_MODULES}' \
68	  ${MAKE} ${XCFLAGS} \
69	    scriptdir=${PREFIX}/libdata \
70	    tooldir=${PREFIX} \
71	    MAKEINFO='makeinfo --no-split' \
72	    MAKEINFOFLAGS='' \
73	    BSDSRCDIR=${BSDSRCDIR} \
74	    ALL_MODULES="${ALL_MODULES}" \
75	    ALL_HOST_MODULES='${ALL_HOST_MODULES}' \
76	    INFO_HOST_MODULES='${INFO_HOST_MODULES}' all info
77
78.include <bsd.own.mk>
79
80.ifdef GLOBAL_AUTOCONF_CACHE
81CF=	--cache-file=${GLOBAL_AUTOCONF_CACHE}
82.else
83CF=
84.endif
85
86do-config: .USE
87	PATH="/bin:/usr/bin:/sbin:/usr/sbin" \
88	MAKEINFO='makeinfo --no-split' \
89	${XCFLAGS} \
90	sh ${.CURDIR}/configure --prefix=${PREFIX} \
91	    --infodir='$${prefix}/share/info' \
92	    --disable-nls --disable-gdbtk --disable-install-libbfd ${CF} \
93	    ${CONFIGTARGET}
94	cd ${.OBJDIR} && \
95	    sed -e 's,SUBDIRS *=,SUBDIRS ?=,' <Makefile >Makefile.tmp && \
96	    mv -f Makefile.tmp Makefile
97	cd ${.OBJDIR} && \
98	    ${XCFLAGS} \
99	    ${MAKE} ${CONFIGURE_MODULES}
100
101gas/doc/as.1: config.status
102	cd ${.OBJDIR}/gas/doc && ${MAKE} as.1
103
104ld/ld.bfd.1: config.status
105	cd ${.OBJDIR}/ld && ${MAKE} ld.1
106	mv ld/ld.1 ld/ld.bfd.1
107
108config: do-config
109.ifndef GLOBAL_AUTOCONF_CACHE
110	-rm -f config.cache
111.endif
112
113config.status: do-config
114
115# Need to pass SUBDIRS because of install-info
116install: maninstall
117	${INSTALL} -d -o ${BINOWN} -g ${BINGRP} \
118	    ${DESTDIR}${PREFIX}/libdata/ldscripts
119	SUBDIRS='${INST_SUBDIRS}' ${MAKE} DESTDIR='${DESTDIR}' \
120	    INSTALL_MAN= \
121	    scriptdir=${PREFIX}/libdata \
122	    tooldir=${PREFIX} \
123	    BSDSRCDIR=${BSDSRCDIR} \
124	    INSTALL_MODULES='${INSTALL_MODULES}' \
125	    INSTALL_PROGRAM='${INSTALL} -c -S ${INSTALL_STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}' \
126	    INSTALL_DATA='${INSTALL} -c -o ${DOCOWN} -g ${DOCGRP} -m ${NONBINMODE}' \
127	    INSTALL_INFO_HOST_MODULES='${INSTALL_INFO_HOST_MODULES}' \
128	      install install-info
129.if ${LINKER_VERSION:L} == "bfd"
130	rm -f ${DESTDIR}${PREFIX}/bin/ld
131	ln ${DESTDIR}${PREFIX}/bin/ld.bfd ${DESTDIR}${PREFIX}/bin/ld
132.endif
133
134clean cleandir:
135	-@if [ -e Makefile ]; then ${MAKE} distclean; fi
136
137c++filt.1: binutils/doc/cxxfilt.man
138	sed -e 's,@PROGRAM@,c++filt,' <${.CURDIR}/binutils/doc/cxxfilt.man >$@
139
140depend:
141	# Nothing here so far...
142
143tags:
144	# Nothing here so far...
145
146BEFOREMAN=config.status
147
148.PHONY: config
149
150.include <bsd.obj.mk>
151.include <bsd.subdir.mk>
152
153.ifdef NOMAN
154maninstall:
155	@echo NOMAN is set
156.else
157.include <bsd.man.mk>
158.endif
159