Skip to content

Commit d6e7341

Browse files
committed
refactored for using the a64-jit library
1 parent ea8b0d4 commit d6e7341

23 files changed

+412
-1636
lines changed

.DS_Store

0 Bytes
Binary file not shown.

Makefile

Lines changed: 134 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,146 @@
1+
UNAME:=$(shell uname -s)
12

2-
SRC_DIR:=src
3+
BIN:=bin/$(UNAME)
4+
TEST_BIN:=$(BIN)/test
35

4-
UNAME:=$(shell uname -s)
6+
TARGET:=$(BIN)/target
57

6-
P_TARGET:=bin/$(UNAME)/release/target
7-
DEBUG_MAIN:=dmain.c
8-
GEN_MAKEFILE:=build/$(UNAME)/generated.Makefile
8+
BUILD:=build/$(UNAME)
9+
TEST_BUILD:=$(BIN)/test/
910

11+
LIB:=lib/$(UNAME)
12+
INCLUDE:=include
1013

11-
all: $(GEN_MAKEFILE) $(P_TARGET) Makefile
14+
SRC:=src
15+
TEST:=test
16+
TEST_COMMON:=$(TEST)/common
1217

13-
build/$(UNAME)/:
14-
@mkdir -p $@
15-
@echo  $@
18+
MAIN:=main.c
1619

17-
$(GEN_MAKEFILE): build/$(UNAME)/
18-
@bash build.sh "$(DEBUG_MAIN)" "$(SRC_DIR)" "$(GEN_MAKEFILE)" "buildconfig"
19-
@echo "$@"
20+
SOURCE_C:=$(wildcard $(SRC)/*.c $(SRC)/*/*.c)
21+
SOURCE_H:=$(wildcard $(SRC)/*.h $(SRC)/*/*.h)
2022

