xref: /openbsd-src/sys/arch/amd64/stand/efiboot/Makefile.common (revision a9e161243e2d393eb39549a8ca7e57afd445d16d)
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