From 51b88d618ed9650ff07c595c26ffdeab9be0a4bb Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Mon, 11 Dec 2017 14:07:06 +0000 Subject: [PATCH] make: Split up profiler.mk into profiler-defs.mk and profiler-rules-run.mk Signed-off-by: Jan Lindemann --- make/lo.mk | 2 +- make/profiler-defs.mk | 21 ++++++++ make/profiler-rules-run.mk | 85 +++++++++++++++++++++++++++++ make/profiler.mk | 107 +------------------------------------ make/tools.mk | 2 +- 5 files changed, 110 insertions(+), 107 deletions(-) create mode 100644 make/profiler-defs.mk create mode 100644 make/profiler-rules-run.mk diff --git a/make/lo.mk b/make/lo.mk index 018ec5c8..b7a7488e 100644 --- a/make/lo.mk +++ b/make/lo.mk @@ -8,7 +8,7 @@ LOADABLE_OBJ_HOOK ?= LOADABLE_OBJECT_HOOK # === change this < include $(MODDIR)/make/defs.mk -include $(MODDIR)/make/profiler.mk +include $(MODDIR)/make/profiler-defs.mk .PRECIOUS: %.cpp %.o LOADABLE_OBJS_HEADER ?= $(wildcard $(TOOLS_INCLUDE_DIR)/$(CPP_PREFIX)*$(CPP_SUFFIX).h) diff --git a/make/profiler-defs.mk b/make/profiler-defs.mk new file mode 100644 index 00000000..1c72e05a --- /dev/null +++ b/make/profiler-defs.mk @@ -0,0 +1,21 @@ +all: +clean: + +PROF_EXE_PATH ?= $(EXE_PATH) +CALLGRIND_OUT ?= callgrind.out +OPROF_OUT_DIR ?= oprofile-dir + +ifeq ($(USE_GPROF),true) + PROJECT_CPPFLAGS += -pg + PROJECT_CFLAGS += -pg + PROJECT_LDFLAGS += -pg +clean: clean.gprof +endif + +ifeq ($(USE_GCOV),true) + PROJECT_CPPFLAGS += -fprofile-arcs -ftest-coverage + PROJECT_CFLAGS += -fprofile-arcs -ftest-coverage + PROJECT_LDFLAGS += -fprofile-arcs -ftest-coverage +clean: clean.gcov +endif + diff --git a/make/profiler-rules-run.mk b/make/profiler-rules-run.mk new file mode 100644 index 00000000..c59ea382 --- /dev/null +++ b/make/profiler-rules-run.mk @@ -0,0 +1,85 @@ +# ---- callgrind + +clean: clean.callgrind + +callgrind: run-prereq + $(RM) -f core.* + valgrind --tool=callgrind $(VALGRIND_OPTS) $(EXE_PATH) $(EXE_ARGS) +callgrind-noinst: run-prereq + $(RM) -f core.* + valgrind --tool=callgrind --callgrind-out-file=$(CALLGRIND_OUT) --instr-atstart=no $(VALGRIND_OPTS) $(EXE_PATH) $(EXE_ARGS) +$(CALLGRIND_OUT): callgrind +kcachegrind: $(CALLGRIND_OUT) + kcachegrind $< +callgrind-startinst: + ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --instr=on +callgrind-stopinst: + ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --instr=off +callgrind-dump: + ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --dump +clean.callgrind: + rm -f $(CALLGRIND_OUT) + +# ---- oprofile + +clean: clean.oprof + +operf: | $(OPROF_OUT_DIR) + +$(OPROF_OUT_DIR): + mkdir -p $@ +oprof-setup: + echo 0 | sudo tee /proc/sys/kernel/kptr_restrict + echo 0 | sudo tee /proc/sys/kernel/perf_event_paranoid +oprof-callgraph.txt: + opreport --session-dir $(OPROF_OUT_DIR) --callgraph > $@.tmp + mv $@.tmp $@ +oprof-view-callgraph-txt: oprof-callgraph.txt + less -S $< +oprof-callgraph.dot: oprof-callgraph.txt + cat $< | gprof2dot -f oprofile > $@.tmp + mv $@.tmp $@ +oprof-callgraph.pdf: oprof-callgraph.dot + dot -Tpdf $< -o $@.tmp + mv $@.tmp $@ +oprof-view-callgraph-pdf: oprof-callgraph.pdf + okular $< +oprof-view-callgraph-dot: oprof-callgraph.dot + xdot $< + +#operf: operf.txt +#operf.txt: +# operf --session-dir $(OPROF_OUT_DIR) $(PROF_CMD) +#operf-view-txt: operf.txt +# less -S $< +#operf-callgraph.pdf: gmon.out +# operf $(PROF_EXE_PATH) | operf2dot | dot -Tpdf -o $@.tmp +# mv $@.tmp $@ +#operf-pdf: operf-callgraph.pdf + +clean.oprof: + rm -rf $(OPROF_OUT_DIR) oprof-callgraph.txt oprof-callgraph.pdf oprof-callgraph.dot + +# ---- gcov + +clean.gcov: + rm -f *.gcda *.gcov + +# ---- gprof + +clean: clean.gprof +gprof: gprof.txt +gprof.txt: + gprof $(PROF_EXE_PATH) > $@.tmp + mv $@.tmp $@ +gprof-view-txt: gprof.txt + less -S $< +gprof-callgraph.pdf: gmon.out + gprof $(PROF_EXE_PATH) | gprof2dot | dot -Tpdf -o $@.tmp + mv $@.tmp $@ +gprof-pdf: gprof-callgraph.pdf +gprof-view-callgraph-pdf: gprof-callgraph.pdf + okular $< +clean.gprof: + rm -f gmon.out gprof.txt *.tmp gprof-callgraph.pdf + diff --git a/make/profiler.mk b/make/profiler.mk index 556379d1..8c5d69a5 100644 --- a/make/profiler.mk +++ b/make/profiler.mk @@ -1,105 +1,2 @@ -all: -clean: - -PROF_EXE_PATH ?= $(EXE_PATH) -CALLGRIND_OUT ?= callgrind.out -OPROF_OUT_DIR ?= oprofile-dir - -ifeq ($(USE_GPROF),true) - PROJECT_CPPFLAGS += -pg - PROJECT_CFLAGS += -pg - PROJECT_LDFLAGS += -pg -clean: clean.gprof -endif - -ifeq ($(USE_GCOV),true) - PROJECT_CPPFLAGS += -fprofile-arcs -ftest-coverage - PROJECT_CFLAGS += -fprofile-arcs -ftest-coverage - PROJECT_LDFLAGS += -fprofile-arcs -ftest-coverage -clean: clean.gcov -endif - -# ---- callgrind - -clean: clean.callgrind - -callgrind: run-prereq - $(RM) -f core.* - valgrind --tool=callgrind $(VALGRIND_OPTS) $(EXE_PATH) $(EXE_ARGS) -callgrind-noinst: run-prereq - $(RM) -f core.* - valgrind --tool=callgrind --callgrind-out-file=$(CALLGRIND_OUT) --instr-atstart=no $(VALGRIND_OPTS) $(EXE_PATH) $(EXE_ARGS) -$(CALLGRIND_OUT): callgrind -kcachegrind: $(CALLGRIND_OUT) - kcachegrind $< -callgrind-startinst: - ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --instr=on -callgrind-stopinst: - ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --instr=off -callgrind-dump: - ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --dump -clean.callgrind: - rm -f $(CALLGRIND_OUT) - -# ---- oprofile - -clean: clean.oprof - -operf: | $(OPROF_OUT_DIR) - -$(OPROF_OUT_DIR): - mkdir -p $@ -oprof-setup: - echo 0 | sudo tee /proc/sys/kernel/kptr_restrict - echo 0 | sudo tee /proc/sys/kernel/perf_event_paranoid -oprof-callgraph.txt: - opreport --session-dir $(OPROF_OUT_DIR) --callgraph > $@.tmp - mv $@.tmp $@ -oprof-view-callgraph-txt: oprof-callgraph.txt - less -S $< -oprof-callgraph.dot: oprof-callgraph.txt - cat $< | gprof2dot -f oprofile > $@.tmp - mv $@.tmp $@ -oprof-callgraph.pdf: oprof-callgraph.dot - dot -Tpdf $< -o $@.tmp - mv $@.tmp $@ -oprof-view-callgraph-pdf: oprof-callgraph.pdf - okular $< -oprof-view-callgraph-dot: oprof-callgraph.dot - xdot $< - -#operf: operf.txt -#operf.txt: -# operf --session-dir $(OPROF_OUT_DIR) $(PROF_CMD) -#operf-view-txt: operf.txt -# less -S $< -#operf-callgraph.pdf: gmon.out -# operf $(PROF_EXE_PATH) | operf2dot | dot -Tpdf -o $@.tmp -# mv $@.tmp $@ -#operf-pdf: operf-callgraph.pdf - -clean.oprof: - rm -rf $(OPROF_OUT_DIR) oprof-callgraph.txt oprof-callgraph.pdf oprof-callgraph.dot - -# ---- gcov - -clean.gcov: - rm -f *.gcda *.gcov - -# ---- gprof - -clean: clean.gprof -gprof: gprof.txt -gprof.txt: - gprof $(PROF_EXE_PATH) > $@.tmp - mv $@.tmp $@ -gprof-view-txt: gprof.txt - less -S $< -gprof-callgraph.pdf: gmon.out - gprof $(PROF_EXE_PATH) | gprof2dot | dot -Tpdf -o $@.tmp - mv $@.tmp $@ -gprof-pdf: gprof-callgraph.pdf -gprof-view-callgraph-pdf: gprof-callgraph.pdf - okular $< -clean.gprof: - rm -f gmon.out gprof.txt *.tmp gprof-callgraph.pdf +include $(MODDIR)/make/profiler-defs.mk +include $(MODDIR)/make/profiler-rules-run.mk diff --git a/make/tools.mk b/make/tools.mk index 80746982..5838d8c1 100644 --- a/make/tools.mk +++ b/make/tools.mk @@ -4,11 +4,11 @@ # $Id$ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/profiler-defs.mk include $(MODDIR)/make/targets-tools.mk include $(MODDIR)/make/cpp-extra-targets.mk include $(MODDIR)/make/depend.mk include $(MODDIR)/make/backup.mk -include $(MODDIR)/make/profiler.mk LOCAL_CFLAGS += -D_USRDLL -DALL_EXPORTS LOCAL_CPPFLAGS += -D_USRDLL -DALL_EXPORTS