forth-riscv

My forth
git clone git://git.electrosoup.com/forth-riscv
Log | Files | Refs

Makefile (1003B)


      1 CC := riscv64-unknown-elf-gcc
      2 
      3 CPPFLAGS := -x assembler-with-cpp
      4 CFLAGS   := -Wall -ggdb -mcmodel=medany -march=rv32imzicsr -mabi=ilp32
      5 LDFLAGS  := -static -nostartfiles
      6 
      7 SRC_DIR := src
      8 OBJ_DIR := obj
      9 BIN_DIR := bin
     10 
     11 KERNEL_SRC := $(wildcard $(SRC_DIR)/*.s)
     12 KERNEL_OBJ := $(KERNEL_SRC:$(SRC_DIR)/%.s=$(OBJ_DIR)/%.o)
     13 KERNEL_ELF := $(BIN_DIR)/forth.elf
     14 
     15 BOARD := riscv32-virt
     16 LINK_SCRIPT := $(SRC_DIR)/$(BOARD).ld
     17 
     18 DISK := disk0.qcow2
     19 
     20 .PHONY: all clean docker run
     21 
     22 all: clean $(KERNEL_ELF) $(DISK)
     23 
     24 docker:
     25 	docker stop forth-repl || true
     26 	docker build . --tag forth-riscv32
     27 	docker image prune -f
     28 	docker run --name forth-repl --interactive --rm forth-riscv32
     29 
     30 run: $(KERNEL_ELF) $(DISK)
     31 	./run
     32 
     33 $(KERNEL_ELF): $(KERNEL_OBJ) | $(BIN_DIR)
     34 	$(CC) $(LDFLAGS) -T $(LINK_SCRIPT) $(KERNEL_OBJ) -o $@
     35 
     36 $(OBJ_DIR)/%.o: $(SRC_DIR)/%.s | $(OBJ_DIR)
     37 	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
     38 
     39 $(BIN_DIR) $(OBJ_DIR):
     40 	mkdir -p $@
     41 
     42 $(DISK):
     43 	qemu-img create -f qcow2 $@ 256M
     44 
     45 clean:
     46 	@$(RM) -rv $(BIN_DIR) $(OBJ_DIR)