0f22269848945bd13f0c9e9567c77ac2943ef63e
[reactos.git] / reactos / ntoskrnl / makefile_rex
1 # $Id: makefile_rex,v 1.30 1999/08/11 23:23:48 ekohl Exp $
2 #
3 # ReactOS Operating System
4 #
5 TARGET=ntoskrnl
6
7 all: objects $(TARGET).exe
8
9 #
10 # Defines $(HAL_OBJECTS)
11 #
12 include hal/x86/sources
13
14 NT_OBJECTS = nt/port.o nt/channel.o nt/ntevent.o nt/nttimer.o nt/atom.o \
15 nt/evtpair.o nt/ntsem.o nt/mutant.o nt/misc.o nt/plugplay.o \
16 nt/profile.o nt/nt.o nt/zw.o
17
18 RTL_OBJECTS = rtl/vsprintf.o rtl/lookas.o rtl/unicode.o rtl/time.o \
19 rtl/unalign.o rtl/mem.o rtl/largeint.o rtl/ctype.o \
20 rtl/list.o rtl/slist.o rtl/interlck.o rtl/return.o \
21 rtl/wstring.o rtl/memcpy.o rtl/memmove.o rtl/memset.o \
22 rtl/memchr.o rtl/string.o rtl/stdlib.o
23
24 KE_OBJECTS = ke/main.o ke/timer.o ke/error.o ke/catch.o \
25 ke/dpc.o ke/wait.o ke/kqueue.o ke/dispatch.o \
26 ke/sem.o ke/critical.o ke/event.o ke/apc.o ke/bug.o \
27 ke/mutex.o ke/kernel.o ke/ldt.o ke/apchelp.o \
28 ke/process.o ke/gdt.o
29
30 MM_OBJECTS = mm/mm.o mm/freelist.o mm/pool.o mm/virtual.o \
31 mm/mdl.o mm/zone.o mm/special.o mm/paging.o \
32 mm/section.o mm/marea.o mm/ppool.o mm/npool.o
33
34
35 IO_OBJECTS = io/iomgr.o io/create.o io/irp.o io/device.o io/rw.o \
36 io/queue.o io/drvlck.o io/timer.o io/share.o io/errlog.o \
37 io/shutdown.o io/fdisk.o io/cancel.o io/error.o io/arc.o \
38 io/dpc.o io/symlink.o io/adapter.o io/cntrller.o io/mdl.o \
39 io/resource.o io/event.o io/process.o io/file.o io/ioctrl.o \
40 io/fs.o io/vpb.o io/buildirp.o io/flush.o io/dir.o io/iocomp.o \
41 io/mailslot.o io/npipe.o io/lock.o io/page.o io/cleanup.o
42
43 OB_OBJECTS = ob/object.o ob/handle.o ob/namespc.o ob/ntobj.o ob/dirobj.o
44
45 PS_OBJECTS = ps/psmgr.o ps/thread.o ps/process.o ps/idle.o ps/kill.o \
46 ps/tinfo.o
47
48 EX_OBJECTS = ex/work.o ex/fmutex.o ex/resource.o ex/time.o ex/interlck.o \
49 ex/callback.o ex/napi.o ex/power.o ex/sysinfo.o ex/locale.o \
50 ex/stamp.o ex/init.o
51
52 SE_OBJECTS = se/semgr.o
53
54 CM_OBJECTS = cm/registry.o
55
56 DBG_OBJECTS = dbg/brkpoint.o dbg/errinfo.o
57
58 LDR_OBJECTS = ldr/loader.o ldr/init.o ldr/syspath.o
59
60 CC_OBJECTS = cc/cacheman.o cc/view.o
61
62 RESOURCE_OBJECT = $(TARGET).coff
63
64 objects:
65 mkdir objects
66
67 objects/hal.o: $(HAL_OBJECTS)
68 $(LD) -r $(HAL_OBJECTS) -o objects/hal.o
69
70 objects/io.o: $(IO_OBJECTS)
71 $(LD) -r $(IO_OBJECTS) -o objects/io.o
72
73 objects/ke.o: $(KE_OBJECTS)
74 $(LD) -r $(KE_OBJECTS) -o objects/ke.o
75
76 objects/rtl.o: $(RTL_OBJECTS)
77 $(LD) -r $(RTL_OBJECTS) -o objects/rtl.o
78
79 objects/mm.o: $(MM_OBJECTS)
80 $(LD) -r $(MM_OBJECTS) -o objects/mm.o
81
82 objects/ob.o: $(OB_OBJECTS)
83 $(LD) -r $(OB_OBJECTS) -o objects/ob.o
84
85 objects/ps.o: $(PS_OBJECTS)
86 $(LD) -r $(PS_OBJECTS) -o objects/ps.o
87
88 objects/ex.o: $(EX_OBJECTS)
89 $(LD) -r $(EX_OBJECTS) -o objects/ex.o
90
91 objects/se.o: $(SE_OBJECTS)
92 $(LD) -r $(SE_OBJECTS) -o objects/se.o
93
94 objects/cm.o: $(CM_OBJECTS)
95 $(LD) -r $(CM_OBJECTS) -o objects/cm.o
96
97 objects/dbg.o: $(DBG_OBJECTS)
98 $(LD) -r $(DBG_OBJECTS) -o objects/dbg.o
99
100 objects/ldr.o: $(LDR_OBJECTS)
101 $(LD) -r $(LDR_OBJECTS) -o objects/ldr.o
102
103 objects/nt.o: $(NT_OBJECTS)
104 $(LD) -r $(NT_OBJECTS) -o objects/nt.o
105
106 objects/cc.o: $(CC_OBJECTS)
107 $(LD) -r $(CC_OBJECTS) -o objects/cc.o
108
109 $(TARGET).coff: $(TARGET).rc ../include/reactos/resource.h
110
111
112 OBJECTS = objects/hal.o objects/ke.o objects/rtl.o objects/mm.o \
113 objects/io.o objects/ob.o objects/ps.o objects/ex.o \
114 objects/se.o objects/cm.o objects/dbg.o \
115 objects/nt.o objects/cc.o objects/ldr.o \
116 $(TARGET).coff
117
118 ifeq ($(DOSCLI),yes)
119 CLEAN_FILES = objects\*.o cc\*.o cm\*.o dbg\*.o ex\*.o hal\x86\*.o io\*.o \
120 ke\*.o ldr\*.o mm\*.o nt\*.o ob\*.o ps\*.o rtl\*.o se\*.o \
121 utils\export\export.exe $(TARGET).o $(TARGET).a junk.tmp \
122 base.tmp temp.exp $(TARGET).exe $(TARGET).sym $(TARGET).coff
123 else
124 CLEAN_FILES = objects/*.o cc/*.o cm/*.o dbg/*.o ex/*.o hal/x86/*.o io/*.o \
125 ke/*.o ldr/*.o mm/*.o nt/*.o ob/*.o ps/*.o rtl/*.o se/*.o \
126 utils/export/export $(TARGET).o $(TARGET).a junk.tmp base.tmp \
127 temp.exp $(TARGET).exe $(TARGET).sym $(TARGET).coff
128 endif
129
130 $(TARGET).exe: $(OBJECTS) $(TARGET).def
131 $(LD) \
132 -r $(OBJECTS) \
133 -o $(TARGET).o
134 $(DLLTOOL) \
135 --dllname $(TARGET).exe \
136 --def $(TARGET).def \
137 --kill-at \
138 --output-lib $(TARGET).a
139 $(CC) \
140 $(TARGET).o \
141 -Wl,-d -specs=../specs \
142 -mdll \
143 -o junk.tmp \
144 -Wl,--image-base,0xc0000000 \
145 -Wl,--file-alignment,0x1000 \
146 -Wl,--section-alignment,0x1000 \
147 -Wl,--defsym,_edata=__data_end__ \
148 -Wl,--defsym,_end=__bss_end__ \
149 -Wl,--defsym,_etext=etext \
150 -Wl,--base-file,base.tmp
151 - $(RM) junk.tmp
152 $(DLLTOOL) \
153 --dllname $(TARGET).exe \
154 --base-file base.tmp \
155 --output-exp temp.exp \
156 --def $(TARGET).edf
157 - $(RM) base.tmp
158 $(CC) \
159 $(TARGET).o \
160 -Wl,-d -specs=../specs \
161 -mdll \
162 -o $(TARGET).exe \
163 -Wl,--image-base,0xc0000000 \
164 -Wl,--file-alignment,0x1000 \
165 -Wl,--section-alignment,0x1000 \
166 -Wl,--defsym,_end=__bss_end__ \
167 -Wl,--defsym,_edata=__data_end__ \
168 -Wl,--defsym,_etext=etext \
169 -Wl,temp.exp
170 - $(RM) temp.exp
171 $(NM) --numeric-sort $(TARGET).exe > $(TARGET).sym
172
173 $(TARGET).o: $(OBJECTS)
174 $(LD) -r $(OBJECTS) -o $(TARGET).o
175
176 $(TARGET).a: $(TARGET).def
177 $(DLLTOOL) \
178 --dllname $(TARGET).exe \
179 --def $(TARGET).def \
180 --output-lib $(TARGET).a
181
182 clean: $(CLEAN_FILES:%=%_clean)
183
184 $(CLEAN_FILES:%=%_clean): %_clean:
185 - $(RM) $*
186
187 .PHONY: clean $(CLEAN_FILES:%=%_clean)
188
189 floppy: $(FLOPPY_DIR)/$(TARGET).exe
190
191 $(FLOPPY_DIR)/$(TARGET).exe: $(TARGET).exe
192 ifeq ($(DOSCLI),yes)
193 $(CP) $(TARGET).exe $(FLOPPY_DIR)\$(TARGET).exe
194 else
195 $(CP) $(TARGET).exe $(FLOPPY_DIR)/$(TARGET).exe
196 endif
197
198 .PHONY: dist
199
200 dist: ../$(DIST_DIR)/$(TARGET).exe
201
202 ../$(DIST_DIR)/$(TARGET).exe: $(TARGET).exe
203 ifeq ($(DOSCLI),yes)
204 $(CP) $(TARGET).exe ..\$(DIST_DIR)\$(TARGET).exe
205 else
206 $(CP) $(TARGET).exe ../$(DIST_DIR)/$(TARGET).exe
207 endif
208
209 .PHONY: dist
210
211 ex/napi.o: ex/napi.c ../include/ntdll/napi.h
212
213 #WITH_DEBUGGING = yes
214 WIN32_LEAN_AND_MEAN = yes
215 #WARNINGS_ARE_ERRORS = yes
216 include ../rules.mak
217