Makefile now supports src/ path

This commit is contained in:
Emile Clark-Boman 2025-07-22 08:04:24 +10:00
parent 9e3e8797f0
commit f9ddb76a2a

View file

@ -23,6 +23,7 @@
# #
# artifact paths # artifact paths
SRC:=src
BUILD:=build BUILD:=build
BIN:=bin BIN:=bin
@ -50,7 +51,7 @@ EXE=
endif endif
CC=$(CROSS_PREFIX)gcc CC=$(CROSS_PREFIX)gcc
STRIP=$(CROSS_PREFIX)strip 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)\" CFLAGS+=-D_GNU_SOURCE -DCONFIG_VERSION=\"$(shell cat VERSION)\"
LDFLAGS= LDFLAGS=
@ -64,7 +65,7 @@ PROGS+=build_filelist splitimg
endif endif
endif endif
all: $(PROGS) all: $(addprefix $(BIN)/,$(PROGS))
EMU_OBJS:=virtio.o pci.o fs.o cutils.o iomem.o simplefb.o \ EMU_OBJS:=virtio.o pci.o fs.o cutils.o iomem.o simplefb.o \
json.o machine.o temu.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 EMU_OBJS+=x86_cpu.o x86_machine.o ide.o ps2.o vmmouse.o pckbd.o vga.o
endif endif
# macro to prepend $(BUILD) # macros to relevant path definitions
define mkbuild define mkbuild
$(addprefix $(BUILD)/,$(1)) $(addprefix $(BUILD)/,$1)
endef endef
temu$(EXE): $(BUILD) $(BIN) $(EMU_OBJS) $(BIN)/temu$(EXE): $(BUILD) $(BIN) $(call mkbuild,$(EMU_OBJS))
$(CC) $(LDFLAGS) -o $(BIN)/$@ $(call mkbuild,$(EMU_OBJS)) $(EMU_LIBS) $(CC) $(LDFLAGS) -o $@ $(call mkbuild,$(EMU_OBJS)) $(EMU_LIBS)
riscv_cpu32.o: riscv_cpu.c $(BUILD)/riscv_cpu32.o: $(SRC)/riscv_cpu.c
$(CC) $(CFLAGS) -DMAX_XLEN=32 -c -o $(BUILD)/$@ $< $(CC) $(CFLAGS) -DMAX_XLEN=32 -c -o $@ $<
riscv_cpu64.o: riscv_cpu.c $(BUILD)/riscv_cpu64.o: $(SRC)/riscv_cpu.c
$(CC) $(CFLAGS) -DMAX_XLEN=64 -c -o $(BUILD)/$@ $< $(CC) $(CFLAGS) -DMAX_XLEN=64 -c -o $@ $<
riscv_cpu128.o: riscv_cpu.c $(BUILD)/riscv_cpu128.o: $(SRC)/riscv_cpu.c
$(CC) $(CFLAGS) -DMAX_XLEN=128 -c -o $(BUILD)/$@ $< $(CC) $(CFLAGS) -DMAX_XLEN=128 -c -o $@ $<
build_filelist: build_filelist.o fs_utils.o cutils.o $(BIN)/build_filelist: $(BUILD)/build_filelist.o $(BUILD)/fs_utils.o $(BUILD)/cutils.o
$(CC) $(LDFLAGS) -o $(BIN)/$@ $(call mkbuild,$^) -lm $(CC) $(LDFLAGS) -o $@ $^ -lm
splitimg: splitimg.o $(BIN)/splitimg: $(BUILD)/splitimg.o
$(CC) $(LDFLAGS) -o $(BIN)/$@ $(call mkbuild,$^) $(CC) $(LDFLAGS) -o $@ $^
install: $(PROGS) $(BUILD)/%.o: $(SRC)/%.c
$(STRIP) $(PROGS) $(CC) $(CFLAGS) -c -o $@ $<
$(INSTALL) -m755 $(PROGS) "$(DESTDIR)$(bindir)"
%.o: %.c $(BUILD)/slirp/%.o: $(SRC)/slirp/%.c
$(CC) $(CFLAGS) -c -o $(BUILD)/$@ $< $(CC) $(CFLAGS) -c -o $@ $<
.PHONY: $(BUILD) .PHONY: $(BUILD)
$(BUILD): $(BUILD):
@ -145,10 +145,15 @@ $(BUILD):
$(BIN): $(BIN):
@mkdir -p $@ @mkdir -p $@
.PHONY: install
install: $(PROGS)
$(STRIP) $(PROGS)
$(INSTALL) -m755 $(PROGS) "$(DESTDIR)$(bindir)"
.PHONY: clean .PHONY: clean
clean: clean:
rm -f *~ $(PROGS) rm -f *~ $(PROGS)
rm -rf $(BUILD) rm -rf $(BUILD)
-include $(wildcard $(BUILD)/*.d) -include $(wildcard build/*.d)
-include $(wildcard $(BUILD)/slirp/*.d) -include $(wildcard $(BUILD)/slirp/*.d)