mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-18 21:13:56 +01:00
make: Split up profiler.mk into profiler-defs.mk and profiler-rules-run.mk
Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
7faa876a18
commit
51b88d618e
5 changed files with 110 additions and 107 deletions
|
|
@ -8,7 +8,7 @@ LOADABLE_OBJ_HOOK ?= LOADABLE_OBJECT_HOOK
|
||||||
# === change this <
|
# === change this <
|
||||||
|
|
||||||
include $(MODDIR)/make/defs.mk
|
include $(MODDIR)/make/defs.mk
|
||||||
include $(MODDIR)/make/profiler.mk
|
include $(MODDIR)/make/profiler-defs.mk
|
||||||
|
|
||||||
.PRECIOUS: %.cpp %.o
|
.PRECIOUS: %.cpp %.o
|
||||||
LOADABLE_OBJS_HEADER ?= $(wildcard $(TOOLS_INCLUDE_DIR)/$(CPP_PREFIX)*$(CPP_SUFFIX).h)
|
LOADABLE_OBJS_HEADER ?= $(wildcard $(TOOLS_INCLUDE_DIR)/$(CPP_PREFIX)*$(CPP_SUFFIX).h)
|
||||||
|
|
|
||||||
21
make/profiler-defs.mk
Normal file
21
make/profiler-defs.mk
Normal file
|
|
@ -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
|
||||||
|
|
||||||
85
make/profiler-rules-run.mk
Normal file
85
make/profiler-rules-run.mk
Normal file
|
|
@ -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
|
||||||
|
|
||||||
107
make/profiler.mk
107
make/profiler.mk
|
|
@ -1,105 +1,2 @@
|
||||||
all:
|
include $(MODDIR)/make/profiler-defs.mk
|
||||||
clean:
|
include $(MODDIR)/make/profiler-rules-run.mk
|
||||||
|
|
||||||
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
|
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
include $(MODDIR)/make/defs.mk
|
include $(MODDIR)/make/defs.mk
|
||||||
|
include $(MODDIR)/make/profiler-defs.mk
|
||||||
include $(MODDIR)/make/targets-tools.mk
|
include $(MODDIR)/make/targets-tools.mk
|
||||||
include $(MODDIR)/make/cpp-extra-targets.mk
|
include $(MODDIR)/make/cpp-extra-targets.mk
|
||||||
include $(MODDIR)/make/depend.mk
|
include $(MODDIR)/make/depend.mk
|
||||||
include $(MODDIR)/make/backup.mk
|
include $(MODDIR)/make/backup.mk
|
||||||
include $(MODDIR)/make/profiler.mk
|
|
||||||
|
|
||||||
LOCAL_CFLAGS += -D_USRDLL -DALL_EXPORTS
|
LOCAL_CFLAGS += -D_USRDLL -DALL_EXPORTS
|
||||||
LOCAL_CPPFLAGS += -D_USRDLL -DALL_EXPORTS
|
LOCAL_CPPFLAGS += -D_USRDLL -DALL_EXPORTS
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue