1
1
CXX ?= g++-12
2
+ CXXFLAGS += -I$(SRCDIR ) -I$(UTILS ) -O3
3
+ GTESTCFLAGS = ` pkg-config --cflags gtest_main `
4
+ GTESTLDFLAGS = ` pkg-config --static --libs gtest_main `
5
+ GBENCHCFLAGS = ` pkg-config --cflags benchmark `
6
+ GBENCHLDFLAGS = ` pkg-config --static --libs benchmark `
7
+ MARCHFLAG = -march=sapphirerapids
8
+
2
9
SRCDIR = ./src
3
10
TESTDIR = ./tests
4
11
BENCHDIR = ./benchmarks
@@ -8,13 +15,16 @@ TESTS = $(wildcard $(TESTDIR)/*.cpp)
8
15
BENCHS = $(wildcard $(BENCHDIR ) /* .cpp)
9
16
TESTOBJS = $(patsubst $(TESTDIR ) /% .cpp,$(TESTDIR ) /% .o,$(TESTS ) )
10
17
BENCHOBJS = $(patsubst $(BENCHDIR ) /% .cpp,$(BENCHDIR ) /% .o,$(BENCHS ) )
11
- BENCHOBJS := $(filter-out $(BENCHDIR ) /main.o ,$(BENCHOBJS ) )
12
- CXXFLAGS += -I$(SRCDIR ) -I$(UTILS )
13
- GTESTCFLAGS = ` pkg-config --cflags gtest_main `
14
- GTESTLDFLAGS = ` pkg-config --libs gtest_main `
15
- GBENCHCFLAGS = ` pkg-config --cflags benchmark `
16
- GBENCHLDFLAGS = ` pkg-config --libs benchmark `
17
- MARCHFLAG = -march=sapphirerapids -O3
18
+
19
+ # Compiling AVX512-FP16 instructions isn't possible for g++ < 12
20
+ ifeq ($(shell expr `$(CXX ) -dumpversion | cut -d '.' -f 1` \< 12) , 1)
21
+ MARCHFLAG = -march=icelake-client
22
+ BENCHOBJS_SKIP += bench-qsortfp16.o
23
+ TESTOBJS_SKIP += test-qsortfp16.o
24
+ endif
25
+
26
+ BENCHOBJS := $(filter-out $(addprefix $(BENCHDIR ) /, $(BENCHOBJS_SKIP ) ) ,$(BENCHOBJS ) )
27
+ TESTOBJS := $(filter-out $(addprefix $(TESTDIR ) /, $(TESTOBJS_SKIP ) ) ,$(TESTOBJS ) )
18
28
19
29
all : test bench
20
30
@@ -31,7 +41,7 @@ $(BENCHDIR)/%.o : $(BENCHDIR)/%.cpp $(SRCS)
31
41
$(CXX ) $(CXXFLAGS ) $(MARCHFLAG ) $(GBENCHCFLAGS ) -c $< -o $@
32
42
33
43
bench : $(BENCHOBJS ) $(UTILS ) /cpuinfo.o
34
- $(CXX ) $(BENCHDIR ) /main.cpp $(BENCHOBJS ) $(MARCHFLAG ) $(CXXFLAGS ) $(GBENCHLDFLAGS ) $( UTILS ) /cpuinfo.o -o benchexe
44
+ $(CXX ) $(BENCHOBJS ) $(UTILS ) /cpuinfo.o $(MARCHFLAG ) $(CXXFLAGS ) -lbenchmark_main $(GBENCHLDFLAGS ) -o benchexe
35
45
36
46
meson :
37
47
meson setup --warnlevel 0 --buildtype plain builddir
0 commit comments