summaryrefslogtreecommitdiff
path: root/Make.defaults
diff options
context:
space:
mode:
authorSteve McIntyre <steve@einval.com>2021-03-23 23:49:46 +0000
committerSteve McIntyre <steve@einval.com>2021-03-23 23:49:46 +0000
commit1251a7ba86fc40a6aad8b4fecdbca2b61808d9fa (patch)
tree2125fda549aaca55cb49a48d54be77dec7fbf3df /Make.defaults
parent85b409232ce89b34626df9d72abedf5d4f5ccef6 (diff)
parent031e5cce385d3f96b1caa1d53495332a7eb03749 (diff)
downloadefi-boot-shim-debian/15.3-1.tar.gz
efi-boot-shim-debian/15.3-1.zip
Update upstream source from tag 'upstream/15.3'debian/15.3-1
Update to upstream version '15.3' with Debian dir 1b484f1c1ac270604a5a1451b34de4b0865c6211
Diffstat (limited to 'Make.defaults')
-rw-r--r--Make.defaults112
1 files changed, 83 insertions, 29 deletions
diff --git a/Make.defaults b/Make.defaults
index 1fa2bd5f..b7721547 100644
--- a/Make.defaults
+++ b/Make.defaults
@@ -1,5 +1,10 @@
+
+# load the local configuration if it exists
+-include Make.local
+
COMPILER ?= gcc
CC = $(CROSS_COMPILE)$(COMPILER)
+HOSTCC = $(COMPILER)
LD = $(CROSS_COMPILE)ld
OBJCOPY = $(CROSS_COMPILE)objcopy
DOS2UNIX ?= dos2unix
@@ -28,15 +33,22 @@ DASHJ ?= -j$(shell echo $$(($$(grep -c "^model name" /proc/cpuinfo) + 1)))
ARCH ?= $(shell $(CC) -dumpmachine | cut -f1 -d- | sed s,i[3456789]86,ia32,)
OBJCOPY_GTE224 = $(shell expr `$(OBJCOPY) --version |grep ^"GNU objcopy" | sed 's/^.*\((.*)\|version\) //g' | cut -f1-2 -d.` \>= 2.24)
OPTIMIZATIONS ?= -Os
+FA_OPTIMIZATIONS ?= -O2
+ifneq ($(FANALYZER),)
+override OPTIMIZATIONS := $(FA_OPTIMIZATIONS)
+override CCACHE_DISABLE := true
+endif
+export OPTIMIZATIONS
+ifneq ($(CCACHE_DISABLE),)
+export CCACHE_DISABLE
+endif
SUBDIRS = $(TOPDIR)/Cryptlib $(TOPDIR)/lib
-EFI_INCLUDE ?= /usr/include/efi
-EFI_INCLUDES = -nostdinc -I$(TOPDIR)/Cryptlib -I$(TOPDIR)/Cryptlib/Include \
- -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH) -I$(EFI_INCLUDE)/protocol \
- -I$(TOPDIR)/include -iquote $(TOPDIR) -iquote $(shell pwd)
-
-EFI_CRT_OBJS = $(EFI_PATH)/crt0-efi-$(ARCH).o
+EFI_INCLUDE ?= $(TOPDIR)/gnu-efi/inc
+EFI_INCLUDES = -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH) -I$(EFI_INCLUDE)/protocol
+override EFI_INCLUDES := $(EFI_INCLUDES)
+EFI_CRT_OBJS = $(LOCAL_EFI_PATH)/crt0-efi-$(ARCH_GNUEFI).o
EFI_LDS = $(TOPDIR)/elf_$(ARCH)_efi.lds
CLANG_BUGS = $(if $(findstring gcc,$(CC)),-maccumulate-outgoing-args,)
@@ -46,10 +58,8 @@ COMMIT_ID ?= $(shell if [ -e .git ] ; then git log -1 --pretty=format:%H ; elif
ifeq ($(ARCH),x86_64)
ARCH_CFLAGS ?= -mno-mmx -mno-sse -mno-red-zone -nostdinc \
$(CLANG_BUGS) -m64 \
- -DEFI_FUNCTION_WRAPPER -DGNU_EFI_USE_MS_ABI \
- -DNO_BUILTIN_VA_FUNCS -DMDE_CPU_X64 \
- -DPAGE_SIZE=4096
- LIBDIR ?= $(prefix)/lib64
+ -DMDE_CPU_X64 -DPAGE_SIZE=4096
+ ARCH_GNUEFI ?= x86_64
ARCH_SUFFIX ?= x64
ARCH_SUFFIX_UPPER ?= X64
ARCH_LDFLAGS ?=
@@ -59,7 +69,7 @@ ifeq ($(ARCH),ia32)
ARCH_CFLAGS ?= -mno-mmx -mno-sse -mno-red-zone -nostdinc \
$(CLANG_BUGS) -m32 \
-DMDE_CPU_IA32 -DPAGE_SIZE=4096
- LIBDIR ?= $(prefix)/lib
+ ARCH_GNUEFI ?= ia32
ARCH_SUFFIX ?= ia32
ARCH_SUFFIX_UPPER ?= IA32
ARCH_LDFLAGS ?=
@@ -68,7 +78,7 @@ ifeq ($(ARCH),ia32)
endif
ifeq ($(ARCH),aarch64)
ARCH_CFLAGS ?= -DMDE_CPU_AARCH64 -DPAGE_SIZE=4096 -mstrict-align
- LIBDIR ?= $(prefix)/lib64
+ ARCH_GNUEFI ?= aarch64
ARCH_SUFFIX ?= aa64
ARCH_SUFFIX_UPPER ?= AA64
FORMAT := -O binary
@@ -79,7 +89,7 @@ ifeq ($(ARCH),aarch64)
endif
ifeq ($(ARCH),arm)
ARCH_CFLAGS ?= -DMDE_CPU_ARM -DPAGE_SIZE=4096 -mno-unaligned-access
- LIBDIR ?= $(prefix)/lib
+ ARCH_GNUEFI ?= arm
ARCH_SUFFIX ?= arm
ARCH_SUFFIX_UPPER ?= ARM
FORMAT := -O binary
@@ -88,30 +98,64 @@ ifeq ($(ARCH),arm)
TIMESTAMP_LOCATION := 72
endif
-CFLAGS = -ggdb $(OPTIMIZATIONS) -fno-stack-protector -fno-strict-aliasing -fpic \
- -fshort-wchar -Wall -Wsign-compare -Werror -fno-builtin \
- -Werror=sign-compare -ffreestanding -std=gnu89 \
- -I$(shell $(CC) $(ARCH_CFLAGS) -print-file-name=include) \
- "-DDEFAULT_LOADER=L\"$(DEFAULT_LOADER)\"" \
- "-DDEFAULT_LOADER_CHAR=\"$(DEFAULT_LOADER)\"" \
- $(EFI_INCLUDES) $(ARCH_CFLAGS)
+DEFINES = -DDEFAULT_LOADER='L"$(DEFAULT_LOADER)"' \
+ -DDEFAULT_LOADER_CHAR='"$(DEFAULT_LOADER)"'
+
+INCLUDES = -nostdinc \
+ -I$(TOPDIR)/Cryptlib -I$(TOPDIR)/Cryptlib/Include \
+ -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH_GNUEFI) -I$(EFI_INCLUDE)/protocol \
+ -I$(TOPDIR)/include -iquote $(TOPDIR) -iquote $(shell pwd) \
+ -isystem $(TOPDIR)/include/system \
+ -isystem $(shell $(CC) $(ARCH_CFLAGS) -print-file-name=include)
+
+override DEFAULT_FEATUREFLAGS = \
+ -std=gnu11 \
+ -ggdb \
+ -ffreestanding \
+ $(shell $(CC) -fmacro-prefix-map=./=./ -E -x c /dev/null >/dev/null 2>&1 && echo -fmacro-prefix-map='$(TOPDIR)/=$(DEBUGSRC)') \
+ -fno-stack-protector \
+ -fno-strict-aliasing \
+ -fpic \
+ -fshort-wchar
+$(call update-variable,FEATUREFLAGS)
+$(call conditional-add-flag,$(FANALYZER),analyzer,FEATUREFLAGS,-fanalyzer)
+$(call conditional-add-flag,$(COLOR),diagnostics-color,FEATUREFLAGS,-fdiagnostics-color=always)
+
+override DEFAULT_WARNFLAGS = \
+ -Wall \
+ -Wextra \
+ -Wno-missing-field-initializers
+$(call update-variable,WARNFLAGS)
+
+override DEFAULT_WERRFLAGS = \
+ -Werror
+$(call update-variable,WERRFLAGS)
+
+CFLAGS = $(FEATUREFLAGS) \
+ $(OPTIMIZATIONS) \
+ $(WARNFLAGS) \
+ $(ARCH_CFLAGS) \
+ $(WERRFLAGS) \
+ $(INCLUDES) \
+ $(DEFINES)
ifneq ($(origin OVERRIDE_SECURITY_POLICY), undefined)
- CFLAGS += -DOVERRIDE_SECURITY_POLICY
+ DEFINES += -DOVERRIDE_SECURITY_POLICY
endif
ifneq ($(origin REQUIRE_TPM), undefined)
- CFLAGS += -DREQUIRE_TPM
+ DEFINES += -DREQUIRE_TPM
endif
ifneq ($(origin DISABLE_EBS_PROTECTION), undefined)
- CFLAGS += -DDISABLE_EBS_PROTECTION
+ DEFINES += -DDISABLE_EBS_PROTECTION
endif
LIB_GCC = $(shell $(CC) $(ARCH_CFLAGS) -print-libgcc-file-name)
EFI_LIBS = -lefi -lgnuefi --start-group Cryptlib/libcryptlib.a Cryptlib/OpenSSL/libopenssl.a --end-group $(LIB_GCC)
FORMAT ?= --target efi-app-$(ARCH)
-EFI_PATH ?= $(shell [ -d $(LIBDIR)/gnuefi ] && echo "$(LIBDIR)/gnuefi" || echo "$(LIBDIR)")
+LOCAL_EFI_PATH = gnu-efi/$(ARCH_GNUEFI)/gnuefi
+LIBDIR = gnu-efi/$(ARCH_GNUEFI)/lib
MMSTEM ?= mm$(ARCH_SUFFIX)
MMNAME = $(MMSTEM).efi
@@ -126,16 +170,26 @@ SHIMHASHNAME = $(SHIMSTEM).hash
BOOTEFINAME ?= BOOT$(ARCH_SUFFIX_UPPER).EFI
BOOTCSVNAME ?= BOOT$(ARCH_SUFFIX_UPPER).CSV
-CFLAGS += "-DEFI_ARCH=L\"$(ARCH_SUFFIX)\"" "-DDEBUGDIR=L\"/usr/lib/debug/usr/share/shim/$(ARCH_SUFFIX)-$(VERSION)$(DASHRELEASE)/\""
+DEFINES += -DEFI_ARCH='L"$(ARCH_SUFFIX)"' \
+ -DDEBUGDIR='L"/usr/lib/debug/usr/share/shim/$(ARCH_SUFFIX)-$(VERSION)$(DASHRELEASE)/"'
ifneq ($(origin VENDOR_DB_FILE), undefined)
- CFLAGS += -DVENDOR_DB_FILE=\"$(VENDOR_DB_FILE)\"
+DEFINES += -DVENDOR_DB_FILE=\"$(VENDOR_DB_FILE)\"
endif
ifneq ($(origin VENDOR_CERT_FILE), undefined)
- CFLAGS += -DVENDOR_CERT_FILE=\"$(VENDOR_CERT_FILE)\"
+DEFINES += -DVENDOR_CERT_FILE=\"$(VENDOR_CERT_FILE)\"
endif
ifneq ($(origin VENDOR_DBX_FILE), undefined)
- CFLAGS += -DVENDOR_DBX_FILE=\"$(VENDOR_DBX_FILE)\"
+DEFINES += -DVENDOR_DBX_FILE=\"$(VENDOR_DBX_FILE)\"
+endif
+
+LDFLAGS = --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
+
+ifneq ($(DEBUG),)
+export DEBUG
+endif
+ifneq ($(VERBOSE),)
+export VERBOSE
endif
-LDFLAGS = --hash-style=sysv -nostdlib -znocombreloc -T $(EFI_LDS) -shared -Bsymbolic -L$(EFI_PATH) -L$(LIBDIR) -LCryptlib -LCryptlib/OpenSSL $(EFI_CRT_OBJS) --build-id=sha1 $(ARCH_LDFLAGS) --no-undefined
+# vim:filetype=make