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 mstest objdir
62 #NET_APPS = ping roshttpd
66 KERNEL_SERVICES
= $(DEVICE_DRIVERS
) $(INPUT_DRIVERS
) $(FS_DRIVERS
) $(NET_DRIVERS
) $(NET_DEVICE_DRIVERS
)
68 all: buildno
$(COMPONENTS
) $(BUS
) $(DLLS
) $(SUBSYS
) $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) $(NET_APPS
)
72 clean: buildno_clean
$(COMPONENTS
:%=%_clean
) $(BUS
:%=%_clean
) $(DLLS
:%=%_clean
) $(LOADERS
:%=%_clean
) \
73 $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
)
77 ifeq ($(HOST
),mingw32-linux
)
78 rcopy
$(EXE_POSTFIX
): rcopy.c
79 $(HOST_CC
) -g
-DUNIX_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
81 ifeq ($(HOST
),mingw32-windows
)
82 rcopy
$(EXE_POSTFIX
): rcopy.c
83 $(HOST_CC
) -g
-DDOS_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
86 ifeq ($(HOST
),mingw32-linux
)
87 rmkdir
$(EXE_POSTFIX
): rmkdir.c
88 $(HOST_CC
) -g
-DUNIX_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
90 ifeq ($(HOST
),mingw32-windows
)
91 rmkdir
$(EXE_POSTFIX
): rmkdir.c
92 $(HOST_CC
) -g
-DDOS_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
96 install: rcopy
$(EXE_POSTFIX
) rmkdir
$(EXE_POSTFIX
) make_install_dirs autoexec_install \
97 $(COMPONENTS
:%=%_install
) $(BUS
:%=%_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
) \
103 $(BUS
:%=%_dist
) $(DLLS
:%=%_dist
) \
104 $(LOADERS
:%=%_dist
) $(KERNEL_SERVICES
:%=%_dist
) $(SUBSYS
:%=%_dist
) \
105 $(SYS_APPS
:%=%_dist
) $(APPS
:%=%_dist
)
108 # Build number generator
110 buildno
: include/reactos
/version.h
114 make
-C apps
/buildno
clean
120 .PHONY
: buildno buildno_clean buildno_dist buildno_install
123 # System Applications
126 make
-C apps
/system
/$*
128 $(SYS_APPS
:%=%_clean
): %_clean
:
129 make
-C apps
/system
/$* clean
131 $(SYS_APPS
:%=%_dist
): %_dist
:
132 make
-C apps
/system
/$* dist
134 $(SYS_APPS
:%=%_install
): %_install
:
135 make
-C apps
/system
/$* install
137 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
145 $(APPS
:%=%_clean
): %_clean
:
146 make
-C apps
/$* clean
148 $(APPS
:%=%_dist
): %_dist
:
151 $(APPS
:%=%_install
): %_install
:
152 make
-C apps
/$* install
154 .PHONY
: $(APPS
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
157 # Network applications
162 $(NET_APPS
:%=%_clean
): %_clean
:
163 make
-C apps
/net
/$* clean
165 $(NET_APPS
:%=%_dist
): %_dist
:
166 make
-C apps
/net
/$* dist
168 $(NET_APPS
:%=%_install
): %_install
:
169 make
-C apps
/net
/$* install
171 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
180 make
-C iface
/native
clean
182 iface_native_install
:
189 iface_additional_clean
:
190 make
-C iface
/addsys
clean
192 iface_additional_install
:
194 iface_additional_dist
:
196 .PHONY
: iface_native iface_native_clean iface_native_install \
198 iface_additional iface_additional_clean iface_additional_install \
199 iface_additional_dist
205 make
-C services
/bus
/$*
207 $(BUS
:%=%_clean
): %_clean
:
208 make
-C services
/bus
/$* clean
210 $(BUS
:%=%_install
): %_install
:
211 make
-C services
/bus
/$* install
213 $(BUS
:%=%_dist
): %_dist
:
214 make
-C services
/bus
/$* dist
216 .PHONY
: $(BUS
) $(BUS
:%=%_clean
) \
217 $(BUS
:%=%_install
) $(BUS
:%=%_dist
)
220 # Device driver rules
222 $(DEVICE_DRIVERS
): %:
223 make
-C services
/dd
/$*
225 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
226 make
-C services
/dd
/$* clean
228 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
229 make
-C services
/dd
/$* install
231 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
232 make
-C services
/dd
/$* dist
234 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_clean
) \
235 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
241 make
-C services
/input
/$*
243 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
244 make
-C services
/input
/$* clean
246 $(INPUT_DRIVERS
:%=%_install
): %_install
:
247 make
-C services
/input
/$* install
249 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
250 make
-C services
/input
/$* dist
252 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_clean
) \
253 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
256 make
-C services
/fs
/$*
258 $(FS_DRIVERS
:%=%_clean
): %_clean
:
259 make
-C services
/fs
/$* clean
261 $(FS_DRIVERS
:%=%_install
): %_install
:
262 make
-C services
/fs
/$* install
264 $(FS_DRIVERS
:%=%_dist
): %_dist
:
265 make
-C services
/fs
/$* dist
267 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_clean
) $(FS_DRIVERS
:%=%_install
) \
268 $(FS_DRIVERS
:%=%_dist
)
271 make
-C services
/net
/$*
273 $(NET_DRIVERS
:%=%_clean
): %_clean
:
274 make
-C services
/net
/$* clean
276 $(NET_DRIVERS
:%=%_install
): %_install
:
277 make
-C services
/net
/$* install
279 $(NET_DRIVERS
:%=%_dist
): %_dist
:
280 make
-C services
/net
/$* dist
282 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_clean
) $(NET_DRIVERS
:%=%_install
) \
283 $(NET_DRIVERS
:%=%_dist
)
285 $(NET_DEVICE_DRIVERS
): %:
286 make
-C services
/net
/dd
/$*
288 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
289 make
-C services
/net
/dd
/$* clean
291 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
292 make
-C services
/net
/dd
/$* install
294 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
295 make
-C services
/net
/dd
/$* dist
297 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) \
298 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
307 $(LOADERS
:%=%_clean
): %_clean
:
308 make
-C loaders
/$* clean
310 $(LOADERS
:%=%_install
): %_install
:
311 make
-C loaders
/$* install
313 $(LOADERS
:%=%_dist
): %_dist
:
314 make
-C loaders
/$* dist
316 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
320 # Required system components
327 make
-C ntoskrnl
clean
330 make
-C ntoskrnl
install
333 make
-C ntoskrnl
dist
335 .PHONY
: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
344 $(DLLS
:%=%_clean
): %_clean
:
347 $(DLLS
:%=%_install
): %_install
:
348 make
-C lib
/$* install
350 $(DLLS
:%=%_dist
): %_dist
:
353 .PHONY
: $(DLLS
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
362 $(SUBSYS
:%=%_clean
): %_clean
:
363 make
-C subsys
/$* clean
365 $(SUBSYS
:%=%_install
): %_install
:
366 make
-C subsys
/$* install
368 $(SUBSYS
:%=%_dist
): %_dist
:
369 make
-C subsys
/$* dist
371 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
375 # Make an install floppy
378 .
/rmkdir
$(FLOPPY_DIR
)/dlls
379 .
/rmkdir
$(FLOPPY_DIR
)/apps
380 .
/rmkdir
$(FLOPPY_DIR
)/drivers
381 .
/rmkdir
$(FLOPPY_DIR
)/subsys
384 .PHONY
: make_install_dirs
386 autoexec_install
: $(FLOPPY_DIR
)/autoexec.bat
388 $(FLOPPY_DIR
)/autoexec.bat
: bootflop.bat
389 $(CP
) bootflop.bat
$(FLOPPY_DIR
)/autoexec.bat
392 # Make a distribution saveset
397 - $(RM
) $(DIST_DIR
)\dlls\
*.dll
398 - $(RM
) $(DIST_DIR
)\apps\
*.exe
399 - $(RM
) $(DIST_DIR
)\drivers\
*.sys
400 - $(RM
) $(DIST_DIR
)\subsys\
*.exe
401 - $(RMDIR
) $(DIST_DIR
)\dlls
402 - $(RMDIR
) $(DIST_DIR
)\apps
403 - $(RMDIR
) $(DIST_DIR
)\drivers
404 - $(RMDIR
) $(DIST_DIR
)\subsys
405 - $(RMDIR
) $(DIST_DIR
)
410 make_dist_dirs
: .
/rmkdir
412 .
/rmkdir
$(DIST_DIR
)/dlls
413 .
/rmkdir
$(DIST_DIR
)/apps
414 .
/rmkdir
$(DIST_DIR
)/drivers
415 .
/rmkdir
$(DIST_DIR
)/dlls
416 .
/rmkdir
$(DIST_DIR
)/subsys
418 .PHONY
: clean_dist_dir make_dist_dirs
424 find .
-name
"*.[ch]" -print | etags
--language
=c
-