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