Makefile revision 294981
1# $FreeBSD: stable/10/sys/boot/efi/boot1/Makefile 294981 2016-01-28 12:11:42Z smh $
2
3MAN=
4
5.include <bsd.own.mk>
6
7MK_SSP=		no
8
9PROG=		boot1.sym
10INTERNALPROG=
11WARNS?=		6
12
13# architecture-specific loader code
14SRCS=	boot1.c reloc.c start.S
15
16CFLAGS+=	-fPIC
17CFLAGS+=	-I.
18CFLAGS+=	-I${.CURDIR}/../include
19CFLAGS+=	-I${.CURDIR}/../include/${MACHINE}
20CFLAGS+=	-I${.CURDIR}/../../../contrib/dev/acpica/include
21CFLAGS+=	-I${.CURDIR}/../../..
22
23# Always add MI sources and REGULAR efi loader bits
24.PATH:		${.CURDIR}/../loader/arch/${MACHINE}
25.PATH:		${.CURDIR}/../loader
26.PATH:		${.CURDIR}/../../common
27CFLAGS+=	-I${.CURDIR}/../../common
28
29FILES=	boot1.efi boot1.efifat
30FILESMODE_boot1.efi=	${BINMODE}
31
32LDSCRIPT=	${.CURDIR}/../loader/arch/${MACHINE}/ldscript.${MACHINE}
33LDFLAGS=	-Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared
34
35.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
36LDFLAGS+=	-Wl,-znocombreloc
37.endif
38
39#
40# Add libstand for required string and memory functions for all platforms.
41#
42DPADD+=		${LIBSTAND}
43LDADD+=		-lstand
44
45DPADD+=		${LDSCRIPT}
46
47OBJCOPY?=	objcopy
48OBJDUMP?=	objdump
49
50.if ${MACHINE_CPUARCH} == "amd64"
51EFI_TARGET=	efi-app-x86_64
52.elif ${MACHINE_CPUARCH} == "i386"
53EFI_TARGET=	efi-app-ia32
54.endif
55
56boot1.efi: ${PROG}
57	if [ `${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*' | wc -l` != 0 ]; then \
58		${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*'; \
59		exit 1; \
60	fi
61	${OBJCOPY} -j .text -j .sdata -j .data \
62		-j .dynamic -j .dynsym -j .rel.dyn \
63		-j .rela.dyn -j .reloc -j .eh_frame \
64		--output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET}
65
66boot1.o: ${.CURDIR}/../../common/ufsread.c
67
68# The following inserts our objects into a template FAT file system
69# created by generate-fat.sh
70
71.include "${.CURDIR}/Makefile.fat"
72
73boot1.efifat: boot1.efi
74	echo ${.OBJDIR}
75	uudecode ${.CURDIR}/fat-${MACHINE}.tmpl.bz2.uu
76	mv fat-${MACHINE}.tmpl.bz2 ${.TARGET}.bz2
77	bzip2 -f -d ${.TARGET}.bz2
78	dd if=boot1.efi of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc
79
80CLEANFILES= boot1.efi boot1.efifat
81
82.include <bsd.prog.mk>
83
84.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
85beforedepend ${OBJS}: machine x86
86
87CLEANFILES+=   machine x86
88
89machine:
90	ln -sf ${.CURDIR}/../../../amd64/include machine
91
92x86:
93	ln -sf ${.CURDIR}/../../../x86/include x86
94.endif
95