1 # $Id: Makefile,v 1.33 2001/04/11 22:13:21 dwelch Exp $
3 # ReactOS Operating System
7 # Path to the directory containing the root makefile
12 # Include details of the kernel configuration
29 OBJECTS_KDBG
:= dbg
/kdb.o dbg
/kdb_keyboard.o dbg
/i386
/kdb_help.o
41 TARGETNAME
:= ntoskrnl
43 OBJECTS_PATH
= objects
46 CFLAGS
= -Iinclude
-D__NTOSKRNL__
$(CFLAGS_DBG
) -Wall
-Werror
48 include $(PATH_TO_TOP
)/rules.mak
50 all: $(EXE_PREFIX
)depends
$(EXE_POSTFIX
) \
52 $(TARGETNAME
).nostrip.exe \
56 $(EXE_PREFIX
)depends
$(EXE_POSTFIX
): depends.c
57 $(HOST_CC
) -o depends
$(EXE_POSTFIX
) depends.c
60 # Hardware Abstraction Layer (Hal)
61 # Defines $(OBJECTS_HAL)
63 include hal
/x86
/sources
66 # Architecture specific Makefile
67 # Defines $(OBJECTS_ARCH)
69 include Makefile.
$(ARCH
)
87 # Run-Time Library (Rtl)
113 # Note: head.o MUST be the first file!!!
132 # Memory Manager (Mm)
195 # Object Manager (Ob)
204 # Process Manager (Ps)
216 # Executive Subsystem (Ex)
233 # Installable File System Run-Time Library (FsRtl)
258 # Configuration Manager (Registry)
262 # Debugger Support (Dbg)
279 # Local Procedure Call (Lpc)
293 # Nation Language Support Library (Nls)
294 OBJECTS_NLS
= nls
/nls.o
296 # Power Management (Po)
297 OBJECTS_PO
= po
/power.o
304 # Kernel Debugger Support (Kd)
310 C_OBJECTS
:= $(OBJECTS_NT
) $(OBJECTS_HAL
) $(OBJECTS_MM
) $(OBJECTS_ARCH
) \
311 $(OBJECTS_IO
) $(OBJECTS_KE
) $(OBJECTS_OB
) \
312 $(OBJECTS_PS
) $(OBJECTS_EX
) $(OBJECTS_CC
) $(OBJECTS_FS
) $(OBJECTS_SE
) \
313 $(OBJECTS_DBG
) $(OBJECTS_CM
) $(OBJECTS_LDR
) $(OBJECTS_LPC
) \
314 $(OBJECTS_PO
) $(OBJECTS_KD
) $(OBJECTS_RTL
)
316 D_FILES
:= $(filter-out ex
/napi.
%, $(filter-out nt
/zw.
%, $(C_OBJECTS
:.o
=.d
)))
317 D1_FILES
:= $(join $(dir $(D_FILES
)), $(addprefix .
, $(notdir $(D_FILES
))))
329 mkdir
$(OBJECTS_PATH
)
332 # Build subsystem intermediate objects
334 $(OBJECTS_PATH
)/hal.o
: $(OBJECTS_HAL
)
337 -o
$(OBJECTS_PATH
)/hal.o \
340 $(OBJECTS_PATH
)/arch.o
: $(OBJECTS_ARCH
)
341 $(LD
) -r
-o
$(OBJECTS_PATH
)/arch.o
$(OBJECTS_ARCH
)
343 $(OBJECTS_PATH
)/io.o
: $(OBJECTS_IO
)
346 -o
$(OBJECTS_PATH
)/io.o \
349 $(OBJECTS_PATH
)/ke.o
: $(OBJECTS_KE
)
352 -o
$(OBJECTS_PATH
)/ke.o \
355 $(OBJECTS_PATH
)/rtl.o
: $(OBJECTS_RTL
)
358 -o
$(OBJECTS_PATH
)/rtl.o \
361 $(OBJECTS_PATH
)/mm.o
: $(OBJECTS_MM
)
364 -o
$(OBJECTS_PATH
)/mm.o \
367 $(OBJECTS_PATH
)/ob.o
: $(OBJECTS_OB
)
370 -o
$(OBJECTS_PATH
)/ob.o \
373 $(OBJECTS_PATH
)/ps.o
: $(OBJECTS_PS
)
376 -o
$(OBJECTS_PATH
)/ps.o \
379 $(OBJECTS_PATH
)/ex.o
: $(OBJECTS_EX
)
382 -o
$(OBJECTS_PATH
)/ex.o \
385 $(OBJECTS_PATH
)/fs.o
: $(OBJECTS_FS
)
388 -o
$(OBJECTS_PATH
)/fs.o \
391 $(OBJECTS_PATH
)/se.o
: $(OBJECTS_SE
)
394 -o
$(OBJECTS_PATH
)/se.o \
397 $(OBJECTS_PATH
)/cm.o
: $(OBJECTS_CM
)
400 -o
$(OBJECTS_PATH
)/cm.o \
403 $(OBJECTS_PATH
)/dbg.o
: $(OBJECTS_DBG
)
406 -o
$(OBJECTS_PATH
)/dbg.o \
409 $(OBJECTS_PATH
)/ldr.o
: $(OBJECTS_LDR
)
412 -o
$(OBJECTS_PATH
)/ldr.o \
415 $(OBJECTS_PATH
)/lpc.o
: $(OBJECTS_LPC
)
418 -o
$(OBJECTS_PATH
)/lpc.o \
421 $(OBJECTS_PATH
)/nls.o
: $(OBJECTS_NLS
)
424 -o
$(OBJECTS_PATH
)/nls.o \
427 $(OBJECTS_PATH
)/nt.o
: $(OBJECTS_NT
)
430 -o
$(OBJECTS_PATH
)/nt.o \
433 $(OBJECTS_PATH
)/po.o
: $(OBJECTS_PO
)
436 -o
$(OBJECTS_PATH
)/po.o \
439 $(OBJECTS_PATH
)/cc.o
: $(OBJECTS_CC
)
442 -o
$(OBJECTS_PATH
)/cc.o \
445 $(OBJECTS_PATH
)/kd.o
: $(OBJECTS_KD
)
448 -o
$(OBJECTS_PATH
)/kd.o \
451 $(TARGETNAME
).coff
: $(TARGETNAME
).rc ..
/include/reactos
/resource.h
454 # Note: ke.o MUST be the first file!!!
456 $(OBJECTS_PATH
)/arch.o \
457 $(OBJECTS_PATH
)/ke.o \
458 $(OBJECTS_PATH
)/hal.o \
459 $(OBJECTS_PATH
)/cc.o \
460 $(OBJECTS_PATH
)/cm.o \
461 $(OBJECTS_PATH
)/dbg.o \
462 $(OBJECTS_PATH
)/ex.o \
463 $(OBJECTS_PATH
)/lpc.o \
464 $(OBJECTS_PATH
)/fs.o \
465 $(OBJECTS_PATH
)/io.o \
466 $(OBJECTS_PATH
)/kd.o \
467 $(OBJECTS_PATH
)/ldr.o \
468 $(OBJECTS_PATH
)/mm.o \
469 $(OBJECTS_PATH
)/nls.o \
470 $(OBJECTS_PATH
)/nt.o \
471 $(OBJECTS_PATH
)/ob.o \
472 $(OBJECTS_PATH
)/po.o \
473 $(OBJECTS_PATH
)/ps.o \
474 $(OBJECTS_PATH
)/rtl.o \
475 $(OBJECTS_PATH
)/se.o \
480 CLEAN_FILES
= $(OBJECTS_PATH
)\
*.o
cc\
*.o cm\
*.o dbg\
*.o ex\
*.o hal
\x86\
*.o io\
*.o \
481 ke\
*.o ldr\
*.o mm\
*.o nt\
*.o ob\
*.o ps\
*.o rtl\
*.o se\
*.o \
482 ke\i386\
*.o mm\i386\
*.o fs\
*.o po\
*.o nls\
*.o lpc\
*.o \
483 kd\
*.o
$(TARGETNAME
).o
$(TARGETNAME
).a junk.tmp base.tmp temp.exp \
484 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym
$(TARGETNAME
).coff
$(D1_FILES
)
486 CLEAN_FILES
= $(OBJECTS_PATH
)/*.o
cc/*.o cm
/*.o dbg
/*.o ex
/*.o hal
/x86
/*.o io
/*.o \
487 ke
/*.o ldr
/*.o mm
/*.o nt
/*.o ob
/*.o ps
/*.o rtl
/*.o se
/*.o \
488 ke
/i386
/*.o mm
/i386
/*.o fs
/*.o po
/*.o nls
/*.o lpc
/*.o \
489 kd
/*.o
$(TARGETNAME
).o
$(TARGETNAME
).a junk.tmp base.tmp temp.exp \
490 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym
$(TARGETNAME
).coff
$(D1_FILES
)
494 $(TARGETNAME
).nostrip.exe
: $(TARGETNAME
).o
$(TARGETNAME
).a
$(IE_DATA
)
496 -Wl
,-T
,ntoskrnl.lnk \
497 -nostartfiles
-nostdlib \
500 -Wl
,--subsystem
,native \
501 -Wl
,--image-base
,0xc0000000 \
502 -Wl
,--file-alignment
,0x1000 \
503 -Wl
,--section-alignment
,0x1000 \
504 -Wl
,--base-file
,base.tmp \
505 $(TARGETNAME
).o
-lgcc
508 --dllname
$(TARGETNAME
).exe \
509 --base-file base.tmp \
510 --output-exp temp.exp \
511 --def
$(TARGETNAME
).edf \
515 -nostartfiles
-nostdlib \
516 -Wl
,-T
,ntoskrnl.lnk \
518 -o
$(TARGETNAME
).nostrip.exe \
519 -Wl
,--subsystem
,native \
520 -Wl
,--image-base
,0xc0000000 \
521 -Wl
,--file-alignment
,0x1000 \
522 -Wl
,--section-alignment
,0x1000 \
524 $(TARGETNAME
).o
-lgcc
527 $(TARGETNAME
).exe
: $(TARGETNAME
).o
$(TARGETNAME
).a
$(TARGETNAME
).lnk
529 -Wl
,-T
,ntoskrnl.lnk \
530 -nostartfiles
-nostdlib \
533 -Wl
,--subsystem
,native \
534 -Wl
,--image-base
,0xc0000000 \
535 -Wl
,--file-alignment
,0x1000 \
536 -Wl
,--section-alignment
,0x1000 \
537 -Wl
,--base-file
,base.tmp \
538 $(TARGETNAME
).o
-lgcc
541 --dllname
$(TARGETNAME
).exe \
542 --base-file base.tmp \
543 --output-exp temp.exp \
544 --def
$(TARGETNAME
).edf \
548 -Wl
,-T
,ntoskrnl.lnk
-Wl
,-s\
549 -nostartfiles
-nostdlib \
551 -o
$(TARGETNAME
).exe \
552 -Wl
,--subsystem
,native \
553 -Wl
,--image-base
,0xc0000000 \
554 -Wl
,--file-alignment
,0x1000 \
555 -Wl
,--section-alignment
,0x1000 \
557 $(TARGETNAME
).o
-lgcc
560 $(TARGETNAME
).sym
: $(TARGETNAME
).nostrip.exe
561 $(NM
) --numeric-sort
$(TARGETNAME
).nostrip.exe
> $(TARGETNAME
).sym
563 $(TARGETNAME
).o
: $(OBJECTS
)
569 $(TARGETNAME
).a
: $(TARGETNAME
).def
571 --dllname
$(TARGETNAME
).exe \
572 --def
$(TARGETNAME
).def \
573 --output-lib
$(TARGETNAME
).a \
576 clean: $(CLEAN_FILES
:%=%_clean
)
578 $(CLEAN_FILES
:%=%_clean
): %_clean
:
581 .PHONY
: clean $(CLEAN_FILES
:%=%_clean
)
583 install: $(FLOPPY_DIR
)/$(TARGETNAME
).exe
585 $(FLOPPY_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
586 $(CP
) $(TARGETNAME
).exe
$(FLOPPY_DIR
)/$(TARGETNAME
).exe
590 dist: ..
/$(DIST_DIR
)/$(TARGETNAME
).exe
592 ..
/$(DIST_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
593 $(CP
) $(TARGETNAME
).exe ..
/$(DIST_DIR
)/$(TARGETNAME
).exe
597 ex
/napi.o
: ex
/napi.c ..
/include/ntdll
/napi.h
599 ke
/main.o
: ke
/main.c ..
/include/reactos
/buildno.h
601 mkconfig
$(EXE_SUFFIX
): mkconfig.c
602 $(HOST_CC
) -g
-o mkconfig
$(EXE_SUFFIX
) mkconfig.c
604 include/internal
/config.h
: config mkconfig
$(EXE_SUFFIX
)
605 $(EXE_PREFIX
)mkconfig
$(EXE_SUFFIX
) include/internal
/config.h
$(CONFIG
)
607 ifneq ($(MAKECMDGOALS
),clean)
611 .
%.d
: %.c
$(EXE_PREFIX
)depends
$(EXE_POSTFIX
)
612 $(CC
) $(CFLAGS
) -M
$< |
$(EXE_PREFIX
)depends
$(EXE_POSTFIX
) $(@D
) $@
615 $(CC
) $(CFLAGS
) -M
$< |
$(EXE_PREFIX
)depends
$(EXE_POSTFIX
) $(@D
) $@
618 $(CC
) $(CFLAGS
) -M
$< |
$(EXE_PREFIX
)depends
$(EXE_POSTFIX
) $(@D
) $@