\r
OBJ := helpers.o threads.o server.o syscalls.o\r
OBJ += video.o keyboard.o mouse.o nativefs.o vfs_handle.o ui_sdl.o\r
-OBJ += $(addprefix $(KERNEL_SRC),$(KERNEL_OBJ))\r
+OBJ := $(addprefix obj-$(PLATFORM)/,$(OBJ))\r
+N_OBJ := $(addprefix obj-$(PLATFORM)/,$(N_OBJ))\r
+K_OBJ := $(addprefix $(KERNEL_SRC)obj-$(PLATFORM)/,$(KERNEL_OBJ))\r
\r
-OBJ := $(addsuffix .$(PLATFORM),$(OBJ))\r
-N_OBJ := $(addsuffix .$(PLATFORM),$(N_OBJ))\r
-DEPFILES = $(filter %.o.$(PLATFORM),$(OBJ) $(N_OBJ))\r
-DEPFILES := $(DEPFILES:%.o.$(PLATFORM)=%.d.$(PLATFORM))\r
+DEPFILES = $(filter %.o,$(OBJ) $(N_OBJ) $(K_OBJ))\r
+DEPFILES := $(DEPFILES:%=%.dep)\r
\r
CPPFLAGS += -I include/ -I $(KERNEL_SRC)include/\r
CFLAGS += -Wall -g\r
all: $(BIN)\r
\r
clean:\r
- $(RM) $(BIN) $(OBJ) $(N_OBJ) $(DEPFILES)\r
+ $(RM) $(BIN) $(OBJ) $(N_OBJ) $(K_OBJ) $(DEPFILES)\r
\r
-$(BIN): $(OBJ) $(N_OBJ)\r
+$(BIN): $(OBJ) $(N_OBJ) $(K_OBJ)\r
@echo [LINK] -o $@\r
- @$(CC) $(LDFLAGS) -o $@ $(N_OBJ) $(OBJ)\r
+ @$(CC) $(LDFLAGS) -o $@ $(N_OBJ) $(K_OBJ) $(OBJ)\r
\r
-$(OBJ): %.o.$(PLATFORM): %.c\r
+$(OBJ): obj-$(PLATFORM)/%.o: %.c\r
+ @mkdir -p $(dir $@)\r
@echo [CC] -o $@\r
@$(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)\r
- @$(CC) -M $(CPPFLAGS) -MT $@ -o $*.d.$(PLATFORM) $<\r
+ @$(CC) -M $(CPPFLAGS) -MT $@ -o $@.dep $<\r
\r
-$(N_OBJ): %.o.$(PLATFORM): %.c\r
+$(K_OBJ): $(KERNEL_SRC)obj-$(PLATFORM)/%.o: $(KERNEL_SRC)%.c\r
+ @mkdir -p $(dir $@)\r
+ @echo [CC] -o $@\r
+ @$(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)\r
+\r
+\r
+$(N_OBJ): obj-$(PLATFORM)/%.o: %.c\r
+ @mkdir -p $(dir $@)\r
@echo [CC] -o $@\r
@$(CC) -c $< -o $@ $(CFLAGS)\r
- @$(CC) -M -MT $@ -o $*.d.$(PLATFORM) $<\r
+ @$(CC) -M -MT $@ -o $@.dep $<\r
\r
-include $(DEPFILES)\r