mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 11:06:41 -05:00
When doing an in source build, $(OUTPUT) is empty so the rule has the same input and output file. Suppress the warning by only adding the rule when doing an out of source build. The same condition already exists for the clean rule for json files. This fixes the following warnings: make[3]: Circular pmu-events/arch/nds32/mapfile.csv <- pmu-events/arch/nds32/mapfile.csv dependency dropped. make[3]: Circular pmu-events/arch/powerpc/mapfile.csv <- pmu-events/arch/powerpc/mapfile.csv dependency dropped. ... Signed-off-by: James Clark <james.clark@linaro.org> Tested-by: Namhyung Kim <namhyung@kernel.org> Tested-by: Leo Yan <leo.yan@arm.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
90 lines
3.0 KiB
Plaintext
90 lines
3.0 KiB
Plaintext
pmu-events-y += pmu-events.o
|
|
JSON = $(shell find pmu-events/arch -name '*.json' -o -name '*.csv')
|
|
JDIR_TEST = pmu-events/arch/test
|
|
JSON_TEST = $(shell [ -d $(JDIR_TEST) ] && \
|
|
find $(JDIR_TEST) -name '*.json')
|
|
JEVENTS_PY = pmu-events/jevents.py
|
|
METRIC_PY = pmu-events/metric.py
|
|
METRIC_TEST_PY = pmu-events/metric_test.py
|
|
EMPTY_PMU_EVENTS_C = pmu-events/empty-pmu-events.c
|
|
PMU_EVENTS_C = $(OUTPUT)pmu-events/pmu-events.c
|
|
METRIC_TEST_LOG = $(OUTPUT)pmu-events/metric_test.log
|
|
TEST_EMPTY_PMU_EVENTS_C = $(OUTPUT)pmu-events/test-empty-pmu-events.c
|
|
EMPTY_PMU_EVENTS_TEST_LOG = $(OUTPUT)pmu-events/empty-pmu-events.log
|
|
LEGACY_CACHE_PY = pmu-events/make_legacy_cache.py
|
|
LEGACY_CACHE_JSON = $(OUTPUT)pmu-events/arch/common/common/legacy-cache.json
|
|
|
|
ifeq ($(JEVENTS_ARCH),)
|
|
JEVENTS_ARCH=$(SRCARCH)
|
|
endif
|
|
JEVENTS_MODEL ?= all
|
|
|
|
#
|
|
# Locate/process JSON files in pmu-events/arch/
|
|
# directory and create tables in pmu-events.c.
|
|
#
|
|
|
|
ifeq ($(NO_JEVENTS),1)
|
|
$(PMU_EVENTS_C): $(EMPTY_PMU_EVENTS_C)
|
|
$(call rule_mkdir)
|
|
$(Q)$(call echo-cmd,gen)cp $< $@
|
|
else
|
|
# Copy checked-in json to OUTPUT for generation if it's an out of source build
|
|
ifneq ($(OUTPUT),)
|
|
$(OUTPUT)pmu-events/arch/%: pmu-events/arch/%
|
|
$(call rule_mkdir)
|
|
$(Q)$(call echo-cmd,gen)cp $< $@
|
|
endif
|
|
|
|
$(LEGACY_CACHE_JSON): $(LEGACY_CACHE_PY)
|
|
$(call rule_mkdir)
|
|
$(Q)$(call echo-cmd,gen)$(PYTHON) $(LEGACY_CACHE_PY) > $@
|
|
|
|
GEN_JSON = $(patsubst %,$(OUTPUT)%,$(JSON)) $(LEGACY_CACHE_JSON)
|
|
|
|
$(METRIC_TEST_LOG): $(METRIC_TEST_PY) $(METRIC_PY)
|
|
$(call rule_mkdir)
|
|
$(Q)$(call echo-cmd,test)$(PYTHON) $< 2> $@ || (cat $@ && false)
|
|
|
|
$(TEST_EMPTY_PMU_EVENTS_C): $(GEN_JSON) $(JSON_TEST) $(JEVENTS_PY) $(METRIC_PY) $(METRIC_TEST_LOG)
|
|
$(call rule_mkdir)
|
|
$(Q)$(call echo-cmd,gen)$(PYTHON) $(JEVENTS_PY) none none $(OUTPUT)pmu-events/arch $@
|
|
|
|
$(EMPTY_PMU_EVENTS_TEST_LOG): $(EMPTY_PMU_EVENTS_C) $(TEST_EMPTY_PMU_EVENTS_C)
|
|
$(call rule_mkdir)
|
|
$(Q)$(call echo-cmd,test)diff -u $^ 2> $@ || (cat $@ && false)
|
|
|
|
ifdef MYPY
|
|
PMU_EVENTS_PY_TESTS := $(wildcard *.py)
|
|
PMU_EVENTS_MYPY_TEST_LOGS := $(JEVENTS_PY_TESTS:%=%.mypy_log)
|
|
else
|
|
PMU_EVENTS_MYPY_TEST_LOGS :=
|
|
endif
|
|
|
|
$(OUTPUT)%.mypy_log: %
|
|
$(call rule_mkdir)
|
|
$(Q)$(call echo-cmd,test)mypy "$<" > $@ || (cat $@ && rm $@ && false)
|
|
|
|
ifdef PYLINT
|
|
PMU_EVENTS_PY_TESTS := $(wildcard *.py)
|
|
PMU_EVENTS_PYLINT_TEST_LOGS := $(JEVENTS_PY_TESTS:%=%.pylint_log)
|
|
else
|
|
PMU_EVENTS_PYLINT_TEST_LOGS :=
|
|
endif
|
|
|
|
$(OUTPUT)%.pylint_log: %
|
|
$(call rule_mkdir)
|
|
$(Q)$(call echo-cmd,test)pylint "$<" > $@ || (cat $@ && rm $@ && false)
|
|
|
|
$(PMU_EVENTS_C): $(GEN_JSON) $(JSON_TEST) $(JEVENTS_PY) $(METRIC_PY) $(METRIC_TEST_LOG) \
|
|
$(EMPTY_PMU_EVENTS_TEST_LOG) $(PMU_EVENTS_MYPY_TEST_LOGS) $(PMU_EVENTS_PYLINT_TEST_LOGS)
|
|
$(call rule_mkdir)
|
|
$(Q)$(call echo-cmd,gen)$(PYTHON) $(JEVENTS_PY) $(JEVENTS_ARCH) $(JEVENTS_MODEL) $(OUTPUT)pmu-events/arch $@
|
|
endif
|
|
|
|
# pmu-events.c file is generated in the OUTPUT directory so it needs a
|
|
# separate rule to depend on it properly
|
|
$(OUTPUT)pmu-events/pmu-events.o: $(PMU_EVENTS_C)
|
|
$(call rule_mkdir)
|
|
$(call if_changed_dep,cc_o_c)
|