]> git.proxmox.com Git - efi-boot-shim.git/blame - Make.defaults
Prep for releasing based on 15.4
[efi-boot-shim.git] / Make.defaults
CommitLineData
031e5cce
SM
1
2# load the local configuration if it exists
3-include Make.local
8119f718 4-include $(TOPDIR)/Make.local
031e5cce 5
f892ac66
MTL
6COMPILER ?= gcc
7CC = $(CROSS_COMPILE)$(COMPILER)
031e5cce 8HOSTCC = $(COMPILER)
f892ac66
MTL
9LD = $(CROSS_COMPILE)ld
10OBJCOPY = $(CROSS_COMPILE)objcopy
031e5cce
SM
11DOS2UNIX ?= dos2unix
12D2UFLAGS ?= -r -l -F -f -n
f892ac66
MTL
13OPENSSL ?= openssl
14HEXDUMP ?= hexdump
15INSTALL ?= install
16PK12UTIL ?= pk12util
17CERTUTIL ?= certutil
18PESIGN ?= pesign
19SBSIGN ?= sbsign
20prefix ?= /usr
21prefix := $(abspath $(prefix))
22datadir ?= $(prefix)/share/
23PKGNAME ?= shim
24ESPROOTDIR ?= boot/efi/
25EFIBOOTDIR ?= $(ESPROOTDIR)EFI/BOOT/
26TARGETDIR ?= $(ESPROOTDIR)EFI/$(EFIDIR)/
27DATATARGETDIR ?= $(datadir)/$(PKGNAME)/$(VERSION)$(DASHRELEASE)/$(ARCH_SUFFIX)/
28DEBUGINFO ?= $(prefix)/lib/debug/
29DEBUGSOURCE ?= $(prefix)/src/debug/
30OSLABEL ?= $(EFIDIR)
31DEFAULT_LOADER ?= \\\\grub$(ARCH_SUFFIX).efi
32DASHJ ?= -j$(shell echo $$(($$(grep -c "^model name" /proc/cpuinfo) + 1)))
33
34ARCH ?= $(shell $(CC) -dumpmachine | cut -f1 -d- | sed s,i[3456789]86,ia32,)
35OBJCOPY_GTE224 = $(shell expr `$(OBJCOPY) --version |grep ^"GNU objcopy" | sed 's/^.*\((.*)\|version\) //g' | cut -f1-2 -d.` \>= 2.24)
031e5cce
SM
36OPTIMIZATIONS ?= -Os
37FA_OPTIMIZATIONS ?= -O2
38ifneq ($(FANALYZER),)
39override OPTIMIZATIONS := $(FA_OPTIMIZATIONS)
40override CCACHE_DISABLE := true
41endif
42export OPTIMIZATIONS
43ifneq ($(CCACHE_DISABLE),)
44export CCACHE_DISABLE
45endif
f892ac66
MTL
46
47SUBDIRS = $(TOPDIR)/Cryptlib $(TOPDIR)/lib
48
031e5cce
SM
49EFI_INCLUDE ?= $(TOPDIR)/gnu-efi/inc
50EFI_INCLUDES = -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH) -I$(EFI_INCLUDE)/protocol
51override EFI_INCLUDES := $(EFI_INCLUDES)
52EFI_CRT_OBJS = $(LOCAL_EFI_PATH)/crt0-efi-$(ARCH_GNUEFI).o
f892ac66
MTL
53EFI_LDS = $(TOPDIR)/elf_$(ARCH)_efi.lds
54
55CLANG_BUGS = $(if $(findstring gcc,$(CC)),-maccumulate-outgoing-args,)
56
57COMMIT_ID ?= $(shell if [ -e .git ] ; then git log -1 --pretty=format:%H ; elif [ -f commit ]; then cat commit ; else echo master; fi)
58
59ifeq ($(ARCH),x86_64)
60 ARCH_CFLAGS ?= -mno-mmx -mno-sse -mno-red-zone -nostdinc \
61 $(CLANG_BUGS) -m64 \
031e5cce
SM
62 -DMDE_CPU_X64 -DPAGE_SIZE=4096
63 ARCH_GNUEFI ?= x86_64
f892ac66
MTL
64 ARCH_SUFFIX ?= x64
65 ARCH_SUFFIX_UPPER ?= X64
66 ARCH_LDFLAGS ?=
031e5cce 67 TIMESTAMP_LOCATION := 136
f892ac66
MTL
68endif
69ifeq ($(ARCH),ia32)
70 ARCH_CFLAGS ?= -mno-mmx -mno-sse -mno-red-zone -nostdinc \
71 $(CLANG_BUGS) -m32 \
72 -DMDE_CPU_IA32 -DPAGE_SIZE=4096
031e5cce 73 ARCH_GNUEFI ?= ia32
f892ac66
MTL
74 ARCH_SUFFIX ?= ia32
75 ARCH_SUFFIX_UPPER ?= IA32
76 ARCH_LDFLAGS ?=
77 ARCH_CFLAGS ?= -m32
031e5cce 78 TIMESTAMP_LOCATION := 136
f892ac66
MTL
79endif
80ifeq ($(ARCH),aarch64)
81 ARCH_CFLAGS ?= -DMDE_CPU_AARCH64 -DPAGE_SIZE=4096 -mstrict-align
031e5cce 82 ARCH_GNUEFI ?= aarch64
f892ac66
MTL
83 ARCH_SUFFIX ?= aa64
84 ARCH_SUFFIX_UPPER ?= AA64
85 FORMAT := -O binary
86 SUBSYSTEM := 0xa
87 ARCH_LDFLAGS += --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
88 ARCH_CFLAGS ?=
031e5cce 89 TIMESTAMP_LOCATION := 72
f892ac66
MTL
90endif
91ifeq ($(ARCH),arm)
031e5cce
SM
92 ARCH_CFLAGS ?= -DMDE_CPU_ARM -DPAGE_SIZE=4096 -mno-unaligned-access
93 ARCH_GNUEFI ?= arm
f892ac66
MTL
94 ARCH_SUFFIX ?= arm
95 ARCH_SUFFIX_UPPER ?= ARM
96 FORMAT := -O binary
97 SUBSYSTEM := 0xa
98 ARCH_LDFLAGS += --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
031e5cce 99 TIMESTAMP_LOCATION := 72
f892ac66
MTL
100endif
101
031e5cce
SM
102DEFINES = -DDEFAULT_LOADER='L"$(DEFAULT_LOADER)"' \
103 -DDEFAULT_LOADER_CHAR='"$(DEFAULT_LOADER)"'
104
105INCLUDES = -nostdinc \
106 -I$(TOPDIR)/Cryptlib -I$(TOPDIR)/Cryptlib/Include \
107 -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH_GNUEFI) -I$(EFI_INCLUDE)/protocol \
108 -I$(TOPDIR)/include -iquote $(TOPDIR) -iquote $(shell pwd) \
109 -isystem $(TOPDIR)/include/system \
110 -isystem $(shell $(CC) $(ARCH_CFLAGS) -print-file-name=include)
111
112override DEFAULT_FEATUREFLAGS = \
113 -std=gnu11 \
114 -ggdb \
115 -ffreestanding \
116 $(shell $(CC) -fmacro-prefix-map=./=./ -E -x c /dev/null >/dev/null 2>&1 && echo -fmacro-prefix-map='$(TOPDIR)/=$(DEBUGSRC)') \
117 -fno-stack-protector \
118 -fno-strict-aliasing \
119 -fpic \
120 -fshort-wchar
121$(call update-variable,FEATUREFLAGS)
122$(call conditional-add-flag,$(FANALYZER),analyzer,FEATUREFLAGS,-fanalyzer)
123$(call conditional-add-flag,$(COLOR),diagnostics-color,FEATUREFLAGS,-fdiagnostics-color=always)
124
125override DEFAULT_WARNFLAGS = \
126 -Wall \
127 -Wextra \
128 -Wno-missing-field-initializers
129$(call update-variable,WARNFLAGS)
130
131override DEFAULT_WERRFLAGS = \
132 -Werror
133$(call update-variable,WERRFLAGS)
134
135CFLAGS = $(FEATUREFLAGS) \
136 $(OPTIMIZATIONS) \
137 $(WARNFLAGS) \
138 $(ARCH_CFLAGS) \
139 $(WERRFLAGS) \
140 $(INCLUDES) \
141 $(DEFINES)
f892ac66
MTL
142
143ifneq ($(origin OVERRIDE_SECURITY_POLICY), undefined)
031e5cce 144 DEFINES += -DOVERRIDE_SECURITY_POLICY
f892ac66
MTL
145endif
146
031e5cce
SM
147ifneq ($(origin REQUIRE_TPM), undefined)
148 DEFINES += -DREQUIRE_TPM
f892ac66
MTL
149endif
150
031e5cce
SM
151ifneq ($(origin DISABLE_EBS_PROTECTION), undefined)
152 DEFINES += -DDISABLE_EBS_PROTECTION
f892ac66
MTL
153endif
154
155LIB_GCC = $(shell $(CC) $(ARCH_CFLAGS) -print-libgcc-file-name)
156EFI_LIBS = -lefi -lgnuefi --start-group Cryptlib/libcryptlib.a Cryptlib/OpenSSL/libopenssl.a --end-group $(LIB_GCC)
157FORMAT ?= --target efi-app-$(ARCH)
031e5cce
SM
158LOCAL_EFI_PATH = gnu-efi/$(ARCH_GNUEFI)/gnuefi
159LIBDIR = gnu-efi/$(ARCH_GNUEFI)/lib
f892ac66
MTL
160
161MMSTEM ?= mm$(ARCH_SUFFIX)
162MMNAME = $(MMSTEM).efi
163MMSONAME = $(MMSTEM).so
164FBSTEM ?= fb$(ARCH_SUFFIX)
165FBNAME = $(FBSTEM).efi
166FBSONAME = $(FBSTEM).so
167SHIMSTEM ?= shim$(ARCH_SUFFIX)
168SHIMNAME = $(SHIMSTEM).efi
169SHIMSONAME = $(SHIMSTEM).so
170SHIMHASHNAME = $(SHIMSTEM).hash
171BOOTEFINAME ?= BOOT$(ARCH_SUFFIX_UPPER).EFI
172BOOTCSVNAME ?= BOOT$(ARCH_SUFFIX_UPPER).CSV
173
031e5cce
SM
174DEFINES += -DEFI_ARCH='L"$(ARCH_SUFFIX)"' \
175 -DDEBUGDIR='L"/usr/lib/debug/usr/share/shim/$(ARCH_SUFFIX)-$(VERSION)$(DASHRELEASE)/"'
f892ac66 176
031e5cce
SM
177ifneq ($(origin VENDOR_DB_FILE), undefined)
178DEFINES += -DVENDOR_DB_FILE=\"$(VENDOR_DB_FILE)\"
179endif
f892ac66 180ifneq ($(origin VENDOR_CERT_FILE), undefined)
031e5cce 181DEFINES += -DVENDOR_CERT_FILE=\"$(VENDOR_CERT_FILE)\"
f892ac66
MTL
182endif
183ifneq ($(origin VENDOR_DBX_FILE), undefined)
031e5cce
SM
184DEFINES += -DVENDOR_DBX_FILE=\"$(VENDOR_DBX_FILE)\"
185endif
186
187LDFLAGS = --hash-style=sysv -nostdlib -znocombreloc -T $(EFI_LDS) -shared -Bsymbolic -L$(LOCAL_EFI_PATH) -L$(LIBDIR) -LCryptlib -LCryptlib/OpenSSL $(EFI_CRT_OBJS) --build-id=sha1 $(ARCH_LDFLAGS) --no-undefined
188
189ifneq ($(DEBUG),)
190export DEBUG
191endif
192ifneq ($(VERBOSE),)
193export VERBOSE
f892ac66
MTL
194endif
195
031e5cce 196# vim:filetype=make