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