1 # $Id: Makefile,v 1.105 2003/08/24 12:08:16 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_keyboard.o dbg
/rdebug.o \
30 dbg
/i386
/kdb_help.o dbg
/kdb_stabs.o dbg
/profile.o
35 ifeq ($(strip $(SDK_PATH_INC
)),)
36 ASFLAGS
+= -I.
/include
37 CFLAGS
+= -I.
/include -D__NTOSKRNL__
$(CFLAGS_DBG
) -Wall
-Werror
39 ASFLAGS
+= -I.
/include -I
$(SDK_PATH_INC
)
40 CFLAGS
+= -I.
/include -I
$(SDK_PATH_INC
) -D__NTOSKRNL__
$(CFLAGS_DBG
) -Wall
-Werror
43 # ASFLAGS += -D__USE_W32API -D_NTOSKRNL_
44 # CFLAGS += -D__USE_W32API -D_NTOSKRNL_
46 # require os code to explicitly request A/W version of structs/functions
47 CFLAGS
+= -D_DISABLE_TIDENTS
52 include $(PATH_TO_TOP
)/rules.mak
55 TARGETNAME
:= ntoskrnl
57 OBJECTS_PATH
= objects
62 $(TARGETNAME
).nostrip.exe \
68 # Architecture specific Makefile
69 # Defines $(OBJECTS_ARCH)
71 include Makefile.
$(ARCH
)
88 # Run-Time Library (Rtl)
114 OBJECTS_RTL
:= $(filter-out $(RTL_EXCLUDE_FILTER
), $(OBJECTS_RTL
))
137 # Memory Manager (Mm)
212 # Object Manager (Ob)
222 # Process Manager (Ps)
237 # Executive Subsystem (Ex)
257 # Installable File System Run-Time Library (FsRtl)
284 # Configuration Manager (Registry)
293 # Debugger Support (Dbg)
310 # Local Procedure Call (Lpc)
324 # Power Management (Po)
325 OBJECTS_PO
= po
/power.o
335 # Kernel Debugger Support (Kd)
347 DEP_OBJECTS
:= $(OBJECTS_NT
) $(OBJECTS_MM
) $(OBJECTS_ARCH
) \
348 $(OBJECTS_IO
) $(OBJECTS_KE
) $(OBJECTS_OB
) \
349 $(OBJECTS_PS
) $(OBJECTS_EX
) $(OBJECTS_CC
) $(OBJECTS_FS
) $(OBJECTS_SE
) \
350 $(OBJECTS_DBG
) $(OBJECTS_CM
) $(OBJECTS_LDR
) $(OBJECTS_LPC
) \
351 $(OBJECTS_PO
) $(OBJECTS_KD
) $(OBJECTS_RTL
)
353 TAG_OBJECTS
:= $(join $(dir $(DEP_OBJECTS
)),$(patsubst %.o
, .
%.TAG
, $(notdir $(DEP_OBJECTS
))))
356 # Include automatic dependancy tracking
358 DEP_EXCLUDE_FILTER
:= ex
/napi.
% nt
/zw.
%
359 include $(PATH_TO_TOP
)/tools
/depend.mk
372 mkdir
$(OBJECTS_PATH
)
374 $(OBJECTS_RESOURCE
): $(TARGETNAME
).rc bugcodes.rc
$(PATH_TO_TOP
)/include/reactos
/resource.h
377 # Build subsystem intermediate objects
379 $(OBJECTS_PATH
)/arch.o
: $(OBJECTS_ARCH
)
380 $(LD
) -r
-o
$(OBJECTS_PATH
)/arch.o
$(OBJECTS_ARCH
)
382 $(OBJECTS_PATH
)/io.o
: $(OBJECTS_IO
)
385 -o
$(OBJECTS_PATH
)/io.o \
388 $(OBJECTS_PATH
)/ke.o
: $(OBJECTS_KE
)
391 -o
$(OBJECTS_PATH
)/ke.o \
394 $(OBJECTS_PATH
)/rtl.o
: $(OBJECTS_RTL
)
397 -o
$(OBJECTS_PATH
)/rtl.o \
400 $(OBJECTS_PATH
)/mm.o
: $(OBJECTS_MM
)
403 -o
$(OBJECTS_PATH
)/mm.o \
406 $(OBJECTS_PATH
)/ob.o
: $(OBJECTS_OB
)
409 -o
$(OBJECTS_PATH
)/ob.o \
412 $(OBJECTS_PATH
)/ps.o
: $(OBJECTS_PS
)
415 -o
$(OBJECTS_PATH
)/ps.o \
418 $(OBJECTS_PATH
)/ex.o
: $(OBJECTS_EX
)
421 -o
$(OBJECTS_PATH
)/ex.o \
424 $(OBJECTS_PATH
)/fs.o
: $(OBJECTS_FS
)
427 -o
$(OBJECTS_PATH
)/fs.o \
430 $(OBJECTS_PATH
)/se.o
: $(OBJECTS_SE
)
433 -o
$(OBJECTS_PATH
)/se.o \
436 $(OBJECTS_PATH
)/cm.o
: $(OBJECTS_CM
)
439 -o
$(OBJECTS_PATH
)/cm.o \
442 $(OBJECTS_PATH
)/dbg.o
: $(OBJECTS_DBG
)
445 -o
$(OBJECTS_PATH
)/dbg.o \
448 $(OBJECTS_PATH
)/ldr.o
: $(OBJECTS_LDR
)
451 -o
$(OBJECTS_PATH
)/ldr.o \
454 $(OBJECTS_PATH
)/lpc.o
: $(OBJECTS_LPC
)
457 -o
$(OBJECTS_PATH
)/lpc.o \
460 $(OBJECTS_PATH
)/nt.o
: $(OBJECTS_NT
)
463 -o
$(OBJECTS_PATH
)/nt.o \
466 $(OBJECTS_PATH
)/po.o
: $(OBJECTS_PO
)
469 -o
$(OBJECTS_PATH
)/po.o \
472 $(OBJECTS_PATH
)/cc.o
: $(OBJECTS_CC
)
475 -o
$(OBJECTS_PATH
)/cc.o \
478 $(OBJECTS_PATH
)/kd.o
: $(OBJECTS_KD
)
481 -o
$(OBJECTS_PATH
)/kd.o \
484 $(OBJECTS_PATH
)/inbv.o
: $(OBJECTS_INBV
)
487 -o
$(OBJECTS_PATH
)/inbv.o \
490 # Note: arch.o MUST be the first file!!!
492 $(OBJECTS_PATH
)/arch.o \
493 $(OBJECTS_PATH
)/ke.o \
494 $(OBJECTS_PATH
)/cc.o \
495 $(OBJECTS_PATH
)/cm.o \
496 $(OBJECTS_PATH
)/dbg.o \
497 $(OBJECTS_PATH
)/ex.o \
498 $(OBJECTS_PATH
)/lpc.o \
499 $(OBJECTS_PATH
)/fs.o \
500 $(OBJECTS_PATH
)/io.o \
501 $(OBJECTS_PATH
)/kd.o \
502 $(OBJECTS_PATH
)/ldr.o \
503 $(OBJECTS_PATH
)/mm.o \
504 $(OBJECTS_PATH
)/nt.o \
505 $(OBJECTS_PATH
)/ob.o \
506 $(OBJECTS_PATH
)/po.o \
507 $(OBJECTS_PATH
)/ps.o \
508 $(OBJECTS_PATH
)/rtl.o \
509 $(OBJECTS_PATH
)/se.o \
510 $(OBJECTS_PATH
)/inbv.o \
514 $(TARGETNAME
).nostrip.exe
: $(TARGETNAME
).o
$(IE_DATA
) $(SDK_PATH_LIB
)/string.a
$(SDK_PATH_LIB
)/rosrtl.a
516 -Wl
,-T
,ntoskrnl.lnk \
521 -Wl
,--subsystem
,native \
522 -Wl
,--image-base
,0xc0000000 \
523 -Wl
,--file-alignment
,0x1000 \
524 -Wl
,--section-alignment
,0x1000 \
525 -Wl
,--entry
,_NtProcessStartup \
526 -Wl
,--base-file
,base.tmp \
527 $(TARGETNAME
).o
-lgcc \
528 $(SDK_PATH_LIB
)/string.a \
529 $(SDK_PATH_LIB
)/rosrtl.a \
530 $(DDK_PATH_LIB
)/hal.a
533 --dllname
$(TARGETNAME
).exe \
534 --base-file base.tmp \
535 --output-exp temp.exp \
536 --def
$(TARGETNAME
).edf \
542 -Wl
,-T
,ntoskrnl.lnk \
544 -o
$(TARGETNAME
).nostrip.exe \
545 -Wl
,--subsystem
,native \
546 -Wl
,--image-base
,0xc0000000 \
547 -Wl
,--file-alignment
,0x1000 \
548 -Wl
,--section-alignment
,0x1000 \
549 -Wl
,--entry
,_NtProcessStartup \
551 $(TARGETNAME
).o
-lgcc \
552 $(SDK_PATH_LIB
)/string.a \
553 $(SDK_PATH_LIB
)/rosrtl.a \
554 $(DDK_PATH_LIB
)/hal.a
557 $(TARGETNAME
).exe
: $(TARGETNAME
).o
$(LINKER_SCRIPT
) $(DDK_PATH_LIB
)/hal.a
$(SDK_PATH_LIB
)/string.a
$(SDK_PATH_LIB
)/rosrtl.a
559 -Wl
,-T
,$(LINKER_SCRIPT
) \
564 -Wl
,--subsystem
,native \
565 -Wl
,--image-base
,0xc0000000 \
566 -Wl
,--file-alignment
,0x1000 \
567 -Wl
,--section-alignment
,0x1000 \
568 -Wl
,--entry
,_NtProcessStartup \
569 -Wl
,--base-file
,base.tmp \
570 $(TARGETNAME
).o
-lgcc \
571 $(SDK_PATH_LIB
)/string.a \
572 $(SDK_PATH_LIB
)/rosrtl.a \
573 $(DDK_PATH_LIB
)/hal.a
576 --dllname
$(TARGETNAME
).exe \
577 --base-file base.tmp \
578 --output-exp temp.exp \
579 --def
$(TARGETNAME
).edf \
583 -Wl
,-T
,$(LINKER_SCRIPT
) $(STRIP_FLAGS
)\
587 -o
$(TARGETNAME
).exe \
588 -Wl
,--subsystem
,native \
589 -Wl
,--image-base
,0xc0000000 \
590 -Wl
,--file-alignment
,0x1000 \
591 -Wl
,--section-alignment
,0x1000 \
592 -Wl
,--entry
,_NtProcessStartup \
594 $(TARGETNAME
).o
-lgcc \
595 $(SDK_PATH_LIB
)/string.a \
596 $(SDK_PATH_LIB
)/rosrtl.a \
597 $(DDK_PATH_LIB
)/hal.a
600 $(TARGETNAME
).dbg.o
: $(TARGETNAME
).o
601 $(STRIP
) --strip-debug
-o
$(TARGETNAME
).dbg.o
$(TARGETNAME
).o
603 $(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
605 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
610 -Wl
,--subsystem
,native \
611 -Wl
,--image-base
,0xc0000000 \
612 -Wl
,--file-alignment
,0x1000 \
613 -Wl
,--section-alignment
,0x1000 \
614 -Wl
,--entry
,_NtProcessStartup \
615 -Wl
,--base-file
,base.tmp \
616 $(TARGETNAME
).dbg.o
-lgcc \
617 $(SDK_PATH_LIB
)/string.a \
618 $(SDK_PATH_LIB
)/rosrtl.a \
619 $(DDK_PATH_LIB
)/hal.a
622 --dllname
$(TARGETNAME
).dbg \
623 --base-file base.tmp \
624 --output-exp temp.exp \
625 --def
$(TARGETNAME
).edf \
629 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
633 -o
$(TARGETNAME
).dbg \
634 -Wl
,--subsystem
,native \
635 -Wl
,--image-base
,0xc0000000 \
636 -Wl
,--file-alignment
,0x1000 \
637 -Wl
,--section-alignment
,0x1000 \
638 -Wl
,--entry
,_NtProcessStartup \
640 $(TARGETNAME
).dbg.o
-lgcc \
641 $(SDK_PATH_LIB
)/string.a \
642 $(SDK_PATH_LIB
)/rosrtl.a \
643 $(DDK_PATH_LIB
)/hal.a
646 $(TARGETNAME
).sym
: $(TARGETNAME
).nostrip.exe
647 $(RSYM
) $(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym
650 etags
$(addprefix -i
, $(TAG_OBJECTS
))
652 ntoskrnl.map
: $(TARGETNAME
).nostrip.exe
653 $(NM
) --numeric-sort
$(TARGETNAME
).nostrip.exe
> ntoskrnl.map
655 $(TARGETNAME
).o
: $(OBJECTS
)
661 bugcodes.rc
: ntoskrnl.mc
663 -H
$(PATH_TO_TOP
)/include/reactos
/bugcodes.h \
667 $(DDK_PATH_LIB
)/$(TARGETNAME
).a
: $(TARGETNAME
).def
669 --dllname
$(TARGETNAME
).exe \
670 --def
$(TARGETNAME
).def \
671 --output-lib
$(DDK_PATH_LIB
)/$(TARGETNAME
).a \
674 implib
: $(DDK_PATH_LIB
)/$(TARGETNAME
).a
677 - $(RM
) $(OBJECTS_PATH
)/*.o
cc/*.o cm
/*.o dbg
/*.o dbg
/i386
/*.o ex
/*.o \
678 ex
/i386
/*.o inbv
/*.o io
/*.o ke
/*.o ldr
/*.o mm
/*.o nt
/*.o ob
/*.o ps
/*.o \
679 rtl
/*.o rtl
/i386
/*.o se
/*.o ke
/i386
/*.o mm
/i386
/*.o fs
/*.o po
/*.o \
680 lpc
/*.o kd
/*.o
$(TARGETNAME
).o junk.tmp base.tmp temp.exp \
681 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym ntoskrnl.map \
682 $(TARGETNAME
).coff bugcodes.rc msg?????.bin
$(DEP_FILES
) \
688 ifneq ($(BOOTCD_INSTALL
),)
690 install: all $(INSTALL_DIR
)/$(TARGETNAME
).exe
692 $(INSTALL_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
693 $(CP
) $(TARGETNAME
).exe
$(INSTALL_DIR
)/$(TARGETNAME
).exe
695 else # BOOTCD_INSTALL
697 install: all $(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
$(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
699 $(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
700 $(CP
) $(TARGETNAME
).exe
$(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
702 $(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
: $(TARGETNAME
).sym
703 $(CP
) $(TARGETNAME
).sym
$(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
705 endif # BOOTCD_INSTALL
710 dist: $(DIST_DIR
)/$(TARGETNAME
).exe
712 $(DIST_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
713 $(CP
) $(TARGETNAME
).exe
$(DIST_DIR
)/$(TARGETNAME
).exe
717 bootcd
: all $(BOOTCD_DIR
)/reactos
/$(TARGETNAME
).exe
719 $(BOOTCD_DIR
)/reactos
/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
720 $(CP
) $(TARGETNAME
).exe
$(BOOTCD_DIR
)/reactos
/$(TARGETNAME
).exe
725 ex
/napi.o
: ex
/napi.c
$(PATH_TO_TOP
)/include/ntdll
/napi.h
727 ke
/main.o
: ke
/main.c
$(PATH_TO_TOP
)/include/reactos
/buildno.h
730 $(CC
) $(CFLAGS
) -c
$< -o
$@
732 $(CC
) $(CFLAGS
) -c
$< -o
$@
734 $(AS
) $(ASFLAGS
) -c
$< -o
$@
736 $(AS
) $(ASFLAGS
) -c
$< -o
$@
738 $(NASM_CMD
) $(NFLAGS
) $< -o
$@
740 $(RC
) $(RCINC
) $< -o
$@