|
| 1 | +SRC_DIR = $(abspath ./src) |
| 2 | +BUILD_DIR = $(abspath ./build) |
| 3 | +AM_ORIGIN_DIR = $(BUILD_DIR)/am-origin |
| 4 | +AM_BUILD_DIR = $(AM_ORIGIN_DIR)/build |
| 5 | +TXT_DIR = $(BUILD_DIR)/generate |
| 6 | + |
| 7 | +C_SRC = $(notdir $(shell find -L $(SRC_DIR) -name "*.c")) |
| 8 | +C_FILE = $(addprefix $(SRC_DIR)/,$(C_SRC)) |
| 9 | +BIN_FILE = $(foreach file,$(basename $(C_SRC)),$(AM_BUILD_DIR)/$(file)-riscv32-nemu.bin) |
| 10 | +TXT_FILE = $(foreach file,$(basename $(C_SRC)),$(TXT_DIR)/$(file).txt) |
| 11 | +NAME_FILE = $(BUILD_DIR)/NAMES.txt |
| 12 | +CONVERTER = $(BUILD_DIR)/converter |
| 13 | + |
| 14 | +$(shell mkdir -p $(AM_BUILD_DIR)) |
| 15 | +$(shell mkdir -p $(TXT_DIR)) |
| 16 | +$(shell ln -sf -T $(AM_HOME)/Makefile $(AM_ORIGIN_DIR)/Makefile) |
| 17 | +$(shell ln -sf -T $(abspath ./include) $(AM_ORIGIN_DIR)/include) |
| 18 | +$(shell ln -sf -T $(abspath ./src) $(AM_ORIGIN_DIR)/src) |
| 19 | + |
| 20 | +.SECONDARY: |
| 21 | +.DEFAULT_GOAL = app |
| 22 | + |
| 23 | +$(CONVERTER): scripts/converter.c |
| 24 | + @echo + build $(CONVERTER) |
| 25 | + @$(CC) -o $@ $< |
| 26 | + |
| 27 | +$(TXT_FILE): $(CONVERTER) |
| 28 | + |
| 29 | +$(AM_BUILD_DIR)/%-riscv32-nemu.bin: $(SRC_DIR)/%.c |
| 30 | + @echo + build $(notdir $@) |
| 31 | + @NAME=$(basename $(notdir $<)) SRCS=src/$(notdir $<) $(MAKE) -s -C $(AM_ORIGIN_DIR) ARCH=riscv32-nemu image > /dev/null |
| 32 | + |
| 33 | +$(TXT_DIR)/%.txt: $(AM_BUILD_DIR)/%-riscv32-nemu.bin |
| 34 | + @echo + convert $(notdir $@) from $(notdir $<) |
| 35 | + @$(CONVERTER) $< $@ |
| 36 | + |
| 37 | +$(NAME_FILE): $(TXT_FILE) |
| 38 | + @echo $(basename $(TXT_FILE)) | tr ' ' '\n' > $(NAME_FILE) |
| 39 | + @echo + generate main names in $(NAME_FILE) |
| 40 | + |
| 41 | +app: $(NAME_FILE) |
| 42 | + @echo BUILD DONE. |
| 43 | + |
| 44 | +clean: |
| 45 | + @-rm -rf $(BUILD_DIR) |
| 46 | + |
| 47 | + |
| 48 | +.PHONY: clean app |
0 commit comments