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 floppy mouse sound test 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
55 # storage drivers (don't change the order)
57 STORAGE_DRIVERS
= class2 scsiport disk
60 # system applications (required for startup)
62 #SYS_APPS = shell winlogon services
63 SYS_APPS
= shell winlogon services
65 APPS
= args hello
test cat bench apc shm lpc thread event file gditest \
66 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
69 #NET_APPS = ping roshttpd telnet
73 KERNEL_SERVICES
= $(DEVICE_DRIVERS
) $(INPUT_DRIVERS
) $(FS_DRIVERS
) \
74 $(NET_DRIVERS
) $(NET_DEVICE_DRIVERS
) $(STORAGE_DRIVERS
)
76 all: rdel
$(EXE_POSTFIX
) buildno
$(COMPONENTS
) $(BUS
) $(DLLS
) \
77 $(SUBSYS
) $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) $(NET_APPS
)
81 clean: rdel
$(EXE_POSTFIX
) buildno_clean
$(COMPONENTS
:%=%_clean
) \
82 $(BUS
:%=%_clean
) $(DLLS
:%=%_clean
) \
83 $(LOADERS
:%=%_clean
) $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) \
84 $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
) $(NET_APPS
:%=%_clean
)
88 ifeq ($(HOST
),mingw32-linux
)
89 rcopy
$(EXE_POSTFIX
): rcopy.c
90 $(HOST_CC
) -g
-DUNIX_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
92 ifeq ($(HOST
),mingw32-windows
)
93 rcopy
$(EXE_POSTFIX
): rcopy.c
94 $(HOST_CC
) -g
-DDOS_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
97 ifeq ($(HOST
),mingw32-linux
)
98 rmkdir
$(EXE_POSTFIX
): rmkdir.c
99 $(HOST_CC
) -g
-DUNIX_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
101 ifeq ($(HOST
),mingw32-windows
)
102 rmkdir
$(EXE_POSTFIX
): rmkdir.c
103 $(HOST_CC
) -g
-DDOS_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
106 rdel
$(EXE_POSTFIX
): rdel.c
107 $(HOST_CC
) -g rdel.c
-liberty
-o rdel
$(EXE_POSTFIX
)
109 install: rcopy
$(EXE_POSTFIX
) rmkdir
$(EXE_POSTFIX
) make_install_dirs autoexec_install \
110 $(COMPONENTS
:%=%_install
) $(BUS
:%=%_install
) \
111 $(DLLS
:%=%_install
) $(LOADERS
:%=%_install
) \
112 $(KERNEL_SERVICES
:%=%_install
) $(SUBSYS
:%=%_install
) \
113 $(SYS_APPS
:%=%_install
) $(APPS
:%=%_install
)
115 dist: rcopy
$(EXE_POSTFIX
) clean_dist_dir make_dist_dirs
$(COMPONENTS
:%=%_dist
) \
116 $(BUS
:%=%_dist
) $(DLLS
:%=%_dist
) \
117 $(LOADERS
:%=%_dist
) $(KERNEL_SERVICES
:%=%_dist
) $(SUBSYS
:%=%_dist
) \
118 $(SYS_APPS
:%=%_dist
) $(APPS
:%=%_dist
) $(NET_APPS
:%=%_dist
)
121 # Build number generator
123 buildno
: include/reactos
/version.h
127 make
-C apps
/buildno
clean
133 .PHONY
: buildno buildno_clean buildno_dist buildno_install
136 # System Applications
139 make
-C apps
/system
/$*
141 $(SYS_APPS
:%=%_clean
): %_clean
:
142 make
-C apps
/system
/$* clean
144 $(SYS_APPS
:%=%_dist
): %_dist
:
145 make
-C apps
/system
/$* dist
147 $(SYS_APPS
:%=%_install
): %_install
:
148 make
-C apps
/system
/$* install
150 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
158 $(APPS
:%=%_clean
): %_clean
:
159 make
-C apps
/$* clean
161 $(APPS
:%=%_dist
): %_dist
:
164 $(APPS
:%=%_install
): %_install
:
165 make
-C apps
/$* install
167 .PHONY
: $(APPS
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
170 # Network applications
175 $(NET_APPS
:%=%_clean
): %_clean
:
176 make
-C apps
/net
/$* clean
178 $(NET_APPS
:%=%_dist
): %_dist
:
179 make
-C apps
/net
/$* dist
181 $(NET_APPS
:%=%_install
): %_install
:
182 make
-C apps
/net
/$* install
184 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
193 make
-C iface
/native
clean
195 iface_native_install
:
202 iface_additional_clean
:
203 make
-C iface
/addsys
clean
205 iface_additional_install
:
207 iface_additional_dist
:
209 .PHONY
: iface_native iface_native_clean iface_native_install \
211 iface_additional iface_additional_clean iface_additional_install \
212 iface_additional_dist
218 make
-C services
/bus
/$*
220 $(BUS
:%=%_clean
): %_clean
:
221 make
-C services
/bus
/$* clean
223 $(BUS
:%=%_install
): %_install
:
224 make
-C services
/bus
/$* install
226 $(BUS
:%=%_dist
): %_dist
:
227 make
-C services
/bus
/$* dist
229 .PHONY
: $(BUS
) $(BUS
:%=%_clean
) \
230 $(BUS
:%=%_install
) $(BUS
:%=%_dist
)
233 # Device driver rules
235 $(DEVICE_DRIVERS
): %:
236 make
-C services
/dd
/$*
238 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
239 make
-C services
/dd
/$* clean
241 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
242 make
-C services
/dd
/$* install
244 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
245 make
-C services
/dd
/$* dist
247 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_clean
) \
248 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
254 make
-C services
/input
/$*
256 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
257 make
-C services
/input
/$* clean
259 $(INPUT_DRIVERS
:%=%_install
): %_install
:
260 make
-C services
/input
/$* install
262 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
263 make
-C services
/input
/$* dist
265 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_clean
) \
266 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
269 make
-C services
/fs
/$*
271 $(FS_DRIVERS
:%=%_clean
): %_clean
:
272 make
-C services
/fs
/$* clean
274 $(FS_DRIVERS
:%=%_install
): %_install
:
275 make
-C services
/fs
/$* install
277 $(FS_DRIVERS
:%=%_dist
): %_dist
:
278 make
-C services
/fs
/$* dist
280 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_clean
) \
281 $(FS_DRIVERS
:%=%_install
) $(FS_DRIVERS
:%=%_dist
)
284 # Network driver rules
287 make
-C services
/net
/$*
289 $(NET_DRIVERS
:%=%_clean
): %_clean
:
290 make
-C services
/net
/$* clean
292 $(NET_DRIVERS
:%=%_install
): %_install
:
293 make
-C services
/net
/$* install
295 $(NET_DRIVERS
:%=%_dist
): %_dist
:
296 make
-C services
/net
/$* dist
298 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_clean
) \
299 $(NET_DRIVERS
:%=%_install
) $(NET_DRIVERS
:%=%_dist
)
301 $(NET_DEVICE_DRIVERS
): %:
302 make
-C services
/net
/dd
/$*
304 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
305 make
-C services
/net
/dd
/$* clean
307 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
308 make
-C services
/net
/dd
/$* install
310 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
311 make
-C services
/net
/dd
/$* dist
313 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) \
314 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
317 # storage driver rules
319 $(STORAGE_DRIVERS
): %:
320 make
-C services
/storage
/$*
322 $(STORAGE_DRIVERS
:%=%_clean
): %_clean
:
323 make
-C services
/storage
/$* clean
325 $(STORAGE_DRIVERS
:%=%_install
): %_install
:
326 make
-C services
/storage
/$* install
328 $(STORAGE_DRIVERS
:%=%_dist
): %_dist
:
329 make
-C services
/storage
/$* dist
331 .PHONY
: $(STORAGE_DRIVERS
) $(STORAGE_DRIVERS
:%=%_clean
) \
332 $(STORAGE_DRIVERS
:%=%_install
) $(STORAGE_DRIVERS
:%=%_dist
)
341 $(LOADERS
:%=%_clean
): %_clean
:
342 make
-C loaders
/$* clean
344 $(LOADERS
:%=%_install
): %_install
:
345 make
-C loaders
/$* install
347 $(LOADERS
:%=%_dist
): %_dist
:
348 make
-C loaders
/$* dist
350 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
354 # Required system components
361 make
-C ntoskrnl
clean
364 make
-C ntoskrnl
install
367 make
-C ntoskrnl
dist
369 .PHONY
: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
378 $(DLLS
:%=%_clean
): %_clean
:
381 $(DLLS
:%=%_install
): %_install
:
382 make
-C lib
/$* install
384 $(DLLS
:%=%_dist
): %_dist
:
387 .PHONY
: $(DLLS
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
396 $(SUBSYS
:%=%_clean
): %_clean
:
397 make
-C subsys
/$* clean
399 $(SUBSYS
:%=%_install
): %_install
:
400 make
-C subsys
/$* install
402 $(SUBSYS
:%=%_dist
): %_dist
:
403 make
-C subsys
/$* dist
405 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
409 # Make an install floppy
412 .
/rmkdir
$(FLOPPY_DIR
)/dlls
413 .
/rmkdir
$(FLOPPY_DIR
)/apps
414 .
/rmkdir
$(FLOPPY_DIR
)/drivers
415 .
/rmkdir
$(FLOPPY_DIR
)/subsys
418 .PHONY
: make_install_dirs
420 autoexec_install
: $(FLOPPY_DIR
)/autoexec.bat
422 $(FLOPPY_DIR
)/autoexec.bat
: bootflop.bat
423 $(CP
) bootflop.bat
$(FLOPPY_DIR
)/autoexec.bat
426 # Make a distribution saveset
431 - $(RM
) $(DIST_DIR
)\dlls\
*.dll
432 - $(RM
) $(DIST_DIR
)\apps\
*.exe
433 - $(RM
) $(DIST_DIR
)\drivers\
*.sys
434 - $(RM
) $(DIST_DIR
)\subsys\
*.exe
435 - $(RMDIR
) $(DIST_DIR
)\dlls
436 - $(RMDIR
) $(DIST_DIR
)\apps
437 - $(RMDIR
) $(DIST_DIR
)\drivers
438 - $(RMDIR
) $(DIST_DIR
)\subsys
439 - $(RMDIR
) $(DIST_DIR
)
444 make_dist_dirs
: .
/rmkdir
446 .
/rmkdir
$(DIST_DIR
)/dlls
447 .
/rmkdir
$(DIST_DIR
)/apps
448 .
/rmkdir
$(DIST_DIR
)/drivers
449 .
/rmkdir
$(DIST_DIR
)/dlls
450 .
/rmkdir
$(DIST_DIR
)/subsys
452 .PHONY
: clean_dist_dir make_dist_dirs
458 find .
-name
"*.[ch]" -print | etags
--language
=c
-