9 #HOST = mingw32-windows
14 # Required to run the system
16 COMPONENTS
= iface_native iface_additional ntoskrnl
17 DLLS
= ntdll kernel32 crtdll advapi32 fmifs gdi32 secur32 user32 ws2_32
18 SUBSYS
= smss win32k csrss
21 # Select the server(s) you want to build
24 # SERVERS = posix linux os2
27 # Select the loader(s) you want to build
33 # Select the device drivers and filesystems you want
35 DEVICE_DRIVERS
= vidport vga blue ide null floppy
36 # DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1 parallel serial
38 INPUT_DRIVERS
= keyboard
41 # FS_DRIVERS = minix ext2 template
43 # ndis tdi tcpip tditest wshtcpip
44 NET_DRIVERS
= ndis tcpip tditest wshtcpip
47 NET_DEVICE_DRIVERS
= ne2000
50 # system applications (required for startup)
52 SYS_APPS
= shell winlogon services
54 APPS
= args hello
test cat bench apc shm lpc thread event file gditest \
55 pteb consume dump_shared_data vmtest regtest
62 KERNEL_SERVICES
= $(DEVICE_DRIVERS
) $(INPUT_DRIVERS
) $(FS_DRIVERS
) $(NET_DRIVERS
) $(NET_DEVICE_DRIVERS
)
64 all: buildno
$(COMPONENTS
) $(DLLS
) $(SUBSYS
) $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) $(NET_APPS
)
68 clean: buildno_clean
$(COMPONENTS
:%=%_clean
) $(DLLS
:%=%_clean
) $(LOADERS
:%=%_clean
) \
69 $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
)
73 ifeq ($(HOST
),mingw32-linux
)
74 rcopy
$(EXE_POSTFIX
): rcopy.c
75 $(HOST_CC
) -g
-DUNIX_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
77 ifeq ($(HOST
),mingw32-windows
)
78 rcopy
$(EXE_POSTFIX
): rcopy.c
79 $(HOST_CC
) -g
-DDOS_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
82 ifeq ($(HOST
),mingw32-linux
)
83 rmkdir
$(EXE_POSTFIX
): rmkdir.c
84 $(HOST_CC
) -g
-DUNIX_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
86 ifeq ($(HOST
),mingw32-windows
)
87 rmkdir
$(EXE_POSTFIX
): rmkdir.c
88 $(HOST_CC
) -g
-DDOS_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
92 install: rcopy
$(EXE_POSTFIX
) rmkdir
$(EXE_POSTFIX
) make_install_dirs autoexec_install
$(COMPONENTS
:%=%_install
) \
93 $(DLLS
:%=%_install
) $(LOADERS
:%=%_install
) \
94 $(KERNEL_SERVICES
:%=%_install
) $(SUBSYS
:%=%_install
) \
95 $(SYS_APPS
:%=%_install
) $(APPS
:%=%_install
)
97 dist: rcopy
$(EXE_POSTFIX
) clean_dist_dir make_dist_dirs
$(COMPONENTS
:%=%_dist
) $(DLLS
:%=%_dist
) \
98 $(LOADERS
:%=%_dist
) $(KERNEL_SERVICES
:%=%_dist
) $(SUBSYS
:%=%_dist
) \
99 $(SYS_APPS
:%=%_dist
) $(APPS
:%=%_dist
)
102 # Build number generator
104 buildno
: include/reactos
/version.h
108 make
-C apps
/buildno
clean
114 .PHONY
: buildno buildno_clean buildno_dist buildno_install
117 # System Applications
120 make
-C apps
/system
/$*
122 $(SYS_APPS
:%=%_clean
): %_clean
:
123 make
-C apps
/system
/$* clean
125 $(SYS_APPS
:%=%_dist
): %_dist
:
126 make
-C apps
/system
/$* dist
128 $(SYS_APPS
:%=%_install
): %_install
:
129 make
-C apps
/system
/$* install
131 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
139 $(APPS
:%=%_clean
): %_clean
:
140 make
-C apps
/$* clean
142 $(APPS
:%=%_dist
): %_dist
:
145 $(APPS
:%=%_install
): %_install
:
146 make
-C apps
/$* install
148 .PHONY
: $(APPS
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
151 # Network applications
156 $(NET_APPS
:%=%_clean
): %_clean
:
157 make
-C apps
/net
/$* clean
159 $(NET_APPS
:%=%_dist
): %_dist
:
160 make
-C apps
/net
/$* dist
162 $(NET_APPS
:%=%_install
): %_install
:
163 make
-C apps
/net
/$* install
165 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
174 make
-C iface
/native
clean
176 iface_native_install
:
183 iface_additional_clean
:
184 make
-C iface
/addsys
clean
186 iface_additional_install
:
188 iface_additional_dist
:
190 .PHONY
: iface_native iface_native_clean iface_native_install \
192 iface_additional iface_additional_clean iface_additional_install \
193 iface_additional_dist
196 # Device driver rules
198 $(DEVICE_DRIVERS
): %:
199 make
-C services
/dd
/$*
201 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
202 make
-C services
/dd
/$* clean
204 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
205 make
-C services
/dd
/$* install
207 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
208 make
-C services
/dd
/$* dist
210 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_clean
) \
211 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
217 make
-C services
/input
/$*
219 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
220 make
-C services
/input
/$* clean
222 $(INPUT_DRIVERS
:%=%_install
): %_install
:
223 make
-C services
/input
/$* install
225 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
226 make
-C services
/input
/$* dist
228 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_clean
) \
229 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
232 make
-C services
/fs
/$*
234 $(FS_DRIVERS
:%=%_clean
): %_clean
:
235 make
-C services
/fs
/$* clean
237 $(FS_DRIVERS
:%=%_install
): %_install
:
238 make
-C services
/fs
/$* install
240 $(FS_DRIVERS
:%=%_dist
): %_dist
:
241 make
-C services
/fs
/$* dist
243 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_clean
) $(FS_DRIVERS
:%=%_install
) \
244 $(FS_DRIVERS
:%=%_dist
)
247 make
-C services
/net
/$*
249 $(NET_DRIVERS
:%=%_clean
): %_clean
:
250 make
-C services
/net
/$* clean
252 $(NET_DRIVERS
:%=%_install
): %_install
:
253 make
-C services
/net
/$* install
255 $(NET_DRIVERS
:%=%_dist
): %_dist
:
256 make
-C services
/net
/$* dist
258 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_clean
) $(NET_DRIVERS
:%=%_install
) \
259 $(NET_DRIVERS
:%=%_dist
)
261 $(NET_DEVICE_DRIVERS
): %:
262 make
-C services
/net
/dd
/$*
264 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
265 make
-C services
/net
/dd
/$* clean
267 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
268 make
-C services
/net
/dd
/$* install
270 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
271 make
-C services
/net
/dd
/$* dist
273 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) \
274 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
283 $(LOADERS
:%=%_clean
): %_clean
:
284 make
-C loaders
/$* clean
286 $(LOADERS
:%=%_install
): %_install
:
287 make
-C loaders
/$* install
289 $(LOADERS
:%=%_dist
): %_dist
:
290 make
-C loaders
/$* dist
292 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
296 # Required system components
303 make
-C ntoskrnl
clean
306 make
-C ntoskrnl
install
309 make
-C ntoskrnl
dist
311 .PHONY
: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
320 $(DLLS
:%=%_clean
): %_clean
:
323 $(DLLS
:%=%_install
): %_install
:
324 make
-C lib
/$* install
326 $(DLLS
:%=%_dist
): %_dist
:
329 .PHONY
: $(DLLS
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
338 $(SUBSYS
:%=%_clean
): %_clean
:
339 make
-C subsys
/$* clean
341 $(SUBSYS
:%=%_install
): %_install
:
342 make
-C subsys
/$* install
344 $(SUBSYS
:%=%_dist
): %_dist
:
345 make
-C subsys
/$* dist
347 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
351 # Make an install floppy
354 .
/rmkdir
$(FLOPPY_DIR
)/dlls
355 .
/rmkdir
$(FLOPPY_DIR
)/apps
356 .
/rmkdir
$(FLOPPY_DIR
)/drivers
357 .
/rmkdir
$(FLOPPY_DIR
)/subsys
360 .PHONY
: make_install_dirs
362 autoexec_install
: $(FLOPPY_DIR
)/autoexec.bat
364 $(FLOPPY_DIR
)/autoexec.bat
: bootflop.bat
365 $(CP
) bootflop.bat
$(FLOPPY_DIR
)/autoexec.bat
368 # Make a distribution saveset
373 - $(RM
) $(DIST_DIR
)\dlls\
*.dll
374 - $(RM
) $(DIST_DIR
)\apps\
*.exe
375 - $(RM
) $(DIST_DIR
)\drivers\
*.sys
376 - $(RM
) $(DIST_DIR
)\subsys\
*.exe
377 - $(RMDIR
) $(DIST_DIR
)\dlls
378 - $(RMDIR
) $(DIST_DIR
)\apps
379 - $(RMDIR
) $(DIST_DIR
)\drivers
380 - $(RMDIR
) $(DIST_DIR
)\subsys
381 - $(RMDIR
) $(DIST_DIR
)
386 make_dist_dirs
: .
/rmkdir
388 .
/rmkdir
$(DIST_DIR
)/dlls
389 .
/rmkdir
$(DIST_DIR
)/apps
390 .
/rmkdir
$(DIST_DIR
)/drivers
391 .
/rmkdir
$(DIST_DIR
)/dlls
392 .
/rmkdir
$(DIST_DIR
)/subsys
394 .PHONY
: clean_dist_dir make_dist_dirs
400 find .
-name
"*.[ch]" -print | etags
--language
=c
-