More sensible dependencies scheme for configuration
[reactos.git] / reactos / ntoskrnl / Makefile
index 400cdb2..cbdf1d6 100644 (file)
@@ -1,29 +1,73 @@
-# $Id: Makefile,v 1.14 2001/03/08 22:06:00 dwelch Exp $
+# $Id: Makefile,v 1.32 2001/04/10 22:13:22 dwelch Exp $
 #
 # ReactOS Operating System
 #
-PATH_TO_TOP = ..
 
-TARGETNAME = ntoskrnl
+#
+# Path to the directory containing the root makefile
+#
+PATH_TO_TOP := ..
+
+#
+# Include details of the kernel configuration
+#
+include config
+
+#
+#
+#
+CONFIG :=
+
+ifeq ($(DBG), 1)
+CFLAGS_DBG := -g
+CONFIG += DBG
+else
+CFLAGS_DBG :=
+endif
+
+ifeq ($(KDBG), 1)
+OBJECTS_KDBG := dbg/kdb.o dbg/kdb_keyboard.o dbg/i386/kdb_help.o
+CONFIG += KDBG
+else
+OBJECTS_KDBG :=
+endif
+
+ifeq ($(MP), 1)
+CONFIG += MP
+else
+CONFIG += UP
+endif
+
+TARGETNAME := ntoskrnl
 
 OBJECTS_PATH = objects
 
 ASFLAGS = -Iinclude
-CFLAGS = -Iinclude -D__NTOSKRNL__ -DDBG -g -Wall -Werror 
-#         -W -Wpointer-arith -Wconversion -Wstrict-prototypes -Wundef \
-#       -Wmissing-prototypes -Wshadow\
-#CFLAGS += -DDBGPRINT_FILE_LOG
+CFLAGS = -Iinclude -D__NTOSKRNL__ $(CFLAGS_DBG) -Wall -Werror 
 
-all: \
+include $(PATH_TO_TOP)/rules.mak
+
+all: $(EXE_PREFIX)depends$(EXE_POSTFIX) \
        $(OBJECTS_PATH) \
        $(TARGETNAME).nostrip.exe \
-       $(TARGETNAME).exe
+       $(TARGETNAME).exe \
+       $(TARGETNAME).sym
+
+$(EXE_PREFIX)depends$(EXE_POSTFIX): depends.c
+       $(HOST_CC) -o depends$(EXE_POSTFIX) depends.c
 
+#
 # Hardware Abstraction Layer (Hal)
 # Defines $(OBJECTS_HAL)
 #
 include hal/x86/sources
 
+#
+# Architecture specific Makefile
+# Defines $(OBJECTS_ARCH)
+#
+include Makefile.$(ARCH)
+
 # System API (Nt/Zw)
 OBJECTS_NT = \
        nt/atom.o \
@@ -68,7 +112,6 @@ OBJECTS_RTL = \
 # Kernel (Ke)
 # Note: head.o MUST be the first file!!!
 OBJECTS_KE = \
-       ke/multiboot.o \
        ke/apc.o \
        ke/bug.o \
        ke/catch.o \
@@ -76,11 +119,7 @@ OBJECTS_KE = \
        ke/dpc.o \
        ke/error.o \
        ke/event.o \
-       ke/gdt.o \
-       ke/idt.o \
-       ke/kernel.o \
        ke/kqueue.o \
-       ke/ldt.o \
        ke/main.o \
        ke/mutex.o \
        ke/process.o \
@@ -90,21 +129,6 @@ OBJECTS_KE = \
        ke/wait.o \
        ke/kthread.o
 
-OBJECTS_KE_I386 = \
-       ke/i386/exp.o \
-       ke/i386/irq.o \
-       ke/i386/irqhand.o \
-       ke/i386/thread.o \
-       ke/i386/usercall.o \
-       ke/i386/trap.o \
-       ke/i386/bthread.o \
-       ke/i386/syscall.o \
-       ke/i386/tskswitch.o \
-       ke/i386/v86m.o \
-       ke/i386/v86m_sup.o \
-       ke/i386/bios.o \
-        ke/i386/i386-mcount.o
 # Memory Manager (Mm)
 OBJECTS_MM = \
        mm/aspace.o \
