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 |