1 # $Id: Makefile,v 1.96 2003/05/27 19:21:14 hbirr 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
46 include $(PATH_TO_TOP
)/rules.mak
49 TARGETNAME
:= ntoskrnl
51 OBJECTS_PATH
= objects
56 $(TARGETNAME
).nostrip.exe \
62 # Architecture specific Makefile
63 # Defines $(OBJECTS_ARCH)
65 include Makefile.
$(ARCH
)
82 # Run-Time Library (Rtl)
112 OBJECTS_RTL
:= $(filter-out $(RTL_EXCLUDE_FILTER
), $(OBJECTS_RTL
))
135 # Memory Manager (Mm)
210 # Object Manager (Ob)
220 # Process Manager (Ps)
235 # Executive Subsystem (Ex)
255 # Installable File System Run-Time Library (FsRtl)
281 # Configuration Manager (Registry)
290 # Debugger Support (Dbg)
307 # Local Procedure Call (Lpc)
321 # Power Management (Po)
322 OBJECTS_PO
= po
/power.o
332 # Kernel Debugger Support (Kd)
340 DEP_OBJECTS
:= $(OBJECTS_NT
) $(OBJECTS_MM
) $(OBJECTS_ARCH
) \
341 $(OBJECTS_IO
) $(OBJECTS_KE
) $(OBJECTS_OB
) \
342 $(OBJECTS_PS
) $(OBJECTS_EX
) $(OBJECTS_CC
) $(OBJECTS_FS
) $(OBJECTS_SE
) \
343 $(OBJECTS_DBG
) $(OBJECTS_CM
) $(OBJECTS_LDR
) $(OBJECTS_LPC
) \
344 $(OBJECTS_PO
) $(OBJECTS_KD
) $(OBJECTS_RTL
)
346 TAG_OBJECTS
:= $(join $(dir $(DEP_OBJECTS
)),$(patsubst %.o
, .
%.TAG
, $(notdir $(DEP_OBJECTS
))))
349 # Include automatic dependancy tracking
351 DEP_EXCLUDE_FILTER
:= ex
/napi.
% nt
/zw.
%
352 include $(PATH_TO_TOP
)/tools
/depend.mk
365 mkdir
$(OBJECTS_PATH
)
367 $(OBJECTS_RESOURCE
): $(TARGETNAME
).rc bugcodes.rc
$(PATH_TO_TOP
)/include/reactos
/resource.h
370 # Build subsystem intermediate objects
372 $(OBJECTS_PATH
)/arch.o
: $(OBJECTS_ARCH
)
373 $(LD
) -r
-o
$(OBJECTS_PATH
)/arch.o
$(OBJECTS_ARCH
)
375 $(OBJECTS_PATH
)/io.o
: $(OBJECTS_IO
)
378 -o
$(OBJECTS_PATH
)/io.o \
381 $(OBJECTS_PATH
)/ke.o
: $(OBJECTS_KE
)
384 -o
$(OBJECTS_PATH
)/ke.o \
387 $(OBJECTS_PATH
)/rtl.o
: $(OBJECTS_RTL
)
390 -o
$(OBJECTS_PATH
)/rtl.o \
393 $(OBJECTS_PATH
)/mm.o
: $(OBJECTS_MM
)
396 -o
$(OBJECTS_PATH
)/mm.o \
399 $(OBJECTS_PATH
)/ob.o
: $(OBJECTS_OB
)
402 -o
$(OBJECTS_PATH
)/ob.o \
405 $(OBJECTS_PATH
)/ps.o
: $(OBJECTS_PS
)
408 -o
$(OBJECTS_PATH
)/ps.o \
411 $(OBJECTS_PATH
)/ex.o
: $(OBJECTS_EX
)
414 -o
$(OBJECTS_PATH
)/ex.o \
417 $(OBJECTS_PATH
)/fs.o
: $(OBJECTS_FS
)
420 -o
$(OBJECTS_PATH
)/fs.o \
423 $(OBJECTS_PATH
)/se.o
: $(OBJECTS_SE
)
426 -o
$(OBJECTS_PATH
)/se.o \
429 $(OBJECTS_PATH
)/cm.o
: $(OBJECTS_CM
)
432 -o
$(OBJECTS_PATH
)/cm.o \
435 $(OBJECTS_PATH
)/dbg.o
: $(OBJECTS_DBG
)
438 -o
$(OBJECTS_PATH
)/dbg.o \
441 $(OBJECTS_PATH
)/ldr.o
: $(OBJECTS_LDR
)
444 -o
$(OBJECTS_PATH
)/ldr.o \
447 $(OBJECTS_PATH
)/lpc.o
: $(OBJECTS_LPC
)
450 -o
$(OBJECTS_PATH
)/lpc.o \
453 $(OBJECTS_PATH
)/nt.o
: $(OBJECTS_NT
)
456 -o
$(OBJECTS_PATH
)/nt.o \
459 $(OBJECTS_PATH
)/po.o
: $(OBJECTS_PO
)
462 -o
$(OBJECTS_PATH
)/po.o \
465 $(OBJECTS_PATH
)/cc.o
: $(OBJECTS_CC
)
468 -o
$(OBJECTS_PATH
)/cc.o \
471 $(OBJECTS_PATH
)/kd.o
: $(OBJECTS_KD
)
474 -o
$(OBJECTS_PATH
)/kd.o \
477 # Note: arch.o MUST be the first file!!!
479 $(OBJECTS_PATH
)/arch.o \
480 $(OBJECTS_PATH
)/ke.o \
481 $(OBJECTS_PATH
)/cc.o \
482 $(OBJECTS_PATH
)/cm.o \
483 $(OBJECTS_PATH
)/dbg.o \
484 $(OBJECTS_PATH
)/ex.o \
485 $(OBJECTS_PATH
)/lpc.o \
486 $(OBJECTS_PATH
)/fs.o \
487 $(OBJECTS_PATH
)/io.o \
488 $(OBJECTS_PATH
)/kd.o \
489 $(OBJECTS_PATH
)/ldr.o \
490 $(OBJECTS_PATH
)/mm.o \
491 $(OBJECTS_PATH
)/nt.o \
492 $(OBJECTS_PATH
)/ob.o \
493 $(OBJECTS_PATH
)/po.o \
494 $(OBJECTS_PATH
)/ps.o \
495 $(OBJECTS_PATH
)/rtl.o \
496 $(OBJECTS_PATH
)/se.o \
500 $(TARGETNAME
).nostrip.exe
: $(TARGETNAME
).o
$(IE_DATA
) $(SDK_PATH_LIB
)/string.a
502 -Wl
,-T
,ntoskrnl.lnk \
507 -Wl
,--subsystem
,native \
508 -Wl
,--image-base
,0xc0000000 \
509 -Wl
,--file-alignment
,0x1000 \
510 -Wl
,--section-alignment
,0x1000 \
511 -Wl
,--entry
,_NtProcessStartup \
512 -Wl
,--base-file
,base.tmp \
513 $(TARGETNAME
).o
-lgcc \
514 $(SDK_PATH_LIB
)/string.a \
515 $(DDK_PATH_LIB
)/hal.a
518 --dllname
$(TARGETNAME
).exe \
519 --base-file base.tmp \
520 --output-exp temp.exp \
521 --def
$(TARGETNAME
).edf \
527 -Wl
,-T
,ntoskrnl.lnk \
529 -o
$(TARGETNAME
).nostrip.exe \
530 -Wl
,--subsystem
,native \
531 -Wl
,--image-base
,0xc0000000 \
532 -Wl
,--file-alignment
,0x1000 \
533 -Wl
,--section-alignment
,0x1000 \
534 -Wl
,--entry
,_NtProcessStartup \
536 $(TARGETNAME
).o
-lgcc \
537 $(SDK_PATH_LIB
)/string.a \
538 $(DDK_PATH_LIB
)/hal.a
541 $(TARGETNAME
).exe
: $(TARGETNAME
).o
$(LINKER_SCRIPT
) $(DDK_PATH_LIB
)/hal.a
$(SDK_PATH_LIB
)/string.a
543 -Wl
,-T
,$(LINKER_SCRIPT
) \
548 -Wl
,--subsystem
,native \
549 -Wl
,--image-base
,0xc0000000 \
550 -Wl
,--file-alignment
,0x1000 \
551 -Wl
,--section-alignment
,0x1000 \
552 -Wl
,--entry
,_NtProcessStartup \
553 -Wl
,--base-file
,base.tmp \
554 $(TARGETNAME
).o
-lgcc \
555 $(SDK_PATH_LIB
)/string.a \
556 $(DDK_PATH_LIB
)/hal.a
559 --dllname
$(TARGETNAME
).exe \
560 --base-file base.tmp \
561 --output-exp temp.exp \
562 --def
$(TARGETNAME
).edf \
566 -Wl
,-T
,$(LINKER_SCRIPT
) $(STRIP_FLAGS
)\
570 -o
$(TARGETNAME
).exe \
571 -Wl
,--subsystem
,native \
572 -Wl
,--image-base
,0xc0000000 \
573 -Wl
,--file-alignment
,0x1000 \
574 -Wl
,--section-alignment
,0x1000 \
575 -Wl
,--entry
,_NtProcessStartup \
577 $(TARGETNAME
).o
-lgcc \
578 $(SDK_PATH_LIB
)/string.a \
579 $(DDK_PATH_LIB
)/hal.a
582 $(TARGETNAME
).dbg.o
: $(TARGETNAME
).o
583 $(STRIP
) --strip-debug
-o
$(TARGETNAME
).dbg.o
$(TARGETNAME
).o
585 $(TARGETNAME
).dbg
: $(TARGETNAME
).dbg.o
$(TARGETNAME
).a
$(TARGETNAME
).dbg.lnk
$(DDK_PATH_LIB
)/hal.a
$(SDK_PATH_LIB
)/string.a
587 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
592 -Wl
,--subsystem
,native \
593 -Wl
,--image-base
,0xc0000000 \
594 -Wl
,--file-alignment
,0x1000 \
595 -Wl
,--section-alignment
,0x1000 \
596 -Wl
,--entry
,_NtProcessStartup \
597 -Wl
,--base-file
,base.tmp \
598 $(TARGETNAME
).dbg.o
-lgcc \
599 $(SDK_PATH_LIB
)/string.a \
600 $(DDK_PATH_LIB
)/hal.a
603 --dllname
$(TARGETNAME
).dbg \
604 --base-file base.tmp \
605 --output-exp temp.exp \
606 --def
$(TARGETNAME
).edf \
610 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
614 -o
$(TARGETNAME
).dbg \
615 -Wl
,--subsystem
,native \
616 -Wl
,--image-base
,0xc0000000 \
617 -Wl
,--file-alignment
,0x1000 \
618 -Wl
,--section-alignment
,0x1000 \
619 -Wl
,--entry
,_NtProcessStartup \
621 $(TARGETNAME
).dbg.o
-lgcc \
622 $(SDK_PATH_LIB
)/string.a \
623 $(DDK_PATH_LIB
)/hal.a
626 $(TARGETNAME
).sym
: $(TARGETNAME
).nostrip.exe
627 $(RSYM
) $(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym
630 etags
$(addprefix -i
, $(TAG_OBJECTS
))
632 ntoskrnl.map
: $(TARGETNAME
).nostrip.exe
633 $(NM
) --numeric-sort
$(TARGETNAME
).nostrip.exe
> ntoskrnl.map
635 $(TARGETNAME
).o
: $(OBJECTS
)
641 bugcodes.rc
: ntoskrnl.mc
643 -H
$(PATH_TO_TOP
)/include/reactos
/bugcodes.h \
647 $(DDK_PATH_LIB
)/$(TARGETNAME
).a
: $(TARGETNAME
).def
649 --dllname
$(TARGETNAME
).exe \
650 --def
$(TARGETNAME
).def \
651 --output-lib
$(DDK_PATH_LIB
)/$(TARGETNAME
).a \
654 implib
: $(DDK_PATH_LIB
)/$(TARGETNAME
).a
657 - $(RM
) $(OBJECTS_PATH
)/*.o
cc/*.o cm
/*.o dbg
/*.o dbg
/i386
/*.o ex
/*.o \
658 ex
/i386
/*.o io
/*.o ke
/*.o ldr
/*.o mm
/*.o nt
/*.o ob
/*.o ps
/*.o \
659 rtl
/*.o rtl
/i386
/*.o se
/*.o ke
/i386
/*.o mm
/i386
/*.o fs
/*.o po
/*.o \
660 lpc
/*.o kd
/*.o
$(TARGETNAME
).o junk.tmp base.tmp temp.exp \
661 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym ntoskrnl.map \
662 $(TARGETNAME
).coff bugcodes.rc msg?????.bin
$(DEP_FILES
) \
668 ifneq ($(BOOTCD_INSTALL
),)
670 install: all $(INSTALL_DIR
)/$(TARGETNAME
).exe
672 $(INSTALL_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
673 $(CP
) $(TARGETNAME
).exe
$(INSTALL_DIR
)/$(TARGETNAME
).exe
675 else # BOOTCD_INSTALL
677 install: all $(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
$(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
679 $(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
680 $(CP
) $(TARGETNAME
).exe
$(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
682 $(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
: $(TARGETNAME
).sym
683 $(CP
) $(TARGETNAME
).sym
$(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
685 endif # BOOTCD_INSTALL
690 dist: $(DIST_DIR
)/$(TARGETNAME
).exe
692 $(DIST_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
693 $(CP
) $(TARGETNAME
).exe
$(DIST_DIR
)/$(TARGETNAME
).exe
697 bootcd
: all $(BOOTCD_DIR
)/reactos
/$(TARGETNAME
).exe
699 $(BOOTCD_DIR
)/reactos
/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
700 $(CP
) $(TARGETNAME
).exe
$(BOOTCD_DIR
)/reactos
/$(TARGETNAME
).exe
705 ex
/napi.o
: ex
/napi.c
$(PATH_TO_TOP
)/include/ntdll
/napi.h
707 ke
/main.o
: ke
/main.c
$(PATH_TO_TOP
)/include/reactos
/buildno.h
710 $(CC
) $(CFLAGS
) -c
$< -o
$@
712 $(CC
) $(CFLAGS
) -c
$< -o
$@
714 $(AS
) $(ASFLAGS
) -c
$< -o
$@
716 $(AS
) $(ASFLAGS
) -c
$< -o
$@
718 $(NASM_CMD
) $(NFLAGS
) $< -o
$@
720 $(RC
) $(RCINC
) $< -o
$@