Made and new ntoskrnl/lpc directory for the LPC subsystem.
[reactos.git] / reactos / ntoskrnl / makefile_rex
1 # $Id: makefile_rex,v 1.71 2000/06/04 17:27:35 ea Exp $
2 #
3 # ReactOS Operating System
4 #
5 TARGETNAME = ntoskrnl
6
7 OBJECTS_PATH = objects
8
9 BASE_CFLAGS = -I../include -D__NTOSKRNL__
10
11
12 all: \
13 $(OBJECTS_PATH) \
14 $(TARGETNAME).nostrip.exe \
15 $(TARGETNAME).exe
16
17 # Hardware Abstraction Layer (Hal)
18 # Defines $(OBJECTS_HAL)
19 #
20 include hal/x86/sources
21
22 # System API (Nt/Zw)
23 OBJECTS_NT = \
24 nt/atom.o \
25 nt/channel.o \
26 nt/evtpair.o \
27 nt/mutant.o \
28 nt/misc.o \
29 nt/nt.o \
30 nt/ntevent.o \
31 nt/ntsem.o \
32 nt/nttimer.o \
33 nt/plugplay.o \
34 nt/profile.o \
35 nt/zw.o
36
37 # Run-Time Library (Rtl)
38 OBJECTS_RTL = \
39 rtl/bitmap.o \
40 rtl/ctype.o \
41 rtl/interlck.o \
42 rtl/largeint.o \
43 rtl/list.o \
44 rtl/lookas.o \
45 rtl/mem.o \
46 rtl/memchr.o \
47 rtl/memcpy.o \
48 rtl/memmove.o \
49 rtl/memset.o \
50 rtl/nls.o \
51 rtl/qsort.o \
52 rtl/regio.o \
53 rtl/return.o \
54 rtl/slist.o \
55 rtl/sprintf.o \
56 rtl/stdlib.o \
57 rtl/string.o \
58 rtl/swprintf.o \
59 rtl/time.o \
60 rtl/unalign.o \
61 rtl/unicode.o \
62 rtl/wstring.o
63
64 # Kernel (Ke)
65 # Note: head.o MUST be the fist file!!!
66 OBJECTS_KE = \
67 ke/head.o \
68 ke/apc.o \
69 ke/bug.o \
70 ke/catch.o \
71 ke/critical.o \
72 ke/dispatch.o \
73 ke/dpc.o \
74 ke/error.o \
75 ke/event.o \
76 ke/gdt.o \
77 ke/idt.o \
78 ke/kernel.o \
79 ke/kqueue.o \
80 ke/ldt.o \
81 ke/main.o \
82 ke/mutex.o \
83 ke/process.o \
84 ke/sem.o \
85 ke/spinlock.o \
86 ke/timer.o \
87 ke/wait.o
88
89 OBJECTS_KE_I386 = \
90 ke/i386/exp.o \
91 ke/i386/thread.o \
92 ke/i386/usercall.o
93
94 # Memory Manager (Mm)
95 OBJECTS_MM = \
96 mm/aspace.o \
97 mm/cont.o \
98 mm/freelist.o \
99 mm/iospace.o \
100 mm/marea.o \
101 mm/mdl.o \
102 mm/mm.o \
103 mm/ncache.o \
104 mm/npool.o \
105 mm/pagfault.o \
106 mm/pagefile.o \
107 mm/paging.o \
108 mm/pool.o \
109 mm/ppool.o \
110 mm/section.o \
111 mm/virtual.o \
112 mm/zone.o
113
114 OBJECTS_MM_I386 = \
115 mm/i386/memsafe.o \
116 mm/i386/page.o \
117 mm/i386/pfault.o
118
119 # I/O Subsystem (Io)
120 OBJECTS_IO = \
121 io/adapter.o \
122 io/arc.o \
123 io/buildirp.o \
124 io/cancel.o \
125 io/cleanup.o \
126 io/cntrller.o \
127 io/create.o \
128 io/device.o \
129 io/dir.o \
130 io/dpc.o \
131 io/drvlck.o \
132 io/errlog.o \
133 io/error.o \
134 io/event.o \
135 io/file.o \
136 io/flush.o \
137 io/fs.o \
138 io/iocomp.o \
139 io/ioctrl.o \
140 io/iomgr.o \
141 io/irp.o \
142 io/lock.o \
143 io/mailslot.o \
144 io/mdl.o \
145 io/npipe.o \
146 io/page.o \
147 io/process.o \
148 io/queue.o \
149 io/resource.o \
150 io/rw.o \
151 io/share.o \
152 io/shutdown.o \
153 io/symlink.o \
154 io/timer.o \
155 io/vpb.o
156
157 # Object Manager (Ob)
158 OBJECTS_OB = \
159 ob/dirobj.o \
160 ob/handle.o \
161 ob/namespc.o \
162 ob/ntobj.o \
163 ob/object.o \
164 ob/security.o
165
166 # Process Manager (Ps)
167 OBJECTS_PS = \
168 ps/create.o \
169 ps/idle.o \
170 ps/kill.o \
171 ps/process.o \
172 ps/psmgr.o \
173 ps/thread.o \
174 ps/tinfo.o
175
176 # Executive Subsystem (Ex)
177 OBJECTS_EX = \
178 ex/callback.o \
179 ex/fmutex.o \
180 ex/init.o \
181 ex/interlck.o \
182 ex/locale.o \
183 ex/napi.o \
184 ex/power.o \
185 ex/resource.o \
186 ex/time.o \
187 ex/stamp.o \
188 ex/sysinfo.o \
189 ex/work.o
190
191 # Installable File System Run-Time Library (FsRtl)
192 OBJECTS_FS = \
193 fs/dbcsname.o \
194 fs/filelock.o \
195 fs/mcb.o \
196 fs/mdl.o \
197 fs/name.o \
198 fs/notify.o \
199 fs/oplock.o \
200 fs/pool.o \
201 fs/tunnel.o \
202 fs/unc.o \
203 fs/util.o
204
205 # Security Subsystem
206 OBJECTS_SE = \
207 se/access.o \
208 se/acl.o \
209 se/luid.o \
210 se/priv.o \
211 se/sd.o \
212 se/semgr.o \
213 se/sid.o \
214 se/token.o
215
216 # Configuration Manager (Registry)
217 OBJECTS_CM = \
218 cm/registry.o
219
220 # Debugger Support (Dbg)
221 OBJECTS_DBG = \
222 dbg/brkpoint.o \
223 dbg/errinfo.o \
224 dbg/print.o
225
226 # Loader
227 OBJECTS_LDR = \
228 ldr/init.o \
229 ldr/loader.o \
230 ldr/rtl.o \
231 ldr/syspath.o \
232 ldr/sysdll.o \
233 ldr/userldr.o
234
235 # Local Procedure Call (Lpc)
236 OBJECTS_LPC = \
237 lpc/close.o \
238 lpc/complete.o \
239 lpc/connect.o \
240 lpc/create.o \
241 lpc/listen.o \
242 lpc/port.o \
243 lpc/query.o \
244 lpc/queue.o \
245 lpc/receive.o \
246 lpc/reply.o \
247 lpc/send.o
248
249 # Nation Language Support Library (Nls)
250 OBJECTS_NLS = nls/nls.o
251
252 # Power Management (Po)
253 OBJECTS_PO = po/power.o
254
255 # Cache Manager (Cc)
256 OBJECTS_CC = \
257 cc/cacheman.o \
258 cc/view.o
259
260 # Kernel Debugger Support (Kd)
261 OBJECTS_KD = \
262 kd/kdebug.o \
263 kd/service.o
264
265 # Resources
266 OBJECTS_RESOURCE = \
267 $(TARGETNAME).coff
268
269 # IMPORTS/EXPORTS
270 IE_DATA = \
271 $(TARGETNAME).def \
272 $(TARGETNAME).edf
273
274 $(OBJECTS_PATH):
275 mkdir $(OBJECTS_PATH)
276
277 #
278 # Build subsystem intermediate objects
279 #
280 $(OBJECTS_PATH)/hal.o: $(OBJECTS_HAL)
281 $(LD) \
282 -r \
283 -o $(OBJECTS_PATH)/hal.o \
284 $(OBJECTS_HAL)
285
286 $(OBJECTS_PATH)/io.o: $(OBJECTS_IO)
287 $(LD) \
288 -r \
289 -o $(OBJECTS_PATH)/io.o \
290 $(OBJECTS_IO)
291
292 $(OBJECTS_PATH)/ke.o: $(OBJECTS_KE) $(OBJECTS_KE_I386)
293 $(LD) \
294 -r \
295 -o $(OBJECTS_PATH)/ke.o \
296 $(OBJECTS_KE) \
297 $(OBJECTS_KE_I386)
298
299 $(OBJECTS_PATH)/rtl.o: $(OBJECTS_RTL)
300 $(LD) \
301 -r \
302 -o $(OBJECTS_PATH)/rtl.o \
303 $(OBJECTS_RTL)
304
305 $(OBJECTS_PATH)/mm.o: $(OBJECTS_MM) $(OBJECTS_MM_I386)
306 $(LD) \
307 -r \
308 -o $(OBJECTS_PATH)/mm.o \
309 $(OBJECTS_MM) \
310 $(OBJECTS_MM_I386)
311
312 $(OBJECTS_PATH)/ob.o: $(OBJECTS_OB)
313 $(LD) \
314 -r \
315 -o $(OBJECTS_PATH)/ob.o \
316 $(OBJECTS_OB)
317
318 $(OBJECTS_PATH)/ps.o: $(OBJECTS_PS)
319 $(LD) \
320 -r \
321 -o $(OBJECTS_PATH)/ps.o \
322 $(OBJECTS_PS)
323
324 $(OBJECTS_PATH)/ex.o: $(OBJECTS_EX)
325 $(LD) \
326 -r \
327 -o $(OBJECTS_PATH)/ex.o \
328 $(OBJECTS_EX)
329
330 $(OBJECTS_PATH)/fs.o: $(OBJECTS_FS)
331 $(LD) \
332 -r \
333 -o $(OBJECTS_PATH)/fs.o \
334 $(OBJECTS_FS)
335
336 $(OBJECTS_PATH)/se.o: $(OBJECTS_SE)
337 $(LD) \
338 -r \
339 -o $(OBJECTS_PATH)/se.o \
340 $(OBJECTS_SE)
341
342 $(OBJECTS_PATH)/cm.o: $(OBJECTS_CM)
343 $(LD) \
344 -r \
345 -o $(OBJECTS_PATH)/cm.o \
346 $(OBJECTS_CM)
347
348 $(OBJECTS_PATH)/dbg.o: $(OBJECTS_DBG)
349 $(LD) \
350 -r \
351 -o $(OBJECTS_PATH)/dbg.o \
352 $(OBJECTS_DBG)
353
354 $(OBJECTS_PATH)/ldr.o: $(OBJECTS_LDR)
355 $(LD) \
356 -r \
357 -o $(OBJECTS_PATH)/ldr.o \
358 $(OBJECTS_LDR)
359
360 $(OBJECTS_PATH)/lpc.o: $(OBJECTS_LPC)
361 $(LD) \
362 -r \
363 -o $(OBJECTS_PATH)/lpc.o \
364 $(OBJECTS_LPC)
365
366 $(OBJECTS_PATH)/nls.o: $(OBJECTS_NLS)
367 $(LD) \
368 -r \
369 -o $(OBJECTS_PATH)/nls.o \
370 $(OBJECTS_NLS)
371
372 $(OBJECTS_PATH)/nt.o: $(OBJECTS_NT)
373 $(LD) \
374 -r \
375 -o $(OBJECTS_PATH)/nt.o \
376 $(OBJECTS_NT)
377
378 $(OBJECTS_PATH)/po.o: $(OBJECTS_PO)
379 $(LD) \
380 -r \
381 -o $(OBJECTS_PATH)/po.o \
382 $(OBJECTS_PO)
383
384 $(OBJECTS_PATH)/cc.o: $(OBJECTS_CC)
385 $(LD) \
386 -r \
387 -o $(OBJECTS_PATH)/cc.o \
388 $(OBJECTS_CC)
389
390 $(OBJECTS_PATH)/kd.o: $(OBJECTS_KD)
391 $(LD) \
392 -r \
393 -o $(OBJECTS_PATH)/kd.o \
394 $(OBJECTS_KD)
395
396 $(TARGETNAME).coff: $(TARGETNAME).rc ../include/reactos/resource.h
397
398
399 # Note: ke.o MUST be the fist file!!!
400 OBJECTS = \
401 $(OBJECTS_PATH)/ke.o \
402 $(OBJECTS_PATH)/hal.o \
403 $(OBJECTS_PATH)/cc.o \
404 $(OBJECTS_PATH)/cm.o \
405 $(OBJECTS_PATH)/dbg.o \
406 $(OBJECTS_PATH)/ex.o \
407 $(OBJECTS_PATH)/lpc.o \
408 $(OBJECTS_PATH)/fs.o \
409 $(OBJECTS_PATH)/io.o \
410 $(OBJECTS_PATH)/kd.o \
411 $(OBJECTS_PATH)/ldr.o \
412 $(OBJECTS_PATH)/mm.o \
413 $(OBJECTS_PATH)/nls.o \
414 $(OBJECTS_PATH)/nt.o \
415 $(OBJECTS_PATH)/ob.o \
416 $(OBJECTS_PATH)/po.o \
417 $(OBJECTS_PATH)/ps.o \
418 $(OBJECTS_PATH)/rtl.o \
419 $(OBJECTS_PATH)/se.o \
420 $(OBJECTS_RESOURCE)
421
422
423 ifeq ($(DOSCLI),yes)
424 CLEAN_FILES = $(OBJECTS_PATH)\*.o cc\*.o cm\*.o dbg\*.o ex\*.o hal\x86\*.o io\*.o \
425 ke\*.o ldr\*.o mm\*.o nt\*.o ob\*.o ps\*.o rtl\*.o se\*.o \
426 ke\i386\*.o mm\i386\*.o fs\*.o po\*.o nls\*.o lpc\*.o \
427 kd\*.o utils\export\export.exe $(TARGETNAME).o $(TARGETNAME).a junk.tmp \
428 base.tmp temp.exp $(TARGETNAME).exe $(TARGETNAME).sym $(TARGETNAME).coff
429 else
430 CLEAN_FILES = $(OBJECTS_PATH)/*.o cc/*.o cm/*.o dbg/*.o ex/*.o hal/x86/*.o io/*.o \
431 ke/*.o ldr/*.o mm/*.o nt/*.o ob/*.o ps/*.o rtl/*.o se/*.o \
432 ke/i386/*.o mm/i386/*.o fs/*.o po/*.o nls/*.o lpc/*.o \
433 kd/*.o utils/export/export $(TARGETNAME).o $(TARGETNAME).a junk.tmp \
434 base.tmp temp.exp $(TARGETNAME).exe $(TARGETNAME).sym $(TARGETNAME).coff
435 endif
436
437
438 $(TARGETNAME).nostrip.exe: $(TARGETNAME).o $(TARGETNAME).a $(IE_DATA)
439 $(CC) \
440 -Wl,-d -specs=../specs \
441 -mdll \
442 -o junk.tmp \
443 -Wl,--image-base,0xc0000000 \
444 -Wl,--file-alignment,0x1000 \
445 -Wl,--section-alignment,0x1000 \
446 -Wl,--defsym,_edata=__data_end__ \
447 -Wl,--defsym,_end=__bss_end__ \
448 -Wl,--defsym,_etext=etext \
449 -Wl,--base-file,base.tmp \
450 $(TARGETNAME).o
451 - $(RM) junk.tmp
452 $(DLLTOOL) \
453 --dllname $(TARGETNAME).exe \
454 --base-file base.tmp \
455 --output-exp temp.exp \
456 --def $(TARGETNAME).edf \
457 --kill-at
458 - $(RM) base.tmp
459 $(CC) \
460 -Wl,-d -specs=../specs \
461 -mdll \
462 -o $(TARGETNAME).nostrip.exe \
463 -Wl,--image-base,0xc0000000 \
464 -Wl,--file-alignment,0x1000 \
465 -Wl,--section-alignment,0x1000 \
466 -Wl,--defsym,_end=__bss_end__ \
467 -Wl,--defsym,_edata=__data_end__ \
468 -Wl,--defsym,_etext=etext \
469 -Wl,temp.exp \
470 $(TARGETNAME).o
471 - $(RM) temp.exp
472
473 $(TARGETNAME).exe: $(TARGETNAME).o $(TARGETNAME).a
474 $(STRIP) \
475 --strip-debug \
476 $(TARGETNAME).o
477 $(CC) \
478 -Wl,-d -specs=../specs \
479 -mdll \
480 -o junk.tmp \
481 -Wl,--image-base,0xc0000000 \
482 -Wl,--file-alignment,0x1000 \
483 -Wl,--section-alignment,0x1000 \
484 -Wl,--defsym,_edata=__data_end__ \
485 -Wl,--defsym,_end=__bss_end__ \
486 -Wl,--defsym,_etext=etext \
487 -Wl,--base-file,base.tmp \
488 $(TARGETNAME).o
489 - $(RM) junk.tmp
490 $(DLLTOOL) \
491 --dllname $(TARGETNAME).exe \
492 --base-file base.tmp \
493 --output-exp temp.exp \
494 --def $(TARGETNAME).edf \
495 --kill-at
496 - $(RM) base.tmp
497 $(CC) \
498 -Wl,-d -specs=../specs \
499 -mdll \
500 -o $(TARGETNAME).exe \
501 -Wl,--image-base,0xc0000000 \
502 -Wl,--file-alignment,0x1000 \
503 -Wl,--section-alignment,0x1000 \
504 -Wl,--defsym,_end=__bss_end__ \
505 -Wl,--defsym,_edata=__data_end__ \
506 -Wl,--defsym,_etext=etext \
507 -Wl,temp.exp \
508 $(TARGETNAME).o
509 - $(RM) temp.exp
510 $(NM) --numeric-sort $(TARGETNAME).exe > $(TARGETNAME).sym
511
512
513 $(TARGETNAME).o: $(OBJECTS)
514 $(LD) \
515 -r \
516 -o $(TARGETNAME).o \
517 $(OBJECTS)
518
519 $(TARGETNAME).a: $(TARGETNAME).def
520 $(DLLTOOL) \
521 --dllname $(TARGETNAME).exe \
522 --def $(TARGETNAME).def \
523 --output-lib $(TARGETNAME).a \
524 --kill-at
525
526 clean: $(CLEAN_FILES:%=%_clean)
527
528 $(CLEAN_FILES:%=%_clean): %_clean:
529 - $(RM) $*
530
531 .PHONY: clean $(CLEAN_FILES:%=%_clean)
532
533 floppy: $(FLOPPY_DIR)/$(TARGETNAME).exe
534
535 $(FLOPPY_DIR)/$(TARGETNAME).exe: $(TARGETNAME).exe
536 ifeq ($(DOSCLI),yes)
537 $(CP) $(TARGETNAME).exe $(FLOPPY_DIR)\$(TARGETNAME).exe
538 else
539 $(CP) $(TARGETNAME).exe $(FLOPPY_DIR)/$(TARGETNAME).exe
540 endif
541
542 .PHONY: dist
543
544 dist: ../$(DIST_DIR)/$(TARGETNAME).exe
545
546 ../$(DIST_DIR)/$(TARGETNAME).exe: $(TARGETNAME).exe
547 ifeq ($(DOSCLI),yes)
548 $(CP) $(TARGETNAME).exe ..\$(DIST_DIR)\$(TARGETNAME).exe
549 else
550 $(CP) $(TARGETNAME).exe ../$(DIST_DIR)/$(TARGETNAME).exe
551 endif
552
553 .PHONY: dist
554
555 ex/napi.o: ex/napi.c ../include/ntdll/napi.h
556
557 ke/main.o: ke/main.c ../include/reactos/buildno.h
558
559 WITH_DEBUGGING = yes
560 WIN32_LEAN_AND_MEAN = yes
561 WARNINGS_ARE_ERRORS = yes
562 include ../rules.mak
563
564 # EOF