^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