]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - stand/efi/loader/Makefile
libfdt: Update to 1.4.6, switch to using libfdt for overlay support
[FreeBSD/FreeBSD.git] / stand / efi / loader / Makefile
1 # $FreeBSD$
2
3 MAN=
4
5 LOADER_NET_SUPPORT?=    yes
6 LOADER_MSDOS_SUPPORT?=  yes
7 LOADER_UFS_SUPPORT?=    yes
8 LOADER_CD9660_SUPPORT?= no
9 LOADER_EXT2FS_SUPPORT?= no
10
11 .include <bsd.init.mk>
12
13 MK_SSP=         no
14
15 PROG=           loader.sym
16 INTERNALPROG=
17 WARNS?=         3
18
19 # architecture-specific loader code
20 SRCS=   autoload.c \
21         bootinfo.c \
22         conf.c \
23         copy.c \
24         efi_main.c \
25         framebuffer.c \
26         main.c \
27         self_reloc.c \
28         smbios.c \
29         vers.c
30
31 .if ${MK_ZFS} != "no"
32 LIBZFSBOOT=     ${BOOTOBJ}/zfs/libzfsboot.a
33 CFLAGS+=        -I${ZFSSRC}
34 CFLAGS+=        -DEFI_ZFS_BOOT
35 .endif
36
37 .if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} > 40201
38 CWARNFLAGS.self_reloc.c+=       -Wno-error=maybe-uninitialized
39 .endif
40
41 # We implement a slightly non-standard %S in that it always takes a
42 # CHAR16 that's common in UEFI-land instead of a wchar_t. This only
43 # seems to matter on arm64 where wchar_t defaults to an int instead
44 # of a short. There's no good cast to use here so just ignore the
45 # warnings for now.
46 CWARNFLAGS.main.c+=     -Wno-format
47
48 .PATH: ${.CURDIR}/arch/${MACHINE}
49 # For smbios.c
50 .PATH: ${BOOTSRC}/i386/libi386
51 .include "${.CURDIR}/arch/${MACHINE}/Makefile.inc"
52
53 CFLAGS+=        -I${.CURDIR}
54 CFLAGS+=        -I${.CURDIR}/arch/${MACHINE}
55 CFLAGS+=        -I${EFISRC}/include
56 CFLAGS+=        -I${EFISRC}/include/${MACHINE}
57 CFLAGS+=        -I${SYSDIR}/contrib/dev/acpica/include
58 CFLAGS+=        -I${BOOTSRC}/i386/libi386
59 CFLAGS+=        -DNO_PCI -DEFI
60
61 .if !defined(BOOT_HIDE_SERIAL_NUMBERS)
62 # Export serial numbers, UUID, and asset tag from loader.
63 CFLAGS+= -DSMBIOS_SERIAL_NUMBERS
64 .if defined(BOOT_LITTLE_ENDIAN_UUID)
65 # Use little-endian UUID format as defined in SMBIOS 2.6.
66 CFLAGS+= -DSMBIOS_LITTLE_ENDIAN_UUID
67 .elif defined(BOOT_NETWORK_ENDIAN_UUID)
68 # Use network-endian UUID format for backward compatibility.
69 CFLAGS+= -DSMBIOS_NETWORK_ENDIAN_UUID
70 .endif
71 .endif
72
73 .if defined(HAVE_FDT) && ${MK_FDT} != "no"
74 .include        "${BOOTSRC}/fdt.mk"
75 LIBEFI_FDT=     ${BOOTOBJ}/efi/fdt/libefi_fdt.a
76 .endif
77
78 # Include bcache code.
79 HAVE_BCACHE=    yes
80
81 .if defined(EFI_STAGING_SIZE)
82 CFLAGS+=        -DEFI_STAGING_SIZE=${EFI_STAGING_SIZE}
83 .endif
84
85 # Always add MI sources
86 .include        "${BOOTSRC}/loader.mk"
87
88 FILES+= loader.efi
89 FILESMODE_loader.efi=   ${BINMODE}
90
91 LDSCRIPT=       ${.CURDIR}/arch/${MACHINE}/ldscript.${MACHINE}
92 LDFLAGS+=       -Wl,-T${LDSCRIPT},-Bsymbolic,-znotext -shared
93
94 CLEANFILES+=    loader.efi
95
96 NEWVERSWHAT=    "EFI loader" ${MACHINE}
97
98 NM?=            nm
99 OBJCOPY?=       objcopy
100
101 .if ${MACHINE_CPUARCH} == "amd64"
102 EFI_TARGET=     efi-app-x86_64
103 .elif ${MACHINE_CPUARCH} == "i386"
104 EFI_TARGET=     efi-app-ia32
105 .else
106 EFI_TARGET=     binary
107 .endif
108
109 # Arbitrarily set the PE/COFF header timestamps to 1 Jan 2016 00:00:00
110 # for build reproducibility.
111 SOURCE_DATE_EPOCH?=1451606400
112 loader.efi: ${PROG}
113         if ${NM} ${.ALLSRC} | grep ' U '; then \
114                 echo "Undefined symbols in ${.ALLSRC}"; \
115                 exit 1; \
116         fi
117         SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} \
118         ${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \
119                 -j .dynamic -j .dynsym -j .rel.dyn \
120                 -j .rela.dyn -j .reloc -j .eh_frame -j set_Xcommand_set \
121                 -j set_Xficl_compile_set \
122                 --output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET}
123
124 LIBEFI=         ${BOOTOBJ}/efi/libefi/libefi.a
125
126 DPADD=          ${LIBFICL} ${LIBEFI} ${LIBFDT} ${LIBEFI_FDT} ${LIBZFSBOOT} ${LIBSA} \
127                 ${LDSCRIPT}
128 LDADD=          ${LIBFICL} ${LIBEFI} ${LIBFDT} ${LIBEFI_FDT} ${LIBZFSBOOT} ${LIBSA}
129
130 .include <bsd.prog.mk>