jw-pkg/make/run.mk
Jan Lindemann ac54a7bca6
make: Make target "test" depend on target "all"

Every directory should have a test target, and the test target should depend on all so that all files are generated that might be needed for testing. This commit fixes some missing targets, and adds some missing dependencies.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-07-02 19:52:35 +02:00

167 lines
4.6 KiB
Makefile

# 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
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)
EXE_CMD ?= $(EXE_PATH) $(EXE_ARGS)
ifneq ($(wildcard local.supp),)
VALGRIND_OPTS += --suppressions=local.supp
endif
all:
install:
clean: runclean localclean
distclean:
test: all
run-deps: all
$(RM) -f core core.* vgcore vgcore.*
ifeq ($(TARGET),mingw)
run test: run-deps
@echo "wine $(EXE_CMD)"
@echo -e "set PATH=%PATH;$(DLL_PATH)\n" \
"$(EXE_CMD)" | wine cmd
start: run-deps
@echo "wine $(EXE_CMD)"
@echo -e "set PATH=%PATH;$(DLL_PATH)\n" \
"$(EXE_CMD)" | wine cmd &
else
run test: run-deps
$(EXE_CMD)
start: run-deps
$(EXE_CMD) &
which:
$(WHICH) $(EXE_PATH)
$(SHORTCUT_SCRIPT):
ifeq ($(TARGET),mingw)
echo "set PATH=%PATH;$(DLL_PATH)" > $@.tmp
echo "$(EXE_CMD)" >> $@.tmp
else
echo -e "#!/bin/bash\n\n$(RM) -f core.*\nexport LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)\nexport PATH=$(PATH)\n$(EXE_CMD)" > $@.tmp
chmod 755 $@.tmp
endif
mv $@.tmp $@
shortcut: $(SHORTCUT_SCRIPT)
distclean.shortcut:
$(RM) -f $(SHORTCUT_SCRIPT)
distclean: distclean.shortcut
# unfortunately iwatch supports only 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-deps
valgrind $(VALGRIND_OPTS) $(EXE_CMD)
valkyrie: run-deps
valkyrie $(VALGRIND_OPTS) $(EXE_CMD)
efence: run-deps
ef $(EXE_CMD)
supp.tmp:
valgrind --gen-suppressions=all $(EXE_CMD) 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
clean: vg-clean-supp
vg-clean-supp:
$(RM) -f local.supp
clean: clean.out
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-deps
strace -f $(STRACE_EXTRA_OPTS) $(EXE_CMD)
tee: $(EXE_PATH) $(EXE_BIN) run-deps
$(EXE_CMD) 2>&1 | tee run.out
kcg:
kcachegrind callgrind.*