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