@@ -127,12 +151,8 @@ OBJECTS_MM = \
        mm/wset.o \
        mm/mminit.o \
        mm/kmap.o \
-       mm/mpw.o
-
-OBJECTS_MM_I386 = \
-       mm/i386/memsafe.o \
-       mm/i386/page.o \
-       mm/i386/pfault.o
+       mm/mpw.o \
+       mm/pageop.o
 
 # I/O Subsystem (Io)
 OBJECTS_IO = \
@@ -241,9 +261,11 @@ OBJECTS_CM = \
 
 # Debugger Support (Dbg)
 OBJECTS_DBG = \
-       dbg/brkpoint.o \
+       dbg/dbgctrl.o \
        dbg/errinfo.o \
-       dbg/print.o
+       dbg/print.o \
+       dbg/user.o \
+       $(OBJECTS_KDBG)
 
 # Loader
 OBJECTS_LDR = \
@@ -285,11 +307,11 @@ OBJECTS_KD = \
        kd/service.o \
        kd/dlog.o
 
-C_OBJECTS = $(OBJECTS_NT) $(OBJECTS_HAL) $(OBJECTS_MM) $(OBJECTS_MM_I386) \
-       $(OBJECTS_IO) $(OBJECTS_KE) $(OBJECTS_KE_I386) $(OBJECTS_OB) \
+C_OBJECTS := $(OBJECTS_NT) $(OBJECTS_HAL) $(OBJECTS_MM) $(OBJECTS_ARCH) \
+       $(OBJECTS_IO) $(OBJECTS_KE) $(OBJECTS_OB) \
        $(OBJECTS_PS) $(OBJECTS_EX) $(OBJECTS_CC) $(OBJECTS_FS) $(OBJECTS_SE) \
        $(OBJECTS_DBG) $(OBJECTS_CM) $(OBJECTS_LDR) $(OBJECTS_LPC) \
-       $(OBJECTS_PO) $(OBJECTS_KD)     
+       $(OBJECTS_PO) $(OBJECTS_KD) $(OBJECTS_RTL)
 
 D_FILES := $(filter-out ex/napi.%, $(filter-out nt/zw.%, $(C_OBJECTS:.o=.d)))
 D1_FILES := $(join $(dir $(D_FILES)), $(addprefix ., $(notdir $(D_FILES))))
@@ -315,18 +337,20 @@ $(OBJECTS_PATH)/hal.o: $(OBJECTS_HAL)
                -o $(OBJECTS_PATH)/hal.o \
                $(OBJECTS_HAL)
 
+$(OBJECTS_PATH)/arch.o: $(OBJECTS_ARCH)
+       $(LD) -r -o $(OBJECTS_PATH)/arch.o $(OBJECTS_ARCH)
+
 $(OBJECTS_PATH)/io.o: $(OBJECTS_IO)
        $(LD) \
                -r \
                -o $(OBJECTS_PATH)/io.o \
                $(OBJECTS_IO)
 
-$(OBJECTS_PATH)/ke.o: $(OBJECTS_KE) $(OBJECTS_KE_I386)
+$(OBJECTS_PATH)/ke.o: $(OBJECTS_KE)
        $(LD) \
                -r \
                -o $(OBJECTS_PATH)/ke.o \
-               $(OBJECTS_KE) \
-               $(OBJECTS_KE_I386) 
+               $(OBJECTS_KE) 
 
 $(OBJECTS_PATH)/rtl.o: $(OBJECTS_RTL)
        $(LD) \
@@ -334,12 +358,11 @@ $(OBJECTS_PATH)/rtl.o: $(OBJECTS_RTL)
                -o $(OBJECTS_PATH)/rtl.o \
                $(OBJECTS_RTL)
 
-$(OBJECTS_PATH)/mm.o: $(OBJECTS_MM) $(OBJECTS_MM_I386)
+$(OBJECTS_PATH)/mm.o: $(OBJECTS_MM)
        $(LD) \
                -r \
                -o $(OBJECTS_PATH)/mm.o \
-               $(OBJECTS_MM) \
-               $(OBJECTS_MM_I386)
+               $(OBJECTS_MM) 
 
 $(OBJECTS_PATH)/ob.o: $(OBJECTS_OB)
        $(LD) \
