1# $FreeBSD: releng/10.3/sys/boot/efi/loader/Makefile 294999 2016-01-28 17:24:40Z smh $
2
3MAN=
4
5.include <bsd.own.mk>
6
7MK_SSP=		no
8
9PROG=		loader.sym
10INTERNALPROG=
11WARNS?=		3
12
13# architecture-specific loader code
14SRCS=	autoload.c \
15	bootinfo.c \
16	conf.c \
17	copy.c \
18	devicename.c \
19	main.c \
20	smbios.c \
21	vers.c
22
23.if ${MK_ZFS} != "no"
24SRCS+=		zfs.c
25.PATH:		${.CURDIR}/../../zfs
26
27# Disable warnings that are currently incompatible with the zfs boot code
28CWARNFLAGS.zfs.c+=	-Wno-sign-compare
29CWARNFLAGS.zfs.c+=	-Wno-array-bounds
30CWARNFLAGS.zfs.c+=	-Wno-missing-prototypes
31.endif
32
33.PATH: ${.CURDIR}/arch/${MACHINE}
34# For smbios.c
35.PATH: ${.CURDIR}/../../i386/libi386
36.include "${.CURDIR}/arch/${MACHINE}/Makefile.inc"
37
38CFLAGS+=	-fPIC
39CFLAGS+=	-I${.CURDIR}
40CFLAGS+=	-I${.CURDIR}/arch/${MACHINE}
41CFLAGS+=	-I${.CURDIR}/../include
42CFLAGS+=	-I${.CURDIR}/../include/${MACHINE}
43CFLAGS+=	-I${.CURDIR}/../../../contrib/dev/acpica/include
44CFLAGS+=	-I${.CURDIR}/../../..
45CFLAGS+=	-I${.CURDIR}/../../i386/libi386
46.if ${MK_ZFS} != "no"
47CFLAGS+=	-I${.CURDIR}/../../zfs
48CFLAGS+=	-I${.CURDIR}/../../../cddl/boot/zfs
49CFLAGS+=	-DEFI_ZFS_BOOT
50.endif
51CFLAGS+=	-DNO_PCI -DEFI
52
53.if ${MK_FORTH} != "no"
54BOOT_FORTH=	yes
55CFLAGS+=	-DBOOT_FORTH
56CFLAGS+=	-I${.CURDIR}/../../ficl
57CFLAGS+=	-I${.CURDIR}/../../ficl/${MACHINE}
58LIBFICL=	${.OBJDIR}/../../ficl/libficl.a
59.endif
60
61# Include bcache code.
62HAVE_BCACHE=    yes
63
64.if defined(EFI_STAGING_SIZE)
65CFLAGS+=	-DEFI_STAGING_SIZE=${EFI_STAGING_SIZE}
66.endif
67
68# Always add MI sources 
69.PATH:		${.CURDIR}/../../common
70.include	"${.CURDIR}/../../common/Makefile.inc"
71CFLAGS+=	-I${.CURDIR}/../../common
72
73FILES=	loader.efi
74FILESMODE_loader.efi=	${BINMODE}
75
76LDSCRIPT=	${.CURDIR}/arch/${MACHINE}/ldscript.${MACHINE}
77LDFLAGS=	-Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared -Wl,-znocombreloc
78
79CLEANFILES=	vers.c loader.efi
80
81NEWVERSWHAT=	"EFI loader" ${MACHINE}
82
83vers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../../efi/loader/version
84	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
85
86OBJCOPY?=	objcopy
87OBJDUMP?=	objdump
88
89.if ${MACHINE_CPUARCH} == "amd64"
90EFI_TARGET=	efi-app-x86_64
91.elif ${MACHINE_CPUARCH} == "i386"
92EFI_TARGET=	efi-app-ia32
93.endif
94
95loader.efi: ${PROG}
96	if [ `${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*' | wc -l` != 0 ]; then \
97		${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*'; \
98		exit 1; \
99	fi
100	${OBJCOPY} -j .text -j .sdata -j .data \
101		-j .dynamic -j .dynsym -j .rel.dyn \
102		-j .rela.dyn -j .reloc -j .eh_frame -j set_Xcommand_set \
103		--output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET}
104
105LIBEFI=		${.OBJDIR}/../libefi/libefi.a
106
107DPADD=		${LIBFICL} ${LIBEFI} ${LIBSTAND} ${LDSCRIPT}
108LDADD=		${LIBFICL} ${LIBEFI} ${LIBSTAND}
109
110.include <bsd.prog.mk>
111
112beforedepend ${OBJS}: machine x86
113
114CLEANFILES+=   machine x86
115
116machine:
117	ln -sf ${.CURDIR}/../../../amd64/include machine
118
119x86:
120	ln -sf ${.CURDIR}/../../../x86/include x86
121