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