Some old Fs/Po code added to the makefile
[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 # APPS = cmd
46
47 all: buildno $(COMPONENTS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(APPS)
48
49 .PHONY: all
50
51 clean: buildno_clean $(COMPONENTS:%=%_clean) $(DLLS:%=%_clean) $(LOADERS:%=%_clean) \
52 $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) $(APPS:%=%_clean)
53
54 .PHONY: clean
55
56 floppy: make_floppy_dirs autoexec_floppy $(COMPONENTS:%=%_floppy) \
57 $(DLLS:%=%_floppy) $(LOADERS:%=%_floppy) \
58 $(KERNEL_SERVICES:%=%_floppy) $(SUBSYS:%=%_floppy) \
59 $(APPS:%=%_floppy)
60
61 dist: clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) $(DLLS:%=%_dist) \
62 $(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \
63 $(APPS:%=%_dist)
64
65 #
66 # Build number generator
67 #
68 buildno: include/reactos/version.h
69 make -C apps/buildno
70
71 buildno_clean:
72 make -C apps/buildno clean
73
74 buildno_floppy:
75
76 buildno_dist:
77
78 .PHONY: buildno buildno_clean buildno_floppy buildno_dist
79
80 #
81 # Applications
82 #
83 $(APPS): %:
84 make -C apps/$*
85
86 $(APPS:%=%_clean): %_clean:
87 make -C apps/$* clean
88
89 $(APPS:%=%_floppy): %_floppy:
90 make -C apps/$* floppy
91
92 $(APPS:%=%_dist): %_dist:
93 make -C apps/$* dist
94
95 .PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_floppy) $(APPS:%=%_dist)
96
97 #
98 # Interfaces
99 #
100 iface_native:
101 make -C iface/native
102
103 iface_native_clean:
104 make -C iface/native clean
105
106 iface_native_floppy:
107
108 iface_native_dist:
109
110 .PHONY: iface_native iface_native_clean iface_native_floppy \
111 iface_native_dist
112
113 #
114 # Device driver rules
115 #
116 $(DEVICE_DRIVERS): %:
117 make -C services/dd/$*
118
119 $(DEVICE_DRIVERS:%=%_clean): %_clean:
120 make -C services/dd/$* clean
121
122 $(DEVICE_DRIVERS:%=%_floppy): %_floppy:
123 make -C services/dd/$* floppy
124
125 $(DEVICE_DRIVERS:%=%_dist): %_dist:
126 make -C services/dd/$* dist
127
128 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
129 $(DEVICE_DRIVERS:%=%_floppy) $(DEVICE_DRIVERS:%=%_dist)
130
131 $(FS_DRIVERS): %:
132 make -C services/fs/$*
133
134 $(FS_DRIVERS:%=%_clean): %_clean:
135 make -C services/fs/$* clean
136
137 $(FS_DRIVERS:%=%_floppy): %_floppy:
138 make -C services/fs/$* floppy
139
140 $(FS_DRIVERS:%=%_dist): %_dist:
141 make -C services/fs/$* dist
142
143 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_floppy) \
144 $(FS_DRIVERS:%=%_dist)
145
146 #
147 # Kernel loaders
148 #
149
150 $(LOADERS): %:
151 make -C loaders/$*
152
153 $(LOADERS:%=%_clean): %_clean:
154 make -C loaders/$* clean
155
156 $(LOADERS:%=%_floppy): %_floppy:
157 make -C loaders/$* floppy
158
159 $(LOADERS:%=%_dist): %_dist:
160 make -C loaders/$* dist
161
162 .PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_floppy) \
163 $(LOADERS:%=%_dist)
164
165 #
166 # Required system components
167 #
168
169 ntoskrnl:
170 make -C ntoskrnl
171
172 ntoskrnl_clean:
173 make -C ntoskrnl clean
174
175 ntoskrnl_floppy:
176 make -C ntoskrnl floppy
177
178 ntoskrnl_dist:
179 make -C ntoskrnl dist
180
181 .PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_floppy ntoskrnl_dist
182
183 #
184 # Required DLLs
185 #
186
187 $(DLLS): %:
188 make -C lib/$*
189
190 $(DLLS:%=%_clean): %_clean:
191 make -C lib/$* clean
192
193 $(DLLS:%=%_floppy): %_floppy:
194 make -C lib/$* floppy
195
196 $(DLLS:%=%_dist): %_dist:
197 make -C lib/$* dist
198
199 .PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_floppy) $(DLLS:%=%_dist)
200
201 #
202 # Kernel Subsystems
203 #
204 $(SUBSYS): %:
205 make -C subsys/$*
206
207 $(SUBSYS:%=%_clean): %_clean:
208 make -C subsys/$* clean
209
210 $(SUBSYS:%=%_floppy): %_floppy:
211 make -C subsys/$* floppy
212
213 $(SUBSYS:%=%_dist): %_dist:
214 make -C subsys/$* dist
215
216 .PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_floppy) \
217 $(SUBSYS:%=%_dist)
218
219 #
220 # Make an install floppy
221 #
222
223 install: all
224 ./install.sh /mnt/hda1
225
226 make_floppy_dirs:
227 ifeq ($(DOSCLI),yes)
228 mkdir $(FLOPPY_DIR)\dlls
229 mkdir $(FLOPPY_DIR)\apps
230 mkdir $(FLOPPY_DIR)\drivers
231 mkdir $(FLOPPY_DIR)\subsys
232 else
233 mkdir $(FLOPPY_DIR)/dlls $(FLOPPY_DIR)/apps $(FLOPPY_DIR)/drivers
234 mkdir $(FLOPPY_DIR)/subsys
235 endif
236
237 .PHONY: make_floppy_dirs
238
239 autoexec_floppy: $(FLOPPY_DIR)/autoexec.bat
240
241 $(FLOPPY_DIR)/autoexec.bat: bootflop.bat
242 ifeq ($(DOSCLI),yes)
243 $(CP) bootflop.bat $(FLOPPY_DIR)\autoexec.bat
244 else
245 $(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat
246 endif
247
248 #
249 # Make a distribution saveset
250 #
251
252 clean_dist_dir:
253 ifeq ($(DOSCLI),yes)
254 $(RM) $(DIST_DIR)\dlls\*.*
255 $(RM) $(DIST_DIR)\apps\*.*
256 $(RM) $(DIST_DIR)\drivers\*.*
257 $(RM) $(DIST_DIR)\subsys\*.*
258 $(RMDIR) $(DIST_DIR)\dlls
259 $(RMDIR) $(DIST_DIR)\apps
260 $(RMDIR) $(DIST_DIR)\drivers
261 $(RMDIR) $(DIST_DIR)\subsys
262 $(RMDIR) $(DIST_DIR)
263 else
264 $(RM) -r $(DIST_DIR)
265 endif
266
267 make_dist_dirs:
268 ifeq ($(DOSCLI),yes)
269 mkdir $(DIST_DIR)
270 mkdir $(DIST_DIR)\dlls
271 mkdir $(DIST_DIR)\apps
272 mkdir $(DIST_DIR)\drivers
273 mkdir $(DIST_DIR)\dlls
274 mkdir $(DIST_DIR)\subsys
275 else
276 mkdir $(DIST_DIR) $(DIST_DIR)/dlls $(DIST_DIR)/apps $(DIST_DIR)/drivers
277 mkdir $(DIST_DIR)/subsys
278 endif
279
280 .PHONY: clean_dist_dir make_dist_dirs
281