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