1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun# Some of the tools (perf) use same make variables 3*4882a593Smuzhiyun# as in kernel build. 4*4882a593Smuzhiyunexport srctree= 5*4882a593Smuzhiyunexport objtree= 6*4882a593Smuzhiyun 7*4882a593Smuzhiyuninclude scripts/Makefile.include 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunhelp: 10*4882a593Smuzhiyun @echo 'Possible targets:' 11*4882a593Smuzhiyun @echo '' 12*4882a593Smuzhiyun @echo ' acpi - ACPI tools' 13*4882a593Smuzhiyun @echo ' bpf - misc BPF tools' 14*4882a593Smuzhiyun @echo ' cgroup - cgroup tools' 15*4882a593Smuzhiyun @echo ' cpupower - a tool for all things x86 CPU power' 16*4882a593Smuzhiyun @echo ' debugging - tools for debugging' 17*4882a593Smuzhiyun @echo ' firewire - the userspace part of nosy, an IEEE-1394 traffic sniffer' 18*4882a593Smuzhiyun @echo ' firmware - Firmware tools' 19*4882a593Smuzhiyun @echo ' freefall - laptop accelerometer program for disk protection' 20*4882a593Smuzhiyun @echo ' gpio - GPIO tools' 21*4882a593Smuzhiyun @echo ' hv - tools used when in Hyper-V clients' 22*4882a593Smuzhiyun @echo ' iio - IIO tools' 23*4882a593Smuzhiyun @echo ' intel-speed-select - Intel Speed Select tool' 24*4882a593Smuzhiyun @echo ' kvm_stat - top-like utility for displaying kvm statistics' 25*4882a593Smuzhiyun @echo ' leds - LEDs tools' 26*4882a593Smuzhiyun @echo ' liblockdep - user-space wrapper for kernel locking-validator' 27*4882a593Smuzhiyun @echo ' objtool - an ELF object analysis tool' 28*4882a593Smuzhiyun @echo ' pci - PCI tools' 29*4882a593Smuzhiyun @echo ' perf - Linux performance measurement and analysis tool' 30*4882a593Smuzhiyun @echo ' selftests - various kernel selftests' 31*4882a593Smuzhiyun @echo ' bootconfig - boot config tool' 32*4882a593Smuzhiyun @echo ' spi - spi tools' 33*4882a593Smuzhiyun @echo ' tmon - thermal monitoring and tuning tool' 34*4882a593Smuzhiyun @echo ' turbostat - Intel CPU idle stats and freq reporting tool' 35*4882a593Smuzhiyun @echo ' usb - USB testing tools' 36*4882a593Smuzhiyun @echo ' virtio - vhost test module' 37*4882a593Smuzhiyun @echo ' vm - misc vm tools' 38*4882a593Smuzhiyun @echo ' wmi - WMI interface examples' 39*4882a593Smuzhiyun @echo ' x86_energy_perf_policy - Intel energy policy tool' 40*4882a593Smuzhiyun @echo '' 41*4882a593Smuzhiyun @echo 'You can do:' 42*4882a593Smuzhiyun @echo ' $$ make -C tools/ <tool>_install' 43*4882a593Smuzhiyun @echo '' 44*4882a593Smuzhiyun @echo ' from the kernel command line to build and install one of' 45*4882a593Smuzhiyun @echo ' the tools above' 46*4882a593Smuzhiyun @echo '' 47*4882a593Smuzhiyun @echo ' $$ make tools/all' 48*4882a593Smuzhiyun @echo '' 49*4882a593Smuzhiyun @echo ' builds all tools.' 50*4882a593Smuzhiyun @echo '' 51*4882a593Smuzhiyun @echo ' $$ make tools/install' 52*4882a593Smuzhiyun @echo '' 53*4882a593Smuzhiyun @echo ' installs all tools.' 54*4882a593Smuzhiyun @echo '' 55*4882a593Smuzhiyun @echo 'Cleaning targets:' 56*4882a593Smuzhiyun @echo '' 57*4882a593Smuzhiyun @echo ' all of the above with the "_clean" string appended cleans' 58*4882a593Smuzhiyun @echo ' the respective build directory.' 59*4882a593Smuzhiyun @echo ' clean: a summary clean target to clean _all_ folders' 60*4882a593Smuzhiyun 61*4882a593Smuzhiyunacpi: FORCE 62*4882a593Smuzhiyun $(call descend,power/$@) 63*4882a593Smuzhiyun 64*4882a593Smuzhiyuncpupower: FORCE 65*4882a593Smuzhiyun $(call descend,power/$@) 66*4882a593Smuzhiyun 67*4882a593Smuzhiyuncgroup firewire hv guest bootconfig spi usb virtio vm bpf iio gpio objtool leds wmi pci firmware debugging: FORCE 68*4882a593Smuzhiyun $(call descend,$@) 69*4882a593Smuzhiyun 70*4882a593Smuzhiyunbpf/%: FORCE 71*4882a593Smuzhiyun $(call descend,$@) 72*4882a593Smuzhiyun 73*4882a593Smuzhiyunliblockdep: FORCE 74*4882a593Smuzhiyun $(call descend,lib/lockdep) 75*4882a593Smuzhiyun 76*4882a593Smuzhiyunlibapi: FORCE 77*4882a593Smuzhiyun $(call descend,lib/api) 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun# The perf build does not follow the descend function setup, 80*4882a593Smuzhiyun# invoking it via it's own make rule. 81*4882a593SmuzhiyunPERF_O = $(if $(O),$(O)/tools/perf,) 82*4882a593Smuzhiyun 83*4882a593Smuzhiyunperf: FORCE 84*4882a593Smuzhiyun $(Q)mkdir -p $(PERF_O) . 85*4882a593Smuzhiyun $(Q)$(MAKE) --no-print-directory -C perf O=$(PERF_O) subdir= 86*4882a593Smuzhiyun 87*4882a593Smuzhiyunselftests: FORCE 88*4882a593Smuzhiyun $(call descend,testing/$@) 89*4882a593Smuzhiyun 90*4882a593Smuzhiyunturbostat x86_energy_perf_policy intel-speed-select: FORCE 91*4882a593Smuzhiyun $(call descend,power/x86/$@) 92*4882a593Smuzhiyun 93*4882a593Smuzhiyuntmon: FORCE 94*4882a593Smuzhiyun $(call descend,thermal/$@) 95*4882a593Smuzhiyun 96*4882a593Smuzhiyunfreefall: FORCE 97*4882a593Smuzhiyun $(call descend,laptop/$@) 98*4882a593Smuzhiyun 99*4882a593Smuzhiyunkvm_stat: FORCE 100*4882a593Smuzhiyun $(call descend,kvm/$@) 101*4882a593Smuzhiyun 102*4882a593Smuzhiyunall: acpi cgroup cpupower gpio hv firewire liblockdep \ 103*4882a593Smuzhiyun perf selftests bootconfig spi turbostat usb \ 104*4882a593Smuzhiyun virtio vm bpf x86_energy_perf_policy \ 105*4882a593Smuzhiyun tmon freefall iio objtool kvm_stat wmi \ 106*4882a593Smuzhiyun pci debugging 107*4882a593Smuzhiyun 108*4882a593Smuzhiyunacpi_install: 109*4882a593Smuzhiyun $(call descend,power/$(@:_install=),install) 110*4882a593Smuzhiyun 111*4882a593Smuzhiyuncpupower_install: 112*4882a593Smuzhiyun $(call descend,power/$(@:_install=),install) 113*4882a593Smuzhiyun 114*4882a593Smuzhiyuncgroup_install firewire_install gpio_install hv_install iio_install perf_install bootconfig_install spi_install usb_install virtio_install vm_install bpf_install objtool_install wmi_install pci_install debugging_install: 115*4882a593Smuzhiyun $(call descend,$(@:_install=),install) 116*4882a593Smuzhiyun 117*4882a593Smuzhiyunliblockdep_install: 118*4882a593Smuzhiyun $(call descend,lib/lockdep,install) 119*4882a593Smuzhiyun 120*4882a593Smuzhiyunselftests_install: 121*4882a593Smuzhiyun $(call descend,testing/$(@:_install=),install) 122*4882a593Smuzhiyun 123*4882a593Smuzhiyunturbostat_install x86_energy_perf_policy_install intel-speed-select_install: 124*4882a593Smuzhiyun $(call descend,power/x86/$(@:_install=),install) 125*4882a593Smuzhiyun 126*4882a593Smuzhiyuntmon_install: 127*4882a593Smuzhiyun $(call descend,thermal/$(@:_install=),install) 128*4882a593Smuzhiyun 129*4882a593Smuzhiyunfreefall_install: 130*4882a593Smuzhiyun $(call descend,laptop/$(@:_install=),install) 131*4882a593Smuzhiyun 132*4882a593Smuzhiyunkvm_stat_install: 133*4882a593Smuzhiyun $(call descend,kvm/$(@:_install=),install) 134*4882a593Smuzhiyun 135*4882a593Smuzhiyuninstall: acpi_install cgroup_install cpupower_install gpio_install \ 136*4882a593Smuzhiyun hv_install firewire_install iio_install liblockdep_install \ 137*4882a593Smuzhiyun perf_install selftests_install turbostat_install usb_install \ 138*4882a593Smuzhiyun virtio_install vm_install bpf_install x86_energy_perf_policy_install \ 139*4882a593Smuzhiyun tmon_install freefall_install objtool_install kvm_stat_install \ 140*4882a593Smuzhiyun wmi_install pci_install debugging_install intel-speed-select_install 141*4882a593Smuzhiyun 142*4882a593Smuzhiyunacpi_clean: 143*4882a593Smuzhiyun $(call descend,power/acpi,clean) 144*4882a593Smuzhiyun 145*4882a593Smuzhiyuncpupower_clean: 146*4882a593Smuzhiyun $(call descend,power/cpupower,clean) 147*4882a593Smuzhiyun 148*4882a593Smuzhiyuncgroup_clean hv_clean firewire_clean bootconfig_clean spi_clean usb_clean virtio_clean vm_clean wmi_clean bpf_clean iio_clean gpio_clean objtool_clean leds_clean pci_clean firmware_clean debugging_clean: 149*4882a593Smuzhiyun $(call descend,$(@:_clean=),clean) 150*4882a593Smuzhiyun 151*4882a593Smuzhiyunliblockdep_clean: 152*4882a593Smuzhiyun $(call descend,lib/lockdep,clean) 153*4882a593Smuzhiyun 154*4882a593Smuzhiyunlibapi_clean: 155*4882a593Smuzhiyun $(call descend,lib/api,clean) 156*4882a593Smuzhiyun 157*4882a593Smuzhiyunlibbpf_clean: 158*4882a593Smuzhiyun $(call descend,lib/bpf,clean) 159*4882a593Smuzhiyun 160*4882a593Smuzhiyunlibsubcmd_clean: 161*4882a593Smuzhiyun $(call descend,lib/subcmd,clean) 162*4882a593Smuzhiyun 163*4882a593Smuzhiyunperf_clean: 164*4882a593Smuzhiyun $(Q)mkdir -p $(PERF_O) . 165*4882a593Smuzhiyun $(Q)$(MAKE) --no-print-directory -C perf O=$(PERF_O) subdir= clean 166*4882a593Smuzhiyun 167*4882a593Smuzhiyunselftests_clean: 168*4882a593Smuzhiyun $(call descend,testing/$(@:_clean=),clean) 169*4882a593Smuzhiyun 170*4882a593Smuzhiyunturbostat_clean x86_energy_perf_policy_clean intel-speed-select_clean: 171*4882a593Smuzhiyun $(call descend,power/x86/$(@:_clean=),clean) 172*4882a593Smuzhiyun 173*4882a593Smuzhiyuntmon_clean: 174*4882a593Smuzhiyun $(call descend,thermal/tmon,clean) 175*4882a593Smuzhiyun 176*4882a593Smuzhiyunfreefall_clean: 177*4882a593Smuzhiyun $(call descend,laptop/freefall,clean) 178*4882a593Smuzhiyun 179*4882a593Smuzhiyunbuild_clean: 180*4882a593Smuzhiyun $(call descend,build,clean) 181*4882a593Smuzhiyun 182*4882a593Smuzhiyunclean: acpi_clean cgroup_clean cpupower_clean hv_clean firewire_clean \ 183*4882a593Smuzhiyun perf_clean selftests_clean turbostat_clean bootconfig_clean spi_clean usb_clean virtio_clean \ 184*4882a593Smuzhiyun vm_clean bpf_clean iio_clean x86_energy_perf_policy_clean tmon_clean \ 185*4882a593Smuzhiyun freefall_clean build_clean libbpf_clean libsubcmd_clean liblockdep_clean \ 186*4882a593Smuzhiyun gpio_clean objtool_clean leds_clean wmi_clean pci_clean firmware_clean debugging_clean \ 187*4882a593Smuzhiyun intel-speed-select_clean 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun.PHONY: FORCE 190