AS := riscv64-linux-gnu-as LD := riscv64-linux-gnu-ld SRC_DIR := src BUILD_DIR := build BIN_DIR := bin SRCS := $(wildcard $(SRC_DIR)/*.S) OBJS := $(SRCS:$(SRC_DIR)/%.S=$(BUILD_DIR)/%.o) TARGET := $(BIN_DIR)/cat .PHONY: all clean all: $(TARGET) $(TARGET): $(OBJS) | $(BIN_DIR) $(LD) $(OBJS) -o $@ $(BUILD_DIR)/%.o: $(SRC_DIR)/%.S | $(BUILD_DIR) $(AS) $< -o $@ $(BUILD_DIR) $(BIN_DIR): mkdir -p $@ clean: rm -rf $(BUILD_DIR) $(BIN_DIR)