1# $OpenBSD: Makefile.common,v 1.24 2024/06/30 18:17:09 deraadt Exp $ 2 3S= ${.CURDIR}/../../../../.. 4SADIR= ${.CURDIR}/../.. 5EFIDIR= ${S}/stand/efi 6 7OBJCOPY?= objcopy 8OBJDUMP?= objdump 9 10EFI_HEAP_LIMIT= 0xc00000 11 12LDFLAGS+= -nostdlib -T${.CURDIR}/../${LDSCRIPT} -Bsymbolic -shared 13LDFLAGS+= --pack-dyn-relocs=none 14 15COPTS+= -DEFIBOOT -DFWRANDOM -DNEEDS_HEAP_H -I${.CURDIR}/.. 16COPTS+= -I${EFIDIR}/include -I${S}/stand/boot 17COPTS+= -ffreestanding -std=gnu99 18COPTS+= -fshort-wchar -fPIC -mno-red-zone 19.if ${SOFTRAID:L} == "yes" 20COPTS+= -DSOFTRAID 21COPTS+= -DIDLE_POWEROFF 22.endif 23COPTS+= -D_STANDALONE -nostdinc -fno-builtin 24 25AFLAGS+= -pipe -fPIC 26 27.PATH: ${.CURDIR}/.. 28SRCS+= self_reloc.c 29SRCS+= efiboot.c efidev.c efipxe.c efirng.c 30SRCS+= conf.c dev_i386.c cmd_i386.c diskprobe.c exec_i386.c machdep.c 31SRCS+= memprobe.c 32 33.PATH: ${S}/stand/boot 34SRCS+= boot.c bootarg.c cmd.c vars.c 35 36.PATH: ${S}/lib/libsa 37SRCS+= alloc.c ctime.c exit.c getchar.c hexdump.c \ 38 memcmp.c memcpy.c memmove.c memset.c printf.c \ 39 putchar.c snprintf.c strcmp.c strerror.c strlen.c strncmp.c strncpy.c \ 40 strtol.c strtoll.c 41SRCS+= close.c closeall.c cons.c cread.c dev.c disklabel.c dkcksum.c \ 42 fchmod.c fstat.c lseek.c open.c read.c readdir.c stat.c 43SRCS+= ufs.c ufs2.c cd9660.c 44.if ${SOFTRAID:L} == "yes" 45SRCS+= aes_xts.c bcrypt_pbkdf.c blowfish.c explicit_bzero.c hmac_sha1.c \ 46 pkcs5_pbkdf2.c rijndael.c sha1.c sha2.c softraid.c 47.endif 48 49.PATH: ${S}/lib/libz 50SRCS+= adler32.c crc32.c inflate.c inftrees.c 51 52.PATH: ${S}/lib/libkern 53SRCS+= ashldi3.c ashrdi3.c divdi3.c lshrdi3.c moddi3.c qdivrem.c 54SRCS+= strlcpy.c 55 56.PATH: ${SADIR}/libsa 57SRCS+= loadfile.c arc4.c elf64.c elf32.c 58 59.if ${SOFTRAID:L} == "yes" 60SRCS+= softraid_amd64.c 61.endif 62 63PROG.so= ${PROG:S/.EFI/.so/} 64CLEANFILES+= ${PROG.so} ${PROG.so}.tmp 65 66${PROG}: ${PROG.so} 67 ${OBJCOPY} -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \ 68 -j .rel.dyn -j .rela -j .rela.dyn -j .reloc \ 69 --target=${OBJFMT} ${PROG.so} ${.TARGET} 70 71.include <bsd.prog.mk> 72CFLAGS+= -Wno-pointer-sign 73CPPFLAGS+= -DSMALL -DSLOW -D__INTERNAL_LIBSA_CREAD 74CPPFLAGS+= -DHEAP_LIMIT=${EFI_HEAP_LIMIT} -DHIBERNATE 75 76${PROG.so}: ${OBJS} 77 ${LD} ${LDFLAGS} -o ${.TARGET}.tmp ${OBJS} ${LDADD} 78 @if ${OBJDUMP} -t ${.TARGET}.tmp | grep 'UND'; then \ 79 (echo Undefined symbols; false); \ 80 fi 81 mv ${.TARGET}.tmp ${.TARGET} 82