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
 |