-# $Id: Makefile,v 1.24 2001/03/16 23:04:59 dwelch 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 :=
+
+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
+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
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
OBJECTS_DBG = \
dbg/dbgctrl.o \
dbg/errinfo.o \
- dbg/print.o
+ dbg/print.o \
+ dbg/user.o \
+ $(OBJECTS_KDBG)
# Loader
OBJECTS_LDR = \
- $(RM) temp.exp
$(TARGETNAME).exe: $(TARGETNAME).o $(TARGETNAME).a
- $(STRIP) \
- --strip-debug \
- $(TARGETNAME).o
$(CC) \
-Wl,-T,ntoskrnl.lnk \
-nostartfiles -nostdlib \
--kill-at
- $(RM) base.tmp
$(CC) \
- -Wl,-T,ntoskrnl.lnk \
+ -Wl,-T,ntoskrnl.lnk -Wl,-s\
-nostartfiles -nostdlib \
-mdll \
-o $(TARGETNAME).exe \
-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) \
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) $@