9 #HOST = mingw32-windows
16 # Required to run the system
18 COMPONENTS
= iface_native iface_additional ntoskrnl
20 DLLS
= ntdll kernel32 advapi32 crtdll msvcrt fmifs gdi32 msafd \
21 ole32 oleaut32 secur32 shell32 user32 ws2_32
22 SUBSYS
= smss win32k csrss
25 # Select the server(s) you want to build
27 #SERVERS = posix linux os2
31 # Select the loader(s) you want to build
37 # Select the device drivers and filesystems you want
39 #DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1 parallel serial
40 DEVICE_DRIVERS
= vidport vga blue ide null floppy
42 #INPUT_DRIVERS = keyboard
43 INPUT_DRIVERS
= keyboard mouclass psaux
45 #FS_DRIVERS = vfat minix ext2 template
46 FS_DRIVERS
= vfat ms np
48 #NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
49 NET_DRIVERS
= ndis tcpip tditest wshtcpip afd
51 #NET_DEVICE_DRIVERS = ne2000
52 NET_DEVICE_DRIVERS
= ne2000
54 STORAGE_DRIVERS
= class2 scsiport
57 # system applications (required for startup)
59 #SYS_APPS = shell winlogon services
60 SYS_APPS
= shell winlogon services
62 APPS
= args hello
test cat bench apc shm lpc thread event file gditest \
63 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
66 #NET_APPS = ping roshttpd telnet
70 KERNEL_SERVICES
= $(DEVICE_DRIVERS
) $(INPUT_DRIVERS
) $(FS_DRIVERS
) $(NET_DRIVERS
) $(NET_DEVICE_DRIVERS
) $(STORAGE_DRIVERS
)
72 all: buildno
$(COMPONENTS
) $(BUS
) $(DLLS
) $(SUBSYS
) $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) $(NET_APPS
)
76 clean: rdel
$(EXE_POSTFIX
) buildno_clean
$(COMPONENTS
:%=%_clean
) \
77 $(BUS
:%=%_clean
) $(DLLS
:%=%_clean
) \
78 $(LOADERS
:%=%_clean
) $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) \
79 $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
) $(NET_APPS
:%=%_clean
)
83 ifeq ($(HOST
),mingw32-linux
)
84 rcopy
$(EXE_POSTFIX
): rcopy.c
85 $(HOST_CC
) -g
-DUNIX_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
87 ifeq ($(HOST
),mingw32-windows
)
88 rcopy
$(EXE_POSTFIX
): rcopy.c
89 $(HOST_CC
) -g
-DDOS_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
92 ifeq ($(HOST
),mingw32-linux
)
93 rmkdir
$(EXE_POSTFIX
): rmkdir.c
94 $(HOST_CC
) -g
-DUNIX_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
96 ifeq ($(HOST
),mingw32-windows
)
97 rmkdir
$(EXE_POSTFIX
): rmkdir.c
98 $(HOST_CC
) -g
-DDOS_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
101 rdel
$(EXE_POSTFIX
): rdel.c
102 $(HOST_CC
) -g rdel.c
-liberty
-o rdel
$(EXE_POSTFIX
)
104 install: rcopy
$(EXE_POSTFIX
) rmkdir
$(EXE_POSTFIX
) make_install_dirs autoexec_install \
105 $(COMPONENTS
:%=%_install
) $(BUS
:%=%_install
) \
106 $(DLLS
:%=%_install
) $(LOADERS
:%=%_install
) \
107 $(KERNEL_SERVICES
:%=%_install
) $(SUBSYS
:%=%_install
) \
108 $(SYS_APPS
:%=%_install
) $(APPS
:%=%_install
)
110 dist: rcopy
$(EXE_POSTFIX
) clean_dist_dir make_dist_dirs
$(COMPONENTS
:%=%_dist
) \
111 $(BUS
:%=%_dist
) $(DLLS
:%=%_dist
) \
112 $(LOADERS
:%=%_dist
) $(KERNEL_SERVICES
:%=%_dist
) $(SUBSYS
:%=%_dist
) \
113 $(SYS_APPS
:%=%_dist
) $(APPS
:%=%_dist
) $(NET_APPS
:%=%_dist
)
116 # Build number generator
118 buildno
: include/reactos
/version.h
122 make
-C apps
/buildno
clean
128 .PHONY
: buildno buildno_clean buildno_dist buildno_install
131 # System Applications
134 make
-C apps
/system
/$*
136 $(SYS_APPS
:%=%_clean
): %_clean
:
137 make
-C apps
/system
/$* clean
139 $(SYS_APPS
:%=%_dist
): %_dist
:
140 make
-C apps
/system
/$* dist
142 $(SYS_APPS
:%=%_install
): %_install
:
143 make
-C apps
/system
/$* install
145 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
153 $(APPS
:%=%_clean
): %_clean
:
154 make
-C apps
/$* clean
156 $(APPS
:%=%_dist
): %_dist
:
159 $(APPS
:%=%_install
): %_install
:
160 make
-C apps
/$* install
162 .PHONY
: $(APPS
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
165 # Network applications
170 $(NET_APPS
:%=%_clean
): %_clean
:
171 make
-C apps
/net
/$* clean
173 $(NET_APPS
:%=%_dist
): %_dist
:
174 make
-C apps
/net
/$* dist
176 $(NET_APPS
:%=%_install
): %_install
:
177 make
-C apps
/net
/$* install
179 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
188 make
-C iface
/native
clean
190 iface_native_install
:
197 iface_additional_clean
:
198 make
-C iface
/addsys
clean
200 iface_additional_install
:
202 iface_additional_dist
:
204 .PHONY
: iface_native iface_native_clean iface_native_install \
206 iface_additional iface_additional_clean iface_additional_install \
207 iface_additional_dist
213 make
-C services
/bus
/$*
215 $(BUS
:%=%_clean
): %_clean
:
216 make
-C services
/bus
/$* clean
218 $(BUS
:%=%_install
): %_install
:
219 make
-C services
/bus
/$* install
221 $(BUS
:%=%_dist
): %_dist
:
222 make
-C services
/bus
/$* dist
224 .PHONY
: $(BUS
) $(BUS
:%=%_clean
) \
225 $(BUS
:%=%_install
) $(BUS
:%=%_dist
)
228 # Device driver rules
230 $(DEVICE_DRIVERS
): %:
231 make
-C services
/dd
/$*
233 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
234 make
-C services
/dd
/$* clean
236 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
237 make
-C services
/dd
/$* install
239 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
240 make
-C services
/dd
/$* dist
242 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_clean
) \
243 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
249 make
-C services
/input
/$*
251 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
252 make
-C services
/input
/$* clean
254 $(INPUT_DRIVERS
:%=%_install
): %_install
:
255 make
-C services
/input
/$* install
257 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
258 make
-C services
/input
/$* dist
260 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_clean
) \
261 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
264 make
-C services
/fs
/$*
266 $(FS_DRIVERS
:%=%_clean
): %_clean
:
267 make
-C services
/fs
/$* clean
269 $(FS_DRIVERS
:%=%_install
): %_install
:
270 make
-C services
/fs
/$* install
272 $(FS_DRIVERS
:%=%_dist
): %_dist
:
273 make
-C services
/fs
/$* dist
275 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_clean
) \
276 $(FS_DRIVERS
:%=%_install
) $(FS_DRIVERS
:%=%_dist
)
279 # Network driver rules
282 make
-C services
/net
/$*
284 $(NET_DRIVERS
:%=%_clean
): %_clean
:
285 make
-C services
/net
/$* clean
287 $(NET_DRIVERS
:%=%_install
): %_install
:
288 make
-C services
/net
/$* install
290 $(NET_DRIVERS
:%=%_dist
): %_dist
:
291 make
-C services
/net
/$* dist
293 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_clean
) \
294 $(NET_DRIVERS
:%=%_install
) $(NET_DRIVERS
:%=%_dist
)
296 $(NET_DEVICE_DRIVERS
): %:
297 make
-C services
/net
/dd
/$*
299 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
300 make
-C services
/net
/dd
/$* clean
302 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
303 make
-C services
/net
/dd
/$* install
305 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
306 make
-C services
/net
/dd
/$* dist
308 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) \
309 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
312 # storage driver rules
314 $(STORAGE_DRIVERS
): %:
315 make
-C services
/storage
/$*
317 $(STORAGE_DRIVERS
:%=%_clean
): %_clean
:
318 make
-C services
/storage
/$* clean
320 $(STORAGE_DRIVERS
:%=%_install
): %_install
:
321 make
-C services
/storage
/$* install
323 $(STORAGE_DRIVERS
:%=%_dist
): %_dist
:
324 make
-C services
/storage
/$* dist
326 .PHONY
: $(STORAGE_DRIVERS
) $(STORAGE_DRIVERS
:%=%_clean
) \
327 $(STORAGE_DRIVERS
:%=%_install
) $(STORAGE_DRIVERS
:%=%_dist
)
336 $(LOADERS
:%=%_clean
): %_clean
:
337 make
-C loaders
/$* clean
339 $(LOADERS
:%=%_install
): %_install
:
340 make
-C loaders
/$* install
342 $(LOADERS
:%=%_dist
): %_dist
:
343 make
-C loaders
/$* dist
345 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
349 # Required system components
356 make
-C ntoskrnl
clean
359 make
-C ntoskrnl
install
362 make
-C ntoskrnl
dist
364 .PHONY
: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
373 $(DLLS
:%=%_clean
): %_clean
:
376 $(DLLS
:%=%_install
): %_install
:
377 make
-C lib
/$* install
379 $(DLLS
:%=%_dist
): %_dist
:
382 .PHONY
: $(DLLS
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
391 $(SUBSYS
:%=%_clean
): %_clean
:
392 make
-C subsys
/$* clean
394 $(SUBSYS
:%=%_install
): %_install
:
395 make
-C subsys
/$* install
397 $(SUBSYS
:%=%_dist
): %_dist
:
398 make
-C subsys
/$* dist
400 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
404 # Make an install floppy
407 .
/rmkdir
$(FLOPPY_DIR
)/dlls
408 .
/rmkdir
$(FLOPPY_DIR
)/apps
409 .
/rmkdir
$(FLOPPY_DIR
)/drivers
410 .
/rmkdir
$(FLOPPY_DIR
)/subsys
413 .PHONY
: make_install_dirs
415 autoexec_install
: $(FLOPPY_DIR
)/autoexec.bat
417 $(FLOPPY_DIR
)/autoexec.bat
: bootflop.bat
418 $(CP
) bootflop.bat
$(FLOPPY_DIR
)/autoexec.bat
421 # Make a distribution saveset
426 - $(RM
) $(DIST_DIR
)\dlls\
*.dll
427 - $(RM
) $(DIST_DIR
)\apps\
*.exe
428 - $(RM
) $(DIST_DIR
)\drivers\
*.sys
429 - $(RM
) $(DIST_DIR
)\subsys\
*.exe
430 - $(RMDIR
) $(DIST_DIR
)\dlls
431 - $(RMDIR
) $(DIST_DIR
)\apps
432 - $(RMDIR
) $(DIST_DIR
)\drivers
433 - $(RMDIR
) $(DIST_DIR
)\subsys
434 - $(RMDIR
) $(DIST_DIR
)
439 make_dist_dirs
: .
/rmkdir
441 .
/rmkdir
$(DIST_DIR
)/dlls
442 .
/rmkdir
$(DIST_DIR
)/apps
443 .
/rmkdir
$(DIST_DIR
)/drivers
444 .
/rmkdir
$(DIST_DIR
)/dlls
445 .
/rmkdir
$(DIST_DIR
)/subsys
447 .PHONY
: clean_dist_dir make_dist_dirs
453 find .
-name
"*.[ch]" -print | etags
--language
=c
-