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