diff options
Diffstat (limited to 'tools/perf/scripts/Makefile.syscalls')
-rw-r--r-- | tools/perf/scripts/Makefile.syscalls | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tools/perf/scripts/Makefile.syscalls b/tools/perf/scripts/Makefile.syscalls new file mode 100644 index 000000000000..8bf55333262e --- /dev/null +++ b/tools/perf/scripts/Makefile.syscalls @@ -0,0 +1,61 @@ +# SPDX-License-Identifier: GPL-2.0 +# This Makefile generates headers in +# tools/perf/arch/$(SRCARCH)/include/generated/asm from the architecture's +# syscall table. This will either be from the generic syscall table, or from a +# table that is specific to that architecture. + +PHONY := all +all: + +obj := $(OUTPUT)arch/$(SRCARCH)/include/generated/asm + +syscall_abis_32 := common,32 +syscall_abis_64 := common,64 +syscalltbl := $(srctree)/tools/scripts/syscall.tbl + +# let architectures override $(syscall_abis_%) and $(syscalltbl) +-include $(srctree)/tools/perf/arch/$(SRCARCH)/entry/syscalls/Makefile.syscalls +include $(srctree)/tools/build/Build.include +-include $(srctree)/tools/perf/arch/$(SRCARCH)/entry/syscalls/Kbuild + +systbl := $(srctree)/tools/perf/scripts/syscalltbl.sh + +syscall-y := $(addprefix $(obj)/, $(syscall-y)) + +# Remove stale wrappers when the corresponding files are removed from generic-y +old-headers := $(wildcard $(obj)/*.h) +unwanted := $(filter-out $(syscall-y),$(old-headers)) + +quiet_cmd_remove = REMOVE $(unwanted) + cmd_remove = rm -f $(unwanted) + +quiet_cmd_systbl = SYSTBL $@ + cmd_systbl = $(CONFIG_SHELL) $(systbl) \ + $(if $(systbl-args-$*),$(systbl-args-$*),$(systbl-args)) \ + --abis $(subst $(space),$(comma),$(strip $(syscall_abis_$*))) \ + $< $@ + +all: $(syscall-y) + $(if $(unwanted),$(call cmd,remove)) + @: + +$(obj)/syscalls_%.h: $(syscalltbl) $(systbl) FORCE + $(call if_changed,systbl) + +targets := $(syscall-y) + +# Create output directory. Skip it if at least one old header exists +# since we know the output directory already exists. +ifeq ($(old-headers),) +$(shell mkdir -p $(obj)) +endif + +PHONY += FORCE + +FORCE: + +existing-targets := $(wildcard $(sort $(targets))) + +-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd) + +.PHONY: $(PHONY) |