9 #HOST = mingw32-windows
16 # Required to run the system
18 COMPONENTS
= iface_native iface_additional ntoskrnl
20 DLLS
= advapi32 crtdll fmifs gdi32 kernel32 msafd msvcrt ntdll \
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
55 # system applications (required for startup)
57 #SYS_APPS = shell winlogon services
58 SYS_APPS
= shell winlogon services
60 APPS
= args hello
test cat bench apc shm lpc thread event file gditest \
61 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
64 #NET_APPS = ping roshttpd telnet
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: rdel
$(EXE_POSTFIX
) buildno_clean
$(COMPONENTS
:%=%_clean
) \
75 $(BUS
:%=%_clean
) $(DLLS
:%=%_clean
) \
76 $(LOADERS
:%=%_clean
) $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) \
77 $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
) $(NET_APPS
:%=%_clean
)
81 ifeq ($(HOST
),mingw32-linux
)
82 rcopy
$(EXE_POSTFIX
): rcopy.c
83 $(HOST_CC
) -g
-DUNIX_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
85 ifeq ($(HOST
),mingw32-windows
)
86 rcopy
$(EXE_POSTFIX
): rcopy.c
87 $(HOST_CC
) -g
-DDOS_PATHS rcopy.c
-o rcopy
$(EXE_POSTFIX
)
90 ifeq ($(HOST
),mingw32-linux
)
91 rmkdir
$(EXE_POSTFIX
): rmkdir.c
92 $(HOST_CC
) -g
-DUNIX_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
94 ifeq ($(HOST
),mingw32-windows
)
95 rmkdir
$(EXE_POSTFIX
): rmkdir.c
96 $(HOST_CC
) -g
-DDOS_PATHS rmkdir.c
-o rmkdir
$(EXE_POSTFIX
)
99 rdel
$(EXE_POSTFIX
): rdel.c
100 $(HOST_CC
) -g rdel.c
-liberty
-o rdel
$(EXE_POSTFIX
)
102 install: rcopy
$(EXE_POSTFIX
) rmkdir
$(EXE_POSTFIX
) make_install_dirs autoexec_install \
103 $(COMPONENTS
:%=%_install
) $(BUS
:%=%_install
) \
104 $(DLLS
:%=%_install
) $(LOADERS
:%=%_install
) \
105 $(KERNEL_SERVICES
:%=%_install
) $(SUBSYS
:%=%_install
) \
106 $(SYS_APPS
:%=%_install
) $(APPS
:%=%_install
)
108 dist: rcopy
$(EXE_POSTFIX
) clean_dist_dir make_dist_dirs
$(COMPONENTS
:%=%_dist
) \
109 $(BUS
:%=%_dist
) $(DLLS
:%=%_dist
) \
110 $(LOADERS
:%=%_dist
) $(KERNEL_SERVICES
:%=%_dist
) $(SUBSYS
:%=%_dist
) \
111 $(SYS_APPS
:%=%_dist
) $(APPS
:%=%_dist
) $(NET_APPS
:%=%_dist
)
114 # Build number generator
116 buildno
: include/reactos
/version.h
120 make
-C apps
/buildno
clean
126 .PHONY
: buildno buildno_clean buildno_dist buildno_install
129 # System Applications
132 make
-C apps
/system
/$*
134 $(SYS_APPS
:%=%_clean
): %_clean
:
135 make
-C apps
/system
/$* clean
137 $(SYS_APPS
:%=%_dist
): %_dist
:
138 make
-C apps
/system
/$* dist
140 $(SYS_APPS
:%=%_install
): %_install
:
141 make
-C apps
/system
/$* install
143 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
151 $(APPS
:%=%_clean
): %_clean
:
152 make
-C apps
/$* clean
154 $(APPS
:%=%_dist
): %_dist
:
157 $(APPS
:%=%_install
): %_install
:
158 make
-C apps
/$* install
160 .PHONY
: $(APPS
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
163 # Network applications
168 $(NET_APPS
:%=%_clean
): %_clean
:
169 make
-C apps
/net
/$* clean
171 $(NET_APPS
:%=%_dist
): %_dist
:
172 make
-C apps
/net
/$* dist
174 $(NET_APPS
:%=%_install
): %_install
:
175 make
-C apps
/net
/$* install
177 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
186 make
-C iface
/native
clean
188 iface_native_install
:
195 iface_additional_clean
:
196 make
-C iface
/addsys
clean
198 iface_additional_install
:
200 iface_additional_dist
:
202 .PHONY
: iface_native iface_native_clean iface_native_install \
204 iface_additional iface_additional_clean iface_additional_install \
205 iface_additional_dist
211 make
-C services
/bus
/$*
213 $(BUS
:%=%_clean
): %_clean
:
214 make
-C services
/bus
/$* clean
216 $(BUS
:%=%_install
): %_install
:
217 make
-C services
/bus
/$* install
219 $(BUS
:%=%_dist
): %_dist
:
220 make
-C services
/bus
/$* dist
222 .PHONY
: $(BUS
) $(BUS
:%=%_clean
) \
223 $(BUS
:%=%_install
) $(BUS
:%=%_dist
)
226 # Device driver rules
228 $(DEVICE_DRIVERS
): %:
229 make
-C services
/dd
/$*
231 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
232 make
-C services
/dd
/$* clean
234 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
235 make
-C services
/dd
/$* install
237 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
238 make
-C services
/dd
/$* dist
240 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_clean
) \
241 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
247 make
-C services
/input
/$*
249 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
250 make
-C services
/input
/$* clean
252 $(INPUT_DRIVERS
:%=%_install
): %_install
:
253 make
-C services
/input
/$* install
255 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
256 make
-C services
/input
/$* dist
258 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_clean
) \
259 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
262 make
-C services
/fs
/$*
264 $(FS_DRIVERS
:%=%_clean
): %_clean
:
265 make
-C services
/fs
/$* clean
267 $(FS_DRIVERS
:%=%_install
): %_install
:
268 make
-C services
/fs
/$* install
270 $(FS_DRIVERS
:%=%_dist
): %_dist
:
271 make
-C services
/fs
/$* dist
273 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_clean
) $(FS_DRIVERS
:%=%_install
) \
274 $(FS_DRIVERS
:%=%_dist
)
277 # Network driver rules
280 make
-C services
/net
/$*
282 $(NET_DRIVERS
:%=%_clean
): %_clean
:
283 make
-C services
/net
/$* clean
285 $(NET_DRIVERS
:%=%_install
): %_install
:
286 make
-C services
/net
/$* install
288 $(NET_DRIVERS
:%=%_dist
): %_dist
:
289 make
-C services
/net
/$* dist
291 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_clean
) $(NET_DRIVERS
:%=%_install
) \
292 $(NET_DRIVERS
:%=%_dist
)
294 $(NET_DEVICE_DRIVERS
): %:
295 make
-C services
/net
/dd
/$*
297 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
298 make
-C services
/net
/dd
/$* clean
300 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
301 make
-C services
/net
/dd
/$* install
303 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
304 make
-C services
/net
/dd
/$* dist
306 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) \
307 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
316 $(LOADERS
:%=%_clean
): %_clean
:
317 make
-C loaders
/$* clean
319 $(LOADERS
:%=%_install
): %_install
:
320 make
-C loaders
/$* install
322 $(LOADERS
:%=%_dist
): %_dist
:
323 make
-C loaders
/$* dist
325 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
329 # Required system components
336 make
-C ntoskrnl
clean
339 make
-C ntoskrnl
install
342 make
-C ntoskrnl
dist
344 .PHONY
: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
353 $(DLLS
:%=%_clean
): %_clean
:
356 $(DLLS
:%=%_install
): %_install
:
357 make
-C lib
/$* install
359 $(DLLS
:%=%_dist
): %_dist
:
362 .PHONY
: $(DLLS
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
371 $(SUBSYS
:%=%_clean
): %_clean
:
372 make
-C subsys
/$* clean
374 $(SUBSYS
:%=%_install
): %_install
:
375 make
-C subsys
/$* install
377 $(SUBSYS
:%=%_dist
): %_dist
:
378 make
-C subsys
/$* dist
380 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
384 # Make an install floppy
387 .
/rmkdir
$(FLOPPY_DIR
)/dlls
388 .
/rmkdir
$(FLOPPY_DIR
)/apps
389 .
/rmkdir
$(FLOPPY_DIR
)/drivers
390 .
/rmkdir
$(FLOPPY_DIR
)/subsys
393 .PHONY
: make_install_dirs
395 autoexec_install
: $(FLOPPY_DIR
)/autoexec.bat
397 $(FLOPPY_DIR
)/autoexec.bat
: bootflop.bat
398 $(CP
) bootflop.bat
$(FLOPPY_DIR
)/autoexec.bat
401 # Make a distribution saveset
406 - $(RM
) $(DIST_DIR
)\dlls\
*.dll
407 - $(RM
) $(DIST_DIR
)\apps\
*.exe
408 - $(RM
) $(DIST_DIR
)\drivers\
*.sys
409 - $(RM
) $(DIST_DIR
)\subsys\
*.exe
410 - $(RMDIR
) $(DIST_DIR
)\dlls
411 - $(RMDIR
) $(DIST_DIR
)\apps
412 - $(RMDIR
) $(DIST_DIR
)\drivers
413 - $(RMDIR
) $(DIST_DIR
)\subsys
414 - $(RMDIR
) $(DIST_DIR
)
419 make_dist_dirs
: .
/rmkdir
421 .
/rmkdir
$(DIST_DIR
)/dlls
422 .
/rmkdir
$(DIST_DIR
)/apps
423 .
/rmkdir
$(DIST_DIR
)/drivers
424 .
/rmkdir
$(DIST_DIR
)/dlls
425 .
/rmkdir
$(DIST_DIR
)/subsys
427 .PHONY
: clean_dist_dir make_dist_dirs
433 find .
-name
"*.[ch]" -print | etags
--language
=c
-