9 #HOST = mingw32-windows
16 # Required to run the system
18 COMPONENTS
= iface_native iface_additional ntoskrnl
20 DLLS
= ntdll kernel32 crtdll advapi32 fmifs gdi32 secur32 user32 ws2_32 msafd msvcrt
21 SUBSYS
= smss win32k csrss
24 # Select the server(s) you want to build
26 #SERVERS = posix linux os2
30 # Select the loader(s) you want to build
36 # Select the device drivers and filesystems you want
38 #DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1 parallel serial
39 DEVICE_DRIVERS
= vidport vga blue ide null floppy
41 #INPUT_DRIVERS = keyboard
42 INPUT_DRIVERS
= keyboard
44 #FS_DRIVERS = vfat minix ext2 template
47 #NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
48 NET_DRIVERS
= ndis tcpip tditest wshtcpip afd
50 #NET_DEVICE_DRIVERS = ne2000
51 NET_DEVICE_DRIVERS
= ne2000
54 # system applications (required for startup)
56 #SYS_APPS = shell winlogon services
57 SYS_APPS
= shell winlogon services
59 APPS
= args hello
test cat bench apc shm lpc thread event file gditest \
60 pteb consume dump_shared_data vmtest regtest alive
64 #NET_APPS = ping roshttpd
68 KERNEL_SERVICES
= $(DEVICE_DRIVERS
) $(INPUT_DRIVERS
) $(FS_DRIVERS
) $(NET_DRIVERS
) $(NET_DEVICE_DRIVERS
)
70 all: buildno
$(COMPONENTS
) $(BUS
) $(DLLS
) $(SUBSYS
) $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) $(NET_APPS
)
74 clean: buildno_clean
$(COMPONENTS
:%=%_clean
) $(BUS
:%=%_clean
) $(DLLS
:%=%_clean
) $(LOADERS
:%=%_clean
) \
75 $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
)
79 ifeq ($(HOST
),mingw32-linux
)
80 rcopy
$(EXE_POSTFIX
): rcopy.c
81 $(HOST_CC
) -g
-DUNIX_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
83 ifeq ($(HOST
),mingw32-windows
)
84 rcopy
$(EXE_POSTFIX
): rcopy.c
85 $(HOST_CC
) -g
-DDOS_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
88 ifeq ($(HOST
),mingw32-linux
)
89 rmkdir
$(EXE_POSTFIX
): rmkdir.c
90 $(HOST_CC
) -g
-DUNIX_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
92 ifeq ($(HOST
),mingw32-windows
)
93 rmkdir
$(EXE_POSTFIX
): rmkdir.c
94 $(HOST_CC
) -g
-DDOS_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
98 install: rcopy
$(EXE_POSTFIX
) rmkdir
$(EXE_POSTFIX
) make_install_dirs autoexec_install \
99 $(COMPONENTS
:%=%_install
) $(BUS
:%=%_install
) \
100 $(DLLS
:%=%_install
) $(LOADERS
:%=%_install
) \
101 $(KERNEL_SERVICES
:%=%_install
) $(SUBSYS
:%=%_install
) \
102 $(SYS_APPS
:%=%_install
) $(APPS
:%=%_install
)
104 dist: rcopy
$(EXE_POSTFIX
) clean_dist_dir make_dist_dirs
$(COMPONENTS
:%=%_dist
) \
105 $(BUS
:%=%_dist
) $(DLLS
:%=%_dist
) \
106 $(LOADERS
:%=%_dist
) $(KERNEL_SERVICES
:%=%_dist
) $(SUBSYS
:%=%_dist
) \
107 $(SYS_APPS
:%=%_dist
) $(APPS
:%=%_dist
)
110 # Build number generator
112 buildno
: include/reactos
/version.h
116 make
-C apps
/buildno
clean
122 .PHONY
: buildno buildno_clean buildno_dist buildno_install
125 # System Applications
128 make
-C apps
/system
/$*
130 $(SYS_APPS
:%=%_clean
): %_clean
:
131 make
-C apps
/system
/$* clean
133 $(SYS_APPS
:%=%_dist
): %_dist
:
134 make
-C apps
/system
/$* dist
136 $(SYS_APPS
:%=%_install
): %_install
:
137 make
-C apps
/system
/$* install
139 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
147 $(APPS
:%=%_clean
): %_clean
:
148 make
-C apps
/$* clean
150 $(APPS
:%=%_dist
): %_dist
:
153 $(APPS
:%=%_install
): %_install
:
154 make
-C apps
/$* install
156 .PHONY
: $(APPS
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
159 # Network applications
164 $(NET_APPS
:%=%_clean
): %_clean
:
165 make
-C apps
/net
/$* clean
167 $(NET_APPS
:%=%_dist
): %_dist
:
168 make
-C apps
/net
/$* dist
170 $(NET_APPS
:%=%_install
): %_install
:
171 make
-C apps
/net
/$* install
173 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
182 make
-C iface
/native
clean
184 iface_native_install
:
191 iface_additional_clean
:
192 make
-C iface
/addsys
clean
194 iface_additional_install
:
196 iface_additional_dist
:
198 .PHONY
: iface_native iface_native_clean iface_native_install \
200 iface_additional iface_additional_clean iface_additional_install \
201 iface_additional_dist
207 make
-C services
/bus
/$*
209 $(BUS
:%=%_clean
): %_clean
:
210 make
-C services
/bus
/$* clean
212 $(BUS
:%=%_install
): %_install
:
213 make
-C services
/bus
/$* install
215 $(BUS
:%=%_dist
): %_dist
:
216 make
-C services
/bus
/$* dist
218 .PHONY
: $(BUS
) $(BUS
:%=%_clean
) \
219 $(BUS
:%=%_install
) $(BUS
:%=%_dist
)
222 # Device driver rules
224 $(DEVICE_DRIVERS
): %:
225 make
-C services
/dd
/$*
227 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
228 make
-C services
/dd
/$* clean
230 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
231 make
-C services
/dd
/$* install
233 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
234 make
-C services
/dd
/$* dist
236 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_clean
) \
237 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
243 make
-C services
/input
/$*
245 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
246 make
-C services
/input
/$* clean
248 $(INPUT_DRIVERS
:%=%_install
): %_install
:
249 make
-C services
/input
/$* install
251 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
252 make
-C services
/input
/$* dist
254 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_clean
) \
255 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
258 make
-C services
/fs
/$*
260 $(FS_DRIVERS
:%=%_clean
): %_clean
:
261 make
-C services
/fs
/$* clean
263 $(FS_DRIVERS
:%=%_install
): %_install
:
264 make
-C services
/fs
/$* install
266 $(FS_DRIVERS
:%=%_dist
): %_dist
:
267 make
-C services
/fs
/$* dist
269 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_clean
) $(FS_DRIVERS
:%=%_install
) \
270 $(FS_DRIVERS
:%=%_dist
)
273 make
-C services
/net
/$*
275 $(NET_DRIVERS
:%=%_clean
): %_clean
:
276 make
-C services
/net
/$* clean
278 $(NET_DRIVERS
:%=%_install
): %_install
:
279 make
-C services
/net
/$* install
281 $(NET_DRIVERS
:%=%_dist
): %_dist
:
282 make
-C services
/net
/$* dist
284 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_clean
) $(NET_DRIVERS
:%=%_install
) \
285 $(NET_DRIVERS
:%=%_dist
)
287 $(NET_DEVICE_DRIVERS
): %:
288 make
-C services
/net
/dd
/$*
290 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
291 make
-C services
/net
/dd
/$* clean
293 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
294 make
-C services
/net
/dd
/$* install
296 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
297 make
-C services
/net
/dd
/$* dist
299 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) \
300 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
309 $(LOADERS
:%=%_clean
): %_clean
:
310 make
-C loaders
/$* clean
312 $(LOADERS
:%=%_install
): %_install
:
313 make
-C loaders
/$* install
315 $(LOADERS
:%=%_dist
): %_dist
:
316 make
-C loaders
/$* dist
318 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
322 # Required system components
329 make
-C ntoskrnl
clean
332 make
-C ntoskrnl
install
335 make
-C ntoskrnl
dist
337 .PHONY
: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
346 $(DLLS
:%=%_clean
): %_clean
:
349 $(DLLS
:%=%_install
): %_install
:
350 make
-C lib
/$* install
352 $(DLLS
:%=%_dist
): %_dist
:
355 .PHONY
: $(DLLS
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
364 $(SUBSYS
:%=%_clean
): %_clean
:
365 make
-C subsys
/$* clean
367 $(SUBSYS
:%=%_install
): %_install
:
368 make
-C subsys
/$* install
370 $(SUBSYS
:%=%_dist
): %_dist
:
371 make
-C subsys
/$* dist
373 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
377 # Make an install floppy
380 .
/rmkdir
$(FLOPPY_DIR
)/dlls
381 .
/rmkdir
$(FLOPPY_DIR
)/apps
382 .
/rmkdir
$(FLOPPY_DIR
)/drivers
383 .
/rmkdir
$(FLOPPY_DIR
)/subsys
386 .PHONY
: make_install_dirs
388 autoexec_install
: $(FLOPPY_DIR
)/autoexec.bat
390 $(FLOPPY_DIR
)/autoexec.bat
: bootflop.bat
391 $(CP
) bootflop.bat
$(FLOPPY_DIR
)/autoexec.bat
394 # Make a distribution saveset
399 - $(RM
) $(DIST_DIR
)\dlls\
*.dll
400 - $(RM
) $(DIST_DIR
)\apps\
*.exe
401 - $(RM
) $(DIST_DIR
)\drivers\
*.sys
402 - $(RM
) $(DIST_DIR
)\subsys\
*.exe
403 - $(RMDIR
) $(DIST_DIR
)\dlls
404 - $(RMDIR
) $(DIST_DIR
)\apps
405 - $(RMDIR
) $(DIST_DIR
)\drivers
406 - $(RMDIR
) $(DIST_DIR
)\subsys
407 - $(RMDIR
) $(DIST_DIR
)
412 make_dist_dirs
: .
/rmkdir
414 .
/rmkdir
$(DIST_DIR
)/dlls
415 .
/rmkdir
$(DIST_DIR
)/apps
416 .
/rmkdir
$(DIST_DIR
)/drivers
417 .
/rmkdir
$(DIST_DIR
)/dlls
418 .
/rmkdir
$(DIST_DIR
)/subsys
420 .PHONY
: clean_dist_dir make_dist_dirs
426 find .
-name
"*.[ch]" -print | etags
--language
=c
-