9 #HOST = mingw32-windows
16 # Required to run the system
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
23 # Select the server(s) you want to build
25 #SERVERS = posix linux os2
29 # Select the loader(s) you want to build
35 # Select the device drivers and filesystems you want
37 #DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1 parallel serial
38 DEVICE_DRIVERS
= vidport vga blue ide null floppy
40 #INPUT_DRIVERS = keyboard
41 INPUT_DRIVERS
= keyboard
43 #FS_DRIVERS = vfat minix ext2 template
46 #NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
47 NET_DRIVERS
= ndis tcpip tditest wshtcpip afd
49 #NET_DEVICE_DRIVERS = ne2000
50 NET_DEVICE_DRIVERS
= ne2000
53 # system applications (required for startup)
55 #SYS_APPS = shell winlogon services
56 SYS_APPS
= shell winlogon services
58 APPS
= args hello
test cat bench apc shm lpc thread event file gditest \
59 pteb consume dump_shared_data vmtest regtest timer
63 #NET_APPS = ping roshttpd
67 KERNEL_SERVICES
= $(DEVICE_DRIVERS
) $(INPUT_DRIVERS
) $(FS_DRIVERS
) $(NET_DRIVERS
) $(NET_DEVICE_DRIVERS
)
69 all: buildno
$(COMPONENTS
) $(DLLS
) $(SUBSYS
) $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) $(NET_APPS
)
73 clean: buildno_clean
$(COMPONENTS
:%=%_clean
) $(DLLS
:%=%_clean
) $(LOADERS
:%=%_clean
) \
74 $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
)
78 ifeq ($(HOST
),mingw32-linux
)
79 rcopy
$(EXE_POSTFIX
): rcopy.c
80 $(HOST_CC
) -g
-DUNIX_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
82 ifeq ($(HOST
),mingw32-windows
)
83 rcopy
$(EXE_POSTFIX
): rcopy.c
84 $(HOST_CC
) -g
-DDOS_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
87 ifeq ($(HOST
),mingw32-linux
)
88 rmkdir
$(EXE_POSTFIX
): rmkdir.c
89 $(HOST_CC
) -g
-DUNIX_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
91 ifeq ($(HOST
),mingw32-windows
)
92 rmkdir
$(EXE_POSTFIX
): rmkdir.c
93 $(HOST_CC
) -g
-DDOS_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
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
)
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
)
107 # Build number generator
109 buildno
: include/reactos
/version.h
113 make
-C apps
/buildno
clean
119 .PHONY
: buildno buildno_clean buildno_dist buildno_install
122 # System Applications
125 make
-C apps
/system
/$*
127 $(SYS_APPS
:%=%_clean
): %_clean
:
128 make
-C apps
/system
/$* clean
130 $(SYS_APPS
:%=%_dist
): %_dist
:
131 make
-C apps
/system
/$* dist
133 $(SYS_APPS
:%=%_install
): %_install
:
134 make
-C apps
/system
/$* install
136 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
144 $(APPS
:%=%_clean
): %_clean
:
145 make
-C apps
/$* clean
147 $(APPS
:%=%_dist
): %_dist
:
150 $(APPS
:%=%_install
): %_install
:
151 make
-C apps
/$* install
153 .PHONY
: $(APPS
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
156 # Network applications
161 $(NET_APPS
:%=%_clean
): %_clean
:
162 make
-C apps
/net
/$* clean
164 $(NET_APPS
:%=%_dist
): %_dist
:
165 make
-C apps
/net
/$* dist
167 $(NET_APPS
:%=%_install
): %_install
:
168 make
-C apps
/net
/$* install
170 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
179 make
-C iface
/native
clean
181 iface_native_install
:
188 iface_additional_clean
:
189 make
-C iface
/addsys
clean
191 iface_additional_install
:
193 iface_additional_dist
:
195 .PHONY
: iface_native iface_native_clean iface_native_install \
197 iface_additional iface_additional_clean iface_additional_install \
198 iface_additional_dist
201 # Device driver rules
203 $(DEVICE_DRIVERS
): %:
204 make
-C services
/dd
/$*
206 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
207 make
-C services
/dd
/$* clean
209 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
210 make
-C services
/dd
/$* install
212 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
213 make
-C services
/dd
/$* dist
215 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_clean
) \
216 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
222 make
-C services
/input
/$*
224 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
225 make
-C services
/input
/$* clean
227 $(INPUT_DRIVERS
:%=%_install
): %_install
:
228 make
-C services
/input
/$* install
230 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
231 make
-C services
/input
/$* dist
233 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_clean
) \
234 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
237 make
-C services
/fs
/$*
239 $(FS_DRIVERS
:%=%_clean
): %_clean
:
240 make
-C services
/fs
/$* clean
242 $(FS_DRIVERS
:%=%_install
): %_install
:
243 make
-C services
/fs
/$* install
245 $(FS_DRIVERS
:%=%_dist
): %_dist
:
246 make
-C services
/fs
/$* dist
248 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_clean
) $(FS_DRIVERS
:%=%_install
) \
249 $(FS_DRIVERS
:%=%_dist
)
252 make
-C services
/net
/$*
254 $(NET_DRIVERS
:%=%_clean
): %_clean
:
255 make
-C services
/net
/$* clean
257 $(NET_DRIVERS
:%=%_install
): %_install
:
258 make
-C services
/net
/$* install
260 $(NET_DRIVERS
:%=%_dist
): %_dist
:
261 make
-C services
/net
/$* dist
263 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_clean
) $(NET_DRIVERS
:%=%_install
) \
264 $(NET_DRIVERS
:%=%_dist
)
266 $(NET_DEVICE_DRIVERS
): %:
267 make
-C services
/net
/dd
/$*
269 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
270 make
-C services
/net
/dd
/$* clean
272 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
273 make
-C services
/net
/dd
/$* install
275 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
276 make
-C services
/net
/dd
/$* dist
278 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) \
279 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
288 $(LOADERS
:%=%_clean
): %_clean
:
289 make
-C loaders
/$* clean
291 $(LOADERS
:%=%_install
): %_install
:
292 make
-C loaders
/$* install
294 $(LOADERS
:%=%_dist
): %_dist
:
295 make
-C loaders
/$* dist
297 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
301 # Required system components
308 make
-C ntoskrnl
clean
311 make
-C ntoskrnl
install
314 make
-C ntoskrnl
dist
316 .PHONY
: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
325 $(DLLS
:%=%_clean
): %_clean
:
328 $(DLLS
:%=%_install
): %_install
:
329 make
-C lib
/$* install
331 $(DLLS
:%=%_dist
): %_dist
:
334 .PHONY
: $(DLLS
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
343 $(SUBSYS
:%=%_clean
): %_clean
:
344 make
-C subsys
/$* clean
346 $(SUBSYS
:%=%_install
): %_install
:
347 make
-C subsys
/$* install
349 $(SUBSYS
:%=%_dist
): %_dist
:
350 make
-C subsys
/$* dist
352 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
356 # Make an install floppy
359 .
/rmkdir
$(FLOPPY_DIR
)/dlls
360 .
/rmkdir
$(FLOPPY_DIR
)/apps
361 .
/rmkdir
$(FLOPPY_DIR
)/drivers
362 .
/rmkdir
$(FLOPPY_DIR
)/subsys
365 .PHONY
: make_install_dirs
367 autoexec_install
: $(FLOPPY_DIR
)/autoexec.bat
369 $(FLOPPY_DIR
)/autoexec.bat
: bootflop.bat
370 $(CP
) bootflop.bat
$(FLOPPY_DIR
)/autoexec.bat
373 # Make a distribution saveset
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
)
391 make_dist_dirs
: .
/rmkdir
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
399 .PHONY
: clean_dist_dir make_dist_dirs
405 find .
-name
"*.[ch]" -print | etags
--language
=c
-