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