48 lines
886 B
Makefile
48 lines
886 B
Makefile
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
|