Some STDCALL/FASTCALL added in Ex code.
[reactos.git] / reactos / Makefile
1 #
2 # Global makefile
3 #
4
5 #
6 # Select your host
7 #
8 #HOST = mingw32-linux
9 #HOST = djgpp-msdos
10 #HOST = mingw32-windows
11
12 include rules.mak
13
14 #
15 # Required to run the system
16 #
17 COMPONENTS = iface_native iface_additional ntoskrnl
18 DLLS = ntdll kernel32 crtdll advapi32 fmifs gdi32
19 #DLLS = mingw32
20 SUBSYS = smss win32k csrss
21
22 #
23 # Select the server(s) you want to build
24 #
25 SERVERS = win32
26 # SERVERS = posix linux os2
27
28 #
29 # Select the loader(s) you want to build
30 #
31 LOADERS = dos
32 # LOADERS = boot
33
34 #
35 # Select the device drivers and filesystems you want
36 #
37 DEVICE_DRIVERS = blue ide keyboard null parallel serial vidport
38 # DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1
39 FS_DRIVERS = vfat minix
40 # FS_DRIVERS = minix ext2 template
41 KERNEL_SERVICES = $(DEVICE_DRIVERS) $(FS_DRIVERS)
42
43 APPS = args hello shell test cat bench apc shm lpc thread event file gditest \
44 pteb objdir
45
46 all: buildno $(COMPONENTS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(APPS)
47
48 .PHONY: all
49
50 clean: buildno_clean $(COMPONENTS:%=%_clean) $(DLLS:%=%_clean) $(LOADERS:%=%_clean) \
51 $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) $(APPS:%=%_clean)
52
53 .PHONY: clean
54
55 floppy: make_floppy_dirs autoexec_floppy $(COMPONENTS:%=%_floppy) \
56 $(DLLS:%=%_floppy) $(LOADERS:%=%_floppy) \
57 $(KERNEL_SERVICES:%=%_floppy) $(SUBSYS:%=%_floppy) \
58 $(APPS:%=%_floppy)
59
60 dist: clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) $(DLLS:%=%_dist) \
61 $(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \
62 $(APPS:%=%_dist)
63
64 #
65 # Build number generator
66 #
67 buildno: include/reactos/version.h
68 make -C apps/buildno
69
70 buildno_clean:
71 make -C apps/buildno clean
72
73 buildno_floppy:
74
75 buildno_dist:
76
77 .PHONY: buildno buildno_clean buildno_floppy buildno_dist
78
79 #
80 # Applications
81 #
82 $(APPS): %:
83 make -C apps/$*
84
85 $(APPS:%=%_clean): %_clean:
86 make -C apps/$* clean
87
88 $(APPS:%=%_floppy): %_floppy:
89 make -C apps/$* floppy
90
91 $(APPS:%=%_dist): %_dist:
92 make -C apps/$* dist
93
94 .PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_floppy) $(APPS:%=%_dist)
95
96 #
97 # Interfaces
98 #
99 iface_native:
100 make -C iface/native
101
102 iface_native_clean:
103 make -C iface/native clean
104
105 iface_native_floppy:
106
107 iface_native_dist:
108
109 iface_additional:
110 make -C iface/addsys
111
112 iface_additional_clean:
113 make -C iface/addsys clean
114
115 iface_additional_floppy:
116
117 iface_additional_dist:
118
119 .PHONY: iface_native iface_native_clean iface_native_floppy \
120 iface_native_dist \
121 iface_additional iface_additional_clean iface_additional_floppy \
122 iface_additional_dist \
123
124 #
125 # Device driver rules
126 #
127 $(DEVICE_DRIVERS): %:
128 make -C services/dd/$*
129
130 $(DEVICE_DRIVERS:%=%_clean): %_clean:
131 make -C services/dd/$* clean
132
133 $(DEVICE_DRIVERS:%=%_floppy): %_floppy:
134 make -C services/dd/$* floppy
135
136 $(DEVICE_DRIVERS:%=%_dist): %_dist:
137 make -C services/dd/$* dist
138
139 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
140 $(DEVICE_DRIVERS:%=%_floppy) $(DEVICE_DRIVERS:%=%_dist)
141
142 $(FS_DRIVERS): %:
143 make -C services/fs/$*
144
145 $(FS_DRIVERS:%=%_clean): %_clean:
146 make -C services/fs/$* clean
147
148 $(FS_DRIVERS:%=%_floppy): %_floppy:
149 make -C services/fs/$* floppy
150
151 $(FS_DRIVERS:%=%_dist): %_dist:
152 make -C services/fs/$* dist
153
154 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_floppy) \
155 $(FS_DRIVERS:%=%_dist)
156
157 #
158 # Kernel loaders
159 #
160
161 $(LOADERS): %:
162 make -C loaders/$*
163
164 $(LOADERS:%=%_clean): %_clean:
165 make -C loaders/$* clean
166
167 $(LOADERS:%=%_floppy): %_floppy:
168 make -C loaders/$* floppy
169
170 $(LOADERS:%=%_dist): %_dist:
171 make -C loaders/$* dist
172
173 .PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_floppy) \
174 $(LOADERS:%=%_dist)
175
176 #
177 # Required system components
178 #
179
180 ntoskrnl:
181 make -C ntoskrnl
182
183 ntoskrnl_clean:
184 make -C ntoskrnl clean
185
186 ntoskrnl_floppy:
187 make -C ntoskrnl floppy
188
189 ntoskrnl_dist:
190 make -C ntoskrnl dist
191
192 .PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_floppy ntoskrnl_dist
193
194 #
195 # Required DLLs
196 #
197
198 $(DLLS): %:
199 make -C lib/$*
200
201 $(DLLS:%=%_clean): %_clean:
202 make -C lib/$* clean
203
204 $(DLLS:%=%_floppy): %_floppy:
205 make -C lib/$* floppy
206
207 $(DLLS:%=%_dist): %_dist:
208 make -C lib/$* dist
209
210 .PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_floppy) $(DLLS:%=%_dist)
211
212 #
213 # Kernel Subsystems
214 #
215 $(SUBSYS): %:
216 make -C subsys/$*
217
218 $(SUBSYS:%=%_clean): %_clean:
219 make -C subsys/$* clean
220
221 $(SUBSYS:%=%_floppy): %_floppy:
222 make -C subsys/$* floppy
223
224 $(SUBSYS:%=%_dist): %_dist:
225 make -C subsys/$* dist
226
227 .PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_floppy) \
228 $(SUBSYS:%=%_dist)
229
230 #
231 # Make an install floppy
232 #
233
234 install: all
235 ./install.sh /mnt/hda1
236 ./install.sh /mnt/hda4
237
238 make_floppy_dirs:
239 ifeq ($(DOSCLI),yes)
240 mkdir $(FLOPPY_DIR)\dlls
241 mkdir $(FLOPPY_DIR)\apps
242 mkdir $(FLOPPY_DIR)\drivers
243 mkdir $(FLOPPY_DIR)\subsys
244 else
245 mkdir $(FLOPPY_DIR)/dlls $(FLOPPY_DIR)/apps $(FLOPPY_DIR)/drivers
246 mkdir $(FLOPPY_DIR)/subsys
247 endif
248
249 .PHONY: make_floppy_dirs
250
251 autoexec_floppy: $(FLOPPY_DIR)/autoexec.bat
252
253 $(FLOPPY_DIR)/autoexec.bat: bootflop.bat
254 ifeq ($(DOSCLI),yes)
255 $(CP) bootflop.bat $(FLOPPY_DIR)\autoexec.bat
256 else
257 $(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat
258 endif
259
260 #
261 # Make a distribution saveset
262 #
263
264 clean_dist_dir:
265 ifeq ($(DOSCLI),yes)
266 - $(RM) $(DIST_DIR)\dlls\*.dll
267 - $(RM) $(DIST_DIR)\apps\*.exe
268 - $(RM) $(DIST_DIR)\drivers\*.sys
269 - $(RM) $(DIST_DIR)\subsys\*.exe
270 - $(RMDIR) $(DIST_DIR)\dlls
271 - $(RMDIR) $(DIST_DIR)\apps
272 - $(RMDIR) $(DIST_DIR)\drivers
273 - $(RMDIR) $(DIST_DIR)\subsys
274 - $(RMDIR) $(DIST_DIR)
275 else
276 $(RM) -r $(DIST_DIR)
277 endif
278
279 make_dist_dirs:
280 ifeq ($(DOSCLI),yes)
281 mkdir $(DIST_DIR)
282 mkdir $(DIST_DIR)\dlls
283 mkdir $(DIST_DIR)\apps
284 mkdir $(DIST_DIR)\drivers
285 mkdir $(DIST_DIR)\dlls
286 mkdir $(DIST_DIR)\subsys
287 else
288 mkdir $(DIST_DIR) $(DIST_DIR)/dlls $(DIST_DIR)/apps $(DIST_DIR)/drivers
289 mkdir $(DIST_DIR)/subsys
290 endif
291
292 .PHONY: clean_dist_dir make_dist_dirs
293