-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
92 lines (69 loc) · 2.58 KB
/
Copy pathMakefile
File metadata and controls
92 lines (69 loc) · 2.58 KB
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
#Build dir
BUILD_DIR = ./build
TEST_DIR := ./tests
#Source dir
SRC_DIR = ./src
# RISC-V 64-bit
#spike
#CCrisc = riscv64-unknown-elf-gcc
#CXXrisc = riscv64-unknown-elf-g++
#orangepi gcc
CCrisc = gcc
CXXrisc = g++
#orangepi clang
#CCrisc = clang-20
#CXXrisc = clang-20++
#EPAC
#CCrisc = clang
#CXXrisc = riscv64-linux-gnu-g++
#ARCH = rv64imacv
ARCH = rv64gcv
# Configuration
DEBUG = 0 # Enable debug prints
FLOAT_TYPE = USE_FLOAT #USE_FLOAT or USE_DOUBLE
RVV0_7 = USE_RVV0_7 # Enable RISC-V Vector Extension 0.7 support, set to 1 to enable
rvv = 1 # Enable RISC-V Vector Extension (RVV) support, set to 1 to enable
#gcc orangepi
CFLAGSrisc = -Wall -Wextra -O3 -fno-tree-vectorize -std=gnu99 -Drvv=$(rvv) -DDEBUG=$(DEBUG) -D$(FLOAT_TYPE) -march=$(ARCH)
CXXFLAGSrisc = -Wall -Wextra -O3 -fno-tree-vectorize -std=c++11 -Drvv=$(rvv) -DDEBUG=$(DEBUG) -D$(FLOAT_TYPE) -march=$(ARCH) -Isrc
#clang orangepi
#CFLAGSrisc = -Wall -Wextra -O3 -std=gnu99 -Rpass=loop-vectorize -Drvv=$(rvv) -DDEBUG=$(DEBUG) -D$(FLOAT_TYPE) -march=$(ARCH)
#CXXFLAGSrisc = -Wall -Wextra -O3 -std=c++11 -Rpass=loop-vectorize -Drvv=$(rvv) -DDEBUG=$(DEBUG) -D$(FLOAT_TYPE) -march=$(ARCH) -Isrc
#clang EPAC
#CFLAGSrisc = -Wall -Wextra -O3 -std=gnu99 -march=rv64g -mepi -g $(NO_AUTOVEC) -mcpu=avispado $(SDV_TRACE_INCL) -fno-vectorize -DDEBUG=$(DEBUG) -D$(FLOAT_TYPE) -D$(RVV0_7) -Drvv=$(rvv)
#CXXFLAGSrisc = -Wall -Wextra -O3 -std=c++11 -Drvv=$(rvv) -DDEBUG=$(DEBUG) -D$(FLOAT_TYPE) -D$(RVV0_7) -march=$(ARCH) -Isrc
TARGET_RVV = $(BUILD_DIR)/spmv_rvv
LDFLAGS =
LDLIBS := -lgtest -lgtest_main -pthread
# x86
CCx86 = gcc
CXX = g++
CFLAGSx86 = -Wall -Wextra -g -std=gnu99 -DDEBUG=$(DEBUG) -D$(FLOAT_TYPE)
CXXFLAGS = -Wall -Wextra -g -std=c++11 -Isrc -DDEBUG=$(DEBUG) -D$(FLOAT_TYPE)
TARGET_X86 = $(BUILD_DIR)/spmv_x86
SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS_RISCV64 = $(SRCS:.c=.risc.o)
OBJS_x86 = $(SRCS:.c=.x86.o)
TEST_FILES := $(wildcard $(TEST_DIR)/*.cpp)
OBJ_FOR_TEST := $(filter-out ./src/main.x86.o, $(OBJS_x86))
TEST_EXE=$(TEST_FILES:.cpp=)
.PHONY: all clean
riscv64: $(TARGET_RVV)
x86: $(TARGET_X86)
test: $(TEST_EXE)
all: $(TARGET_x86) $(TARGET_RVV)
$(TARGET_X86): $(OBJS_x86)
$(CCx86) $(LDFLAGS) $^ -o $@
$(TARGET_RVV): $(OBJS_RISCV64)
$(CCrisc) $(LDFLAGS) $^ -o $@
%.risc.o: %.c
$(CCrisc) $(CFLAGSrisc) -c $< -o $@
%.x86.o: %.c
$(CCx86) $(CFLAGSx86) -c $< -o $@
clean:
rm -f $(OBJS_x86) $(OBJS_RISCV64) $(TARGET_X86) $(TARGET_RVV)
rm -f $(TEST_OBJ_FILES) $(TEST_EXE)
$(TEST_DIR)/%.test.o: $(TEST_DIR)/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
$(TEST_DIR)/%: $(TEST_DIR)/%.test.o $(OBJ_FOR_TEST)
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDLIBS)