More sensible dependencies scheme for configuration
[reactos.git] / reactos / ntoskrnl / Makefile
index c2b064a..cbdf1d6 100644 (file)
@@ -1,26 +1,49 @@
-# $Id: Makefile,v 1.28 2001/03/31 15:46:08 phreak Exp $
+# $Id: Makefile,v 1.32 2001/04/10 22:13:22 dwelch Exp $
 #
 # ReactOS Operating System
 #
-PATH_TO_TOP = ..
 
+#
+# Path to the directory containing the root makefile
+#
+PATH_TO_TOP := ..
 
+#
+# Include details of the kernel configuration
+#
+include config
 
 #
-# Architecture to build for
 #
-ARCH := i386
+#
+CONFIG :=
 
-TARGETNAME = ntoskrnl
+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 
-# -DDBGPRINT_FILE_LOG
-#         -W -Wpointer-arith -Wconversion -Wstrict-prototypes -Wundef \
-#       -Wmissing-prototypes -Wshadow\
-#CFLAGS = -DDBGPRINT_FILE_LOG
+CFLAGS = -Iinclude -D__NTOSKRNL__ $(CFLAGS_DBG) -Wall -Werror 
 
 include $(PATH_TO_TOP)/rules.mak
 
@@ -241,7 +264,8 @@ OBJECTS_DBG = \
        dbg/dbgctrl.o \
        dbg/errinfo.o \
        dbg/print.o \
-       dbg/user.o
+       dbg/user.o \
+       $(OBJECTS_KDBG)
 
 # Loader
 OBJECTS_LDR = \
@@ -521,7 +545,7 @@ $(TARGETNAME).exe: $(TARGETNAME).o $(TARGETNAME).a
                --kill-at
        - $(RM) base.tmp
        $(CC) \
-               -Wl,-T,ntoskrnl.lnk -Wl,-S\
+               -Wl,-T,ntoskrnl.lnk -Wl,-s\
                -nostartfiles -nostdlib \
                -mdll \
                -o $(TARGETNAME).exe \
@@ -574,7 +598,15 @@ 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 $(EXE_PREFIX)depends$(EXE_POSTFIX)
        $(CC) $(CFLAGS) -M $< | $(EXE_PREFIX)depends$(EXE_POSTFIX) $(@D) $@