include $(CONFIG) include config.mk CDIRS := boot lib hal sys api CDIRS += boot/$(TARGET_BOOTLOADER) CFILES := $(wildcard *.c) CFILES += $(wildcard arch/$(TARGET_MACHINE)/*.c) CFILES += $(foreach dir, $(CDIRS), $(wildcard $(dir)/*.c)) CFILES += $(foreach dir, $(CDIRS), $(wildcard arch/$(TARGET_MACHINE)/$(dir)/*.c)) SFILES := $(wildcard *.s) SFILES += $(wildcard arch/$(TARGET_MACHINE)/*.s) SFILES += $(foreach dir, $(CDIRS), $(wildcard $(dir)/*.s)) SFILES += $(foreach dir, $(CDIRS), $(wildcard arch/$(TARGET_MACHINE)/$(dir)/*.s)) OBJFILES := $(patsubst %.c,%.o,$(CFILES)) OBJFILES += $(patsubst %.s,%.o,$(SFILES)) DEPFILES := $(patsubst %.c,%.d,$(CFILES)) BIN := jove.elf INCDIR := $(OUT)/usr/include/kernel all: $(BIN) headers: mkdir -p $(INCDIR) -$(foreach dir,$(CDIRS),$$(mkdir -p $(INCDIR)/$(dir) $(INCDIR)/arch/$(dir)/)) -cp *.h $(INCDIR)/ -$(foreach dir,$(CDIRS),$$(cp $(dir)/*.h $(INCDIR)/$(dir)/)) -$(foreach dir,$(CDIRS),$$(cp arch/$(TARGET_MACHINE)/$(dir)/*.h $(INCDIR)/arch/$(dir)/)) .PHONY: clean clean: -rm $(OBJFILES) -rm $(DEPFILES) -rm $(BIN) $(BIN): ${OBJFILES} $(LD) $(LDFLAGS) ${OBJFILES} -o $(BIN) -include ${DEPFILES} %.o:%.c $(CC) $(CFLAGS) -c $< -o $@ %.o:%.S $(AS) -g -c $< -o $@