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
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)