From f9ddb76a2ae1ae5ba915cb1d73c27cd6972ca58c Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 22 Jul 2025 08:04:24 +1000 Subject: [PATCH] Makefile now supports src/ path --- Makefile | 49 +++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index d7cb8d9..66aea8e 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,7 @@ # # artifact paths +SRC:=src BUILD:=build BIN:=bin @@ -50,7 +51,7 @@ EXE= endif CC=$(CROSS_PREFIX)gcc STRIP=$(CROSS_PREFIX)strip -CFLAGS=-O2 -Wall -g -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -MMD +CFLAGS=-O2 -Wall -g -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -MMD -Isrc -Isrc/slirp CFLAGS+=-D_GNU_SOURCE -DCONFIG_VERSION=\"$(shell cat VERSION)\" LDFLAGS= @@ -64,7 +65,7 @@ PROGS+=build_filelist splitimg endif endif -all: $(PROGS) +all: $(addprefix $(BIN)/,$(PROGS)) EMU_OBJS:=virtio.o pci.o fs.o cutils.o iomem.o simplefb.o \ json.o machine.o temu.o @@ -107,35 +108,34 @@ CFLAGS+=-DCONFIG_X86EMU EMU_OBJS+=x86_cpu.o x86_machine.o ide.o ps2.o vmmouse.o pckbd.o vga.o endif -# macro to prepend $(BUILD) +# macros to relevant path definitions define mkbuild -$(addprefix $(BUILD)/,$(1)) +$(addprefix $(BUILD)/,$1) endef -temu$(EXE): $(BUILD) $(BIN) $(EMU_OBJS) - $(CC) $(LDFLAGS) -o $(BIN)/$@ $(call mkbuild,$(EMU_OBJS)) $(EMU_LIBS) +$(BIN)/temu$(EXE): $(BUILD) $(BIN) $(call mkbuild,$(EMU_OBJS)) + $(CC) $(LDFLAGS) -o $@ $(call mkbuild,$(EMU_OBJS)) $(EMU_LIBS) -riscv_cpu32.o: riscv_cpu.c - $(CC) $(CFLAGS) -DMAX_XLEN=32 -c -o $(BUILD)/$@ $< +$(BUILD)/riscv_cpu32.o: $(SRC)/riscv_cpu.c + $(CC) $(CFLAGS) -DMAX_XLEN=32 -c -o $@ $< -riscv_cpu64.o: riscv_cpu.c - $(CC) $(CFLAGS) -DMAX_XLEN=64 -c -o $(BUILD)/$@ $< +$(BUILD)/riscv_cpu64.o: $(SRC)/riscv_cpu.c + $(CC) $(CFLAGS) -DMAX_XLEN=64 -c -o $@ $< -riscv_cpu128.o: riscv_cpu.c - $(CC) $(CFLAGS) -DMAX_XLEN=128 -c -o $(BUILD)/$@ $< +$(BUILD)/riscv_cpu128.o: $(SRC)/riscv_cpu.c + $(CC) $(CFLAGS) -DMAX_XLEN=128 -c -o $@ $< -build_filelist: build_filelist.o fs_utils.o cutils.o - $(CC) $(LDFLAGS) -o $(BIN)/$@ $(call mkbuild,$^) -lm +$(BIN)/build_filelist: $(BUILD)/build_filelist.o $(BUILD)/fs_utils.o $(BUILD)/cutils.o + $(CC) $(LDFLAGS) -o $@ $^ -lm -splitimg: splitimg.o - $(CC) $(LDFLAGS) -o $(BIN)/$@ $(call mkbuild,$^) +$(BIN)/splitimg: $(BUILD)/splitimg.o + $(CC) $(LDFLAGS) -o $@ $^ -install: $(PROGS) - $(STRIP) $(PROGS) - $(INSTALL) -m755 $(PROGS) "$(DESTDIR)$(bindir)" +$(BUILD)/%.o: $(SRC)/%.c + $(CC) $(CFLAGS) -c -o $@ $< -%.o: %.c - $(CC) $(CFLAGS) -c -o $(BUILD)/$@ $< +$(BUILD)/slirp/%.o: $(SRC)/slirp/%.c + $(CC) $(CFLAGS) -c -o $@ $< .PHONY: $(BUILD) $(BUILD): @@ -145,10 +145,15 @@ $(BUILD): $(BIN): @mkdir -p $@ +.PHONY: install +install: $(PROGS) + $(STRIP) $(PROGS) + $(INSTALL) -m755 $(PROGS) "$(DESTDIR)$(bindir)" + .PHONY: clean clean: rm -f *~ $(PROGS) rm -rf $(BUILD) --include $(wildcard $(BUILD)/*.d) +-include $(wildcard build/*.d) -include $(wildcard $(BUILD)/slirp/*.d)