CFLAGS = -Iinclude -Wall -Wextra -MMD #-Werror CURDIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) O ?= build OUT := $(O) EMU_OUT := $(abspath $(OUT)) SHELL_HACK := $(shell mkdir -p $(OUT)) GIT_HOOKS := .git/hooks/applied LIBSRCS = $(shell find ./src -name '*.c') _LIB_OBJ = $(notdir $(LIBSRCS)) LIB_OBJ = $(_LIB_OBJ:%.c=$(OUT)/%.o) TEST_OBJ = $(EMU_OUT)/emu_test.obj TEST_BIN = $(EMU_OUT)/emu_test.bin vpath %.c $(sort $(dir $(LIBSRCS))) .PHONY: all debug clean all: CFLAGS += -O0 -g all: LDFLAGS += -O0 debug: CFLAGS += -O0 -g -DDEBUG debug: LDFLAGS += -O0 $(GIT_HOOKS): @scripts/install-git-hooks @echo $(OUT)/%.o: %.c $(CC) -c $(CFLAGS) $< -o $@ emu: cd src && make all stub: emu $(EMU_OUT)/emu $(TEST_BIN) gdb: emu gdb-multiarch $(TEST_OBJ) -ex "set architecture riscv:rv32" -ex "target remote 127.0.0.1:1234" clean: $(RM) -rf build -include $(OUT)/*.d