Added a stubbed oleaut32.dll and a little work on ole32.dll
[reactos.git] / reactos / Makefile
1 #
2 # Global makefile
3 #
4
5 #
6 # Select your host
7 #
8 #HOST = mingw32-linux
9 #HOST = mingw32-windows
10
11 PATH_TO_TOP = .
12
13 include rules.mak
14
15 #
16 # Required to run the system
17 #
18 COMPONENTS = iface_native iface_additional ntoskrnl
19 BUS = acpi isapnp
20 DLLS = advapi32 crtdll fmifs gdi32 kernel32 msafd msvcrt ntdll \
21 ole32 oleaut32 secur32 shell32 user32 ws2_32
22 SUBSYS = smss win32k csrss
23
24 #
25 # Select the server(s) you want to build
26 #
27 #SERVERS = posix linux os2
28 SERVERS = win32
29
30 #
31 # Select the loader(s) you want to build
32 #
33 #LOADERS = boot dos
34 LOADERS = dos
35
36 #
37 # Select the device drivers and filesystems you want
38 #
39 #DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1 parallel serial
40 DEVICE_DRIVERS = vidport vga blue ide null floppy
41
42 #INPUT_DRIVERS = keyboard
43 INPUT_DRIVERS = keyboard mouclass psaux
44
45 #FS_DRIVERS = vfat minix ext2 template
46 FS_DRIVERS = vfat ms np
47
48 #NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
49 NET_DRIVERS = ndis tcpip tditest wshtcpip afd
50
51 #NET_DEVICE_DRIVERS = ne2000
52 NET_DEVICE_DRIVERS = ne2000
53
54 #
55 # system applications (required for startup)
56 #
57 #SYS_APPS = shell winlogon services
58 SYS_APPS = shell winlogon services
59
60 APPS = args hello test cat bench apc shm lpc thread event file gditest \
61 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
62 objdir atomtest
63
64 #NET_APPS = ping roshttpd telnet
65 NET_APPS = ping
66
67
68 KERNEL_SERVICES = $(DEVICE_DRIVERS) $(INPUT_DRIVERS) $(FS_DRIVERS) $(NET_DRIVERS) $(NET_DEVICE_DRIVERS)
69
70 all: buildno $(COMPONENTS) $(BUS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(SYS_APPS) $(APPS) $(NET_APPS)
71
72 .PHONY: all
73
74 clean: rdel$(EXE_POSTFIX) buildno_clean $(COMPONENTS:%=%_clean) \
75 $(BUS:%=%_clean) $(DLLS:%=%_clean) \
76 $(LOADERS:%=%_clean) $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) \
77 $(SYS_APPS:%=%_clean) $(APPS:%=%_clean) $(NET_APPS:%=%_clean)
78
79 .PHONY: clean
80
81 ifeq ($(HOST),mingw32-linux)
82 rcopy$(EXE_POSTFIX): rcopy.c
83 $(HOST_CC) -g -DUNIX_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
84 endif
85 ifeq ($(HOST),mingw32-windows)
86 rcopy$(EXE_POSTFIX): rcopy.c
87 $(HOST_CC) -g -DDOS_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
88 endif
89
90 ifeq ($(HOST),mingw32-linux)
91 rmkdir$(EXE_POSTFIX): rmkdir.c
92 $(HOST_CC) -g -DUNIX_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
93 endif
94 ifeq ($(HOST),mingw32-windows)
95 rmkdir$(EXE_POSTFIX): rmkdir.c
96 $(HOST_CC) -g -DDOS_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
97 endif
98
99 rdel$(EXE_POSTFIX): rdel.c
100 $(HOST_CC) -g rdel.c -liberty -o rdel$(EXE_POSTFIX)
101
102 install: rcopy$(EXE_POSTFIX) rmkdir$(EXE_POSTFIX) make_install_dirs autoexec_install \
103 $(COMPONENTS:%=%_install) $(BUS:%=%_install) \
104 $(DLLS:%=%_install) $(LOADERS:%=%_install) \
105 $(KERNEL_SERVICES:%=%_install) $(SUBSYS:%=%_install) \
106 $(SYS_APPS:%=%_install) $(APPS:%=%_install)
107
108 dist: rcopy$(EXE_POSTFIX) clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) \
109 $(BUS:%=%_dist) $(DLLS:%=%_dist) \
110 $(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \
111 $(SYS_APPS:%=%_dist) $(APPS:%=%_dist) $(NET_APPS:%=%_dist)
112
113 #
114 # Build number generator
115 #
116 buildno: include/reactos/version.h
117 make -C apps/buildno
118
119 buildno_clean:
120 make -C apps/buildno clean
121
122 buildno_dist:
123
124 buildno_install:
125
126 .PHONY: buildno buildno_clean buildno_dist buildno_install
127
128 #
129 # System Applications
130 #
131 $(SYS_APPS): %:
132 make -C apps/system/$*
133
134 $(SYS_APPS:%=%_clean): %_clean:
135 make -C apps/system/$* clean
136
137 $(SYS_APPS:%=%_dist): %_dist:
138 make -C apps/system/$* dist
139
140 $(SYS_APPS:%=%_install): %_install:
141 make -C apps/system/$* install
142
143 .PHONY: $(SYS_APPS) $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_dist)
144
145 #
146 # Applications
147 #
148 $(APPS): %:
149 make -C apps/$*
150
151 $(APPS:%=%_clean): %_clean:
152 make -C apps/$* clean
153
154 $(APPS:%=%_dist): %_dist:
155 make -C apps/$* dist
156
157 $(APPS:%=%_install): %_install:
158 make -C apps/$* install
159
160 .PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_install) $(APPS:%=%_dist)
161
162 #
163 # Network applications
164 #
165 $(NET_APPS): %:
166 make -C apps/net/$*
167
168 $(NET_APPS:%=%_clean): %_clean:
169 make -C apps/net/$* clean
170
171 $(NET_APPS:%=%_dist): %_dist:
172 make -C apps/net/$* dist
173
174 $(NET_APPS:%=%_install): %_install:
175 make -C apps/net/$* install
176
177 .PHONY: $(NET_APPS) $(NET_APPS:%=%_clean) $(NET_APPS:%=%_install) $(NET_APPS:%=%_dist)
178
179 #
180 # Interfaces
181 #
182 iface_native:
183 make -C iface/native
184
185 iface_native_clean:
186 make -C iface/native clean
187
188 iface_native_install:
189
190 iface_native_dist:
191
192 iface_additional:
193 make -C iface/addsys
194
195 iface_additional_clean:
196 make -C iface/addsys clean
197
198 iface_additional_install:
199
200 iface_additional_dist:
201
202 .PHONY: iface_native iface_native_clean iface_native_install \
203 iface_native_dist \
204 iface_additional iface_additional_clean iface_additional_install \
205 iface_additional_dist
206
207 #
208 # Bus driver rules
209 #
210 $(BUS): %:
211 make -C services/bus/$*
212
213 $(BUS:%=%_clean): %_clean:
214 make -C services/bus/$* clean
215
216 $(BUS:%=%_install): %_install:
217 make -C services/bus/$* install
218
219 $(BUS:%=%_dist): %_dist:
220 make -C services/bus/$* dist
221
222 .PHONY: $(BUS) $(BUS:%=%_clean) \
223 $(BUS:%=%_install) $(BUS:%=%_dist)
224
225 #
226 # Device driver rules
227 #
228 $(DEVICE_DRIVERS): %:
229 make -C services/dd/$*
230
231 $(DEVICE_DRIVERS:%=%_clean): %_clean:
232 make -C services/dd/$* clean
233
234 $(DEVICE_DRIVERS:%=%_install): %_install:
235 make -C services/dd/$* install
236
237 $(DEVICE_DRIVERS:%=%_dist): %_dist:
238 make -C services/dd/$* dist
239
240 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
241 $(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_dist)
242
243 #
244 # Input driver rules
245 #
246 $(INPUT_DRIVERS): %:
247 make -C services/input/$*
248
249 $(INPUT_DRIVERS:%=%_clean): %_clean:
250 make -C services/input/$* clean
251
252 $(INPUT_DRIVERS:%=%_install): %_install:
253 make -C services/input/$* install
254
255 $(INPUT_DRIVERS:%=%_dist): %_dist:
256 make -C services/input/$* dist
257
258 .PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_clean) \
259 $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_dist)
260
261 $(FS_DRIVERS): %:
262 make -C services/fs/$*
263
264 $(FS_DRIVERS:%=%_clean): %_clean:
265 make -C services/fs/$* clean
266
267 $(FS_DRIVERS:%=%_install): %_install:
268 make -C services/fs/$* install
269
270 $(FS_DRIVERS:%=%_dist): %_dist:
271 make -C services/fs/$* dist
272
273 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_install) \
274 $(FS_DRIVERS:%=%_dist)
275
276 #
277 # Network driver rules
278 #
279 $(NET_DRIVERS): %:
280 make -C services/net/$*
281
282 $(NET_DRIVERS:%=%_clean): %_clean:
283 make -C services/net/$* clean
284
285 $(NET_DRIVERS:%=%_install): %_install:
286 make -C services/net/$* install
287
288 $(NET_DRIVERS:%=%_dist): %_dist:
289 make -C services/net/$* dist
290
291 .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_clean) $(NET_DRIVERS:%=%_install) \
292 $(NET_DRIVERS:%=%_dist)
293
294 $(NET_DEVICE_DRIVERS): %:
295 make -C services/net/dd/$*
296
297 $(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
298 make -C services/net/dd/$* clean
299
300 $(NET_DEVICE_DRIVERS:%=%_install): %_install:
301 make -C services/net/dd/$* install
302
303 $(NET_DEVICE_DRIVERS:%=%_dist): %_dist:
304 make -C services/net/dd/$* dist
305
306 .PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) \
307 $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_dist)
308
309 #
310 # Kernel loaders
311 #
312
313 $(LOADERS): %:
314 make -C loaders/$*
315
316 $(LOADERS:%=%_clean): %_clean:
317 make -C loaders/$* clean
318
319 $(LOADERS:%=%_install): %_install:
320 make -C loaders/$* install
321
322 $(LOADERS:%=%_dist): %_dist:
323 make -C loaders/$* dist
324
325 .PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_install) \
326 $(LOADERS:%=%_dist)
327
328 #
329 # Required system components
330 #
331
332 ntoskrnl:
333 make -C ntoskrnl
334
335 ntoskrnl_clean:
336 make -C ntoskrnl clean
337
338 ntoskrnl_install:
339 make -C ntoskrnl install
340
341 ntoskrnl_dist:
342 make -C ntoskrnl dist
343
344 .PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
345
346 #
347 # Required DLLs
348 #
349
350 $(DLLS): %:
351 make -C lib/$*
352
353 $(DLLS:%=%_clean): %_clean:
354 make -C lib/$* clean
355
356 $(DLLS:%=%_install): %_install:
357 make -C lib/$* install
358
359 $(DLLS:%=%_dist): %_dist:
360 make -C lib/$* dist
361
362 .PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_install) $(DLLS:%=%_dist)
363
364 #
365 # Kernel Subsystems
366 #
367
368 $(SUBSYS): %:
369 make -C subsys/$*
370
371 $(SUBSYS:%=%_clean): %_clean:
372 make -C subsys/$* clean
373
374 $(SUBSYS:%=%_install): %_install:
375 make -C subsys/$* install
376
377 $(SUBSYS:%=%_dist): %_dist:
378 make -C subsys/$* dist
379
380 .PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
381 $(SUBSYS:%=%_dist)
382
383 #
384 # Make an install floppy
385 #
386 make_install_dirs:
387 ./rmkdir $(FLOPPY_DIR)/dlls
388 ./rmkdir $(FLOPPY_DIR)/apps
389 ./rmkdir $(FLOPPY_DIR)/drivers
390 ./rmkdir $(FLOPPY_DIR)/subsys
391
392
393 .PHONY: make_install_dirs
394
395 autoexec_install: $(FLOPPY_DIR)/autoexec.bat
396
397 $(FLOPPY_DIR)/autoexec.bat: bootflop.bat
398 $(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat
399
400 #
401 # Make a distribution saveset
402 #
403
404 clean_dist_dir:
405 ifeq ($(DOSCLI),yes)
406 - $(RM) $(DIST_DIR)\dlls\*.dll
407 - $(RM) $(DIST_DIR)\apps\*.exe
408 - $(RM) $(DIST_DIR)\drivers\*.sys
409 - $(RM) $(DIST_DIR)\subsys\*.exe
410 - $(RMDIR) $(DIST_DIR)\dlls
411 - $(RMDIR) $(DIST_DIR)\apps
412 - $(RMDIR) $(DIST_DIR)\drivers
413 - $(RMDIR) $(DIST_DIR)\subsys
414 - $(RMDIR) $(DIST_DIR)
415 else
416 $(RM) -r $(DIST_DIR)
417 endif
418
419 make_dist_dirs: ./rmkdir
420 ./rmkdir $(DIST_DIR)
421 ./rmkdir $(DIST_DIR)/dlls
422 ./rmkdir $(DIST_DIR)/apps
423 ./rmkdir $(DIST_DIR)/drivers
424 ./rmkdir $(DIST_DIR)/dlls
425 ./rmkdir $(DIST_DIR)/subsys
426
427 .PHONY: clean_dist_dir make_dist_dirs
428
429 #
430 #
431 #
432 etags:
433 find . -name "*.[ch]" -print | etags --language=c -
434
435 # EOF