1#	$OpenBSD: Makefile.bsd-wrapper,v 1.73 2008/08/22 13:02:53 kettenis Exp $
2
3NEW_BINUTILS=alpha amd64 arm hppa hppa64 i386 mips64 powerpc sh sparc sparc64
4
5.for _arch in ${MACHINE_ARCH}
6.  if !empty(NEW_BINUTILS:M${_arch})
7USING_NEW_BINUTILS?=yes
8.else
9USING_NEW_BINUTILS?=no
10.  endif
11.endfor
12
13SUBDIRS=	opcodes bfd
14CONF_SUBDIRS=	opcodes bfd
15
16# This allows moving the whole binutils installation around for
17# testing purposes
18PREFIX=/usr
19.if ${PREFIX} != "/usr"
20MANDIR=${PREFIX}/share/man/cat
21.endif
22
23MAN=		binutils/doc/objdump.1 c++filt.1
24
25CONF_SUBDIRS+=	gdb
26SUBDIRS+=	gdb
27INST_SUBDIRS+=	gdb
28MAN+=		gdb/gdb.1
29
30.if ${USING_NEW_BINUTILS:L} == "yes"
31SUBDIRS+=	binutils ld gas
32CONF_SUBDIRS+=	binutils ld gas
33INST_SUBDIRS+=	binutils ld gas
34MAN+=		binutils/doc/addr2line.1 binutils/doc/ar.1 \
35		binutils/doc/objcopy.1 binutils/doc/ranlib.1 \
36		binutils/doc/readelf.1 binutils/doc/strings.1 \
37		binutils/doc/strip.1 \
38		gas/doc/as.1 ld/ld.1
39.  else
40CONF_SUBDIRS=${SUBDIRS}
41CONF_SUBDIRS+= binutils
42.endif
43
44# Used by the GNU Makefile
45ALL_MODULES=${SUBDIRS:S/^/all-/g}
46CONFIGURE_MODULES=${CONF_SUBDIRS:S/^/configure-/g}
47CONFIGURE_HOST_MODULES=${CONF_SUBDIRS:S/^/configure-/g}
48ALL_HOST_MODULES=${SUBDIRS:S/^/all-/g}
49INSTALL_MODULES=${INST_SUBDIRS:S/^/install-/g}
50INFO_HOST_MODULES=${SUBDIRS:S/^/info-/g}
51INSTALL_INFO_HOST_MODULES=${INST_SUBDIRS:S/^/install-info-/g}
52
53# cross-compilation
54.if defined(TARGET_ARCH)
55CONFIGTARGET=--target=${TARGET_ARCH}-unknown-openbsd${OSREV}
56.else
57CONFIGTARGET=
58.endif
59
60all:	config.status
61	SUBDIRS='${SUBDIRS}' \
62	  CONFIGURE_HOST_MODULES='${CONFIGURE_HOST_MODULES}' \
63	  ${MAKE} CC="${CC}" \
64	    CFLAGS="${CFLAGS} ${COPTS}" LDFLAGS=${LDSTATIC} \
65	    scriptdir=${PREFIX}/libdata \
66	    tooldir=${PREFIX} \
67	    MAKEINFO='makeinfo --no-split' \
68	    MAKEINFOFLAGS='' \
69	    BSDSRCDIR=${BSDSRCDIR} \
70	    ALL_MODULES="${ALL_MODULES}" \
71	    ALL_HOST_MODULES='${ALL_HOST_MODULES}' \
72	    INFO_HOST_MODULES='${INFO_HOST_MODULES}' all info
73.if ${USING_NEW_BINUTILS:L} != "yes"
74	cd ${.OBJDIR}/binutils && \
75	    ${MAKE} CC="${CC}" CFLAGS="${CFLAGS} ${COPTS}" \
76	    LDFLAGS=${LDSTATIC} objdump
77.endif
78
79.include <bsd.own.mk>
80
81.ifdef GLOBAL_AUTOCONF_CACHE
82CF=	--cache-file=${GLOBAL_AUTOCONF_CACHE}
83.else
84CF=
85.endif
86
87do-config: .USE
88	PATH="/bin:/usr/bin:/sbin:/usr/sbin" \
89	MAKEINFO='makeinfo --no-split' \
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	    ${MAKE} ${CONFIGURE_MODULES}
99.if ${USING_NEW_BINUTILS:L} == "yes"
100	# We need to generate as.1 and ld.1 immediately after config.status
101	# for the manpage machinery to work properly.
102	cd ${.OBJDIR}/gas/doc && ${MAKE} as.1
103	cd ${.OBJDIR}/ld && ${MAKE} ld.1
104.endif
105
106config: do-config
107.ifndef GLOBAL_AUTOCONF_CACHE
108	-rm -f config.cache
109.endif
110
111config.status: do-config
112
113# Need to pass SUBDIRS because of install-info
114install: maninstall
115	SUBDIRS='${INST_SUBDIRS}' ${MAKE} DESTDIR='${DESTDIR}' \
116	    INSTALL_MAN= \
117	    scriptdir=${PREFIX}/libdata \
118	    tooldir=${PREFIX} \
119	    BSDSRCDIR=${BSDSRCDIR} \
120	    INSTALL_MODULES='${INSTALL_MODULES}' \
121	    INSTALL_PROGRAM='install -c -S' \
122	    INSTALL_INFO_HOST_MODULES='${INSTALL_INFO_HOST_MODULES}' \
123	      install install-info
124.if ${USING_NEW_BINUTILS:L} != "yes"
125	cd ${.OBJDIR}/binutils && \
126		${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} -o ${BINOWN} \
127		    -g ${BINGRP} -m ${BINMODE} objdump ${DESTDIR}${PREFIX}/bin
128.endif
129
130clean cleandir:
131	-@if [ -e Makefile ]; then ${MAKE} distclean; fi
132
133c++filt.1: binutils/cxxfilt.man
134	sed -e 's,@PROGRAM@,c++filt,' <${.CURDIR}/binutils/cxxfilt.man >$@
135
136depend:
137	# Nothing here so far...
138
139lint:
140	# Nothing here so far...
141
142tags:
143	# Nothing here so far...
144
145BEFOREMAN=config.status
146
147.PHONY: config
148
149.include <bsd.obj.mk>
150.include <bsd.subdir.mk>
151
152.ifdef NOMAN
153maninstall:
154	@echo NOMAN is set
155.else
156.include <bsd.man.mk>
157.endif
158