1 # $Id: Makefile,v 1.49 2001/07/21 20:16:09 ea Exp $
3 # ReactOS Operating System
7 # Path to the directory containing the root makefile
12 # Include details of the kernel configuration
25 LINKER_SCRIPT
:= ntoskrnl.lnk
29 LINKER_SCRIPT
:= ntoskrnl.lnk
34 OBJECTS_KDBG
:= dbg
/kdb.o dbg
/kdb_keyboard.o dbg
/rdebug.o \
53 TARGETNAME
:= ntoskrnl
55 OBJECTS_PATH
= objects
58 CFLAGS
= -Iinclude
-D__NTOSKRNL__
$(CFLAGS_DBG
) -Wall
-Werror
60 include $(PATH_TO_TOP
)/rules.mak
62 all: $(EXE_PREFIX
)depends
$(EXE_POSTFIX
) include/internal
/config.h \
64 $(TARGETNAME
).nostrip.exe \
68 $(EXE_PREFIX
)depends
$(EXE_POSTFIX
): depends.c
69 $(HOST_CC
) -o depends
$(EXE_POSTFIX
) depends.c
72 # Architecture specific Makefile
73 # Defines $(OBJECTS_ARCH)
75 include Makefile.
$(ARCH
)
92 # Run-Time Library (Rtl)
139 # Memory Manager (Mm)
204 # Object Manager (Ob)
213 # Process Manager (Ps)
226 # Executive Subsystem (Ex)
243 # Installable File System Run-Time Library (FsRtl)
268 # Configuration Manager (Registry)
276 # Debugger Support (Dbg)
293 # Local Procedure Call (Lpc)
307 # Nation Language Support Library (Nls)
308 OBJECTS_NLS
= nls
/nls.o
310 # Power Management (Po)
311 OBJECTS_PO
= po
/power.o
318 # Kernel Debugger Support (Kd)
324 C_OBJECTS
:= $(OBJECTS_NT
) $(OBJECTS_HAL
) $(OBJECTS_MM
) $(OBJECTS_ARCH
) \
325 $(OBJECTS_IO
) $(OBJECTS_KE
) $(OBJECTS_OB
) \
326 $(OBJECTS_PS
) $(OBJECTS_EX
) $(OBJECTS_CC
) $(OBJECTS_FS
) $(OBJECTS_SE
) \
327 $(OBJECTS_DBG
) $(OBJECTS_CM
) $(OBJECTS_LDR
) $(OBJECTS_LPC
) \
328 $(OBJECTS_PO
) $(OBJECTS_KD
) $(OBJECTS_RTL
)
330 D_FILES
:= $(filter-out ex
/napi.
%, $(filter-out nt
/zw.
%, $(C_OBJECTS
:.o
=.d
)))
331 D1_FILES
:= $(join $(dir $(D_FILES
)), $(addprefix .
, $(notdir $(D_FILES
))))
343 mkdir
$(OBJECTS_PATH
)
346 # Build subsystem intermediate objects
348 $(OBJECTS_PATH
)/hal.o
: $(OBJECTS_HAL
)
351 -o
$(OBJECTS_PATH
)/hal.o \
354 $(OBJECTS_PATH
)/arch.o
: $(OBJECTS_ARCH
)
355 $(LD
) -r
-o
$(OBJECTS_PATH
)/arch.o
$(OBJECTS_ARCH
)
357 $(OBJECTS_PATH
)/io.o
: $(OBJECTS_IO
)
360 -o
$(OBJECTS_PATH
)/io.o \
363 $(OBJECTS_PATH
)/ke.o
: $(OBJECTS_KE
)
366 -o
$(OBJECTS_PATH
)/ke.o \
369 $(OBJECTS_PATH
)/rtl.o
: $(OBJECTS_RTL
)
372 -o
$(OBJECTS_PATH
)/rtl.o \
375 $(OBJECTS_PATH
)/mm.o
: $(OBJECTS_MM
)
378 -o
$(OBJECTS_PATH
)/mm.o \
381 $(OBJECTS_PATH
)/ob.o
: $(OBJECTS_OB
)
384 -o
$(OBJECTS_PATH
)/ob.o \
387 $(OBJECTS_PATH
)/ps.o
: $(OBJECTS_PS
)
390 -o
$(OBJECTS_PATH
)/ps.o \
393 $(OBJECTS_PATH
)/ex.o
: $(OBJECTS_EX
)
396 -o
$(OBJECTS_PATH
)/ex.o \
399 $(OBJECTS_PATH
)/fs.o
: $(OBJECTS_FS
)
402 -o
$(OBJECTS_PATH
)/fs.o \
405 $(OBJECTS_PATH
)/se.o
: $(OBJECTS_SE
)
408 -o
$(OBJECTS_PATH
)/se.o \
411 $(OBJECTS_PATH
)/cm.o
: $(OBJECTS_CM
)
414 -o
$(OBJECTS_PATH
)/cm.o \
417 $(OBJECTS_PATH
)/dbg.o
: $(OBJECTS_DBG
)
420 -o
$(OBJECTS_PATH
)/dbg.o \
423 $(OBJECTS_PATH
)/ldr.o
: $(OBJECTS_LDR
)
426 -o
$(OBJECTS_PATH
)/ldr.o \
429 $(OBJECTS_PATH
)/lpc.o
: $(OBJECTS_LPC
)
432 -o
$(OBJECTS_PATH
)/lpc.o \
435 $(OBJECTS_PATH
)/nls.o
: $(OBJECTS_NLS
)
438 -o
$(OBJECTS_PATH
)/nls.o \
441 $(OBJECTS_PATH
)/nt.o
: $(OBJECTS_NT
)
444 -o
$(OBJECTS_PATH
)/nt.o \
447 $(OBJECTS_PATH
)/po.o
: $(OBJECTS_PO
)
450 -o
$(OBJECTS_PATH
)/po.o \
453 $(OBJECTS_PATH
)/cc.o
: $(OBJECTS_CC
)
456 -o
$(OBJECTS_PATH
)/cc.o \
459 $(OBJECTS_PATH
)/kd.o
: $(OBJECTS_KD
)
462 -o
$(OBJECTS_PATH
)/kd.o \
465 $(TARGETNAME
).coff
: $(TARGETNAME
).rc
$(PATH_TO_TOP
)/include/reactos
/resource.h
468 # Note: arch.o MUST be the first file!!!
470 $(OBJECTS_PATH
)/arch.o \
471 $(OBJECTS_PATH
)/ke.o \
472 $(OBJECTS_PATH
)/hal.o \
473 $(OBJECTS_PATH
)/cc.o \
474 $(OBJECTS_PATH
)/cm.o \
475 $(OBJECTS_PATH
)/dbg.o \
476 $(OBJECTS_PATH
)/ex.o \
477 $(OBJECTS_PATH
)/lpc.o \
478 $(OBJECTS_PATH
)/fs.o \
479 $(OBJECTS_PATH
)/io.o \
480 $(OBJECTS_PATH
)/kd.o \
481 $(OBJECTS_PATH
)/ldr.o \
482 $(OBJECTS_PATH
)/mm.o \
483 $(OBJECTS_PATH
)/nls.o \
484 $(OBJECTS_PATH
)/nt.o \
485 $(OBJECTS_PATH
)/ob.o \
486 $(OBJECTS_PATH
)/po.o \
487 $(OBJECTS_PATH
)/ps.o \
488 $(OBJECTS_PATH
)/rtl.o \
489 $(OBJECTS_PATH
)/se.o \
493 CLEAN_FILES
= $(OBJECTS_PATH
)/*.o
cc/*.o cm
/*.o dbg
/*.o dbg
/i386
/*.o ex
/*.o hal
/x86
/*.o io
/*.o \
494 ke
/*.o ldr
/*.o mm
/*.o nt
/*.o ob
/*.o ps
/*.o rtl
/*.o se
/*.o \
495 ke
/i386
/*.o mm
/i386
/*.o fs
/*.o po
/*.o nls
/*.o lpc
/*.o \
496 kd
/*.o
$(TARGETNAME
).o
$(TARGETNAME
).a junk.tmp base.tmp temp.exp \
497 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym \
498 $(TARGETNAME
).coff
$(D1_FILES
)
500 $(TARGETNAME
).nostrip.exe
: $(TARGETNAME
).o
$(TARGETNAME
).a
$(IE_DATA
)
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
,--base-file
,base.tmp \
512 $(TARGETNAME
).o
-lgcc
515 --dllname
$(TARGETNAME
).exe \
516 --base-file base.tmp \
517 --output-exp temp.exp \
518 --def
$(TARGETNAME
).edf \
524 -Wl
,-T
,ntoskrnl.lnk \
526 -o
$(TARGETNAME
).nostrip.exe \
527 -Wl
,--subsystem
,native \
528 -Wl
,--image-base
,0xc0000000 \
529 -Wl
,--file-alignment
,0x1000 \
530 -Wl
,--section-alignment
,0x1000 \
532 $(TARGETNAME
).o
-lgcc
535 $(TARGETNAME
).exe
: $(TARGETNAME
).o
$(TARGETNAME
).a
$(LINKER_SCRIPT
)
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
550 --dllname
$(TARGETNAME
).exe \
551 --base-file base.tmp \
552 --output-exp temp.exp \
553 --def
$(TARGETNAME
).edf \
557 -Wl
,-T
,$(LINKER_SCRIPT
) $(STRIP_FLAGS
)\
561 -o
$(TARGETNAME
).exe \
562 -Wl
,--subsystem
,native \
563 -Wl
,--image-base
,0xc0000000 \
564 -Wl
,--file-alignment
,0x1000 \
565 -Wl
,--section-alignment
,0x1000 \
567 $(TARGETNAME
).o
-lgcc
570 $(TARGETNAME
).dbg.o
: $(TARGETNAME
).o
571 $(STRIP
) --strip-debug
-o
$(TARGETNAME
).dbg.o
$(TARGETNAME
).o
573 $(TARGETNAME
).dbg
: $(TARGETNAME
).dbg.o
$(TARGETNAME
).a
$(TARGETNAME
).dbg.lnk
575 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
580 -Wl
,--subsystem
,native \
581 -Wl
,--image-base
,0xc0000000 \
582 -Wl
,--file-alignment
,0x1000 \
583 -Wl
,--section-alignment
,0x1000 \
584 -Wl
,--base-file
,base.tmp \
585 $(TARGETNAME
).dbg.o
-lgcc
588 --dllname
$(TARGETNAME
).dbg \
589 --base-file base.tmp \
590 --output-exp temp.exp \
591 --def
$(TARGETNAME
).edf \
595 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
599 -o
$(TARGETNAME
).dbg \
600 -Wl
,--subsystem
,native \
601 -Wl
,--image-base
,0xc0000000 \
602 -Wl
,--file-alignment
,0x1000 \
603 -Wl
,--section-alignment
,0x1000 \
605 $(TARGETNAME
).dbg.o
-lgcc
608 $(TARGETNAME
).sym
: $(TARGETNAME
).nostrip.exe
609 $(NM
) --numeric-sort
$(TARGETNAME
).nostrip.exe
> $(TARGETNAME
).sym
611 $(TARGETNAME
).o
: $(OBJECTS
)
617 $(TARGETNAME
).a
: $(TARGETNAME
).def
619 --dllname
$(TARGETNAME
).exe \
620 --def
$(TARGETNAME
).def \
621 --output-lib
$(TARGETNAME
).a \
625 - $(RM
) $(CLEAN_FILES
)
629 install: $(FLOPPY_DIR
)/$(TARGETNAME
).exe
631 $(FLOPPY_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
632 $(CP
) $(TARGETNAME
).exe
$(FLOPPY_DIR
)/$(TARGETNAME
).exe
636 dist: $(PATH_TO_TOP
)/$(DIST_DIR
)/$(TARGETNAME
).exe
638 $(PATH_TO_TOP
)/$(DIST_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
639 $(CP
) $(TARGETNAME
).exe
$(PATH_TO_TOP
)/$(DIST_DIR
)/$(TARGETNAME
).exe
643 ex
/napi.o
: ex
/napi.c
$(PATH_TO_TOP
)/include/ntdll
/napi.h
645 ke
/main.o
: ke
/main.c
$(PATH_TO_TOP
)/include/reactos
/buildno.h
647 mkconfig
$(EXE_SUFFIX
): mkconfig.c
648 $(HOST_CC
) -g
-o mkconfig
$(EXE_SUFFIX
) mkconfig.c
651 $(EXE_PREFIX
)mkconfig
$(EXE_SUFFIX
) include/internal
/config.h
$(CONFIG
)
653 include/internal
/config.h
: config mkconfig
$(EXE_SUFFIX
)
654 $(EXE_PREFIX
)mkconfig
$(EXE_SUFFIX
) include/internal
/config.h
$(CONFIG
)
656 ifneq ($(MAKECMDGOALS
),clean)
660 .
%.d
: %.c
$(EXE_PREFIX
)depends
$(EXE_POSTFIX
)
661 $(CC
) $(CFLAGS
) -M
$< |
$(EXE_PREFIX
)depends
$(EXE_POSTFIX
) $(@D
) $@
664 $(CC
) $(CFLAGS
) -M
$< |
$(EXE_PREFIX
)depends
$(EXE_POSTFIX
) $(@D
) $@
667 $(CC
) $(CFLAGS
) -M
$< |
$(EXE_PREFIX
)depends
$(EXE_POSTFIX
) $(@D
) $@
670 $(NASM_CMD
) $< |
$(EXE_PREFIX
)depends
$(EXE_POSTFIX
) $(@D
) $@