@@ -429,7 +452,8 @@ $(TARGETNAME).coff: $(TARGETNAME).rc ../include/reactos/resource.h
 
 
 # Note: ke.o MUST be the first file!!!
-OBJECTS = \
+OBJECTS := \
+       $(OBJECTS_PATH)/arch.o \
        $(OBJECTS_PATH)/ke.o \
        $(OBJECTS_PATH)/hal.o \
        $(OBJECTS_PATH)/cc.o \
@@ -501,9 +525,6 @@ $(TARGETNAME).nostrip.exe: $(TARGETNAME).o $(TARGETNAME).a $(IE_DATA)
        - $(RM) temp.exp
 
 $(TARGETNAME).exe: $(TARGETNAME).o $(TARGETNAME).a
-       $(STRIP) \
-               --strip-debug \
-               $(TARGETNAME).o
        $(CC) \
                -Wl,-T,ntoskrnl.lnk \
                -nostartfiles -nostdlib \
@@ -524,7 +545,7 @@ $(TARGETNAME).exe: $(TARGETNAME).o $(TARGETNAME).a
                --kill-at
        - $(RM) base.tmp
        $(CC) \
-               -Wl,-T,ntoskrnl.lnk \
+               -Wl,-T,ntoskrnl.lnk -Wl,-s\
                -nostartfiles -nostdlib \
                -mdll \
                -o $(TARGETNAME).exe \
@@ -535,8 +556,9 @@ $(TARGETNAME).exe: $(TARGETNAME).o $(TARGETNAME).a
                -Wl,temp.exp \
                $(TARGETNAME).o -lgcc
        - $(RM) temp.exp
-       $(NM) --numeric-sort $(TARGETNAME).exe > $(TARGETNAME).sym
 
+$(TARGETNAME).sym: $(TARGETNAME).nostrip.exe
+       $(NM) --numeric-sort $(TARGETNAME).nostrip.exe > $(TARGETNAME).sym
 
 $(TARGETNAME).o: $(OBJECTS)
        $(LD) \
@@ -576,17 +598,25 @@ ex/napi.o: ex/napi.c ../include/ntdll/napi.h
 
 ke/main.o: ke/main.c ../include/reactos/buildno.h
 
+mkconfig$(EXE_SUFFIX): mkconfig.c
+       $(HOST_CC) -g -o mkconfig$(EXE_SUFFIX) mkconfig.c
+
+include/internal/config.h: config mkconfig$(EXE_SUFFIX)
+       $(EXE_PREFIX)mkconfig$(EXE_SUFFIX) include/internal/config.h$(CONFIG)
+
+ifneq ($(MAKECMDGOALS),clean)
 include $(D1_FILES)
+endif
 
-.%.d: %.c
-       $(CC) $(CFLAGS) -M $< | sed -e 's#$(*F).o#$(@D)/&#g' | sed -e 's@ /[^ ]*@@g' -e 's@^\(.*\)\.o:@.\1.d \1.o:@' > $@
+.%.d: %.c $(EXE_PREFIX)depends$(EXE_POSTFIX)
+       $(CC) $(CFLAGS) -M $< | $(EXE_PREFIX)depends$(EXE_POSTFIX) $(@D) $@
 
 .%.d: %.s
-       $(CC) $(CFLAGS) -M -MG $< | sed -e 's#$(*F).o#$(@D)/&#g' | sed -e 's@ /[^ ]*@@g' -e 's@^\(.*\)\.o:@.\1.d \1.o:@' > $@
+       $(CC) $(CFLAGS) -M $< | $(EXE_PREFIX)depends$(EXE_POSTFIX) $(@D) $@ 
 
 .%.d: %.S
-       $(CC) $(CFLAGS) -M -MG $< | sed -e 's#$(*F).o#$(@D)/&#g' | sed -e 's@ /[^ ]*@@g' -e 's@^\(.*\)\.o:@.\1.d \1.o:@' > $@
+       $(CC) $(CFLAGS) -M $< | $(EXE_PREFIX)depends$(EXE_POSTFIX) $(@D) $@
+
 
-include $(PATH_TO_TOP)/rules.mak
 
 # EOF