1 # $Id: Makefile,v 1.116 2004/03/02 22:36:17 dwelch Exp $
3 # ReactOS Operating System
7 # Path to the directory containing the root makefile
12 # Include details of the host OS configuration
14 include $(PATH_TO_TOP
)/config
20 LINKER_SCRIPT
:= ntoskrnl.lnk
24 LINKER_SCRIPT
:= ntoskrnl.lnk
29 OBJECTS_KDBG
:= dbg
/kdb.o dbg
/kdb_serial.o dbg
/kdb_keyboard.o dbg
/rdebug.o \
30 dbg
/i386
/kdb_help.o dbg
/kdb_stabs.o dbg
/profile.o \
32 CFLAGS
+= -I..
/lib
/kjs
/include
41 ifeq ($(strip $(SDK_PATH_INC
)),)
42 ASFLAGS
+= -I.
/include
43 CFLAGS
+= -I.
/include -D__NTOSKRNL__
$(CFLAGS_DBG
) -Wall
-Werror
45 ASFLAGS
+= -I.
/include -I
$(SDK_PATH_INC
)
46 CFLAGS
+= -I.
/include -I
$(SDK_PATH_INC
) -D__NTOSKRNL__
$(CFLAGS_DBG
) -Wall
-Werror
49 # ASFLAGS += -D__USE_W32API -D_NTOSKRNL_
50 # CFLAGS += -D__USE_W32API -D_NTOSKRNL_
52 # require os code to explicitly request A/W version of structs/functions
53 CFLAGS
+= -D_DISABLE_TIDENTS
55 CFLAGS
+= $(STD_CFLAGS
)
56 ASFLAGS
+= $(STD_ASFLAGS
)
57 RCFLAGS
+= $(STD_RCFLAGS
)
62 include $(PATH_TO_TOP
)/rules.mak
65 # Javascript extension for kdb
68 TARGETNAME
:= ntoskrnl
70 OBJECTS_PATH
= objects
72 all: $(OBJECTS_PATH
) \
73 bugcodes.rc
$(PATH_TO_TOP
)/include/reactos
/bugcodes.h \
74 $(TARGETNAME
).nostrip.exe \
80 # Architecture specific Makefile
81 # Defines $(OBJECTS_ARCH)
83 include Makefile.
$(ARCH
)
100 # Run-Time Library (Rtl)
127 OBJECTS_RTL
:= $(filter-out $(RTL_EXCLUDE_FILTER
), $(OBJECTS_RTL
))
150 # Memory Manager (Mm)
231 # Object Manager (Ob)
241 # Process Manager (Ps)
256 # Executive Subsystem (Ex)
276 # Installable File System Run-Time Library (FsRtl)
303 # Configuration Manager (Registry)
312 # Debugger Support (Dbg)
329 # Local Procedure Call (Lpc)
343 # Power Management (Po)
344 OBJECTS_PO
= po
/power.o
354 # Kernel Debugger Support (Kd)
366 DEP_OBJECTS
:= $(OBJECTS_NT
) $(OBJECTS_MM
) $(OBJECTS_ARCH
) \
367 $(OBJECTS_IO
) $(OBJECTS_KE
) $(OBJECTS_OB
) \
368 $(OBJECTS_PS
) $(OBJECTS_EX
) $(OBJECTS_CC
) $(OBJECTS_FS
) $(OBJECTS_SE
) \
369 $(OBJECTS_DBG
) $(OBJECTS_CM
) $(OBJECTS_LDR
) $(OBJECTS_LPC
) \
370 $(OBJECTS_PO
) $(OBJECTS_KD
) $(OBJECTS_RTL
)
372 TAG_OBJECTS
:= $(join $(dir $(DEP_OBJECTS
)),$(patsubst %.o
, .
%.TAG
, $(notdir $(DEP_OBJECTS
))))
375 # Include automatic dependancy tracking
377 DEP_EXCLUDE_FILTER
:= ex
/napi.
% nt
/zw.
%
378 GENERATED_HEADER_FILES
:= $(PATH_TO_TOP
)/include/reactos
/bugcodes.h
379 include $(PATH_TO_TOP
)/tools
/depend.mk
392 mkdir
$(OBJECTS_PATH
)
394 $(OBJECTS_RESOURCE
): $(TARGETNAME
).rc bugcodes.rc
$(PATH_TO_TOP
)/include/reactos
/resource.h
397 # Build subsystem intermediate objects
399 $(OBJECTS_PATH
)/arch.o
: $(OBJECTS_ARCH
)
400 $(LD
) -r
-o
$(OBJECTS_PATH
)/arch.o
$(OBJECTS_ARCH
)
402 $(OBJECTS_PATH
)/io.o
: $(OBJECTS_IO
)
405 -o
$(OBJECTS_PATH
)/io.o \
408 $(OBJECTS_PATH
)/ke.o
: $(OBJECTS_KE
)
411 -o
$(OBJECTS_PATH
)/ke.o \
414 $(OBJECTS_PATH
)/rtl.o
: $(OBJECTS_RTL
)
417 -o
$(OBJECTS_PATH
)/rtl.o \
420 $(OBJECTS_PATH
)/mm.o
: $(OBJECTS_MM
)
423 -o
$(OBJECTS_PATH
)/mm.o \
426 $(OBJECTS_PATH
)/ob.o
: $(OBJECTS_OB
)
429 -o
$(OBJECTS_PATH
)/ob.o \
432 $(OBJECTS_PATH
)/ps.o
: $(OBJECTS_PS
)
435 -o
$(OBJECTS_PATH
)/ps.o \
438 $(OBJECTS_PATH
)/ex.o
: $(OBJECTS_EX
)
441 -o
$(OBJECTS_PATH
)/ex.o \
444 $(OBJECTS_PATH
)/fs.o
: $(OBJECTS_FS
)
447 -o
$(OBJECTS_PATH
)/fs.o \
450 $(OBJECTS_PATH
)/se.o
: $(OBJECTS_SE
)
453 -o
$(OBJECTS_PATH
)/se.o \
456 $(OBJECTS_PATH
)/cm.o
: $(OBJECTS_CM
)
459 -o
$(OBJECTS_PATH
)/cm.o \
462 $(OBJECTS_PATH
)/dbg.o
: $(OBJECTS_DBG
)
465 -o
$(OBJECTS_PATH
)/dbg.o \
468 $(OBJECTS_PATH
)/ldr.o
: $(OBJECTS_LDR
)
471 -o
$(OBJECTS_PATH
)/ldr.o \
474 $(OBJECTS_PATH
)/lpc.o
: $(OBJECTS_LPC
)
477 -o
$(OBJECTS_PATH
)/lpc.o \
480 $(OBJECTS_PATH
)/nt.o
: $(OBJECTS_NT
)
483 -o
$(OBJECTS_PATH
)/nt.o \
486 $(OBJECTS_PATH
)/po.o
: $(OBJECTS_PO
)
489 -o
$(OBJECTS_PATH
)/po.o \
492 $(OBJECTS_PATH
)/cc.o
: $(OBJECTS_CC
)
495 -o
$(OBJECTS_PATH
)/cc.o \
498 $(OBJECTS_PATH
)/kd.o
: $(OBJECTS_KD
)
501 -o
$(OBJECTS_PATH
)/kd.o \
504 $(OBJECTS_PATH
)/inbv.o
: $(OBJECTS_INBV
)
507 -o
$(OBJECTS_PATH
)/inbv.o \
510 # Note: arch.o MUST be the first file!!!
512 $(OBJECTS_PATH
)/arch.o \
513 $(OBJECTS_PATH
)/ke.o \
514 $(OBJECTS_PATH
)/cc.o \
515 $(OBJECTS_PATH
)/cm.o \
516 $(OBJECTS_PATH
)/dbg.o \
517 $(OBJECTS_PATH
)/ex.o \
518 $(OBJECTS_PATH
)/lpc.o \
519 $(OBJECTS_PATH
)/fs.o \
520 $(OBJECTS_PATH
)/io.o \
521 $(OBJECTS_PATH
)/kd.o \
522 $(OBJECTS_PATH
)/ldr.o \
523 $(OBJECTS_PATH
)/mm.o \
524 $(OBJECTS_PATH
)/nt.o \
525 $(OBJECTS_PATH
)/ob.o \
526 $(OBJECTS_PATH
)/po.o \
527 $(OBJECTS_PATH
)/ps.o \
528 $(OBJECTS_PATH
)/rtl.o \
529 $(OBJECTS_PATH
)/se.o \
530 $(OBJECTS_PATH
)/inbv.o \
534 $(TARGETNAME
).nostrip.exe
: $(TARGETNAME
).o
$(IE_DATA
) $(SDK_PATH_LIB
)/string.a
$(SDK_PATH_LIB
)/rosrtl.a
536 -Wl
,-T
,ntoskrnl.lnk \
541 -Wl
,--subsystem
,native \
542 -Wl
,--image-base
,0xc0000000 \
543 -Wl
,--file-alignment
,0x1000 \
544 -Wl
,--section-alignment
,0x1000 \
545 -Wl
,--entry
,_NtProcessStartup \
546 -Wl
,--base-file
,base.tmp \
547 $(TARGETNAME
).o
-lgcc \
548 $(SDK_PATH_LIB
)/string.a \
549 $(SDK_PATH_LIB
)/rosrtl.a \
550 $(DDK_PATH_LIB
)/hal.a
553 --dllname
$(TARGETNAME
).exe \
554 --base-file base.tmp \
555 --output-exp temp.exp \
556 --def
$(TARGETNAME
).edf \
562 -Wl
,-T
,ntoskrnl.lnk \
564 -o
$(TARGETNAME
).nostrip.exe \
565 -Wl
,--subsystem
,native \
566 -Wl
,--image-base
,0xc0000000 \
567 -Wl
,--file-alignment
,0x1000 \
568 -Wl
,--section-alignment
,0x1000 \
569 -Wl
,--entry
,_NtProcessStartup \
571 $(TARGETNAME
).o
-lgcc \
572 $(SDK_PATH_LIB
)/string.a \
573 $(SDK_PATH_LIB
)/rosrtl.a \
574 $(DDK_PATH_LIB
)/hal.a
577 $(TARGETNAME
).exe
: $(TARGETNAME
).o
$(LINKER_SCRIPT
) $(DDK_PATH_LIB
)/hal.a
$(SDK_PATH_LIB
)/string.a
$(SDK_PATH_LIB
)/rosrtl.a
579 -Wl
,-T
,$(LINKER_SCRIPT
) \
584 -Wl
,--subsystem
,native \
585 -Wl
,--image-base
,0xc0000000 \
586 -Wl
,--file-alignment
,0x1000 \
587 -Wl
,--section-alignment
,0x1000 \
588 -Wl
,--entry
,_NtProcessStartup \
589 -Wl
,--base-file
,base.tmp \
590 $(TARGETNAME
).o
-lgcc \
591 $(SDK_PATH_LIB
)/string.a \
592 $(SDK_PATH_LIB
)/rosrtl.a \
593 $(DDK_PATH_LIB
)/hal.a
596 --dllname
$(TARGETNAME
).exe \
597 --base-file base.tmp \
598 --output-exp temp.exp \
599 --def
$(TARGETNAME
).edf \
603 -Wl
,-T
,$(LINKER_SCRIPT
) $(STRIP_FLAGS
)\
607 -o
$(TARGETNAME
).exe \
608 -Wl
,--subsystem
,native \
609 -Wl
,--image-base
,0xc0000000 \
610 -Wl
,--file-alignment
,0x1000 \
611 -Wl
,--section-alignment
,0x1000 \
612 -Wl
,--entry
,_NtProcessStartup \
614 $(TARGETNAME
).o
-lgcc \
615 $(SDK_PATH_LIB
)/string.a \
616 $(SDK_PATH_LIB
)/rosrtl.a \
617 $(DDK_PATH_LIB
)/hal.a
620 $(TARGETNAME
).dbg.o
: $(TARGETNAME
).o
621 $(STRIP
) --strip-debug
-o
$(TARGETNAME
).dbg.o
$(TARGETNAME
).o
623 $(TARGETNAME
).dbg
: $(TARGETNAME
).dbg.o
$(TARGETNAME
).a
$(TARGETNAME
).dbg.lnk
$(DDK_PATH_LIB
)/hal.a
$(SDK_PATH_LIB
)/string.a
$(SDK_PATH_LIB
)/rosrtl.a
625 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
630 -Wl
,--subsystem
,native \
631 -Wl
,--image-base
,0xc0000000 \
632 -Wl
,--file-alignment
,0x1000 \
633 -Wl
,--section-alignment
,0x1000 \
634 -Wl
,--entry
,_NtProcessStartup \
635 -Wl
,--base-file
,base.tmp \
636 $(TARGETNAME
).dbg.o
-lgcc \
637 $(SDK_PATH_LIB
)/string.a \
638 $(SDK_PATH_LIB
)/rosrtl.a \
639 $(DDK_PATH_LIB
)/hal.a
642 --dllname
$(TARGETNAME
).dbg \
643 --base-file base.tmp \
644 --output-exp temp.exp \
645 --def
$(TARGETNAME
).edf \
649 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
653 -o
$(TARGETNAME
).dbg \
654 -Wl
,--subsystem
,native \
655 -Wl
,--image-base
,0xc0000000 \
656 -Wl
,--file-alignment
,0x1000 \
657 -Wl
,--section-alignment
,0x1000 \
658 -Wl
,--entry
,_NtProcessStartup \
660 $(TARGETNAME
).dbg.o
-lgcc \
661 $(SDK_PATH_LIB
)/string.a \
662 $(SDK_PATH_LIB
)/rosrtl.a \
663 $(DDK_PATH_LIB
)/hal.a
666 $(TARGETNAME
).sym
: $(TARGETNAME
).nostrip.exe
667 $(RSYM
) $(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym
670 etags
$(addprefix -i
, $(TAG_OBJECTS
))
672 $(TARGETNAME
).map
: $(TARGETNAME
).nostrip.exe
673 ifeq ($(FULL_MAP
),yes
)
674 $(OBJDUMP
) -d
-S
$(TARGETNAME
).nostrip.exe
> $(TARGETNAME
).map
676 $(NM
) --numeric-sort
$(TARGETNAME
).nostrip.exe
> $(TARGETNAME
).map
679 $(TARGETNAME
).o
: $(OBJECTS
)
685 $(PATH_TO_TOP
)/include/reactos
/bugcodes.h bugcodes.rc
: ntoskrnl.mc
687 -H
$(PATH_TO_TOP
)/include/reactos
/bugcodes.h \
691 $(DDK_PATH_LIB
)/$(TARGETNAME
).a
: $(TARGETNAME
).def
693 --dllname
$(TARGETNAME
).exe \
694 --def
$(TARGETNAME
).def \
695 --output-lib
$(DDK_PATH_LIB
)/$(TARGETNAME
).a \
698 implib
: $(DDK_PATH_LIB
)/$(TARGETNAME
).a
701 - $(RM
) $(OBJECTS_PATH
)/*.o
cc/*.o cm
/*.o dbg
/*.o dbg
/i386
/*.o ex
/*.o \
702 ex
/i386
/*.o inbv
/*.o io
/*.o ke
/*.o ldr
/*.o mm
/*.o nt
/*.o ob
/*.o ps
/*.o \
703 rtl
/*.o rtl
/i386
/*.o se
/*.o ke
/i386
/*.o mm
/i386
/*.o fs
/*.o po
/*.o \
704 lpc
/*.o kd
/*.o
$(TARGETNAME
).o junk.tmp base.tmp temp.exp \
705 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym ntoskrnl.map \
706 $(TARGETNAME
).coff bugcodes.rc msg?????.bin
$(DEP_FILES
) \
707 $(TAG_OBJECTS
) $(PATH_TO_TOP
)/include/reactos
/bugcodes.h
712 ifneq ($(BOOTCD_INSTALL
),)
714 install: $(TARGETNAME
).exe
$(TARGETNAME
).sym
$(TARGETNAME
).nostrip.exe
715 - $(CP
) $(TARGETNAME
).exe
$(INSTALL_DIR
)/$(TARGETNAME
).exe
717 else # BOOTCD_INSTALL
719 install: $(TARGETNAME
).exe
$(TARGETNAME
).sym
$(TARGETNAME
).nostrip.exe
720 - $(CP
) $(TARGETNAME
).exe
$(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
721 - $(CP
) $(TARGETNAME
).sym
$(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
723 endif # BOOTCD_INSTALL
729 - $(CP
) $(TARGETNAME
).exe
$(BOOTCD_DIR
)/reactos
/$(TARGETNAME
).exe
734 ex
/napi.o
: ex
/napi.c
$(PATH_TO_TOP
)/include/ntdll
/napi.h
736 ke
/main.o
: ke
/main.c
$(PATH_TO_TOP
)/include/reactos
/buildno.h
739 $(CC
) $(CFLAGS
) -c
$< -o
$@
741 $(CC
) $(CFLAGS
) -c
$< -o
$@
743 $(AS
) $(ASFLAGS
) -c
$< -o
$@
745 $(AS
) $(ASFLAGS
) -c
$< -o
$@
747 $(NASM_CMD
) $(NFLAGS
) $< -o
$@
749 $(RC
) $(RCFLAGS
) $< -o
$@