# generic utility modules # (c) 2001 jannet it services # contact@jannet.de # $Id$ include $(JWBDIR)/make/defs.mk include $(JWBDIR)/make/defs-cpp.mk DIR_BASENAME = $(notdir $(CWD)) ifneq ($(TARGET_PRODUCT),) EXE_BASENAME_PREFIX ?= $(TARGET_PRODUCT)- endif ifeq ($(EXE_BASENAME),) ifneq ($(DIR_BASENAME),test) EXE_BASENAME = $(EXE_BASENAME_PREFIX)$(DIR_BASENAME) else EXE_BASENAME = $(EXE_BASENAME_PREFIX)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 $(PROJECTS_DIR)/valdi/bin/checkconf) checkconf) FINAL_CFLAGS += -DEXE_NAME=\"$(EXE)\" FINAL_CXXFLAGS += -DEXE_NAME=\"$(EXE)\" # ----- linker scripts from tagged templates #BUILD_LD_DIR = $(wildcard $(firstword $(call $(TAGGED_TMPL_DIRS),ld))) #BUILD_LD_DIR = $(firstword $(foreach tag,$(TAGGED_TMPL_TAGS),$(foreach repo,$(TOPDIR)/tmpl/tagged $(JWBDIR)/tmpl/tagged,$(wildcard $(repo)/$(tag)/ld)))) #BUILD_LD_DIR = $(firstword $(wildcard $(foreach tag,$(TAGGED_TMPL_TAGS),$(foreach repo,$(TOPDIR)/tmpl/tagged $(JWBDIR)/tmpl/tagged,$(repo)/$(tag)/ld)))) #BUILD_LD_TMPL_DIRS ?= $(foreach tag,$(TAGGED_TMPL_TAGS),$(foreach repo,$(TOPDIR)/tmpl/tagged $(JWBDIR)/tmpl/tagged,$(repo)/$(tag)/ld)) #BUILD_LD_DIRS += $(wildcard $(BUILD_LD_TMPL_DIRS)) #FINAL_LDFLAGS += $(foreach d,$(BUILD_LD_DIRS),-L$(d) $(addprefix -T ,$(sort $(notdir $(wildcard $(d)/*.ld))))) BUILD_LD_DIRS = $(call uniq,$(dir $(foreach d,$(BUILD_LD_CHECK_DIRS),$(wildcard $(d)/*.ld)))) LD_SCRIPTS = $(foreach d,$(BUILD_LD_DIRS),$(wildcard $(d)/*.ld)) FINAL_LDFLAGS += $(foreach d,$(BUILD_LD_DIRS),-L$(d) $(addprefix -T ,$(sort $(notdir $(wildcard $(d)/*.ld))))) include $(JWBDIR)/make/profiler.mk BUILD_HDR = include $(JWBDIR)/make/rules.mk include $(JWBDIR)/make/ldlibpath.mk include $(JWBDIR)/make/path-rules.mk include $(JWBDIR)/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) & which: /usr/bin/which $(EXE_PATH) $(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) $< | $(JWB_SCRIPT_DIR)/parse-valgrind-suppressions.sh > local.supp $(RM) -f supp.tmp vg-add-supp: $(CAT) | $(JWB_SCRIPT_DIR)/parse-valgrind-suppressions.sh >> local.supp vg-clean-supp: $(RM) -f local.supp clean.out: $(RM) -f run.out 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