Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) # This mimics the top-level Makefile. We do it explicitly here so that this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) # Makefile can operate with or without the kbuild infrastructure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) ifneq ($(LLVM),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) CC := clang
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) CC := $(CROSS_COMPILE)gcc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) ifeq (0,$(MAKELEVEL))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)     ifeq ($(OUTPUT),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 	OUTPUT := $(shell pwd)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 	DEFAULT_INSTALL_HDR_PATH := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)     endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) selfdir = $(realpath $(dir $(filter %/lib.mk,$(MAKEFILE_LIST))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) # The following are built by lib.mk common compile rules.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) # TEST_CUSTOM_PROGS should be used by tests that require
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) # custom build rule and prevent common build rule use.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) # TEST_PROGS are for test shell scripts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) # TEST_CUSTOM_PROGS and TEST_PROGS will be run by common run_tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) # and install targets. Common clean doesn't touch them.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) TEST_GEN_PROGS_EXTENDED := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS_EXTENDED))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) ifdef KSFT_KHDR_INSTALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) top_srcdir ?= ../../../..
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) include $(top_srcdir)/scripts/subarch.include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) ARCH		?= $(SUBARCH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) # set default goal to all, so make without a target runs all, even when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) # all isn't the first target in the file.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) .DEFAULT_GOAL := all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) # Invoke headers install with --no-builtin-rules to avoid circular
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) # dependency in "make kselftest" case. In this case, second level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) # make inherits builtin-rules which will use the rule generate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) # Makefile.o and runs into
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) # "Circular Makefile.o <- prepare dependency dropped."
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) # and headers_install fails and test compile fails.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) # O= KBUILD_OUTPUT cases don't run into this error, since main Makefile
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) # invokes them as sub-makes and --no-builtin-rules is not necessary,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) # but doesn't cause any failures. Keep it simple and use the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) # flags in both cases.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) # Note that the support to install headers from lib.mk is necessary
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) # when test Makefile is run directly with "make -C".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) # When local build is done, headers are installed in the default
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) # INSTALL_HDR_PATH usr/include.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) .PHONY: khdr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) .NOTPARALLEL:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) khdr:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) ifndef KSFT_KHDR_INSTALL_DONE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) ifeq (1,$(DEFAULT_INSTALL_HDR_PATH))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	$(MAKE) --no-builtin-rules ARCH=$(ARCH) -C $(top_srcdir) headers_install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	$(MAKE) --no-builtin-rules INSTALL_HDR_PATH=$$OUTPUT/usr \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 		ARCH=$(ARCH) -C $(top_srcdir) headers_install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) all: khdr $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) define RUN_TESTS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	BASE_DIR="$(selfdir)";			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	. $(selfdir)/kselftest/runner.sh;	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	if [ "X$(summary)" != "X" ]; then       \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 		per_test_logging=1;		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	fi;                                     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	run_many $(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) run_tests: all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) ifdef building_out_of_srctree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	@if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 		rsync -aq $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(OUTPUT); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	@if [ "X$(TEST_PROGS)" != "X" ]; then \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 		$(call RUN_TESTS, $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 				  $(addprefix $(OUTPUT)/,$(TEST_PROGS))) ; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	else \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 		$(call RUN_TESTS, $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS)); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	@$(call RUN_TESTS, $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_PROGS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) define INSTALL_SINGLE_RULE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	$(if $(INSTALL_LIST),@mkdir -p $(INSTALL_PATH))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	$(if $(INSTALL_LIST),rsync -a $(INSTALL_LIST) $(INSTALL_PATH)/)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) define INSTALL_RULE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	$(eval INSTALL_LIST = $(TEST_PROGS)) $(INSTALL_SINGLE_RULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	$(eval INSTALL_LIST = $(TEST_PROGS_EXTENDED)) $(INSTALL_SINGLE_RULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	$(eval INSTALL_LIST = $(TEST_FILES)) $(INSTALL_SINGLE_RULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	$(eval INSTALL_LIST = $(TEST_GEN_PROGS)) $(INSTALL_SINGLE_RULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	$(eval INSTALL_LIST = $(TEST_CUSTOM_PROGS)) $(INSTALL_SINGLE_RULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	$(eval INSTALL_LIST = $(TEST_GEN_PROGS_EXTENDED)) $(INSTALL_SINGLE_RULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	$(eval INSTALL_LIST = $(TEST_GEN_FILES)) $(INSTALL_SINGLE_RULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) install: all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) ifdef INSTALL_PATH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	$(INSTALL_RULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	$(error Error: set INSTALL_PATH to use install)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) emit_tests:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	for TEST in $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_PROGS); do \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 		BASENAME_TEST=`basename $$TEST`;	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 		echo "$(COLLECTION):$$BASENAME_TEST";	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) # define if isn't already. It is undefined in make O= case.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) ifeq ($(RM),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) RM := rm -f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) define CLEAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	$(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) clean:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	$(CLEAN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) # When make O= with kselftest target from main level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) # the following aren't defined.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) ifdef building_out_of_srctree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) # Selftest makefiles can override those targets by setting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) # OVERRIDE_TARGETS = 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) ifeq ($(OVERRIDE_TARGETS),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) LOCAL_HDRS := $(selfdir)/kselftest_harness.h $(selfdir)/kselftest.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) $(OUTPUT)/%:%.c $(LOCAL_HDRS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	$(LINK.c) $(filter-out $(LOCAL_HDRS),$^) $(LDLIBS) -o $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) $(OUTPUT)/%.o:%.S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	$(COMPILE.S) $^ -o $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) $(OUTPUT)/%:%.S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	$(LINK.S) $^ $(LDLIBS) -o $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) .PHONY: run_tests all clean install emit_tests