1 # $Id: Makefile,v 1.14 2001/03/08 22:06:00 dwelch Exp $
3 # ReactOS Operating System
12 CFLAGS
= -Iinclude
-D__NTOSKRNL__
-DDBG
-g
-Wall
-Werror
13 # -W -Wpointer-arith -Wconversion -Wstrict-prototypes -Wundef \
14 # -Wmissing-prototypes -Wshadow\
15 #CFLAGS += -DDBGPRINT_FILE_LOG
19 $(TARGETNAME
).nostrip.exe \
22 # Hardware Abstraction Layer (Hal)
23 # Defines $(OBJECTS_HAL)
25 include hal
/x86
/sources
43 # Run-Time Library (Rtl)
69 # Note: head.o MUST be the first file!!!
102 ke
/i386
/tskswitch.o \
106 ke
/i386
/i386-mcount.o
108 # Memory Manager (Mm)
175 # Object Manager (Ob)
184 # Process Manager (Ps)
196 # Executive Subsystem (Ex)
213 # Installable File System Run-Time Library (FsRtl)
238 # Configuration Manager (Registry)
242 # Debugger Support (Dbg)
257 # Local Procedure Call (Lpc)
271 # Nation Language Support Library (Nls)
272 OBJECTS_NLS
= nls
/nls.o
274 # Power Management (Po)
275 OBJECTS_PO
= po
/power.o
282 # Kernel Debugger Support (Kd)
288 C_OBJECTS
= $(OBJECTS_NT
) $(OBJECTS_HAL
) $(OBJECTS_MM
) $(OBJECTS_MM_I386
) \
289 $(OBJECTS_IO
) $(OBJECTS_KE
) $(OBJECTS_KE_I386
) $(OBJECTS_OB
) \
290 $(OBJECTS_PS
) $(OBJECTS_EX
) $(OBJECTS_CC
) $(OBJECTS_FS
) $(OBJECTS_SE
) \
291 $(OBJECTS_DBG
) $(OBJECTS_CM
) $(OBJECTS_LDR
) $(OBJECTS_LPC
) \
292 $(OBJECTS_PO
) $(OBJECTS_KD
)
294 D_FILES
:= $(filter-out ex
/napi.
%, $(filter-out nt
/zw.
%, $(C_OBJECTS
:.o
=.d
)))
295 D1_FILES
:= $(join $(dir $(D_FILES
)), $(addprefix .
, $(notdir $(D_FILES
))))
307 mkdir
$(OBJECTS_PATH
)
310 # Build subsystem intermediate objects
312 $(OBJECTS_PATH
)/hal.o
: $(OBJECTS_HAL
)
315 -o
$(OBJECTS_PATH
)/hal.o \
318 $(OBJECTS_PATH
)/io.o
: $(OBJECTS_IO
)
321 -o
$(OBJECTS_PATH
)/io.o \
324 $(OBJECTS_PATH
)/ke.o
: $(OBJECTS_KE
) $(OBJECTS_KE_I386
)
327 -o
$(OBJECTS_PATH
)/ke.o \
331 $(OBJECTS_PATH
)/rtl.o
: $(OBJECTS_RTL
)
334 -o
$(OBJECTS_PATH
)/rtl.o \
337 $(OBJECTS_PATH
)/mm.o
: $(OBJECTS_MM
) $(OBJECTS_MM_I386
)
340 -o
$(OBJECTS_PATH
)/mm.o \
344 $(OBJECTS_PATH
)/ob.o
: $(OBJECTS_OB
)
347 -o
$(OBJECTS_PATH
)/ob.o \
350 $(OBJECTS_PATH
)/ps.o
: $(OBJECTS_PS
)
353 -o
$(OBJECTS_PATH
)/ps.o \
356 $(OBJECTS_PATH
)/ex.o
: $(OBJECTS_EX
)
359 -o
$(OBJECTS_PATH
)/ex.o \
362 $(OBJECTS_PATH
)/fs.o
: $(OBJECTS_FS
)
365 -o
$(OBJECTS_PATH
)/fs.o \
368 $(OBJECTS_PATH
)/se.o
: $(OBJECTS_SE
)
371 -o
$(OBJECTS_PATH
)/se.o \
374 $(OBJECTS_PATH
)/cm.o
: $(OBJECTS_CM
)
377 -o
$(OBJECTS_PATH
)/cm.o \
380 $(OBJECTS_PATH
)/dbg.o
: $(OBJECTS_DBG
)
383 -o
$(OBJECTS_PATH
)/dbg.o \
386 $(OBJECTS_PATH
)/ldr.o
: $(OBJECTS_LDR
)
389 -o
$(OBJECTS_PATH
)/ldr.o \
392 $(OBJECTS_PATH
)/lpc.o
: $(OBJECTS_LPC
)
395 -o
$(OBJECTS_PATH
)/lpc.o \
398 $(OBJECTS_PATH
)/nls.o
: $(OBJECTS_NLS
)
401 -o
$(OBJECTS_PATH
)/nls.o \
404 $(OBJECTS_PATH
)/nt.o
: $(OBJECTS_NT
)
407 -o
$(OBJECTS_PATH
)/nt.o \
410 $(OBJECTS_PATH
)/po.o
: $(OBJECTS_PO
)
413 -o
$(OBJECTS_PATH
)/po.o \
416 $(OBJECTS_PATH
)/cc.o
: $(OBJECTS_CC
)
419 -o
$(OBJECTS_PATH
)/cc.o \
422 $(OBJECTS_PATH
)/kd.o
: $(OBJECTS_KD
)
425 -o
$(OBJECTS_PATH
)/kd.o \
428 $(TARGETNAME
).coff
: $(TARGETNAME
).rc ..
/include/reactos
/resource.h
431 # Note: ke.o MUST be the first file!!!
433 $(OBJECTS_PATH
)/ke.o \
434 $(OBJECTS_PATH
)/hal.o \
435 $(OBJECTS_PATH
)/cc.o \
436 $(OBJECTS_PATH
)/cm.o \
437 $(OBJECTS_PATH
)/dbg.o \
438 $(OBJECTS_PATH
)/ex.o \
439 $(OBJECTS_PATH
)/lpc.o \
440 $(OBJECTS_PATH
)/fs.o \
441 $(OBJECTS_PATH
)/io.o \
442 $(OBJECTS_PATH
)/kd.o \
443 $(OBJECTS_PATH
)/ldr.o \
444 $(OBJECTS_PATH
)/mm.o \
445 $(OBJECTS_PATH
)/nls.o \
446 $(OBJECTS_PATH
)/nt.o \
447 $(OBJECTS_PATH
)/ob.o \
448 $(OBJECTS_PATH
)/po.o \
449 $(OBJECTS_PATH
)/ps.o \
450 $(OBJECTS_PATH
)/rtl.o \
451 $(OBJECTS_PATH
)/se.o \
456 CLEAN_FILES
= $(OBJECTS_PATH
)\
*.o
cc\
*.o cm\
*.o dbg\
*.o ex\
*.o hal
\x86\
*.o io\
*.o \
457 ke\
*.o ldr\
*.o mm\
*.o nt\
*.o ob\
*.o ps\
*.o rtl\
*.o se\
*.o \
458 ke\i386\
*.o mm\i386\
*.o fs\
*.o po\
*.o nls\
*.o lpc\
*.o \
459 kd\
*.o
$(TARGETNAME
).o
$(TARGETNAME
).a junk.tmp base.tmp temp.exp \
460 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym
$(TARGETNAME
).coff
$(D1_FILES
)
462 CLEAN_FILES
= $(OBJECTS_PATH
)/*.o
cc/*.o cm
/*.o dbg
/*.o ex
/*.o hal
/x86
/*.o io
/*.o \
463 ke
/*.o ldr
/*.o mm
/*.o nt
/*.o ob
/*.o ps
/*.o rtl
/*.o se
/*.o \
464 ke
/i386
/*.o mm
/i386
/*.o fs
/*.o po
/*.o nls
/*.o lpc
/*.o \
465 kd
/*.o
$(TARGETNAME
).o
$(TARGETNAME
).a junk.tmp base.tmp temp.exp \
466 $(TARGETNAME
).exe
$(TARGETNAME
).nostrip.exe
$(TARGETNAME
).sym
$(TARGETNAME
).coff
$(D1_FILES
)
470 $(TARGETNAME
).nostrip.exe
: $(TARGETNAME
).o
$(TARGETNAME
).a
$(IE_DATA
)
472 -Wl
,-T
,ntoskrnl.lnk \
473 -nostartfiles
-nostdlib \
476 -Wl
,--subsystem
,native \
477 -Wl
,--image-base
,0xc0000000 \
478 -Wl
,--file-alignment
,0x1000 \
479 -Wl
,--section-alignment
,0x1000 \
480 -Wl
,--base-file
,base.tmp \
481 $(TARGETNAME
).o
-lgcc
484 --dllname
$(TARGETNAME
).exe \
485 --base-file base.tmp \
486 --output-exp temp.exp \
487 --def
$(TARGETNAME
).edf \
491 -nostartfiles
-nostdlib \
492 -Wl
,-T
,ntoskrnl.lnk \
494 -o
$(TARGETNAME
).nostrip.exe \
495 -Wl
,--subsystem
,native \
496 -Wl
,--image-base
,0xc0000000 \
497 -Wl
,--file-alignment
,0x1000 \
498 -Wl
,--section-alignment
,0x1000 \
500 $(TARGETNAME
).o
-lgcc
503 $(TARGETNAME
).exe
: $(TARGETNAME
).o
$(TARGETNAME
).a
508 -Wl
,-T
,ntoskrnl.lnk \
509 -nostartfiles
-nostdlib \
512 -Wl
,--subsystem
,native \
513 -Wl
,--image-base
,0xc0000000 \
514 -Wl
,--file-alignment
,0x1000 \
515 -Wl
,--section-alignment
,0x1000 \
516 -Wl
,--base-file
,base.tmp \
517 $(TARGETNAME
).o
-lgcc
520 --dllname
$(TARGETNAME
).exe \
521 --base-file base.tmp \
522 --output-exp temp.exp \
523 --def
$(TARGETNAME
).edf \
527 -Wl
,-T
,ntoskrnl.lnk \
528 -nostartfiles
-nostdlib \
530 -o
$(TARGETNAME
).exe \
531 -Wl
,--subsystem
,native \
532 -Wl
,--image-base
,0xc0000000 \
533 -Wl
,--file-alignment
,0x1000 \
534 -Wl
,--section-alignment
,0x1000 \
536 $(TARGETNAME
).o
-lgcc
538 $(NM
) --numeric-sort
$(TARGETNAME
).exe
> $(TARGETNAME
).sym
541 $(TARGETNAME
).o
: $(OBJECTS
)
547 $(TARGETNAME
).a
: $(TARGETNAME
).def
549 --dllname
$(TARGETNAME
).exe \
550 --def
$(TARGETNAME
).def \
551 --output-lib
$(TARGETNAME
).a \
554 clean: $(CLEAN_FILES
:%=%_clean
)
556 $(CLEAN_FILES
:%=%_clean
): %_clean
:
559 .PHONY
: clean $(CLEAN_FILES
:%=%_clean
)
561 install: $(FLOPPY_DIR
)/$(TARGETNAME
).exe
563 $(FLOPPY_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
564 $(CP
) $(TARGETNAME
).exe
$(FLOPPY_DIR
)/$(TARGETNAME
).exe
568 dist: ..
/$(DIST_DIR
)/$(TARGETNAME
).exe
570 ..
/$(DIST_DIR
)/$(TARGETNAME
).exe
: $(TARGETNAME
).exe
571 $(CP
) $(TARGETNAME
).exe ..
/$(DIST_DIR
)/$(TARGETNAME
).exe
575 ex
/napi.o
: ex
/napi.c ..
/include/ntdll
/napi.h
577 ke
/main.o
: ke
/main.c ..
/include/reactos
/buildno.h
582 $(CC
) $(CFLAGS
) -M
$< | sed
-e
's#$(*F).o#$(@D)/&#g' | sed
-e
's@ /[^ ]*@@g' -e
's@^\(.*\)\.o:@.\1.d \1.o:@' > $@
585 $(CC
) $(CFLAGS
) -M
-MG
$< | sed
-e
's#$(*F).o#$(@D)/&#g' | sed
-e
's@ /[^ ]*@@g' -e
's@^\(.*\)\.o:@.\1.d \1.o:@' > $@
588 $(CC
) $(CFLAGS
) -M
-MG
$< | sed
-e
's#$(*F).o#$(@D)/&#g' | sed
-e
's@ /[^ ]*@@g' -e
's@^\(.*\)\.o:@.\1.d \1.o:@' > $@
590 include $(PATH_TO_TOP
)/rules.mak