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