1 # $Id: Makefile,v 1.65 2002/01/23 23:39:24 chorns 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 \
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 \
61 # Architecture specific Makefile
62 # Defines $(OBJECTS_ARCH)
64 include Makefile.
$(ARCH
)
81 # Run-Time Library (Rtl)
131 # Memory Manager (Mm)
200 # Object Manager (Ob)
209 # Process Manager (Ps)
223 # Executive Subsystem (Ex)
240 # Installable File System Run-Time Library (FsRtl)
266 # Configuration Manager (Registry)
275 # Debugger Support (Dbg)
292 # Local Procedure Call (Lpc)
306 # Nation Language Support Library (Nls)
307 OBJECTS_NLS
= nls
/nls.o
309 # Power Management (Po)
310 OBJECTS_PO
= po
/power.o
320 # Kernel Debugger Support (Kd)
327 DEP_OBJECTS
:= $(OBJECTS_NT
) $(OBJECTS_MM
) $(OBJECTS_ARCH
) \
328 $(OBJECTS_IO
) $(OBJECTS_KE
) $(OBJECTS_OB
) \
329 $(OBJECTS_PS
) $(OBJECTS_EX
) $(OBJECTS_CC
) $(OBJECTS_FS
) $(OBJECTS_SE
) \
330 $(OBJECTS_DBG
) $(OBJECTS_CM
) $(OBJECTS_LDR
) $(OBJECTS_LPC
) \
331 $(OBJECTS_PO
) $(OBJECTS_KD
) $(OBJECTS_RTL
)
335 # Include automatic dependancy tracking
337 include $(PATH_TO_TOP
)/tools
/depend.mk
350 mkdir
$(OBJECTS_PATH
)
352 $(OBJECTS_RESOURCE
): $(TARGETNAME
).rc bugcodes.rc
$(PATH_TO_TOP
)/include/reactos
/resource.h
355 # Build subsystem intermediate objects
357 $(OBJECTS_PATH
)/arch.o
: $(OBJECTS_ARCH
)
358 $(LD
) -r
-o
$(OBJECTS_PATH
)/arch.o
$(OBJECTS_ARCH
)
360 $(OBJECTS_PATH
)/io.o
: $(OBJECTS_IO
)
363 -o
$(OBJECTS_PATH
)/io.o \
366 $(OBJECTS_PATH
)/ke.o
: $(OBJECTS_KE
)
369 -o
$(OBJECTS_PATH
)/ke.o \
372 $(OBJECTS_PATH
)/rtl.o
: $(OBJECTS_RTL
)
375 -o
$(OBJECTS_PATH
)/rtl.o \
378 $(OBJECTS_PATH
)/mm.o
: $(OBJECTS_MM
)
381 -o
$(OBJECTS_PATH
)/mm.o \
384 $(OBJECTS_PATH
)/ob.o
: $(OBJECTS_OB
)
387 -o
$(OBJECTS_PATH
)/ob.o \
390 $(OBJECTS_PATH
)/ps.o
: $(OBJECTS_PS
)
393 -o
$(OBJECTS_PATH
)/ps.o \
396 $(OBJECTS_PATH
)/ex.o
: $(OBJECTS_EX
)
399 -o
$(OBJECTS_PATH
)/ex.o \
402 $(OBJECTS_PATH
)/fs.o
: $(OBJECTS_FS
)
405 -o
$(OBJECTS_PATH
)/fs.o \
408 $(OBJECTS_PATH
)/se.o
: $(OBJECTS_SE
)
411 -o
$(OBJECTS_PATH
)/se.o \
414 $(OBJECTS_PATH
)/cm.o
: $(OBJECTS_CM
)
417 -o
$(OBJECTS_PATH
)/cm.o \
420 $(OBJECTS_PATH
)/dbg.o
: $(OBJECTS_DBG
)
423 -o
$(OBJECTS_PATH
)/dbg.o \
426 $(OBJECTS_PATH
)/ldr.o
: $(OBJECTS_LDR
)
429 -o
$(OBJECTS_PATH
)/ldr.o \
432 $(OBJECTS_PATH
)/lpc.o
: $(OBJECTS_LPC
)
435 -o
$(OBJECTS_PATH
)/lpc.o \
438 $(OBJECTS_PATH
)/nls.o
: $(OBJECTS_NLS
)
441 -o
$(OBJECTS_PATH
)/nls.o \
444 $(OBJECTS_PATH
)/nt.o
: $(OBJECTS_NT
)
447 -o
$(OBJECTS_PATH
)/nt.o \
450 $(OBJECTS_PATH
)/po.o
: $(OBJECTS_PO
)
453 -o
$(OBJECTS_PATH
)/po.o \
456 $(OBJECTS_PATH
)/cc.o
: $(OBJECTS_CC
)
459 -o
$(OBJECTS_PATH
)/cc.o \
462 $(OBJECTS_PATH
)/kd.o
: $(OBJECTS_KD
)
465 -o
$(OBJECTS_PATH
)/kd.o \
468 # Note: arch.o MUST be the first file!!!
470 $(OBJECTS_PATH
)/arch.o \
471 $(OBJECTS_PATH
)/ke.o \
472 $(OBJECTS_PATH
)/cc.o \
473 $(OBJECTS_PATH
)/cm.o \
474 $(OBJECTS_PATH
)/dbg.o \
475 $(OBJECTS_PATH
)/ex.o \
476 $(OBJECTS_PATH
)/lpc.o \
477 $(OBJECTS_PATH
)/fs.o \
478 $(OBJECTS_PATH
)/io.o \
479 $(OBJECTS_PATH
)/kd.o \
480 $(OBJECTS_PATH
)/ldr.o \
481 $(OBJECTS_PATH
)/mm.o \
482 $(OBJECTS_PATH
)/nls.o \
483 $(OBJECTS_PATH
)/nt.o \
484 $(OBJECTS_PATH
)/ob.o \
485 $(OBJECTS_PATH
)/po.o \
486 $(OBJECTS_PATH
)/ps.o \
487 $(OBJECTS_PATH
)/rtl.o \
488 $(OBJECTS_PATH
)/se.o \
491 CLEAN_FILES
= $(OBJECTS_PATH
)/*.o
cc/*.o cm
/*.o dbg
/*.o dbg
/i386
/*.o ex
/*.o \
492 ex
/i386
/*.o io
/*.o ke
/*.o ldr
/*.o mm
/*.o nt
/*.o ob
/*.o ps
/*.o \
493 rtl
/*.o se
/*.o ke
/i386
/*.o mm
/i386
/*.o fs
/*.o po
/*.o nls
/*.o \
494 lpc
/*.o kd
/*.o
$(TARGETNAME
).o junk.tmp base.tmp temp.exp \
495 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym \
496 $(TARGETNAME
).coff bugcodes.rc msg?????.bin
$(DEP_FILES
)
498 $(TARGETNAME
).nostrip.exe
: $(TARGETNAME
).o
$(IE_DATA
)
500 -Wl
,-T
,ntoskrnl.lnk \
505 -Wl
,--subsystem
,native \
506 -Wl
,--image-base
,0xc0000000 \
507 -Wl
,--file-alignment
,0x1000 \
508 -Wl
,--section-alignment
,0x1000 \
509 -Wl
,--base-file
,base.tmp \
510 $(TARGETNAME
).o
-lgcc \
511 $(DDK_PATH_LIB
)/hal.a
514 --dllname
$(TARGETNAME
).exe \
515 --base-file base.tmp \
516 --output-exp temp.exp \
517 --def
$(TARGETNAME
).edf \
523 -Wl
,-T
,ntoskrnl.lnk \
525 -o
$(TARGETNAME
).nostrip.exe \
526 -Wl
,--subsystem
,native \
527 -Wl
,--image-base
,0xc0000000 \
528 -Wl
,--file-alignment
,0x1000 \
529 -Wl
,--section-alignment
,0x1000 \
531 $(TARGETNAME
).o
-lgcc \
532 $(DDK_PATH_LIB
)/hal.a
535 $(TARGETNAME
).exe
: $(TARGETNAME
).o
$(LINKER_SCRIPT
) $(DDK_PATH_LIB
)/hal.a
537 -Wl
,-T
,$(LINKER_SCRIPT
) \
542 -Wl
,--subsystem
,native \
543 -Wl
,--image-base
,0xc0000000 \
544 -Wl
,--file-alignment
,0x1000 \
545 -Wl
,--section-alignment
,0x1000 \
546 -Wl
,--base-file
,base.tmp \
547 $(TARGETNAME
).o
-lgcc \
548 $(DDK_PATH_LIB
)/hal.a
551 --dllname
$(TARGETNAME
).exe \
552 --base-file base.tmp \
553 --output-exp temp.exp \
554 --def
$(TARGETNAME
).edf \
558 -Wl
,-T
,$(LINKER_SCRIPT
) $(STRIP_FLAGS
)\
562 -o
$(TARGETNAME
).exe \
563 -Wl
,--subsystem
,native \
564 -Wl
,--image-base
,0xc0000000 \
565 -Wl
,--file-alignment
,0x1000 \
566 -Wl
,--section-alignment
,0x1000 \
568 $(TARGETNAME
).o
-lgcc \
569 $(DDK_PATH_LIB
)/hal.a
572 $(TARGETNAME
).dbg.o
: $(TARGETNAME
).o
573 $(STRIP
) --strip-debug
-o
$(TARGETNAME
).dbg.o
$(TARGETNAME
).o
575 $(TARGETNAME
).dbg
: $(TARGETNAME
).dbg.o
$(TARGETNAME
).a
$(TARGETNAME
).dbg.lnk
577 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
582 -Wl
,--subsystem
,native \
583 -Wl
,--image-base
,0xc0000000 \
584 -Wl
,--file-alignment
,0x1000 \
585 -Wl
,--section-alignment
,0x1000 \
586 -Wl
,--base-file
,base.tmp \
587 $(TARGETNAME
).dbg.o
-lgcc \
588 $(DDK_PATH_LIB
)/hal.a
591 --dllname
$(TARGETNAME
).dbg \
592 --base-file base.tmp \
593 --output-exp temp.exp \
594 --def
$(TARGETNAME
).edf \
598 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
602 -o
$(TARGETNAME
).dbg \
603 -Wl
,--subsystem
,native \
604 -Wl
,--image-base
,0xc0000000 \
605 -Wl
,--file-alignment
,0x1000 \
606 -Wl
,--section-alignment
,0x1000 \
608 $(TARGETNAME
).dbg.o
-lgcc \
609 $(DDK_PATH_LIB
)/hal.a
612 $(TARGETNAME
).sym
: $(TARGETNAME
).nostrip.exe
613 $(NM
) --numeric-sort
$(TARGETNAME
).nostrip.exe
> $(TARGETNAME
).sym
615 $(TARGETNAME
).o
: $(OBJECTS
)
621 bugcodes.rc
: ntoskrnl.mc
623 -H
$(PATH_TO_TOP
)/include/reactos
/bugcodes.h \
629 --dllname
$(TARGETNAME
).exe \
630 --def
$(TARGETNAME
).def \
631 --output-lib
$(DDK_PATH_LIB
)/$(TARGETNAME
).a \
635 - $(RM
) $(CLEAN_FILES
)
639 install: all $(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
$(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
641 $(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
642 $(CP
) $(TARGETNAME
).exe
$(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
644 $(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
: $(TARGETNAME
).sym
645 $(CP
) $(TARGETNAME
).sym
$(INSTALL_DIR
)/symbols
/$(TARGETNAME
).sym
649 dist: $(DIST_DIR
)/$(TARGETNAME
).exe
651 $(DIST_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
652 $(CP
) $(TARGETNAME
).exe
$(DIST_DIR
)/$(TARGETNAME
).exe
656 ex
/napi.o
: ex
/napi.c
$(PATH_TO_TOP
)/include/ntdll
/napi.h
658 ke
/main.o
: ke
/main.c
$(PATH_TO_TOP
)/include/reactos
/buildno.h
661 $(CC
) $(CFLAGS
) -c
$< -o
$@
663 $(CC
) $(CFLAGS
) -c
$< -o
$@
665 $(AS
) $(ASFLAGS
) -c
$< -o
$@
667 $(AS
) $(ASFLAGS
) -c
$< -o
$@
669 $(NASM_CMD
) $(NFLAGS
) $< -o
$@
671 $(RC
) $(RCINC
) $< -o
$@