tests-gdb/Makefile

76 lines
1.5 KiB
Makefile
Raw Normal View History

2020-11-25 16:18:59 +01:00
PORT := 1234
CHECK := diff -q
MKDIR_P := mkdir -p
2020-11-26 15:44:41 +01:00
ECHO := echo -e
NC := \033[0m
RED := \033[0;31m
GREEN := \033[0;32m
YELLOW := \033[1;33m
2020-11-25 16:18:59 +01:00
CC := lcc
CFLAGS := -nostdlib
QEMU := qemu-e2k
QEMU_ARGS :=
GDB := e2k-linux-gdb
GDB_ARGS := -q --batch --nx --nw -ix gdbinit
GDB_BPS := -ex 'b _start' -ex 'b _stop'
ifndef EMU
GDB_SERVER := gdbserver
GDB_SERVER_ARGS := :$(PORT)
else
GDB_SERVER := $(QEMU)
GDB_SERVER_ARGS := -g $(PORT) $(QEMU_ARGS)
endif
tests := $(subst .s,,$(notdir $(wildcard src/*.s)))
executables := $(addprefix build/,$(tests))
logs := $(addprefix build/,$(addsuffix .log,$(tests)))
checks := $(addprefix check-,$(tests))
2020-11-26 15:44:41 +01:00
.PHONY: all build logs test gen-test mkdirs clean clean-logs $(checks)
2020-11-25 16:18:59 +01:00
2020-11-26 12:32:51 +01:00
all: logs
2020-11-26 15:44:41 +01:00
build: mkdirs $(executables)
2020-11-26 12:32:51 +01:00
logs: mkdirs $(logs)
2020-11-25 16:18:59 +01:00
2020-11-26 15:44:41 +01:00
gen-test: clean-logs logs test
2020-11-25 16:18:59 +01:00
test: mkdirs $(checks)
mkdirs:
2020-11-26 15:44:41 +01:00
@$(MKDIR_P) build
2020-11-25 16:18:59 +01:00
2020-11-26 12:31:51 +01:00
clean: clean-logs
2020-11-26 15:44:41 +01:00
@$(RM) $(executables)
2020-11-26 12:31:51 +01:00
clean-logs:
2020-11-26 15:44:41 +01:00
@$(RM) $(logs)
2020-11-25 16:18:59 +01:00
$(executables): build/%: src/%.s
2020-11-26 15:44:41 +01:00
@$(ECHO) " $(GREEN)build $(NC)$*"
@$(CC) $(CFLAGS) -o $@ $<
2020-11-25 16:18:59 +01:00
$(logs): build/%.log: build/% src/%.gdb
2020-11-26 15:44:41 +01:00
@$(ECHO) " $(GREEN)gen $(NC)$*.log"
@$(GDB_SERVER) $(GDB_SERVER_ARGS) $< &> /dev/null &
@$(GDB) $(GDB_ARGS) -ex 'file $<' $(GDB_BPS) \
2020-11-25 16:18:59 +01:00
-ex 'target remote :$(PORT)' -x src/$*.gdb > $@
2020-11-26 15:44:41 +01:00
.ONESHELL:
2020-11-25 16:18:59 +01:00
$(checks): check-%: build/%.log src/%.log
2020-11-26 15:44:41 +01:00
@$(ECHO) -n " $(GREEN)check $(NC)$*"
$(CHECK) $^ &> /dev/null
if [ $$? -eq 0 ]
then
$(ECHO) " $(GREEN)OK!$(NC)"
true
else
$(ECHO) " $(RED)FAIL!$(NC)"
false
fi