Removed cmd target
[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 ntoskrnl
18 DLLS = ntdll kernel32 crtdll advapi32 fmifs gdi32
19 #DLLS = mingw32 user32
20 SUBSYS = smss win32k
21 #SUBSYS = csrss
22
23 #
24 # Select the server(s) you want to build
25 #
26 SERVERS = win32
27 # SERVERS = posix linux os2
28
29 #
30 # Select the loader(s) you want to build
31 #
32 LOADERS = dos
33 # LOADERS = boot
34
35 #
36 # Select the device drivers and filesystems you want
37 #
38 DEVICE_DRIVERS = blue ide keyboard null parallel serial
39 # DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1
40 FS_DRIVERS = vfat
41 # FS_DRIVERS = minix ext2 template
42 KERNEL_SERVICES = $(DEVICE_DRIVERS) $(FS_DRIVERS)
43
44 APPS = args hello shell test cat bench apc shm lpc thread event
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 .PHONY: iface_native iface_native_clean iface_native_floppy \
110 iface_native_dist
111
112 #
113 # Device driver rules
114 #
115 $(DEVICE_DRIVERS): %:
116 make -C services/dd/$*
117
118 $(DEVICE_DRIVERS:%=%_clean): %_clean:
119 make -C services/dd/$* clean
120
121 $(DEVICE_DRIVERS:%=%_floppy): %_floppy:
122 make -C services/dd/$* floppy
123
124 $(DEVICE_DRIVERS:%=%_dist): %_dist:
125 make -C services/dd/$* dist
126
127 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
128 $(DEVICE_DRIVERS:%=%_floppy) $(DEVICE_DRIVERS:%=%_dist)
129
130 $(FS_DRIVERS): %:
131 make -C services/fs/$*
132
133 $(FS_DRIVERS:%=%_clean): %_clean:
134 make -C services/fs/$* clean
135
136 $(FS_DRIVERS:%=%_floppy): %_floppy:
137 make -C services/fs/$* floppy
138
139 $(FS_DRIVERS:%=%_dist): %_dist:
140 make -C services/fs/$* dist
141
142 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_floppy) \
143 $(FS_DRIVERS:%=%_dist)
144
145 #
146 # Kernel loaders
147 #
148
149 $(LOADERS): %:
150 make -C loaders/$*
151
152 $(LOADERS:%=%_clean): %_clean:
153 make -C loaders/$* clean
154
155 $(LOADERS:%=%_floppy): %_floppy:
156 make -C loaders/$* floppy
157
158 $(LOADERS:%=%_dist): %_dist:
159 make -C loaders/$* dist
160
161 .PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_floppy) \
162 $(LOADERS:%=%_dist)
163
164 #
165 # Required system components
166 #
167
168 ntoskrnl:
169 make -C ntoskrnl
170
171 ntoskrnl_clean:
172 make -C ntoskrnl clean
173
174 ntoskrnl_floppy:
175 make -C ntoskrnl floppy
176
177 ntoskrnl_dist:
178 make -C ntoskrnl dist
179
180 .PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_floppy ntoskrnl_dist
181
182 #
183 # Required DLLs
184 #
185
186 $(DLLS): %:
187 make -C lib/$*
188
189 $(DLLS:%=%_clean): %_clean:
190 make -C lib/$* clean
191
192 $(DLLS:%=%_floppy): %_floppy:
193 make -C lib/$* floppy
194
195 $(DLLS:%=%_dist): %_dist:
196 make -C lib/$* dist
197
198 .PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_floppy) $(DLLS:%=%_dist)
199
200 #
201 # Kernel Subsystems
202 #
203 $(SUBSYS): %:
204 make -C subsys/$*
205
206 $(SUBSYS:%=%_clean): %_clean:
207 make -C subsys/$* clean
208
209 $(SUBSYS:%=%_floppy): %_floppy:
210 make -C subsys/$* floppy
211
212 $(SUBSYS:%=%_dist): %_dist:
213 make -C subsys/$* dist
214
215 .PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_floppy) \
216 $(SUBSYS:%=%_dist)
217
218 #
219 # Make an install floppy
220 #
221
222 install: all
223 ./install.sh /mnt/hda1
224
225 make_floppy_dirs:
226 ifeq ($(DOSCLI),yes)
227 mkdir $(FLOPPY_DIR)\dlls
228 mkdir $(FLOPPY_DIR)\apps
229 mkdir $(FLOPPY_DIR)\drivers
230 mkdir $(FLOPPY_DIR)\subsys
231 else
232 mkdir $(FLOPPY_DIR)/dlls $(FLOPPY_DIR)/apps $(FLOPPY_DIR)/drivers
233 mkdir $(FLOPPY_DIR)/subsys
234 endif
235
236 .PHONY: make_floppy_dirs
237
238 autoexec_floppy: $(FLOPPY_DIR)/autoexec.bat
239
240 $(FLOPPY_DIR)/autoexec.bat: bootflop.bat
241 ifeq ($(DOSCLI),yes)
242 $(CP) bootflop.bat $(FLOPPY_DIR)\autoexec.bat
243 else
244 $(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat
245 endif
246
247 #
248 # Make a distribution saveset
249 #
250
251 clean_dist_dir:
252 ifeq ($(DOSCLI),yes)
253 $(RM) $(DIST_DIR)\dlls\*.*
254 $(RM) $(DIST_DIR)\apps\*.*
255 $(RM) $(DIST_DIR)\drivers\*.*
256 $(RM) $(DIST_DIR)\subsys\*.*
257 $(RMDIR) $(DIST_DIR)\dlls
258 $(RMDIR) $(DIST_DIR)\apps
259 $(RMDIR) $(DIST_DIR)\drivers
260 $(RMDIR) $(DIST_DIR)\subsys
261 $(RMDIR) $(DIST_DIR)
262 else
263 $(RM) -r $(DIST_DIR)
264 endif
265
266 make_dist_dirs:
267 ifeq ($(DOSCLI),yes)
268 mkdir $(DIST_DIR)
269 mkdir $(DIST_DIR)\dlls
270 mkdir $(DIST_DIR)\apps
271 mkdir $(DIST_DIR)\drivers
272 mkdir $(DIST_DIR)\dlls
273 mkdir $(DIST_DIR)\subsys
274 else
275 mkdir $(DIST_DIR) $(DIST_DIR)/dlls $(DIST_DIR)/apps $(DIST_DIR)/drivers
276 mkdir $(DIST_DIR)/subsys
277 endif
278
279 .PHONY: clean_dist_dir make_dist_dirs
280