4 # (Oh man! This is hacky, but beautiful at the same time, much like the
9 SUBMAKE = $(MAKE) --no-print-directory
11 MODULES = FS_Ext2 FDD BochsGA IPStack NE2000 USB
12 USRLIBS = ld-acess.so libacess.so libgcc.so libc.so
13 USRAPPS = init login CLIShell cat ls mount ifconfig
15 ALL_MODULES = $(addprefix all-,$(MODULES))
16 ALL_USRLIBS = $(addprefix all-,$(USRLIBS))
17 ALL_USRAPPS = $(addprefix all-,$(USRAPPS))
18 CLEAN_MODULES = $(addprefix clean-,$(MODULES))
19 CLEAN_USRLIBS = $(addprefix clean-,$(USRLIBS))
20 CLEAN_USRAPPS = $(addprefix clean-,$(USRAPPS))
21 INSTALL_MODULES = $(addprefix install-,$(MODULES))
22 INSTALL_USRLIBS = $(addprefix install-,$(USRLIBS))
23 INSTALL_USRAPPS = $(addprefix install-,$(USRAPPS))
25 .PHONY: all clean install \
26 $(ALL_MODULES) all-Kernel $(ALL_USRLIBS) $(ALL_USRAPPS) \
27 $(CLEAN_MODULES) clean-Kernel $(CLEAN_USRLIBS) $(CLEAN_USRAPPS) \
28 $(INSTALL_MODULES) install-Kernel $(INSTALL_USRLIBS) $(INSTALL_USRAPPS)
30 all: $(ALL_MODULES) all-Kernel $(ALL_USRLIBS) $(ALL_USRAPPS)
31 clean: $(CLEAN_MODULES) clean-Kernel $(CLEAN_USRLIBS) $(CLEAN_USRAPPS)
32 install: $(INSTALL_MODULES) install-Kernel $(INSTALL_USRLIBS) $(INSTALL_USRAPPS)
35 $(ALL_MODULES): all-%:
36 @echo === Module: $* && $(SUBMAKE) all -C Modules/$*
38 @echo === Kernel && $(SUBMAKE) all -C Kernel
39 $(ALL_USRLIBS): all-%:
40 @echo === User Library: $* && $(SUBMAKE) all -C Usermode/Libraries/$*_src
41 $(ALL_USRAPPS): all-%:
42 @echo === User Application: $* && $(SUBMAKE) all -C Usermode/Applications/$*_src
44 $(CLEAN_MODULES): clean-%:
45 @$(SUBMAKE) clean -C Modules/$*
47 @$(SUBMAKE) clean -C Kernel
48 $(CLEAN_USRLIBS): clean-%:
49 @$(SUBMAKE) clean -C Usermode/Libraries/$*_src
50 $(CLEAN_USRAPPS): clean-%:
51 @$(SUBMAKE) clean -C Usermode/Applications/$*_src
53 $(INSTALL_MODULES): install-%:
54 @$(SUBMAKE) install -C Modules/$*
56 @$(SUBMAKE) install -C Kernel
57 $(INSTALL_USRLIBS): install-%:
58 @$(SUBMAKE) install -C Usermode/Libraries/$*_src
59 $(INSTALL_USRAPPS): install-%:
60 @$(SUBMAKE) install -C Usermode/Applications/$*_src