-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.arm32t
140 lines (119 loc) · 6.06 KB
/
Makefile.arm32t
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
.SUFFIXES:
MAKEFLAGS += --no-builtin-rules --no-builtin-variables
OB := ecsd
AS := armt32asm
DAS := armt32dism
LK := linkmem
QEMU := qemu-system-arm
DEVICE := mps2-an386 # cortex-m4
ADR := 0x00000000
ECS := /c/EigenCompilerSuite/runtime
# OptSpeed or OptSize
OPT = OptSize
# Real64 or Real32
Real = Real32
CPU = armt32
# Semihost or Baremetal
SYS = Semihost
RTS = armv7mrun.obf $(ECS)/armt32run.obf $(ECS)/obarmt32run.lib
OLS += Const Config$(SYS) Type Char ArrayOfChar$(OPT) Integer Cardinal $(Real) ArrayOfByte$(OPT)
OLS += ArrayOfSet DateTime String StringPattern ADTBasicType ADTStream ADTList ADTVector
OLS += ADTSet ADTDictionary ADTTree O2Testing
OLS += OSHost$(SYS) OSStream OSFile OSDir OSPath DataConfig DataLZ4 SysMem
MOD = $(addprefix src/, $(addprefix Std., $(addsuffix .mod, $(OLS))))
OBF = $(addprefix build/, $(addprefix Std., $(addsuffix .obf, $(OLS))))
OTS = TestArrayOfByte TestArrayOfChar TestArrayOfSet TestCardinal TestInteger TestReal
OTS += TestString TestStringPattern TestDateTime TestADTBasicType TestADTList TestADTSet
OTS += TestADTDictionary TestADTVector TestADTTree TestADTStream
OTS += TestOSPath TestOS$(SYS) TestDataConfig TestDataLZ4 MainNoOS
TMOD = $(addprefix tests/, $(addsuffix .mod, $(OTS)))
TOBF = $(addprefix build/, $(addsuffix .obf, $(OTS)))
.PHONY: all
all : std$(CPU).lib
build/Std.ADTBasicType.obf : src/Std.Type.mod
build/Std.ADTDictionary.obf : src/Std.ADTVector.mod
build/Std.ADTSet.obf : src/Std.ADTVector.mod
build/Std.ADTStream.obf : src/Std.ArrayOfByte$(OPT).mod src/Std.ArrayOfChar$(OPT).mod src/Std.Cardinal.mod src/Std.Config$(SYS).mod src/Std.Const.mod src/Std.DateTime.mod src/Std.Integer.mod src/Std.String.mod src/Std.Type.mod
build/Std.ADTVector.obf : src/Std.ArrayOfByte$(OPT).mod src/Std.Cardinal.mod
build/Std.ArrayOfChar$(OPT).obf : src/Std.Char.mod src/Std.Const.mod src/Std.Type.mod
build/Std.ArrayOfSet.obf : src/Std.ArrayOfByte$(OPT).mod
build/Std.Cardinal.obf : src/Std.Const.mod src/Std.Type.mod src/Std.Char.mod src/Std.OSHost$(SYS).mod
build/Std.DateTime.obf : src/Std.Const.mod src/Std.Type.mod src/Std.Char.mod src/Std.Integer.mod src/Std.OSHost$(SYS).mod src/Std.ArrayOfChar$(OPT).mod
build/Std.Integer.obf : src/Std.Const.mod src/Std.Type.mod src/Std.Char.mod
build/Std.$(Real).obf : src/Std.Const.mod src/Std.Type.mod src/Std.Char.mod src/Std.ArrayOfChar$(OPT).mod
build/Std.O2Testing.obf : src/Std.ArrayOfChar$(OPT).mod
build/Std.OS.obf : src/Std.Char.mod src/Std.ArrayOfChar$(OPT).mod src/Std.String.mod src/Std.OSHost$(SYS).mod
build/Std.OSDir.obf : src/Std.String.mod src/Std.OSHost$(SYS).mod
build/Std.OSFile.obf : src/Std.DateTime.mod src/Std.OSHost$(SYS).mod
build/Std.OSPath.obf : src/Std.ArrayOfChar$(OPT).mod src/Std.Config$(SYS).mod src/Std.Const.mod src/Std.Char.mod src/Std.OSDir.mod src/Std.String.mod
build/Std.OSStream.obf : src/Std.Const.mod src/Std.ADTStream.mod src/Std.OSHost$(SYS).mod
build/Std.String.obf : src/Std.Char.mod src/Std.Config$(SYS).mod src/Std.Type.mod src/Std.ArrayOfChar$(OPT).mod src/Std.Integer.mod src/Std.Cardinal.mod src/Std.DateTime.mod
build/TestStringPattern.obf : src/Std.StringPattern.mod src/Std.ArrayOfChar$(OPT).mod
build/Std.DataConfig.obf : src/Std.Const.mod src/Std.Char.mod src/Std.ArrayOfChar$(OPT).mod src/Std.String.mod src/Std.Type.mod src/Std.ADTDictionary.mod src/Std.ADTSet.mod
build/%.obf: src/%.mod
@echo compiling $<
@mkdir -p build
@cd build && cp -f $(addprefix ../, $<) .
@cd build && $(OB) -t armt32 -c $(notdir $<)
build/%.obf: src/%.asm
@echo compiling $<
@mkdir -p build
@cd build && cp -f $(addprefix ../, $<) .
@cd build && $(AS) $(notdir $<)
std$(CPU).lib : $(OBF)
@echo linking $@
@-rm $@
@touch $@
@linklib $@ $^
build/armv7mrun.obf : src/armv7mrun.asm
@echo compiling $<
@mkdir -p build
@cd build && cp -f $(addprefix ../, $<) .
@cd build && $(AS) $(notdir $<)
build/TestADTBasicType.obf : src/Std.ADTBasicType.mod
build/TestADTDictionary.obf : src/Std.ADTDictionary.mod
build/TestADTList.obf : src/Std.ADTList.mod
build/TestADTSet.obf : src/Std.ADTSet.mod
build/TestADTTree.obf : src/Std.ADTTree.mod
build/TestADTVector.obf : src/Std.ADTVector.mod
build/TestADTStream.obf : src/Std.Const.mod src/Std.String.mod src/Std.ADTStream.mod
build/TestArrayOfByte.obf : src/Std.ArrayOfByte$(OPT).mod
build/TestArrayOfChar.obf : src/Std.ArrayOfChar$(OPT).mod
build/TestArrayOfSet.obf : src/Std.ArrayOfSet.mod
build/TestCardinal.obf : src/Std.Cardinal.mod
build/TestDateTime.obf : src/Std.DateTime.mod
build/TestInteger.obf : src/Std.Integer.mod
build/TestOS.obf : src/Std.String.mod src/Std.OSStream.mod src/Std.OSPath.mod src/Std.OSFile.mod src/Std.OSDir.mod
build/TestOSPath.obf : src/Std.OSPath.mod
build/TestString.obf : src/Std.String.mod
build/TestStringPattern.obf : src/Std.StringPattern.mod src/Std.ArrayOfChar$(OPT).mod
build/TestDataConfig.obf : src/Std.DataConfig.mod src/Std.ADTStream.mod src/Std.String.mod
build/TestDataLZ4.obf : src/Std.DataLZ4.mod src/Std.ArrayOfChar$(OPT).mod
build/%.obf: tests/%.mod
@echo compiling $<
@mkdir -p build
@cd build && cat $(addprefix ../, $<) | awk '{gsub("__LINE__",NR,$$0);print}' > $(notdir $<)
@cd build && $(OB) -t armt32 -c $(notdir $<)
.PHONY: TestMain
TestMain : $(TOBF) std$(CPU).lib build/armv7mrun.obf
@echo compiling $<
@mkdir -p build
@cd build && $(LK) $(notdir $(TOBF)) ../std$(CPU).lib $(RTS)
@cd build && $(QEMU) -M $(DEVICE) -semihosting -nographic -device loader,file=TestArrayOfByte.rom,addr=$(ADR)
.PHONY: Test
Test : misc/Test.mod std$(CPU).lib build/armv7mrun.obf
@echo compiling $<
@mkdir -p build
@cd build && cp -f $(addprefix ../, $<) .
@cd build && $(OB) -t armt32 -c $(notdir $<)
@cd build && $(LK) Test.obf ../std$(CPU).lib $(RTS)
@cd build && $(QEMU) -M $(DEVICE) -semihosting -semihosting-config arg="test a b c" -nographic -device loader,file=Test.rom,addr=$(ADR)
.PHONY: install
install: std$(CPU).lib
@echo Install
@cp -f std$(CPU).lib /c/EigenCompilerSuite/runtime/
@cp -f build/std.*.sym /c/EigenCompilerSuite/libraries/oberon/
.PHONY: clean
clean:
@echo Clean
@-rm -rf build