Blame test/unit/Makefile.include

Packit c71e3f
EXT_ORIG        ?= ORIG.o
Packit c71e3f
EXT_PATCHED     ?= PATCHED.o
Packit c71e3f
EXT_FAIL        ?= PATCHED.FAIL.o
Packit c71e3f
EXT_TEST        ?= test
Packit c71e3f
EXT_OUTPUT      ?= OUTPUT.o
Packit c71e3f
EXT_TEST_OUTPUT ?= test.out
Packit c71e3f
EXT_SYMTAB      ?= symtab
Packit c71e3f
EXT_SYMVERS     ?= symvers
Packit c71e3f
TNAME            = $(@:.$(EXT_OUTPUT)=)
Packit c71e3f
Packit c71e3f
ifndef VERBOSE
Packit c71e3f
MUTE_PASS := >/dev/null
Packit c71e3f
MUTE_FAIL := >/dev/null 2>&1
Packit c71e3f
.SILENT: $(TARGETS) $(TEST_TARGETS)
Packit c71e3f
endif
Packit c71e3f
Packit c71e3f
SRC_PATH        ?= $(realpath ../../../../)
Packit c71e3f
CDO             ?= $(SRC_PATH)/kpatch-build/create-diff-object
Packit c71e3f
TEST_LIBRARY    ?= $(SRC_PATH)/test/test-functions.sh
Packit c71e3f
Packit c71e3f
TEST_ENV = KPATCH_TEST_LIBRARY=$(TEST_LIBRARY)
Packit c71e3f
Packit c71e3f
TARGETS      = $(patsubst %.$(EXT_ORIG),%.$(EXT_OUTPUT),$(wildcard *.$(EXT_ORIG)))
Packit c71e3f
TEST_TARGETS = $(patsubst %.$(EXT_TEST),%.$(EXT_TEST_OUTPUT),$(wildcard *.$(EXT_TEST)))
Packit c71e3f
Packit c71e3f
SYMVERS_FILE = $(if $(wildcard $(TNAME).$(EXT_SYMVERS)),$(TNAME).$(EXT_SYMVERS),/dev/null)
Packit c71e3f
Packit c71e3f
define check_stripped =
Packit c71e3f
	$(if $(shell readelf --debug-dump $(1)),
Packit c71e3f
		$(error $(1) is not properly stripped, use 'strip --strip-debug --keep-file-symbols $(1)' to fix this),
Packit c71e3f
	)
Packit c71e3f
endef
Packit c71e3f
Packit c71e3f
define check_all =
Packit c71e3f
	$(call check_stripped,$(1))
Packit c71e3f
endef
Packit c71e3f
Packit c71e3f
Packit c71e3f
all: $(TARGETS) $(TEST_TARGETS)
Packit c71e3f
Packit c71e3f
clean:
Packit c71e3f
	rm -f *.$(EXT_TEST_OUTPUT) *.$(EXT_OUTPUT)
Packit c71e3f
Packit c71e3f
%.$(EXT_SYMTAB):
Packit c71e3f
	eu-readelf -s $(patsubst %.$(EXT_SYMTAB),%.$(EXT_ORIG),$(@)) >$@
Packit c71e3f
Packit c71e3f
%.$(EXT_TEST_OUTPUT): %.$(EXT_OUTPUT) %.$(EXT_TEST) $(TEST_LIBRARY)
Packit c71e3f
	@echo "TEST $(@:.$(EXT_TEST_OUTPUT)=)"
Packit c71e3f
	$(TEST_ENV) bash $(@:.$(EXT_TEST_OUTPUT)=.$(EXT_TEST)) $<
Packit c71e3f
# Don't rely on script creating this
Packit c71e3f
	@touch $@
Packit c71e3f
Packit c71e3f
%.$(EXT_OUTPUT): %.$(EXT_ORIG) %.$(EXT_PATCHED) %.$(EXT_SYMTAB) $(CDO)
Packit c71e3f
	@echo "BUILD $(TNAME)"
Packit c71e3f
	$(call check_all,$(TNAME).$(EXT_ORIG))
Packit c71e3f
	$(call check_all,$(TNAME).$(EXT_PATCHED))
Packit c71e3f
	$(CDO_ENV) $(CDO) $(TNAME).$(EXT_ORIG) $(TNAME).$(EXT_PATCHED) \
Packit c71e3f
		vmlinux $(TNAME).$(EXT_SYMTAB) $(SYMVERS_FILE) \
Packit c71e3f
		test_$(TNAME) $@ $(MUTE_PASS)
Packit c71e3f
Packit c71e3f
%.$(EXT_OUTPUT): %.$(EXT_ORIG) %.$(EXT_FAIL) %.$(EXT_SYMTAB) $(CDO)
Packit c71e3f
	@echo "BUILD $(TNAME)-FAIL"
Packit c71e3f
	$(call check_all,$(TNAME).$(EXT_ORIG))
Packit c71e3f
	$(call check_all,$(TNAME).$(EXT_FAIL))
Packit c71e3f
	! $(CDO_ENV) $(CDO) $(TNAME).$(EXT_ORIG) $(TNAME).$(EXT_FAIL) \
Packit c71e3f
		vmlinux $(TNAME).$(EXT_SYMTAB) $(SYMVERS_FILE) \
Packit c71e3f
		test_$(TNAME) $@ $(MUTE_FAIL)
Packit c71e3f
# Expecting to fail, thus create output file manually so we won't rerun the
Packit c71e3f
# test without clean
Packit c71e3f
	@touch $@