- kdevelop3 project files
[lightOS.git] / kernel / Makefile
blobe1e532320b4e6c3f56e8da47425f5fa3be71312f
1 ###############################################################################
2 ######### lightOS Makfile ##########
3 ###############################################################################
4 include ../Makefile.config
5 include ../Makefile.rules
7 OBJ= $(SRC:%.cpp=$(TMP_KERNEL)/%.o)
8 OBJ_C= $(SRC_C:%.c=$(TMP_KERNEL)/%.o)
9 OBJ_DBG= $(SRC:%.cpp=$(TMP_KERNEL)/%-dbg.o)
10 OBJ_C_DBG= $(SRC_C:%.c=$(TMP_KERNEL)/%-dbg.o)
11 OBJ_ASM= $(SRC_ASM:%.S=$(TMP_KERNEL)/%.o)
12 OBJ_YASM= $(SRC_YASM:%.S=%.bin)
14 SRC= libc/abort.cpp libc/allocpages.cpp \
15 cmdline.cpp vfs.cpp io_port_manager.cpp spinlock.cpp event_manager.cpp range_allocator.cpp thread.cpp elf.cpp id.cpp log.cpp context.cpp page_allocator.cpp process.cpp scheduler.cpp sharedMemoryManager.cpp port_manager.cpp syscall.cpp kernel.cpp \
16 $(patsubst %,x86_shared/%, cmdline.cpp console.cpp elf.cpp acpi.cpp apic.cpp pic.cpp interrupt.cpp interrupt_controller.cpp idt.cpp gdt.cpp multiboot.cpp processor.cpp smp.cpp serial.cpp cmos.cpp dma.cpp) \
17 $(patsubst %,libsupc++/%, purevirtual.cpp initialize.cpp memory.cpp)
18 ifeq ($(ARCH), x86)
19 SRC+= $(patsubst %,x86/%, context.cpp elf.cpp gdt.cpp idt.cpp processor.cpp smp.cpp thread.cpp v86.cpp v86m.cpp vbe.cpp)
20 SRC_ASM= x86/kernel.S x86/_v86.S x86/interrupt.S
21 SRC_YASM= x86/smp.S
22 endif
23 ifeq ($(ARCH), x86_64)
24 SRC+= $(patsubst %,x86_64/%, context.cpp elf.cpp gdt.cpp idt.cpp processor.cpp smp.cpp thread.cpp)
25 SRC_ASM= x86_64/kernel.S x86_64/interrupt.S
26 SRC_YASM= x86_64/smp.S
27 endif
28 SRC_C= libc/errno.c libc/memory.c libc/sbrk.c \
29 libc/freestanding/stdlib/conversion.c libc/freestanding/ctype.c \
30 libarch/$(ARCH)/atomic.c \
31 $(patsubst %,libc/freestanding/string/%, memchr.c memcmp.c memcpy.c memmove.c memset.c strcat.c strchr.c strcmp.c strcpy.c strcspn.c strlen.c strncat.c strncmp.c strncpy.c strpbrk.c strrchr.c strspn.c strstr.c strtok.c)
33 INCLUDE= -I $(ROOT_DIR)/kernel/include $(LIBARCH_INCLUDE) $(LIBC_INCLUDE) $(LIBCPP_INCLUDE) $(LIBLIGHTOSPP_INCLUDE) $(LIBKERNEL_INCLUDE) $(LIBSERVER_INCLUDE)
35 dep:
36 @makedepend -f - -DNDEBUG $(INCLUDE_MAKEDEPEND) $(INCLUDE) $(SRC) $(SRC_C) -p$(TMP_KERNEL)/ > $(DEP)
37 @makedepend -f - $(INCLUDE_MAKEDEPEND) $(INCLUDE) $(SRC) $(SRC_C) -p$(TMP_KERNEL)/ -o-dbg.o >> $(DEP)
39 -include $(DEP)
41 all: dep $(BUILD)/$(ARCH)/system/kernel $(BUILD)/$(ARCH)/system/kernel-dbg
43 $(BUILD)/$(ARCH)/system/kernel: $(OBJ) $(OBJ_C) $(OBJ_ASM) $(OBJ_YASM) $(LIBGCC) $(ARCH)/kernel.ld
44 @echo " LD kernel"
45 @$(LD) -s -T $(ARCH)/kernel.ld -o $(@) $(OBJ_ASM) $(OBJ) $(OBJ_C) $(LIBGCC)
47 $(BUILD)/$(ARCH)/system/kernel-dbg: $(OBJ_DBG) $(OBJ_C_DBG) $(OBJ_ASM) $(OBJ_YASM) $(LIBGCC) $(ARCH)/kernel.ld
48 @echo " LD (Debug) kernel"
49 @$(LD) -T $(ARCH)/kernel.ld -o $(@) $(OBJ_ASM) $(OBJ_DBG) $(OBJ_C_DBG) $(LIBGCC)
51 $(TMP_KERNEL)/%.o: %.cpp
52 @echo " C++ kernel/$(@:$(TMP_KERNEL)/%.o=%.cpp)"
53 @$(CPP) -DNDEBUG $(KERNEL_CPP_FLAGS) $(INCLUDE) -c $(@:$(TMP_KERNEL)/%.o=%.cpp) -o $(@)
55 $(TMP_KERNEL)/%-dbg.o: %.cpp
56 @echo " C++ (Debug) kernel/$(@:$(TMP_KERNEL)/%-dbg.o=%.cpp)"
57 @$(CPP) $(KERNEL_CPP_FLAGS) $(INCLUDE) -c $(@:$(TMP_KERNEL)/%-dbg.o=%.cpp) -o $(@)
59 $(TMP_KERNEL)/%.o: %.c
60 @echo " C kernel/$(@:$(TMP_KERNEL)/%.o=%.c)"
61 @$(CC) -DNDEBUG $(KERNEL_C_FLAGS) $(INCLUDE) -c $(@:$(TMP_KERNEL)/%.o=%.c) -o $(@)
63 $(TMP_KERNEL)/%-dbg.o: %.c
64 @echo " C (Debug) kernel/$(@:$(TMP_KERNEL)/%-dbg.o=%.c)"
65 @$(CC) $(KERNEL_C_FLAGS) $(INCLUDE) -c $(@:$(TMP_KERNEL)/%-dbg.o=%.c) -o $(@)
67 $(OBJ_ASM): $(SRC_ASM)
68 @echo " AS kernel/$(@:$(TMP_KERNEL)/%.o=%.S)"
69 @$(CC) $(AS_FLAGS) -o $(@) $(@:$(TMP_KERNEL)/%.o=%.S)
71 $(OBJ_YASM): $(SRC_YASM)
72 @echo " YASM kernel/$(@:%.bin=%.S)"
73 @yasm -f bin -o $(@) $(@:%.bin=%.S)
75 clean:
76 @rm -f $(DEP) $(OBJ) $(OBJ_DBG) $(OBJ_C) $(OBJ_C_DBG) $(OBJ_ASM) $(OBJ_YASM) $(BUILD)/$(ARCH)/system/kernel $(BUILD)/$(ARCH)/system/kernel-dbg
78 # Additional dependencies:
79 $(TMP_KERNEL)/$(ARCH)/kernel.o: $(ARCH)/smp.bin