1# $FreeBSD: stable/10/sys/boot/efi/boot1/Makefile 319025 2017-05-28 01:14:59Z ngie $
2
3MAN=
4
5.include <bsd.own.mk>
6
7MK_SSP=		no
8
9PROG=		boot1.sym
10INTERNALPROG=
11WARNS?=		6
12
13.if ${MK_ZFS} != "no"
14# Disable warnings that are currently incompatible with the zfs boot code
15CWARNFLAGS.zfs_module.c += -Wno-array-bounds
16CWARNFLAGS.zfs_module.c += -Wno-cast-align
17CWARNFLAGS.zfs_module.c += -Wno-cast-qual
18CWARNFLAGS.zfs_module.c += -Wno-missing-prototypes
19CWARNFLAGS.zfs_module.c += -Wno-sign-compare
20CWARNFLAGS.zfs_module.c += -Wno-unused-parameter
21CWARNFLAGS.zfs_module.c += -Wno-unused-function
22.endif
23
24# architecture-specific loader code
25SRCS=	boot1.c reloc.c start.S ufs_module.c
26.if ${MK_ZFS} != "no"
27SRCS+=		zfs_module.c
28.endif
29
30CFLAGS+=	-fPIC
31CFLAGS+=	-I.
32CFLAGS+=	-I${.CURDIR}/../include
33CFLAGS+=	-I${.CURDIR}/../include/${MACHINE}
34CFLAGS+=	-I${.CURDIR}/../../../contrib/dev/acpica/include
35CFLAGS+=	-I${.CURDIR}/../../..
36CFLAGS+=	-DEFI_UFS_BOOT
37.ifdef(EFI_DEBUG)
38CFLAGS+=	-DEFI_DEBUG
39.endif
40
41.if ${MK_ZFS} != "no"
42CFLAGS+=	-I${.CURDIR}/../../zfs/
43CFLAGS+=	-I${.CURDIR}/../../../cddl/boot/zfs/
44CFLAGS+=	-DEFI_ZFS_BOOT
45.endif
46
47# Always add MI sources and REGULAR efi loader bits
48.PATH:		${.CURDIR}/../loader/arch/${MACHINE}
49.PATH:		${.CURDIR}/../loader
50.PATH:		${.CURDIR}/../../common
51CFLAGS+=	-I${.CURDIR}/../../common
52
53FILES=	boot1.efi boot1.efifat
54FILESMODE_boot1.efi=	${BINMODE}
55
56LDSCRIPT=	${.CURDIR}/../loader/arch/${MACHINE}/ldscript.${MACHINE}
57LDFLAGS=	-Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared
58
59.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
60LDFLAGS+=	-Wl,-znocombreloc
61.endif
62
63#
64# Add libstand for required string and memory functions for all platforms.
65#
66DPADD+=		${LIBSTAND}
67LDADD+=		-lstand
68
69DPADD+=		${LDSCRIPT}
70
71NM?=		nm
72OBJCOPY?=	objcopy
73
74.if ${MACHINE_CPUARCH} == "amd64"
75EFI_TARGET=	efi-app-x86_64
76.elif ${MACHINE_CPUARCH} == "i386"
77EFI_TARGET=	efi-app-ia32
78.endif
79
80boot1.efi: ${PROG}
81	if ${NM} ${.ALLSRC} | grep ' U '; then \
82		echo "Undefined symbols in ${.ALLSRC}"; \
83		exit 1; \
84	fi
85	${OBJCOPY} -j .text -j .sdata -j .data \
86		-j .dynamic -j .dynsym -j .rel.dyn \
87		-j .rela.dyn -j .reloc -j .eh_frame \
88		--output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET}
89
90boot1.o: ${.CURDIR}/../../common/ufsread.c
91
92# The following inserts our objects into a template FAT file system
93# created by generate-fat.sh
94
95.include "${.CURDIR}/Makefile.fat"
96
97boot1.efifat: boot1.efi
98	echo ${.OBJDIR}
99	uudecode ${.CURDIR}/fat-${MACHINE}.tmpl.bz2.uu
100	mv fat-${MACHINE}.tmpl.bz2 ${.TARGET}.bz2
101	bzip2 -f -d ${.TARGET}.bz2
102	${DD} if=${.ALLSRC} of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc
103
104CLEANFILES= boot1.efi boot1.efifat
105
106.include <bsd.prog.mk>
107
108.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
109beforedepend ${OBJS}: machine x86
110
111CLEANFILES+=   machine x86
112
113machine:
114	ln -sf ${.CURDIR}/../../../amd64/include machine
115
116x86:
117	ln -sf ${.CURDIR}/../../../x86/include x86
118.endif
119