-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathMakefile
141 lines (119 loc) · 4.36 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#
# Acess2 Core Makefile
#
# (Oh man! This is hacky, but beautiful at the same time, much like the
# rest of Acess)
-include Makefile.cfg
.PHONY: all clean SyscallList all-user
SUBMAKE = $(MAKE) --no-print-directory
USRLIBS := crt0.o ld-acess.so libc.so libposix.so libc++.so libpthread.so
USRLIBS += libreadline.so libnet.so liburi.so libpsocket.so
USRLIBS += libimage_sif.so libunicode.so libm.so
USRLIBS += libaxwin4.so
EXTLIBS :=
#libspiderscript
# zlib libpng
USRAPPS := init login CLIShell cat ls mount automounter
USRAPPS += insmod
USRAPPS += bomb lspci
USRAPPS += ip dhcpclient ping telnet irc wget telnetd
USRAPPS += axwin3 gui_ate gui_terminal
USRAPPS += axwin4
define targetclasses
AI_$1 := $$(addprefix allinstall-,$$($1))
ALL_$1 := $$(addprefix all-,$$($1))
CLEAN_$1 := $$(addprefix clean-,$$($1))
INSTALL_$1 := $$(addprefix install-,$$($1))
endef
$(eval $(call targetclasses,DYNMODS))
$(eval $(call targetclasses,MODULES))
$(eval $(call targetclasses,USRLIBS))
$(eval $(call targetclasses,EXTLIBS))
$(eval $(call targetclasses,USRAPPS))
targetvars := $$(AI_$1) $$(ALL_$1) $$(CLEAN_$1) $$(INSTALL_$1)
.PHONY: all clean install \
ai-kmode all-kmode clean-kmode install-kmode \
ai-user all-user clean-user install-user \
utest mtest
.PHONY: allinstall-Kernel all-Kernel clean-Kernel install-Kernel \
$(call targetvars,DYNMODS) \
$(call targetvars,MODULES) \
$(call targetvars,USRLIBS) \
$(call targetvars,EXTLIBS) \
$(call targetvars,USRAPPS)
ai-kmode: $(AI_MODULES) allinstall-Kernel $(AI_DYNMODS)
all-kmode: $(ALL_MODULES) all-Kernel $(ALL_DYNMODS)
clean-kmode: $(CLEAN_MODULES) $(CLEAN_DYNMODS) clean-Kernel
install-kmode: $(INSTALL_MODULES) install-Kernel $(INSTALL_DYNMODS)
ai-user: $(AI_USRLIBS) $(AI_EXTLIBS) $(AI_USRAPPS)
all-user: $(ALL_USRLIBS) $(ALL_EXTLIBS) $(ALL_USRAPPS)
clean-user: $(CLEAN_USRLIBS) $(CLEAN_EXTLIBS) $(CLEAN_USRAPPS)
install-user: $(INSTALL_USRLIBS) $(INSTALL_EXTLIBS) $(INSTALL_USRAPPS)
all: SyscallList all-user all-kmode
all-install: install-Filesystem SyscallList ai-user ai-kmode
clean: clean-kmode clean-user
install: install-Filesystem SyscallList install-user install-kmode
utest-build: $(USRLIBS:%=utest-build-%)
utest-run: $(USRLIBS:%=utest-run-%)
utest: utest-build utest-run
utest-build-%:
@CC=$(NCC) $(SUBMAKE) -C Usermode/Libraries/$*_src generate_exp
@CC=$(NCC) $(SUBMAKE) -C Usermode/Libraries/$*_src utest-build
utest-run-%:
@CC=$(NCC) $(SUBMAKE) -C Usermode/Libraries/$*_src utest-run -k
# TODO: Module tests using DiskTool and NetTest
mtest: mtest-build mtest-run
@echo > /dev/null
mtest-build:
# Network
@echo "== Build Module Tests"
@echo "-- nativelib"
@CC=$(NCC) $(SUBMAKE) -C Tools/nativelib
@echo "-- NetTest"
@CC=$(NCC) $(SUBMAKE) -C Tools/NetTest
@echo "-- NetTest Runner"
@CC=$(NCC) $(SUBMAKE) -C Tools/NetTest_Runner
mtest-run:
@echo "=== Network Module Test ==="
@cd Tools && ./nettest_runner
SyscallList: include/syscalls.h
include/syscalls.h: KernelLand/Kernel/Makefile KernelLand/Kernel/syscalls.lst
@make -C KernelLand/Kernel/ include/syscalls.h
_build_dynmod := BUILDTYPE=dynamic $(SUBMAKE) -C KernelLand/Modules/
_build_stmod := BUILDTYPE=static $(SUBMAKE) -C KernelLand/Modules/
_build_kernel := $(SUBMAKE) -C KernelLand/Kernel
define rules
$$(ALL_$1): all-%: $(CC)
+@echo === $2 && $3 all
$$(AI_$1): allinstall-%: $(CC)
+@echo === $2 && $3 all install
$$(CLEAN_$1): clean-%: $(CC)
+@echo === $2 && $3 clean
$$(INSTALL_$1): install-%: $(CC)
+@$3 install
endef
$(eval $(call rules,DYNMODS,Dynamic Module: $$*,$(_build_dynmod)$$*))
$(eval $(call rules,MODULES,Module: $$*,$(_build_stmod)$$*))
$(eval $(call rules,USRLIBS,User Library: $$*,$(SUBMAKE) -C Usermode/Libraries/$$*_src))
$(eval $(call rules,EXTLIBS,External Library: $$*,$(SUBMAKE) -C Externals/$$*))
$(eval $(call rules,USRAPPS,User Application: $$*,$(SUBMAKE) -C Usermode/Applications/$$*_src))
all-Kernel: $(CC)
+@echo === Kernel && $(_build_kernel) all
allinstall-Kernel: $(CC)
+@echo === Kernel && $(_build_kernel) all install
clean-Kernel: $(CC)
+@$(_build_kernel) clean
install-Kernel: $(CC)
@$(_build_kernel) install
install-Filesystem: $(CC)
@$(SUBMAKE) install -C Usermode/Filesystem
ifeq ($(ARCHDIR),native)
.PHONY: $(CC)
else
$(CC):
@echo ---
@echo $(CC) does not exist, recompiling
@echo ---
for dir in $(USRLIBS:%=Usermode/Libraries/%_src); do $(SUBMAKE) -C $$dir _libs; done
make -C Externals/cross-compiler/ -f Makefile.cross
endif