1 # $Id: Makefile,v 1.52 2001/09/02 17:31:00 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 \
36 ASFLAGS
+= -I.
/include -I
$(SDK_PATH_INC
)
37 CFLAGS
+= -I.
/include -I
$(SDK_PATH_INC
) -D__NTOSKRNL__
$(CFLAGS_DBG
) -Wall
-Werror
42 include $(PATH_TO_TOP
)/rules.mak
45 TARGETNAME
:= ntoskrnl
47 OBJECTS_PATH
= objects
51 $(TARGETNAME
).nostrip.exe \
56 # Architecture specific Makefile
57 # Defines $(OBJECTS_ARCH)
59 include Makefile.
$(ARCH
)
76 # Run-Time Library (Rtl)
124 # Memory Manager (Mm)
190 # Object Manager (Ob)
199 # Process Manager (Ps)
212 # Executive Subsystem (Ex)
229 # Installable File System Run-Time Library (FsRtl)
254 # Configuration Manager (Registry)
263 # Debugger Support (Dbg)
280 # Local Procedure Call (Lpc)
294 # Nation Language Support Library (Nls)
295 OBJECTS_NLS
= nls
/nls.o
297 # Power Management (Po)
298 OBJECTS_PO
= po
/power.o
305 # Kernel Debugger Support (Kd)
311 DEP_OBJECTS
:= $(OBJECTS_NT
) $(OBJECTS_MM
) $(OBJECTS_ARCH
) \
312 $(OBJECTS_IO
) $(OBJECTS_KE
) $(OBJECTS_OB
) \
313 $(OBJECTS_PS
) $(OBJECTS_EX
) $(OBJECTS_CC
) $(OBJECTS_FS
) $(OBJECTS_SE
) \
314 $(OBJECTS_DBG
) $(OBJECTS_CM
) $(OBJECTS_LDR
) $(OBJECTS_LPC
) \
315 $(OBJECTS_PO
) $(OBJECTS_KD
) $(OBJECTS_RTL
)
319 # Include automatic dependancy tracking
321 include $(PATH_TO_TOP
)/tools
/depend.mk
334 mkdir
$(OBJECTS_PATH
)
336 $(OBJECTS_RESOURCE
): $(TARGETNAME
).rc
$(PATH_TO_TOP
)/include/reactos
/resource.h
339 # Build subsystem intermediate objects
341 $(OBJECTS_PATH
)/arch.o
: $(OBJECTS_ARCH
)
342 $(LD
) -r
-o
$(OBJECTS_PATH
)/arch.o
$(OBJECTS_ARCH
)
344 $(OBJECTS_PATH
)/io.o
: $(OBJECTS_IO
)
347 -o
$(OBJECTS_PATH
)/io.o \
350 $(OBJECTS_PATH
)/ke.o
: $(OBJECTS_KE
)
353 -o
$(OBJECTS_PATH
)/ke.o \
356 $(OBJECTS_PATH
)/rtl.o
: $(OBJECTS_RTL
)
359 -o
$(OBJECTS_PATH
)/rtl.o \
362 $(OBJECTS_PATH
)/mm.o
: $(OBJECTS_MM
)
365 -o
$(OBJECTS_PATH
)/mm.o \
368 $(OBJECTS_PATH
)/ob.o
: $(OBJECTS_OB
)
371 -o
$(OBJECTS_PATH
)/ob.o \
374 $(OBJECTS_PATH
)/ps.o
: $(OBJECTS_PS
)
377 -o
$(OBJECTS_PATH
)/ps.o \
380 $(OBJECTS_PATH
)/ex.o
: $(OBJECTS_EX
)
383 -o
$(OBJECTS_PATH
)/ex.o \
386 $(OBJECTS_PATH
)/fs.o
: $(OBJECTS_FS
)
389 -o
$(OBJECTS_PATH
)/fs.o \
392 $(OBJECTS_PATH
)/se.o
: $(OBJECTS_SE
)
395 -o
$(OBJECTS_PATH
)/se.o \
398 $(OBJECTS_PATH
)/cm.o
: $(OBJECTS_CM
)
401 -o
$(OBJECTS_PATH
)/cm.o \
404 $(OBJECTS_PATH
)/dbg.o
: $(OBJECTS_DBG
)
407 -o
$(OBJECTS_PATH
)/dbg.o \
410 $(OBJECTS_PATH
)/ldr.o
: $(OBJECTS_LDR
)
413 -o
$(OBJECTS_PATH
)/ldr.o \
416 $(OBJECTS_PATH
)/lpc.o
: $(OBJECTS_LPC
)
419 -o
$(OBJECTS_PATH
)/lpc.o \
422 $(OBJECTS_PATH
)/nls.o
: $(OBJECTS_NLS
)
425 -o
$(OBJECTS_PATH
)/nls.o \
428 $(OBJECTS_PATH
)/nt.o
: $(OBJECTS_NT
)
431 -o
$(OBJECTS_PATH
)/nt.o \
434 $(OBJECTS_PATH
)/po.o
: $(OBJECTS_PO
)
437 -o
$(OBJECTS_PATH
)/po.o \
440 $(OBJECTS_PATH
)/cc.o
: $(OBJECTS_CC
)
443 -o
$(OBJECTS_PATH
)/cc.o \
446 $(OBJECTS_PATH
)/kd.o
: $(OBJECTS_KD
)
449 -o
$(OBJECTS_PATH
)/kd.o \
452 # Note: arch.o MUST be the first file!!!
454 $(OBJECTS_PATH
)/arch.o \
455 $(OBJECTS_PATH
)/ke.o \
456 $(OBJECTS_PATH
)/cc.o \
457 $(OBJECTS_PATH
)/cm.o \
458 $(OBJECTS_PATH
)/dbg.o \
459 $(OBJECTS_PATH
)/ex.o \
460 $(OBJECTS_PATH
)/lpc.o \
461 $(OBJECTS_PATH
)/fs.o \
462 $(OBJECTS_PATH
)/io.o \
463 $(OBJECTS_PATH
)/kd.o \
464 $(OBJECTS_PATH
)/ldr.o \
465 $(OBJECTS_PATH
)/mm.o \
466 $(OBJECTS_PATH
)/nls.o \
467 $(OBJECTS_PATH
)/nt.o \
468 $(OBJECTS_PATH
)/ob.o \
469 $(OBJECTS_PATH
)/po.o \
470 $(OBJECTS_PATH
)/ps.o \
471 $(OBJECTS_PATH
)/rtl.o \
472 $(OBJECTS_PATH
)/se.o \
475 CLEAN_FILES
= $(OBJECTS_PATH
)/*.o
cc/*.o cm
/*.o dbg
/*.o dbg
/i386
/*.o ex
/*.o \
476 ex
/i386
/*.o io
/*.o ke
/*.o ldr
/*.o mm
/*.o nt
/*.o ob
/*.o ps
/*.o \
477 rtl
/*.o se
/*.o ke
/i386
/*.o mm
/i386
/*.o fs
/*.o po
/*.o nls
/*.o \
478 lpc
/*.o kd
/*.o
$(TARGETNAME
).o junk.tmp base.tmp temp.exp \
479 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym \
480 $(TARGETNAME
).coff
$(DEP_FILES
)
482 $(TARGETNAME
).nostrip.exe
: $(TARGETNAME
).o
$(DDK_PATH_LIB
)/$(TARGETNAME
).a
$(IE_DATA
)
484 -Wl
,-T
,ntoskrnl.lnk \
489 -Wl
,--subsystem
,native \
490 -Wl
,--image-base
,0xc0000000 \
491 -Wl
,--file-alignment
,0x1000 \
492 -Wl
,--section-alignment
,0x1000 \
493 -Wl
,--base-file
,base.tmp \
494 $(TARGETNAME
).o
-lgcc \
495 $(DDK_PATH_LIB
)/hal.a
498 --dllname
$(TARGETNAME
).exe \
499 --base-file base.tmp \
500 --output-exp temp.exp \
501 --def
$(TARGETNAME
).edf \
507 -Wl
,-T
,ntoskrnl.lnk \
509 -o
$(TARGETNAME
).nostrip.exe \
510 -Wl
,--subsystem
,native \
511 -Wl
,--image-base
,0xc0000000 \
512 -Wl
,--file-alignment
,0x1000 \
513 -Wl
,--section-alignment
,0x1000 \
515 $(TARGETNAME
).o
-lgcc \
516 $(DDK_PATH_LIB
)/hal.a
519 $(TARGETNAME
).exe
: $(TARGETNAME
).o
$(DDK_PATH_LIB
)/$(TARGETNAME
).a
$(LINKER_SCRIPT
) $(DDK_PATH_LIB
)/hal.a
521 -Wl
,-T
,$(LINKER_SCRIPT
) \
526 -Wl
,--subsystem
,native \
527 -Wl
,--image-base
,0xc0000000 \
528 -Wl
,--file-alignment
,0x1000 \
529 -Wl
,--section-alignment
,0x1000 \
530 -Wl
,--base-file
,base.tmp \
531 $(TARGETNAME
).o
-lgcc \
532 $(DDK_PATH_LIB
)/hal.a
535 --dllname
$(TARGETNAME
).exe \
536 --base-file base.tmp \
537 --output-exp temp.exp \
538 --def
$(TARGETNAME
).edf \
542 -Wl
,-T
,$(LINKER_SCRIPT
) $(STRIP_FLAGS
)\
546 -o
$(TARGETNAME
).exe \
547 -Wl
,--subsystem
,native \
548 -Wl
,--image-base
,0xc0000000 \
549 -Wl
,--file-alignment
,0x1000 \
550 -Wl
,--section-alignment
,0x1000 \
552 $(TARGETNAME
).o
-lgcc \
553 $(DDK_PATH_LIB
)/hal.a
556 $(TARGETNAME
).dbg.o
: $(TARGETNAME
).o
557 $(STRIP
) --strip-debug
-o
$(TARGETNAME
).dbg.o
$(TARGETNAME
).o
559 $(TARGETNAME
).dbg
: $(TARGETNAME
).dbg.o
$(TARGETNAME
).a
$(TARGETNAME
).dbg.lnk
561 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
566 -Wl
,--subsystem
,native \
567 -Wl
,--image-base
,0xc0000000 \
568 -Wl
,--file-alignment
,0x1000 \
569 -Wl
,--section-alignment
,0x1000 \
570 -Wl
,--base-file
,base.tmp \
571 $(TARGETNAME
).dbg.o
-lgcc \
572 $(DDK_PATH_LIB
)/hal.a
575 --dllname
$(TARGETNAME
).dbg \
576 --base-file base.tmp \
577 --output-exp temp.exp \
578 --def
$(TARGETNAME
).edf \
582 -Wl
,-T
,$(TARGETNAME
).dbg.lnk \
586 -o
$(TARGETNAME
).dbg \
587 -Wl
,--subsystem
,native \
588 -Wl
,--image-base
,0xc0000000 \
589 -Wl
,--file-alignment
,0x1000 \
590 -Wl
,--section-alignment
,0x1000 \
592 $(TARGETNAME
).dbg.o
-lgcc \
593 $(DDK_PATH_LIB
)/hal.a
596 $(TARGETNAME
).sym
: $(TARGETNAME
).nostrip.exe
597 $(NM
) --numeric-sort
$(TARGETNAME
).nostrip.exe
> $(TARGETNAME
).sym
599 $(TARGETNAME
).o
: $(OBJECTS
)
605 $(DDK_PATH_LIB
)/$(TARGETNAME
).a
: $(TARGETNAME
).def
607 --dllname
$(TARGETNAME
).exe \
608 --def
$(TARGETNAME
).def \
609 --output-lib
$(DDK_PATH_LIB
)/$(TARGETNAME
).a \
613 - $(RM
) $(CLEAN_FILES
)
617 install: $(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
619 $(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
620 $(CP
) $(TARGETNAME
).exe
$(INSTALL_DIR
)/system32
/$(TARGETNAME
).exe
624 dist: $(DIST_DIR
)/$(TARGETNAME
).exe
626 $(DIST_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
627 $(CP
) $(TARGETNAME
).exe
$(DIST_DIR
)/$(TARGETNAME
).exe
631 ex
/napi.o
: ex
/napi.c
$(PATH_TO_TOP
)/include/ntdll
/napi.h
633 ke
/main.o
: ke
/main.c
$(PATH_TO_TOP
)/include/reactos
/buildno.h
636 $(CC
) $(CFLAGS
) -c
$< -o
$@
638 $(CC
) $(CFLAGS
) -c
$< -o
$@
640 $(AS
) $(ASFLAGS
) -c
$< -o
$@
642 $(AS
) $(ASFLAGS
) -c
$< -o
$@
644 $(NASM_CMD
) $(NFLAGS
) $< -o
$@
646 $(RC
) $(RCINC
) $< -o
$@