21-
include $(GEN_MAKEFILE)
23+
TEST_C:=$(wildcard $(TEST_COMMON)/*.c $(TEST_COMMON)/*/*.c)
24+
TEST_H:=$(wildcard $(TEST_COMMON)/*.h $(TEST_COMMON)/*/*.h)
25+
TEST_TESTS:=$(wildcard $(TEST)/*.c)
2226

23-
clean:
24-
$(RM) -rf build
25-
$(RM) -rf bin
2627

28+
SOURCE_OBJ:=$(patsubst $(SRC)/%.c, $(BUILD)/%.o, $(SOURCE_C))
29+
TEST_OBJ:=$(patsubst $(TEST_COMMON)/%.c, $(TEST_BUILD)/%.o, $(TEST_C))
30+
31+
TESTS:=$(patsubst $(TEST)/%.c, $(TEST_BIN)/%, $(TEST_TESTS))
32+
33+
SOURCE_OBJ_MSG_PRINTED:=1
34+
TEST_OBJ_MSG_PRINTED:=1
35+
TEST_MSG_PRINTED:=1
36+
MAIN_MSG_PRINTED:=1
37+
38+
LIBS:=$(patsubst $(LIB)/%, -L%, $(wildcard $(LIB)/*))
39+
40+
CFLAGS:=-std=c2x -pedantic -Wall -Werror -Wno-newline-eof -Wno-gnu-binary-literal -Wno-unused-function $(LIBS) -g -I$(INCLUDE) -I$(SRC)
41+
SRC_CFLAGS:=-flto -O3
42+
TEST_CFLAGS:=-flto -O3 -I$(TEST_COMMON)
43+
44+
ifeq ($(UNAME), Linux)
45+
CC:=gcc
46+
DEBUG:=gdb -tui
47+
CHECK:=valgrind --leak-check=full --show-reachable=yes -s
48+
else
49+
CC:=clang
50+
DEBUG:=lldb
51+
endif
52+
53+
all: $(TARGET) Makefile
54+
55+
.PHONY: clean
56+
57+
$(BUILD)/%.o: $(SRC)/%.c $(SOURCE_H)
58+
@mkdir -p $(dir $@)
59+
60+
$(if $(filter 0,$(MAKELEVEL)), $(if $(filter 0,$(SOURCE_OBJ_MSG_PRINTED)),, \
61+
$(eval SOURCE_OBJ_MSG_PRINTED:=0) \
62+
@echo "\nCompiling object files"))
63+
64+
@$(CC) $(CFLAGS) $(SRC_CFLAGS) -c $< -o $@
65+
@printf " - %-50s <- %s\n" "$@" " $<"
2766

67+
$(TARGET): $(MAIN) $(SOURCE_OBJ)
68+
@mkdir -p $(dir $@)
2869

70+
$(if $(filter 0,$(MAKELEVEL)), $(if $(filter 0,$(MAIN_MSG_PRINTED)),, \
71+
$(eval MAIN_MSG_PRINTED:=0) \
72+
@echo "\nCompiling target"))
73+
74+
@$(CC) $(CFLAGS) $(SRC_CFLAGS) -o $@ $^
75+
@printf " - %-50s <- %s\n" "$@" " $^"
76+
77+
$(TEST_BUILD)/%.o: $(TEST_COMMON)/%.c $(SOURCE_H) $(TEST_H)
78+
@mkdir -p $(dir $@)
79+
80+
$(if $(filter 0,$(MAKELEVEL)), $(if $(filter 0,$(TEST_OBJ_MSG_PRINTED)),, \
81+
$(eval TEST_OBJ_MSG_PRINTED:=0) \
82+
@echo "\nCompiling test common files"))
83+
84+
@$(CC) $(CFLAGS) $(TEST_CFLAGS) -c $< -o $@
85+
@printf " - %-50s <- %s\n" "$@" " $<"
86+
87+
$(TEST_BIN)/%: $(TEST)/%.c $(SOURCE_OBJ) $(TEST_OBJ)
88+
@mkdir -p $(dir $@)
89+
90+
$(if $(filter 0,$(MAKELEVEL)), $(if $(filter 0,$(TEST_MSG_PRINTED)),, \
91+
$(eval TEST_MSG_PRINTED:=0) \
92+
@echo "\nCompiling tests"))
93+
94+
@$(CC) $(CFLAGS) $(TEST_CFLAGS) -o $@ $^
95+
@printf " - %-50s <- %s\n" "$@" " $^"
96+
97+
run-tests: $(TESTS)
98+
@mkdir -p files
99+
@echo "\nRunning tests\n"
100+
@pass=0; fail=0; \
101+
green='\033[32m'; red='\033[31m'; reset='\033[0m'; \
102+
for test in $(TESTS); do \
103+
if $$test; then \
104+
printf "%-50s %bPASSED%b\n" "Test $$(basename $$test):" "$${green}" "$${reset}"; \
105+
pass=$$((pass+1)); \
106+
else \
107+
printf "%-50s %bFAILED%b\n" "Test $$(basename $$test):" "$${red}" "$${reset}"; \
108+
fail=$$((fail+1)); \
109+
fi; \
110+
done; \
111+
echo "\nSummary: $${green}$$pass passed$${reset}, $${red}$$fail failed$${reset}";
112+
113+
run: $(TARGET)
114+
./$<
115+
116+
print_vars:
117+
@printf "%-50s %s\n" "UNAME" "$(UNAME)"
118+
@printf "%-50s %s\n" "BIN" "$(BIN)"
119+
@printf "%-50s %s\n" "TEST_BIN" "$(TEST_BIN)"
120+
@printf "%-50s %s\n" "TARGET" "$(TARGET)"
121+
@printf "%-50s %s\n" "BUILD" "$(BUILD)"
122+
@printf "%-50s %s\n" "TEST_BUILD" "$(TEST_BUILD)"
123+
@printf "%-50s %s\n" "LIB" "$(LIB)"
124+
@printf "%-50s %s\n" "INCLUDE" "$(INCLUDE)"
125+
@printf "%-50s %s\n" "SRC" "$(SRC)"
126+
@printf "%-50s %s\n" "TEST" "$(TEST)"
127+
@printf "%-50s %s\n" "TEST_COMMON" "$(TEST_COMMON)"
128+
@printf "%-50s %s\n" "MAIN" "$(MAIN)"
129+
@printf "%-50s %s\n" "SOURCE_C" "$(SOURCE_C)"
130+
@printf "%-50s %s\n" "SOURCE_H" "$(SOURCE_H)"
131+
@printf "%-50s %s\n" "TEST_C" "$(TEST_C)"
132+
@printf "%-50s %s\n" "TEST_H" "$(TEST_H)"
133+
@printf "%-50s %s\n" "TEST_TESTS" "$(TEST_TESTS)"
134+
@printf "%-50s %s\n" "SOURCE_OBJ" "$(SOURCE_OBJ)"
135+
@printf "%-50s %s\n" "TEST_OBJ" "$(TEST_OBJ)"
136+
@printf "%-50s %s\n" "TESTS" "$(TESTS)"
137+
@printf "%-50s %s\n" "CFLAGS" "$(CFLAGS)"
138+
@printf "%-50s %s\n" "SRC_CFLAGS" "$(SRC_CFLAGS)"
139+
@printf "%-50s %s\n" "TEST_CFLAGS" "$(TEST_CFLAGS)"
140+
@printf "%-50s %s\n" "CC" "$(CC)"
141+
@printf "%-50s %s\n" "DEBUG" "$(DEBUG)"
142+
@printf "%-50s %s\n" "CHECK" "$(CHECK)"
143+
144+
clean:
145+
rm -rf $(BIN)
146+
rm -rf $(BUILD)

0 commit comments

Comments
 (0)