1# $OpenBSD: Makefile,v 1.7 2024/03/26 22:26:04 kettenis Exp $ 2 3NOMAN= # 4 5.if ${MACHINE} == "riscv64" 6 7PROG= BOOTRISCV64.EFI 8OBJFMT= binary 9INSTALL_STRIP= 10BINDIR= /usr/mdec 11SRCS= start.S self_reloc.c efiboot.c conf.c exec.c 12SRCS+= efidev.c efipxe.c efirng.c fdt.c 13SRCS+= softraid_riscv64.c efiriscv.c 14 15S= ${.CURDIR}/../../../.. 16EFIDIR= ${S}/stand/efi 17 18OBJCOPY?= objcopy 19OBJDUMP?= objdump 20 21LDFLAGS+=-nostdlib -T ${.CURDIR}/ldscript.riscv64 -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 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/riscv64 ${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/riscv64 49CPPFLAGS+= -D_STANDALONE -DBOOT_STTY 50CPPFLAGS+= -DSMALL -DSLOW -DNOBYFOUR -D__INTERNAL_LIBSA_CREAD 51CPPFLAGS+= -DNEEDS_HEAP_H -DFWRANDOM 52CPPFLAGS+= -march=rv64gc --target=riscv64 -mno-relax 53COPTS+= -Wno-attributes -Wno-format 54COPTS+= -ffreestanding -fno-stack-protector 55COPTS+= -fshort-wchar -fPIC -fno-builtin 56COPTS+= -Wall -Werror 57 58PROG.elf= ${PROG:S/.EFI/.elf/} 59CLEANFILES+= ${PROG.elf} ${PROG.elf}.tmp 60 61${PROG}: ${PROG.elf} 62 ${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \ 63 -j .dynamic -j .dynsym -j .dynstr -j .rel -j .rel.dyn \ 64 -j .rela -j .rela.dyn -j .reloc \ 65 --output-target=${OBJFMT} ${PROG.elf} ${.TARGET} 66 67.include <bsd.prog.mk> 68 69${PROG.elf}: ${OBJS} 70 ${LD} ${LDFLAGS} -o ${.TARGET}.tmp ${OBJS} ${LDADD} 71 @if ${OBJDUMP} -t ${.TARGET}.tmp | grep 'UND'; then \ 72 (echo Undefined symbols; false); \ 73 fi 74 mv ${.TARGET}.tmp ${.TARGET} 75 76.if !make(clean) && !make(cleandir) && !make(includes) && !make(obj) 77.BEGIN: 78 @([ -h machine ] || ln -s ${.CURDIR}/../../../${MACHINE}/include machine) 79.NOPATH: machine 80CLEANFILES+= machine 81.endif 82 83.else 84NOPROG=yes 85.include <bsd.prog.mk> 86.endif 87