1# $OpenBSD: Makefile,v 1.1 2021/04/28 19:01:00 drahn 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 14 15S= ${.CURDIR}/../../../.. 16EFIDIR= ${S}/stand/efi 17 18OBJCOPY?= objcopy 19OBJDUMP?= objdump 20 21LDFLAGS+=-nostdlib -T ${.CURDIR}/ldscript.riscv64 -Bsymbolic -shared 22 23.PATH: ${S}/stand/boot 24SRCS+= boot.c cmd.c vars.c 25 26.PATH: ${S}/lib/libsa 27SRCS+= alloc.c ctime.c exit.c getchar.c hexdump.c \ 28 memcmp.c memcpy.c memmove.c memset.c \ 29 printf.c putchar.c snprintf.c strchr.c strcmp.c strerror.c strncmp.c \ 30 strncpy.c strtol.c strtoll.c 31SRCS+= close.c closeall.c cons.c cread.c dev.c disklabel.c dkcksum.c fchmod.c \ 32 fstat.c lseek.c open.c read.c readdir.c stat.c 33SRCS+= loadfile.c arc4.c 34SRCS+= ufs.c ufs2.c 35SRCS+= arp.c ether.c globals.c in_cksum.c net.c netif.c netudp.c tftp.c 36SRCS+= aes_xts.c bcrypt_pbkdf.c blowfish.c explicit_bzero.c hmac_sha1.c \ 37 pkcs5_pbkdf2.c rijndael.c sha1.c sha2.c softraid.c 38 39.PATH: ${S}/lib/libkern/arch/riscv64 ${S}/lib/libkern 40SRCS+= divdi3.c moddi3.c qdivrem.c strlcat.c strlcpy.c strlen.c 41 42.PATH: ${S}/lib/libz 43SRCS+= adler32.c crc32.c inflate.c inftrees.c 44 45CPPFLAGS+= -nostdinc 46CPPFLAGS+= -I${S} -I. -I${.CURDIR} 47CPPFLAGS+= -I${EFIDIR}/include -I${EFIDIR}/include/riscv64 48CPPFLAGS+= -D_STANDALONE 49CPPFLAGS+= -DSMALL -DSLOW -DNOBYFOUR -D__INTERNAL_LIBSA_CREAD 50CPPFLAGS+= -DNEEDS_HEAP_H -DFWRANDOM 51CPPFLAGS+= -march=rv64gc --target=riscv64 -mno-relax 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