1# $OpenBSD: Makefile,v 1.23 2024/06/30 18:17:09 deraadt Exp $ 2 3NOMAN= # 4 5.if ${MACHINE} == "arm64" 6 7PROG= BOOTAA64.EFI 8OBJFMT= binary 9INSTALL_STRIP= 10BINDIR= /usr/mdec 11SRCS= start.S self_reloc.c efiboot.c conf.c exec.c efiacpi.c 12SRCS+= efidev.c efipxe.c efirng.c fdt.c smbios.c 13SRCS+= softraid_arm64.c 14 15S= ${.CURDIR}/../../../.. 16EFIDIR= ${S}/stand/efi 17 18OBJCOPY?= objcopy 19OBJDUMP?= objdump 20 21LDFLAGS+=-nostdlib -T ${.CURDIR}/ldscript.arm64 -Bsymbolic -shared 22LDFLAGS+=--pack-dyn-relocs=none --no-execute-only 23 24.PATH: ${S}/stand/boot 25SRCS+= boot.c cmd.c vars.c 26 27.PATH: ${S}/lib/libsa 28SRCS+= alloc.c ctime.c exit.c getchar.c hexdump.c \ 29 memcmp.c memcpy.c memmove.c memset.c \ 30 printf.c putchar.c snprintf.c strchr.c strcmp.c strerror.c strncmp.c \ 31 strncpy.c strtol.c strtoll.c 32SRCS+= close.c closeall.c cons.c cread.c dev.c disklabel.c dkcksum.c fchmod.c \ 33 fstat.c lseek.c open.c read.c readdir.c stat.c 34SRCS+= loadfile.c arc4.c 35SRCS+= ufs.c ufs2.c cd9660.c 36SRCS+= arp.c ether.c globals.c in_cksum.c net.c netif.c netudp.c tftp.c 37SRCS+= aes_xts.c bcrypt_pbkdf.c blowfish.c explicit_bzero.c hmac_sha1.c \ 38 pkcs5_pbkdf2.c rijndael.c sha1.c sha2.c softraid.c 39 40.PATH: ${S}/lib/libkern/arch/arm64 ${S}/lib/libkern 41SRCS+= divdi3.c moddi3.c qdivrem.c strlcat.c strlcpy.c strlen.c 42 43.PATH: ${S}/lib/libz 44SRCS+= adler32.c crc32.c inflate.c inftrees.c 45 46CPPFLAGS+= -nostdinc 47CPPFLAGS+= -I${S} -I. -I${.CURDIR} 48CPPFLAGS+= -I${EFIDIR}/include -I${EFIDIR}/include/arm64 49CPPFLAGS+= -D_STANDALONE -DBOOT_STTY 50CPPFLAGS+= -DSMALL -DSLOW -D__INTERNAL_LIBSA_CREAD 51CPPFLAGS+= -DNEEDS_HEAP_H -DMDRANDOM -DFWRANDOM 52COPTS+= -Wno-attributes -Wno-format 53COPTS+= -ffreestanding -fno-stack-protector 54COPTS+= -fshort-wchar -fPIC -fno-builtin 55COPTS+= -Wall -Werror 56 57PROG.elf= ${PROG:S/.EFI/.elf/} 58CLEANFILES+= ${PROG.elf} ${PROG.elf}.tmp 59 60${PROG}: ${PROG.elf} 61 ${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \ 62 -j .dynamic -j .dynsym -j .dynstr -j .rel -j .rel.dyn \ 63 -j .rela -j .rela.dyn -j .reloc \ 64 --output-target=${OBJFMT} ${PROG.elf} ${.TARGET} 65 66.include <bsd.prog.mk> 67 68${PROG.elf}: ${OBJS} 69 ${LD} ${LDFLAGS} -o ${.TARGET}.tmp ${OBJS} ${LDADD} 70 @if ${OBJDUMP} -t ${.TARGET}.tmp | grep 'UND'; then \ 71 (echo Undefined symbols; false); \ 72 fi 73 mv ${.TARGET}.tmp ${.TARGET} 74 75.if !make(clean) && !make(cleandir) && !make(includes) && !make(obj) 76.BEGIN: 77 @([ -h machine ] || ln -s ${.CURDIR}/../../../${MACHINE}/include machine) 78.NOPATH: machine 79CLEANFILES+= machine 80.endif 81 82.else 83NOPROG=yes 84.include <bsd.prog.mk> 85.endif 86 87DTC= dtc 88DTCOPTS= -p 16384 -H epapr 89update-blob: 90 ${DTC} ${DTCOPTS} -O asm -o ${.CURDIR}/dt_blob.S ${.CURDIR}/acpi.dts 91