# generic utility modules # (c) 2001 jannet it services # contact@jannet.de # $Id$ DIR_BASENAME = $(notdir $(shell pwd)) ifeq ($(EXE_BASENAME),) ifneq ($(DIR_BASENAME),test) EXE_BASENAME = $(DIR_BASENAME) else EXE_BASENAME = test-$(notdir $(shell cd ..; pwd)) endif endif ifneq ($(EXE_BASENAME),) ifneq ($(TARGET),mingw) EXE ?= $(EXE_BASENAME) SHORTCUT_SCRIPT ?= ./run.sh else EXE ?= $(EXE_BASENAME).exe SHORTCUT_SCRIPT ?= run.bat endif endif EXE_PATH ?= ./$(EXE) CHECK_CONF_EXE ?= $(firstword $(wildcard $(CVS_PROJ_DIR)/valdi/bin/checkconf) checkconf) LOCAL_CFLAGS += -DEXE_NAME=\"$(EXE)\" LOCAL_CPPFLAGS += -DEXE_NAME=\"$(EXE)\" include $(MODDIR)/make/defs.mk BUILD_HDR = include $(MODDIR)/make/rules.mk include $(MODDIR)/make/ldlibpath.mk include $(MODDIR)/make/debugger.mk EXE_ARGS += $(LOCAL_EXE_ARGS) ifneq ($(wildcard local.supp),) VALGRIND_OPTS += --suppressions=local.supp endif all: install: clean: distclean: run-prereq: all ifeq ($(TARGET),mingw) run test: run-prereq @echo "wine $(EXE_PATH) $(EXE_ARGS)" @echo -e "set PATH=%PATH;$(DLL_PATH)\n" \ "$(EXE_PATH) $(EXE_ARGS)" | wine cmd start: run-prereq @echo "wine $(EXE_PATH) $(EXE_ARGS)" @echo -e "set PATH=%PATH;$(DLL_PATH)\n" \ "$(EXE_PATH) $(EXE_ARGS)" | wine cmd & else run test: run-prereq $(RM) -f core.* $(EXE_PATH) $(EXE_ARGS) start: run-prereq $(RM) -f core.* $(EXE_PATH) $(EXE_ARGS) & $(SHORTCUT_SCRIPT): ifeq ($(TARGET),mingw) echo "set PATH=%PATH;$(DLL_PATH)" > $@.tmp echo "$(EXE_PATH) $(EXE_ARGS)" >> $@.tmp else echo -e "#!/bin/bash\n\n$(RM) -f core.*\nexport LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)\nexport PATH=$(PATH)\n$(EXE_PATH) $(EXE_ARGS)" > $@.tmp chmod 755 $@.tmp endif mv $@.tmp $@ shortcut: $(SHORTCUT_SCRIPT) distclean.shortcut: $(RM) -f $(SHORTCUT_SCRIPT) distclean: distclean.shortcut clean: vg-clean-supp clean.out # unfortunately iwatch only supports one directory :-( autorun: make run & iwatch -e close_write -c "$(HOME)/bin/run-once.sh make restart" \ $(BUILD_LIBDIR) wait-stop: while /sbin/checkproc $(notdir $(EXE_PATH)); do sleep 1; done restart: stop wait-stop all start valgrind: run-prereq $(RM) -f core.* valgrind $(VALGRIND_OPTS) $(EXE_PATH) $(EXE_ARGS) valkyrie: run-prereq $(RM) -f core.* valkyrie $(VALGRIND_OPTS) $(EXE_PATH) $(EXE_ARGS) efence: run-prereq $(RM) -f core.* ef $(EXE_PATH) $(EXE_ARGS) supp.tmp: valgrind --gen-suppressions=all $(EXE_PATH) $(EXE_ARGS) 2>$@.tmp; mv $@.tmp $@ || exit 0 vg-create-supp: supp.tmp $(CAT) $< | $(MOD_SCRIPT_DIR)/parse-valgrind-suppressions.sh > local.supp $(RM) -f supp.tmp vg-add-supp: $(CAT) | $(MOD_SCRIPT_DIR)/parse-valgrind-suppressions.sh >> local.supp vg-clean-supp: $(RM) -f local.supp clean.out: $(RM) -f run.out 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 $(VALGRIND_OPTS) --instr-atstart=no $(EXE_PATH) $(EXE_ARGS) 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 snap: killall -SIGUSR1 $(notdir $(EXE_PATH)) check-conf: $(CHECK_CONF_EXE) -p --log-flags console \ $(shell echo $(EXE_ARGS) | sed 's/.*--config-file *//; s/ .*//') endif stop: if /sbin/checkproc $(notdir $(EXE_PATH)); then killall $(notdir $(EXE_PATH)); fi kill: killall -9 $(notdir $(EXE_PATH)) abort: killall -6 $(notdir $(EXE_PATH)) strace: $(EXE_PATH) $(EXE_BIN) run-prereq strace -f $(STRACE_EXTRA_OPTS) $(EXE_PATH) $(EXE_ARGS) tee: $(EXE_PATH) $(EXE_BIN) run-prereq $(RM) -f core.* $(EXE_PATH) $(EXE_ARGS) 2>&1 | tee run.out kcg: kcachegrind callgrind.* clean: runclean localclean