mirror of
https://git.proxmox.com/git/efi-boot-shim
synced 2025-08-16 20:47:59 +00:00
136 lines
3.7 KiB
Makefile
136 lines
3.7 KiB
Makefile
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
# test.mk - makefile to make local test programs
|
|
#
|
|
|
|
.SUFFIXES:
|
|
|
|
include Make.defaults
|
|
|
|
CC = gcc
|
|
VALGRIND ?=
|
|
DEBUG_PRINTS ?= 0
|
|
OPTIMIZATIONS=-O2 -ggdb
|
|
CFLAGS_LTO =
|
|
CFLAGS_GCOV =
|
|
CFLAGS = $(OPTIMIZATIONS) -std=gnu11 \
|
|
-isystem $(TOPDIR)/include/system \
|
|
$(EFI_INCLUDES) \
|
|
-Iinclude -iquote . \
|
|
-isystem /usr/include \
|
|
-isystem $(shell $(CC) $(ARCH_CFLAGS) -print-file-name=include) \
|
|
$(ARCH_CFLAGS) \
|
|
$(CFLAGS_LTO) \
|
|
$(CFLAGS_GCOV) \
|
|
-fshort-wchar \
|
|
-fno-builtin \
|
|
-rdynamic \
|
|
-fno-inline \
|
|
-fno-eliminate-unused-debug-types \
|
|
-fno-eliminate-unused-debug-symbols \
|
|
-gpubnames \
|
|
-grecord-gcc-switches \
|
|
$(if $(findstring clang,$(CC)),-Wno-unknown-warning-option) \
|
|
$(DEFAULT_WARNFLAGS) \
|
|
-Wsign-compare \
|
|
-Wno-deprecated-declarations \
|
|
$(if $(findstring gcc,$(CC)),-Wno-unused-but-set-variable) \
|
|
-Wno-unused-variable \
|
|
-Wno-pointer-sign \
|
|
$(DEFAULT_WERRFLAGS) \
|
|
-Werror=nonnull \
|
|
$(shell $(CC) -Werror=nonnull-compare -E -x c /dev/null >/dev/null 2>&1 && echo -Werror=nonnull-compare) \
|
|
$(ARCH_DEFINES) \
|
|
-DEFI_FUNCTION_WRAPPER \
|
|
-DGNU_EFI_USE_MS_ABI -DPAGE_SIZE=4096 \
|
|
-DSHIM_UNIT_TEST \
|
|
"-DDEFAULT_DEBUG_PRINT_STATE=$(DEBUG_PRINTS)"
|
|
|
|
# On some systems (e.g. Arch Linux), limits.h is in the "include-fixed" instead
|
|
# of the "include" directory
|
|
CFLAGS += -isystem $(shell $(CC) $(ARCH_CFLAGS) -print-file-name=include-fixed)
|
|
|
|
# And on Debian also check the multi-arch include path
|
|
CFLAGS += -isystem /usr/include/$(shell $(CC) $(ARCH_CFLAGS) -print-multiarch)
|
|
|
|
export CFLAGS_LTO CFLAGS_GCOV
|
|
|
|
libefi-test.a :
|
|
$(MAKE) -C gnu-efi \
|
|
COMPILER="$(COMPILER)" \
|
|
CC="$(CC)" \
|
|
ARCH=$(ARCH_GNUEFI) \
|
|
TOPDIR=$(TOPDIR)/gnu-efi \
|
|
CFLAGS_LTO="$(CFLAGS_LTO)" \
|
|
CFLAGS_GCOV="$(CFLAGS_GCOV)" \
|
|
-f $(TOPDIR)/gnu-efi/Makefile \
|
|
clean lib
|
|
mv gnu-efi/$(ARCH)/lib/libefi.a $@
|
|
$(MAKE) -C gnu-efi \
|
|
COMPILER="$(COMPILER)" \
|
|
ARCH=$(ARCH_GNUEFI) \
|
|
TOPDIR=$(TOPDIR)/gnu-efi \
|
|
CFLAGS_LTO="$(CFLAGS_LTO)" \
|
|
CFLAGS_GCOV="$(CFLAGS_GCOV)" \
|
|
-f $(TOPDIR)/gnu-efi/Makefile \
|
|
clean
|
|
|
|
test-random.h:
|
|
dd if=/dev/urandom bs=512 count=17 status=none | ( \
|
|
echo "unsigned char random_bin[] = {" ; \
|
|
xxd -i - ; \
|
|
echo "};" ; \
|
|
echo "unsigned int random_bin_len = 8704;" ; \
|
|
) > test-random.h
|
|
|
|
$(wildcard test-*.c) :: %.c : test-random.h
|
|
$(patsubst %.c,%,$(wildcard test-*.c)) :: | test-random.h
|
|
$(patsubst %.c,%.o,$(wildcard test-*.c)) : | test-random.h
|
|
|
|
test-load-options_FILES = lib/guid.c
|
|
test-load-options : CFLAGS+=-DHAVE_SHIM_LOCK_GUID
|
|
|
|
test-mock-variables_FILES = mok.c globals.c tpm.c lib/guid.c lib/variables.c mock-variables.c
|
|
test-mock-variables: CFLAGS+=-DHAVE_SHIM_LOCK_GUID
|
|
|
|
test-mok-mirror_FILES = mok.c globals.c tpm.c lib/guid.c lib/variables.c mock-variables.c
|
|
test-mok-mirror: CFLAGS+=-DHAVE_START_IMAGE -DHAVE_SHIM_LOCK_GUID
|
|
|
|
test-sbat_FILES = csv.c lib/variables.c lib/guid.c sbat_var.S mock-variables.c
|
|
test-sbat :: CFLAGS+=-DHAVE_GET_VARIABLE -DHAVE_GET_VARIABLE_ATTR -DHAVE_SHIM_LOCK_GUID
|
|
|
|
test-pe-relocate_FILES = globals.c
|
|
test-pe-relocate :: CFLAGS+=-DHAVE_SHIM_LOCK_GUID
|
|
|
|
test-str_FILES = lib/string.c
|
|
|
|
tests := $(patsubst %.c,%,$(wildcard test-*.c))
|
|
|
|
$(tests) :: test-% : | libefi-test.a
|
|
|
|
$(tests) :: test-% : test.c test-%.c $(test-%_FILES)
|
|
$(CC) $(CFLAGS) -o $@ $(sort $^ $(wildcard $*.c) $(test-$*_FILES)) libefi-test.a -lefivar
|
|
$(VALGRIND) ./$@
|
|
|
|
test : $(tests)
|
|
$(MAKE) -f include/test.mk test-clean
|
|
|
|
test-lto : CFLAGS_LTO+=-flto
|
|
test-lto : $(tests)
|
|
$(MAKE) -f include/test.mk test-clean
|
|
|
|
test-coverage : CFLAGS_GCOV+=--coverage
|
|
test-coverage : $(tests)
|
|
|
|
test-clean :
|
|
@rm -vf test-random.h libefi-test.a
|
|
@rm -vf *.gcda *.gcno *.gcov vgcore.*
|
|
|
|
clean : test-clean
|
|
|
|
all : test-clean test
|
|
|
|
.PHONY: $(tests) all test clean
|
|
|
|
# vim:ft=make
|