]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/boot/efi/boot1/Makefile
Merge ^/head r305087 through r305219.
[FreeBSD/FreeBSD.git] / sys / boot / efi / boot1 / Makefile
1 # $FreeBSD$
2
3 MAN=
4
5 .include <src.opts.mk>
6
7 MK_SSP=         no
8
9 PROG=           boot1.sym
10 INTERNALPROG=
11 WARNS?=         6
12
13 .if ${MK_ZFS} != "no"
14 # Disable warnings that are currently incompatible with the zfs boot code
15 CWARNFLAGS.zfs_module.c += -Wno-array-bounds
16 CWARNFLAGS.zfs_module.c += -Wno-cast-align
17 CWARNFLAGS.zfs_module.c += -Wno-cast-qual
18 CWARNFLAGS.zfs_module.c += -Wno-missing-prototypes
19 CWARNFLAGS.zfs_module.c += -Wno-sign-compare
20 CWARNFLAGS.zfs_module.c += -Wno-unused-parameter
21 CWARNFLAGS.zfs_module.c += -Wno-unused-function
22 CWARNFLAGS.skein.c += -Wno-cast-align
23 CWARNFLAGS.skein.c += -Wno-missing-variable-declarations
24 .endif
25
26 # architecture-specific loader code
27 SRCS=   boot1.c self_reloc.c start.S ufs_module.c
28 .if ${MK_ZFS} != "no"
29 SRCS+=          zfs_module.c
30 SRCS+=          skein.c skein_block.c
31 .PATH:          ${.CURDIR}/../../../crypto/skein
32 .endif
33
34 CFLAGS+=        -I.
35 CFLAGS+=        -I${.CURDIR}/../include
36 CFLAGS+=        -I${.CURDIR}/../include/${MACHINE}
37 CFLAGS+=        -I${.CURDIR}/../../../contrib/dev/acpica/include
38 CFLAGS+=        -I${.CURDIR}/../../..
39 CFLAGS+=        -DEFI_UFS_BOOT
40 .ifdef(EFI_DEBUG)
41 CFLAGS+=        -DEFI_DEBUG
42 .endif
43
44 .if ${MK_ZFS} != "no"
45 CFLAGS+=        -I${.CURDIR}/../../zfs/
46 CFLAGS+=        -I${.CURDIR}/../../../cddl/boot/zfs/
47 CFLAGS+=        -I${.CURDIR}/../../../crypto/skein
48 CFLAGS+=        -DEFI_ZFS_BOOT
49 .endif
50
51 # Always add MI sources and REGULAR efi loader bits
52 .PATH:          ${.CURDIR}/../loader/arch/${MACHINE}
53 .PATH:          ${.CURDIR}/../loader
54 .PATH:          ${.CURDIR}/../../common
55 CFLAGS+=        -I${.CURDIR}/../../common
56
57 FILES=  boot1.efi boot1.efifat
58 FILESMODE_boot1.efi=    ${BINMODE}
59
60 LDSCRIPT=       ${.CURDIR}/../loader/arch/${MACHINE}/ldscript.${MACHINE}
61 LDFLAGS+=       -Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared
62
63 .if ${MACHINE_CPUARCH} == "aarch64"
64 CFLAGS+=        -msoft-float -mgeneral-regs-only
65 .endif
66 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
67 CFLAGS+=        -fPIC
68 LDFLAGS+=       -Wl,-znocombreloc
69 .endif
70
71 #
72 # Add libstand for the runtime functions used by the compiler - for example
73 # __aeabi_* (arm) or __divdi3 (i386).
74 # as well as required string and memory functions for all platforms.
75 #
76 DPADD+=         ${LIBSTAND}
77 LDADD+=         -lstand
78
79 DPADD+=         ${LDSCRIPT}
80
81 NM?=            nm
82 OBJCOPY?=       objcopy
83
84 .if ${MACHINE_CPUARCH} == "amd64"
85 EFI_TARGET=     efi-app-x86_64
86 .elif ${MACHINE_CPUARCH} == "i386"
87 EFI_TARGET=     efi-app-ia32
88 .else
89 EFI_TARGET=     binary
90 .endif
91
92 # Arbitrarily set the PE/COFF header timestamps to 1 Jan 2016 00:00:00
93 # for build reproducibility.
94 SOURCE_DATE_EPOCH?=1451606400
95 boot1.efi: ${PROG}
96         if ${NM} ${.ALLSRC} | grep ' U '; then \
97                 echo "Undefined symbols in ${.ALLSRC}"; \
98                 exit 1; \
99         fi
100         SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} \
101         ${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \
102                 -j .dynamic -j .dynsym -j .rel.dyn \
103                 -j .rela.dyn -j .reloc -j .eh_frame \
104                 --output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET}
105
106 boot1.o: ${.CURDIR}/../../common/ufsread.c
107
108 # The following inserts our objects into a template FAT file system
109 # created by generate-fat.sh
110
111 .include "${.CURDIR}/Makefile.fat"
112 BOOT1_MAXSIZE?= 131072
113
114 boot1.efifat: boot1.efi
115         @set -- `ls -l boot1.efi`; \
116         x=$$(($$5-${BOOT1_MAXSIZE})); \
117         if [ $$x -ge 0 ]; then \
118             echo "boot1 $$x bytes too large; regenerate FAT templates?" >&2 ;\
119             exit 1; \
120         fi
121         echo ${.OBJDIR}
122         uudecode ${.CURDIR}/fat-${MACHINE}.tmpl.bz2.uu
123         mv fat-${MACHINE}.tmpl.bz2 ${.TARGET}.bz2
124         bzip2 -f -d ${.TARGET}.bz2
125         dd if=boot1.efi of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc \
126             status=none
127
128 CLEANFILES= boot1.efi boot1.efifat
129
130 .include <bsd.prog.mk>
131
132 beforedepend ${OBJS}: machine
133
134 CLEANFILES+=   machine
135
136 machine: .NOMETA
137         ln -sf ${.CURDIR}/../../../${MACHINE}/include machine
138
139 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
140 beforedepend ${OBJS}: x86
141 CLEANFILES+=   x86
142
143 x86: .NOMETA
144         ln -sf ${.CURDIR}/../../../x86/include x86
145 .endif