Added missing .cvsignore files.
[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 = ntdll kernel32 advapi32 crtdll msvcrt fmifs gdi32 msafd \
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 STORAGE_DRIVERS = class2 scsiport
55
56 #
57 # system applications (required for startup)
58 #
59 #SYS_APPS = shell winlogon services
60 SYS_APPS = shell winlogon services
61
62 APPS = args hello test cat bench apc shm lpc thread event file gditest \
63 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
64 objdir atomtest
65
66 #NET_APPS = ping roshttpd telnet
67 NET_APPS = ping
68
69
70 KERNEL_SERVICES = $(DEVICE_DRIVERS) $(INPUT_DRIVERS) $(FS_DRIVERS) $(NET_DRIVERS) $(NET_DEVICE_DRIVERS) $(STORAGE_DRIVERS)
71
72 all: buildno $(COMPONENTS) $(BUS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(SYS_APPS) $(APPS) $(NET_APPS)
73
74 .PHONY: all
75
76 clean: rdel$(EXE_POSTFIX) buildno_clean $(COMPONENTS:%=%_clean) \
77 $(BUS:%=%_clean) $(DLLS:%=%_clean) \
78 $(LOADERS:%=%_clean) $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) \
79 $(SYS_APPS:%=%_clean) $(APPS:%=%_clean) $(NET_APPS:%=%_clean)
80
81 .PHONY: clean
82
83 ifeq ($(HOST),mingw32-linux)
84 rcopy$(EXE_POSTFIX): rcopy.c
85 $(HOST_CC) -g -DUNIX_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
86 endif
87 ifeq ($(HOST),mingw32-windows)
88 rcopy$(EXE_POSTFIX): rcopy.c
89 $(HOST_CC) -g -DDOS_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
90 endif
91
92 ifeq ($(HOST),mingw32-linux)
93 rmkdir$(EXE_POSTFIX): rmkdir.c
94 $(HOST_CC) -g -DUNIX_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
95 endif
96 ifeq ($(HOST),mingw32-windows)
97 rmkdir$(EXE_POSTFIX): rmkdir.c
98 $(HOST_CC) -g -DDOS_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
99 endif
100
101 rdel$(EXE_POSTFIX): rdel.c
102 $(HOST_CC) -g rdel.c -liberty -o rdel$(EXE_POSTFIX)
103
104 install: rcopy$(EXE_POSTFIX) rmkdir$(EXE_POSTFIX) make_install_dirs autoexec_install \
105 $(COMPONENTS:%=%_install) $(BUS:%=%_install) \
106 $(DLLS:%=%_install) $(LOADERS:%=%_install) \
107 $(KERNEL_SERVICES:%=%_install) $(SUBSYS:%=%_install) \
108 $(SYS_APPS:%=%_install) $(APPS:%=%_install)
109
110 dist: rcopy$(EXE_POSTFIX) clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) \
111 $(BUS:%=%_dist) $(DLLS:%=%_dist) \
112 $(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \
113 $(SYS_APPS:%=%_dist) $(APPS:%=%_dist) $(NET_APPS:%=%_dist)
114
115 #
116 # Build number generator
117 #
118 buildno: include/reactos/version.h
119 make -C apps/buildno
120
121 buildno_clean:
122 make -C apps/buildno clean
123
124 buildno_dist:
125
126 buildno_install:
127
128 .PHONY: buildno buildno_clean buildno_dist buildno_install
129
130 #
131 # System Applications
132 #
133 $(SYS_APPS): %:
134 make -C apps/system/$*
135
136 $(SYS_APPS:%=%_clean): %_clean:
137 make -C apps/system/$* clean
138
139 $(SYS_APPS:%=%_dist): %_dist:
140 make -C apps/system/$* dist
141
142 $(SYS_APPS:%=%_install): %_install:
143 make -C apps/system/$* install
144
145 .PHONY: $(SYS_APPS) $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_dist)
146
147 #
148 # Applications
149 #
150 $(APPS): %:
151 make -C apps/$*
152
153 $(APPS:%=%_clean): %_clean:
154 make -C apps/$* clean
155
156 $(APPS:%=%_dist): %_dist:
157 make -C apps/$* dist
158
159 $(APPS:%=%_install): %_install:
160 make -C apps/$* install
161
162 .PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_install) $(APPS:%=%_dist)
163
164 #
165 # Network applications
166 #
167 $(NET_APPS): %:
168 make -C apps/net/$*
169
170 $(NET_APPS:%=%_clean): %_clean:
171 make -C apps/net/$* clean
172
173 $(NET_APPS:%=%_dist): %_dist:
174 make -C apps/net/$* dist
175
176 $(NET_APPS:%=%_install): %_install:
177 make -C apps/net/$* install
178
179 .PHONY: $(NET_APPS) $(NET_APPS:%=%_clean) $(NET_APPS:%=%_install) $(NET_APPS:%=%_dist)
180
181 #
182 # Interfaces
183 #
184 iface_native:
185 make -C iface/native
186
187 iface_native_clean:
188 make -C iface/native clean
189
190 iface_native_install:
191
192 iface_native_dist:
193
194 iface_additional:
195 make -C iface/addsys
196
197 iface_additional_clean:
198 make -C iface/addsys clean
199
200 iface_additional_install:
201
202 iface_additional_dist:
203
204 .PHONY: iface_native iface_native_clean iface_native_install \
205 iface_native_dist \
206 iface_additional iface_additional_clean iface_additional_install \
207 iface_additional_dist
208
209 #
210 # Bus driver rules
211 #
212 $(BUS): %:
213 make -C services/bus/$*
214
215 $(BUS:%=%_clean): %_clean:
216 make -C services/bus/$* clean
217
218 $(BUS:%=%_install): %_install:
219 make -C services/bus/$* install
220
221 $(BUS:%=%_dist): %_dist:
222 make -C services/bus/$* dist
223
224 .PHONY: $(BUS) $(BUS:%=%_clean) \
225 $(BUS:%=%_install) $(BUS:%=%_dist)
226
227 #
228 # Device driver rules
229 #
230 $(DEVICE_DRIVERS): %:
231 make -C services/dd/$*
232
233 $(DEVICE_DRIVERS:%=%_clean): %_clean:
234 make -C services/dd/$* clean
235
236 $(DEVICE_DRIVERS:%=%_install): %_install:
237 make -C services/dd/$* install
238
239 $(DEVICE_DRIVERS:%=%_dist): %_dist:
240 make -C services/dd/$* dist
241
242 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
243 $(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_dist)
244
245 #
246 # Input driver rules
247 #
248 $(INPUT_DRIVERS): %:
249 make -C services/input/$*
250
251 $(INPUT_DRIVERS:%=%_clean): %_clean:
252 make -C services/input/$* clean
253
254 $(INPUT_DRIVERS:%=%_install): %_install:
255 make -C services/input/$* install
256
257 $(INPUT_DRIVERS:%=%_dist): %_dist:
258 make -C services/input/$* dist
259
260 .PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_clean) \
261 $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_dist)
262
263 $(FS_DRIVERS): %:
264 make -C services/fs/$*
265
266 $(FS_DRIVERS:%=%_clean): %_clean:
267 make -C services/fs/$* clean
268
269 $(FS_DRIVERS:%=%_install): %_install:
270 make -C services/fs/$* install
271
272 $(FS_DRIVERS:%=%_dist): %_dist:
273 make -C services/fs/$* dist
274
275 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) \
276 $(FS_DRIVERS:%=%_install) $(FS_DRIVERS:%=%_dist)
277
278 #
279 # Network driver rules
280 #
281 $(NET_DRIVERS): %:
282 make -C services/net/$*
283
284 $(NET_DRIVERS:%=%_clean): %_clean:
285 make -C services/net/$* clean
286
287 $(NET_DRIVERS:%=%_install): %_install:
288 make -C services/net/$* install
289
290 $(NET_DRIVERS:%=%_dist): %_dist:
291 make -C services/net/$* dist
292
293 .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_clean) \
294 $(NET_DRIVERS:%=%_install) $(NET_DRIVERS:%=%_dist)
295
296 $(NET_DEVICE_DRIVERS): %:
297 make -C services/net/dd/$*
298
299 $(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
300 make -C services/net/dd/$* clean
301
302 $(NET_DEVICE_DRIVERS:%=%_install): %_install:
303 make -C services/net/dd/$* install
304
305 $(NET_DEVICE_DRIVERS:%=%_dist): %_dist:
306 make -C services/net/dd/$* dist
307
308 .PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) \
309 $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_dist)
310
311 #
312 # storage driver rules
313 #
314 $(STORAGE_DRIVERS): %:
315 make -C services/storage/$*
316
317 $(STORAGE_DRIVERS:%=%_clean): %_clean:
318 make -C services/storage/$* clean
319
320 $(STORAGE_DRIVERS:%=%_install): %_install:
321 make -C services/storage/$* install
322
323 $(STORAGE_DRIVERS:%=%_dist): %_dist:
324 make -C services/storage/$* dist
325
326 .PHONY: $(STORAGE_DRIVERS) $(STORAGE_DRIVERS:%=%_clean) \
327 $(STORAGE_DRIVERS:%=%_install) $(STORAGE_DRIVERS:%=%_dist)
328
329 #
330 # Kernel loaders
331 #
332
333 $(LOADERS): %:
334 make -C loaders/$*
335
336 $(LOADERS:%=%_clean): %_clean:
337 make -C loaders/$* clean
338
339 $(LOADERS:%=%_install): %_install:
340 make -C loaders/$* install
341
342 $(LOADERS:%=%_dist): %_dist:
343 make -C loaders/$* dist
344
345 .PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_install) \
346 $(LOADERS:%=%_dist)
347
348 #
349 # Required system components
350 #
351
352 ntoskrnl:
353 make -C ntoskrnl
354
355 ntoskrnl_clean:
356 make -C ntoskrnl clean
357
358 ntoskrnl_install:
359 make -C ntoskrnl install
360
361 ntoskrnl_dist:
362 make -C ntoskrnl dist
363
364 .PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
365
366 #
367 # Required DLLs
368 #
369
370 $(DLLS): %:
371 make -C lib/$*
372
373 $(DLLS:%=%_clean): %_clean:
374 make -C lib/$* clean
375
376 $(DLLS:%=%_install): %_install:
377 make -C lib/$* install
378
379 $(DLLS:%=%_dist): %_dist:
380 make -C lib/$* dist
381
382 .PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_install) $(DLLS:%=%_dist)
383
384 #
385 # Kernel Subsystems
386 #
387
388 $(SUBSYS): %:
389 make -C subsys/$*
390
391 $(SUBSYS:%=%_clean): %_clean:
392 make -C subsys/$* clean
393
394 $(SUBSYS:%=%_install): %_install:
395 make -C subsys/$* install
396
397 $(SUBSYS:%=%_dist): %_dist:
398 make -C subsys/$* dist
399
400 .PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
401 $(SUBSYS:%=%_dist)
402
403 #
404 # Make an install floppy
405 #
406 make_install_dirs:
407 ./rmkdir $(FLOPPY_DIR)/dlls
408 ./rmkdir $(FLOPPY_DIR)/apps
409 ./rmkdir $(FLOPPY_DIR)/drivers
410 ./rmkdir $(FLOPPY_DIR)/subsys
411
412
413 .PHONY: make_install_dirs
414
415 autoexec_install: $(FLOPPY_DIR)/autoexec.bat
416
417 $(FLOPPY_DIR)/autoexec.bat: bootflop.bat
418 $(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat
419
420 #
421 # Make a distribution saveset
422 #
423
424 clean_dist_dir:
425 ifeq ($(DOSCLI),yes)
426 - $(RM) $(DIST_DIR)\dlls\*.dll
427 - $(RM) $(DIST_DIR)\apps\*.exe
428 - $(RM) $(DIST_DIR)\drivers\*.sys
429 - $(RM) $(DIST_DIR)\subsys\*.exe
430 - $(RMDIR) $(DIST_DIR)\dlls
431 - $(RMDIR) $(DIST_DIR)\apps
432 - $(RMDIR) $(DIST_DIR)\drivers
433 - $(RMDIR) $(DIST_DIR)\subsys
434 - $(RMDIR) $(DIST_DIR)
435 else
436 $(RM) -r $(DIST_DIR)
437 endif
438
439 make_dist_dirs: ./rmkdir
440 ./rmkdir $(DIST_DIR)
441 ./rmkdir $(DIST_DIR)/dlls
442 ./rmkdir $(DIST_DIR)/apps
443 ./rmkdir $(DIST_DIR)/drivers
444 ./rmkdir $(DIST_DIR)/dlls
445 ./rmkdir $(DIST_DIR)/subsys
446
447 .PHONY: clean_dist_dir make_dist_dirs
448
449 #
450 #
451 #
452 etags:
453 find . -name "*.[ch]" -print | etags --language=c -
454
455 # EOF