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