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