BITS := 32 # TOOLCHAIN := riscv$(BITS)-linux-gnu- # TOOLCHAIN := riscv$(BITS)-unknown-elf- TOOLCHAIN := riscv$(BITS)-unknown-linux-gnu- CC := $(TOOLCHAIN)gcc SRC := src OBJ := obj BIN := bin FILES = $(shell find $(SRC) -type f) SRCS = $(filter %.s, $(FILES)) OBJS = $(SRCS:$(SRC)/%.s=$(OBJ)/%.o) FLAGS := -nostdlib -static -s # KERNEL := linux-6.1.38.img$(BITS) KERNEL := linux-5.4.294.img$(BITS) INITFS := initfs.img NAME := test export all: vm clean: rm -rf $(BIN) rm -rf $(OBJ) $(NAME): $(BIN)/$(NAME) $(OBJ)/%.o: $(SRC)/%.s mkdir -p $(dir $@) $(CC) $(FLAGS) -c $< -o $@ $(BIN)/$(NAME): $(OBJS) mkdir -p $(dir $@) $(CC) $(FLAGS) $^ -o $@ vm: $(BIN)/$(INITFS) $(BIN)/$(KERNEL) ./vm.sh run $(BIN)/$(INITFS): $(NAME) ./vm.sh initramfs $(BIN)/$(NAME) $(BIN)/$(KERNEL): ./vm.sh kernel