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) include ../scripts/Makefile.include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) ifndef MK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) ifeq ($(MAKECMDGOALS),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) # no target specified, trigger the whole suite
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) all:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 	@echo "Testing Makefile";      $(MAKE) -sf tests/make MK=Makefile
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 	@echo "Testing Makefile.perf"; $(MAKE) -sf tests/make MK=Makefile.perf SET_PARALLEL=1 SET_O=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) # run only specific test over 'Makefile'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) %:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 	@echo "Testing Makefile";      $(MAKE) -sf tests/make MK=Makefile $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) PERF := .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) PERF_O := $(PERF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) O_OPT :=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) FULL_O := $(shell readlink -f $(PERF_O) || echo $(PERF_O))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) ifneq ($(O),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)   FULL_O := $(shell readlink -f $(O) || echo $(O))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)   PERF_O := $(FULL_O)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23)   ifeq ($(SET_O),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24)     O_OPT := 'O=$(FULL_O)'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25)   endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)   K_O_OPT := 'O=$(FULL_O)'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) PARALLEL_OPT=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) ifeq ($(SET_PARALLEL),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)   ifeq ($(JOBS),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)     cores := $(shell (getconf _NPROCESSORS_ONLN || egrep -c '^processor|^CPU[0-9]' /proc/cpuinfo) 2>/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)     ifeq ($(cores),0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34)       cores := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)     endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)   else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37)     cores=$(JOBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38)   endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39)   PARALLEL_OPT="-j$(cores)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) # As per kernel Makefile, avoid funny character set dependencies
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) unexport LC_ALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) LC_COLLATE=C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) LC_NUMERIC=C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) export LC_COLLATE LC_NUMERIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) ifeq ($(srctree),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) srctree := $(patsubst %/,%,$(dir $(CURDIR)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) srctree := $(patsubst %/,%,$(dir $(srctree)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #$(info Determined 'srctree' to be $(srctree))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) include $(srctree)/tools/scripts/Makefile.arch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) # FIXME looks like x86 is the only arch running tests ;-)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) # we need some IS_(32/64) flag to make this generic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) ifeq ($(ARCH)$(IS_64_BIT), x861)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) lib = lib64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) lib = lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) has = $(shell which $1 2>/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) # standard single make variable specified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) make_clean_all      := clean all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) make_python_perf_so := python/perf.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) make_debug          := DEBUG=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) make_no_libperl     := NO_LIBPERL=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) make_no_libpython   := NO_LIBPYTHON=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) make_no_scripts     := NO_LIBPYTHON=1 NO_LIBPERL=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) make_no_newt        := NO_NEWT=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) make_no_slang       := NO_SLANG=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) make_no_gtk2        := NO_GTK2=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) make_no_ui          := NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) make_no_demangle    := NO_DEMANGLE=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) make_no_libelf      := NO_LIBELF=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) make_no_libunwind   := NO_LIBUNWIND=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) make_no_libdw_dwarf_unwind := NO_LIBDW_DWARF_UNWIND=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) make_no_backtrace   := NO_BACKTRACE=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) make_no_libnuma     := NO_LIBNUMA=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) make_no_libaudit    := NO_LIBAUDIT=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) make_no_libbionic   := NO_LIBBIONIC=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) make_no_auxtrace    := NO_AUXTRACE=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) make_no_libbpf	    := NO_LIBBPF=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) make_no_libbpf_DEBUG := NO_LIBBPF=1 DEBUG=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) make_no_libcrypto   := NO_LIBCRYPTO=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) make_with_babeltrace:= LIBBABELTRACE=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) make_no_sdt	    := NO_SDT=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) make_no_syscall_tbl := NO_SYSCALL_TABLE=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) make_with_clangllvm := LIBCLANGLLVM=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) make_with_libpfm4   := LIBPFM4=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) make_with_gtk2      := GTK2=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) make_tags           := tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) make_cscope         := cscope
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) make_help           := help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) make_doc            := doc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) make_perf_o           := perf.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) make_util_map_o       := util/map.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) make_util_pmu_bison_o := util/pmu-bison.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) make_install        := install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) make_install_bin    := install-bin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) make_install_doc    := install-doc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) make_install_man    := install-man
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) make_install_html   := install-html
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) make_install_info   := install-info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) make_install_pdf    := install-pdf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) make_install_prefix       := install prefix=/tmp/krava
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) make_install_prefix_slash := install prefix=/tmp/krava/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) make_static         := LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) # all the NO_* variable combined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) make_minimal        := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) make_minimal        += NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) make_minimal        += NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) make_minimal        += NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) make_minimal        += NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 NO_LIBZSTD=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) make_minimal        += NO_LIBCAP=1 NO_SYSCALL_TABLE=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) # $(run) contains all available tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) run := make_pure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) # Targets 'clean all' can be run together only through top level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) # Makefile because we detect clean target in Makefile.perf and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) # disable features detection
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) ifeq ($(MK),Makefile)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) run += make_clean_all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) MAKE_F := $(MAKE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) MAKE_F := $(MAKE) -f $(MK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) run += make_python_perf_so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) run += make_debug
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) run += make_no_libperl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) run += make_no_libpython
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) run += make_no_scripts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) run += make_no_newt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) run += make_no_slang
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) run += make_no_gtk2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) run += make_no_ui
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) run += make_no_demangle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) run += make_no_libelf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) run += make_no_libunwind
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) run += make_no_libdw_dwarf_unwind
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) run += make_no_backtrace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) run += make_no_libnuma
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) run += make_no_libaudit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) run += make_no_libbionic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) run += make_no_auxtrace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) run += make_no_libbpf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) run += make_no_libbpf_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) run += make_no_libcrypto
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) run += make_no_sdt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) run += make_no_syscall_tbl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) run += make_with_babeltrace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) run += make_with_clangllvm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) run += make_with_libpfm4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) run += make_with_gtk2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) run += make_help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) run += make_doc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) run += make_perf_o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) run += make_util_map_o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) run += make_util_pmu_bison_o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) run += make_install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) run += make_install_bin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) run += make_install_prefix
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) run += make_install_prefix_slash
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) # FIXME 'install-*' commented out till they're fixed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) # run += make_install_doc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) # run += make_install_man
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) # run += make_install_html
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) # run += make_install_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) # run += make_install_pdf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) run += make_minimal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) run += make_static
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) ifneq ($(call has,ctags),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) run += make_tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) ifneq ($(call has,cscope),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) run += make_cscope
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) # $(run_O) contains same portion of $(run) tests with '_O' attached
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) # to distinguish O=... tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) run_O := $(addsuffix _O,$(run))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) # disable some tests for O=...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) run_O := $(filter-out make_python_perf_so_O,$(run_O))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) # define test for each compile as 'test_NAME' variable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) # with the test itself as a value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) test_make_tags   = test -f tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) test_make_cscope = test -f cscope.out
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) test_make_tags_O   := $(test_make_tags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) test_make_cscope_O := $(test_make_cscope)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) test_ok          := true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) test_make_help   := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) test_make_doc    := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) test_make_help_O := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) test_make_doc_O  := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) test_make_python_perf_so := test -f $(PERF_O)/python/perf.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) test_make_perf_o           := test -f $(PERF_O)/perf.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) test_make_util_map_o       := test -f $(PERF_O)/util/map.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) test_make_util_pmu_bison_o := test -f $(PERF_O)/util/pmu-bison.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) define test_dest_files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)   for file in $(1); do				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)     if [ ! -x $$TMP_DEST/$$file ]; then		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)       echo "  failed to find: $$file";		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)     fi						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)   done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) installed_files_bin := bin/perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) installed_files_bin += etc/bash_completion.d/perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) installed_files_bin += libexec/perf-core/perf-archive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) installed_files_plugins := $(lib)/traceevent/plugins/plugin_cfg80211.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) installed_files_plugins += $(lib)/traceevent/plugins/plugin_scsi.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) installed_files_plugins += $(lib)/traceevent/plugins/plugin_xen.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) installed_files_plugins += $(lib)/traceevent/plugins/plugin_function.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) installed_files_plugins += $(lib)/traceevent/plugins/plugin_sched_switch.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) installed_files_plugins += $(lib)/traceevent/plugins/plugin_mac80211.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) installed_files_plugins += $(lib)/traceevent/plugins/plugin_kvm.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) installed_files_plugins += $(lib)/traceevent/plugins/plugin_kmem.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) installed_files_plugins += $(lib)/traceevent/plugins/plugin_hrtimer.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) installed_files_plugins += $(lib)/traceevent/plugins/plugin_jbd2.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) installed_files_all := $(installed_files_bin)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) installed_files_all += $(installed_files_plugins)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) test_make_install       := $(call test_dest_files,$(installed_files_all))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) test_make_install_O     := $(call test_dest_files,$(installed_files_all))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) test_make_install_bin   := $(call test_dest_files,$(installed_files_bin))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) test_make_install_bin_O := $(call test_dest_files,$(installed_files_bin))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) # We prefix all installed files for make_install_prefix(_slash)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) # with '/tmp/krava' to match installed/prefix-ed files.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) installed_files_all_prefix := $(addprefix /tmp/krava/,$(installed_files_all))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) test_make_install_prefix   :=  $(call test_dest_files,$(installed_files_all_prefix))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) test_make_install_prefix_O :=  $(call test_dest_files,$(installed_files_all_prefix))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) test_make_install_prefix_slash   := $(test_make_install_prefix)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) test_make_install_prefix_slash_O := $(test_make_install_prefix_O)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) # FIXME nothing gets installed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) test_make_install_man    := test -f $$TMP_DEST/share/man/man1/perf.1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) test_make_install_man_O  := $(test_make_install_man)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) # FIXME nothing gets installed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) test_make_install_doc    := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) test_make_install_doc_O  := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) # FIXME nothing gets installed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) test_make_install_html   := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) test_make_install_html_O := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) # FIXME nothing gets installed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) test_make_install_info   := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) test_make_install_info_O := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) # FIXME nothing gets installed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) test_make_install_pdf    := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) test_make_install_pdf_O  := $(test_ok)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) test_make_python_perf_so_O    := test -f $$TMP_O/python/perf.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) test_make_perf_o_O            := test -f $$TMP_O/perf.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) test_make_util_map_o_O        := test -f $$TMP_O/util/map.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) test_make_util_pmu_bison_o_O := test -f $$TMP_O/util/pmu-bison.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) test_default = test -x $(PERF_O)/perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) test = $(if $(test_$1),$(test_$1),$(test_default))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) test_default_O = test -x $$TMP_O/perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) test_O = $(if $(test_$1),$(test_$1),$(test_default_O))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) all:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) ifdef SHUF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) run := $(shell shuf -e $(run))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) run_O := $(shell shuf -e $(run_O))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) max_width := $(shell echo $(run_O) | sed 's/ /\n/g' | wc -L)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) ifdef DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) d := $(info run   $(run))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) d := $(info run_O $(run_O))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) MAKEFLAGS := --no-print-directory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) clean := @(cd $(PERF); $(MAKE_F) -s $(O_OPT) clean >/dev/null && $(MAKE) -s $(O_OPT) -C ../build clean >/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) $(run):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 	$(call clean)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 	@TMP_DEST=$$(mktemp -d); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 	cmd="cd $(PERF) && $(MAKE_F) $($@) $(PARALLEL_OPT) $(O_OPT) DESTDIR=$$TMP_DEST"; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 	printf "%*.*s: %s\n" $(max_width) $(max_width) "$@" "$$cmd" && echo $$cmd > $@ && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 	( eval $$cmd ) >> $@ 2>&1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 	echo "  test: $(call test,$@)" >> $@ 2>&1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 	$(call test,$@) && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 	rm -rf $@ $$TMP_DEST || (cat $@ ; false)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) $(run_O):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 	$(call clean)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 	@TMP_O=$$(mktemp -d); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 	TMP_DEST=$$(mktemp -d); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 	cmd="cd $(PERF) && $(MAKE_F) $($(patsubst %_O,%,$@)) $(PARALLEL_OPT) O=$$TMP_O DESTDIR=$$TMP_DEST"; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) 	printf "%*.*s: %s\n" $(max_width) $(max_width) "$@" "$$cmd" && echo $$cmd > $@ && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 	( eval $$cmd ) >> $@ 2>&1 && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) 	echo "  test: $(call test_O,$@)" >> $@ 2>&1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 	$(call test_O,$@) && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 	rm -rf $@ $$TMP_O $$TMP_DEST || (cat $@ ; false)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) tarpkg:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) 	@cmd="$(PERF)/tests/perf-targz-src-pkg $(PERF)"; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 	echo "- $@: $$cmd" && echo $$cmd > $@ && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 	( eval $$cmd ) >> $@ 2>&1 && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 	rm -f $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) KERNEL_O := ../..
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) ifneq ($(O),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329)   KERNEL_O := $(O)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) make_kernelsrc:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 	@echo "- make -C <kernelsrc> $(PARALLEL_OPT) $(K_O_OPT) tools/perf"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 	$(call clean); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 	(make -C ../.. $(PARALLEL_OPT) $(K_O_OPT) tools/perf) > $@ 2>&1 && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 	test -x $(KERNEL_O)/tools/perf/perf && rm -f $@ || (cat $@ ; false)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) make_kernelsrc_tools:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) 	@echo "- make -C <kernelsrc>/tools $(PARALLEL_OPT) $(K_O_OPT) perf"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 	$(call clean); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) 	(make -C ../../tools $(PARALLEL_OPT) $(K_O_OPT) perf) > $@ 2>&1 && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) 	test -x $(KERNEL_O)/tools/perf/perf && rm -f $@ || (cat $@ ; false)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) make_libperf:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) 	@echo "- make -C lib";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 	make -C lib clean >$@ 2>&1; make -C lib >>$@ 2>&1 && rm $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) FEATURES_DUMP_FILE := $(FULL_O)/BUILD_TEST_FEATURE_DUMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) FEATURES_DUMP_FILE_STATIC := $(FULL_O)/BUILD_TEST_FEATURE_DUMP_STATIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) all: $(run) $(run_O) tarpkg make_kernelsrc make_kernelsrc_tools
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 	@echo OK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) 	@rm -f $(FEATURES_DUMP_FILE) $(FEATURES_DUMP_FILE_STATIC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) out: $(run_O)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) 	@echo OK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) 	@rm -f $(FEATURES_DUMP_FILE) $(FEATURES_DUMP_FILE_STATIC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) ifeq ($(REUSE_FEATURES_DUMP),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) $(FEATURES_DUMP_FILE):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 	$(call clean)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) 	@cmd="cd $(PERF) && make FEATURE_DUMP_COPY=$@ $(O_OPT) feature-dump"; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) 	echo "- $@: $$cmd" && echo $$cmd && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) 	( eval $$cmd ) > /dev/null 2>&1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) $(FEATURES_DUMP_FILE_STATIC):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) 	$(call clean)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) 	@cmd="cd $(PERF) && make FEATURE_DUMP_COPY=$@ $(O_OPT) LDFLAGS='-static' feature-dump"; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) 	echo "- $@: $$cmd" && echo $$cmd && \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) 	( eval $$cmd ) > /dev/null 2>&1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) # Add feature dump dependency for run/run_O targets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) $(foreach t,$(run) $(run_O),$(eval \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) 	$(t): $(if $(findstring make_static,$(t)),\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) 		$(FEATURES_DUMP_FILE_STATIC),\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) 		$(FEATURES_DUMP_FILE))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) # Append 'FEATURES_DUMP=' option to all test cases. For example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) # make_no_libbpf: NO_LIBBPF=1  --> NO_LIBBPF=1 FEATURES_DUMP=/a/b/BUILD_TEST_FEATURE_DUMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) # make_static: LDFLAGS=-static --> LDFLAGS=-static FEATURES_DUMP=/a/b/BUILD_TEST_FEATURE_DUMP_STATIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) $(foreach t,$(run),$(if $(findstring make_static,$(t)),\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) 			$(eval $(t) := $($(t)) FEATURES_DUMP=$(FEATURES_DUMP_FILE_STATIC)),\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) 			$(eval $(t) := $($(t)) FEATURES_DUMP=$(FEATURES_DUMP_FILE))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) .PHONY: all $(run) $(run_O) tarpkg clean make_kernelsrc make_kernelsrc_tools make_libperf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) endif # ifndef MK