@@ -7,29 +7,35 @@ CXX ?= g++
7
7
# NCHECK=1
8
8
# uncomment for full base64 checking (default=partial checking, detect allmost all errors)
9
9
# FULLCHECK=1
10
- # RDTSC=1
10
+ # uncomment for use memcpy instead of unaligned loads
11
+ # UAMEMCPY=1
12
+
11
13
# NAVX512=1
14
+ # NAVX2=1
15
+ # NSSE=1
16
+ # NAVX=1
12
17
18
+ # RDTSC=1
19
+ # XBASE64=1
20
+
21
+ # CC=aarch64-linux-gnu-gcc
13
22
# CC=powerpc64le-linux-gnu-gcc
14
- # DEFS=$(DEBUG)
15
- # CFLAGS=$(DEBUG)
16
- # UAMEMCPY=1
17
23
18
- # DEFS +=-DDEBUG -g
19
- DEFS + =-DNDEBUG
24
+ # CFLAGS +=-DDEBUG -g
25
+ CFLAGS + =-DNDEBUG
20
26
21
27
# ------- OS/ARCH -------------------
22
28
ifneq (,$(filter Windows% ,$(OS ) ) )
23
29
OS := Windows
24
- # CC=gcc
25
- # CXX=g++
26
30
ARCH =x86_64
27
31
else
28
32
OS := $(shell uname -s)
29
33
ARCH := $(shell uname -m)
30
34
31
35
ifneq (,$(findstring aarch64,$(CC ) ) )
32
36
ARCH = aarch64
37
+ else ifneq (,$(findstring arm64,$(ARCH)))
38
+ ARCH = aarch64
33
39
else ifneq (,$(findstring powerpc64le,$(CC)))
34
40
ARCH = ppc64le
35
41
endif
47
53
endif
48
54
MSSE=-march =armv8-a
49
55
else ifeq ($(ARCH),$(filter $(ARCH),x86_64 ppc64le))
50
- CFLAGS=-march =native
51
56
MSSE =-mssse3
52
57
endif
53
58
54
- ifeq (,$(findstring clang, $(CC ) ) )
55
- DEFS+ =-falign-loops -fstrict-aliasing
56
- endif
57
- # $(info ARCH="$(ARCH)")
58
-
59
59
ifeq ($(OS ) ,$(filter $(OS ) ,Linux GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD MSYS_NT Haiku) )
60
60
LDFLAGS+ =-lrt
61
61
endif
@@ -65,8 +65,9 @@ LDFLAGS+=-static
65
65
endif
66
66
67
67
FPIC =-fPIC
68
-
69
- all : tb64app libtb64.so libtb64.a
68
+ ifeq (,$(findstring clang, $(CC ) ) )
69
+ CFLAGS+ =-falign-loops
70
+ endif
70
71
71
72
ifeq ($(NCHECK ) ,1)
72
73
DEFS+ =-DNB64CHECK
@@ -84,53 +85,42 @@ ifeq ($(UAMEMCPY),1)
84
85
DEFS+ =-DUA_MEMCPY
85
86
endif
86
87
87
- turbob64c.o : turbob64c.c
88
- $(CC ) -O3 $(MARCH ) $(DEFS ) $(FPIC ) -fstrict-aliasing $< -c -o $@
89
-
90
- tb64app.o : tb64app.c
91
- $(CC ) -O3 $(DEFS ) $< -c -o $@
92
-
93
- turbob64d.o : turbob64d.c
94
- $(CC ) -O3 $(MARCH ) $(DEFS ) $(FPIC ) -fstrict-aliasing $< -c -o $@
88
+ ifeq ($(XBASE64 ) ,1)
89
+ include xtb64.mak
90
+ endif
95
91
96
- turbob64v128.o : turbob64v128.c
97
- $(CC ) -O3 $(MSSE ) $(DEFS ) $(FPIC ) -fstrict-aliasing $< -c -o $@
92
+ all : tb64app libtb64.so libtb64.a
98
93
94
+ tb64app.o : CFLAGS+=$(XDEFS ) $(MARCH )
95
+ turbob64c.o : CFLAGS+=$(DEFS ) $(FPIC ) -fstrict-aliasing $(MARCH )
96
+ turbob64d.o : CFLAGS+=$(DEFS ) $(FPIC ) -fstrict-aliasing $(MARCH )
97
+ turbob64v128.o : CFLAGS+=$(DEFS ) $(FPIC ) -fstrict-aliasing $(MSSE )
98
+ turbob64v256.o : CFLAGS+=$(DEFS ) $(FPIC ) -fstrict-aliasing -march=haswell
99
+ turbob64v512.o : CFLAGS+=$(DEFS ) $(FPIC ) -fstrict-aliasing -march=skylake-avx512 -mavx512vbmi
99
100
turbob64v128a.o : turbob64v128.c
100
- $(CC ) -O3 $(DEFS ) $(FPIC ) -march=corei7-avx -mtune=corei7-avx -mno-aes -fstrict-aliasing $< -c -o turbob64v128a.o
101
-
102
- turbob64v256.o : turbob64v256.c
103
- $(CC ) -O3 $(FPIC ) $(DEFS ) -march=haswell -fstrict-aliasing -falign-loops $< -c -o $@
101
+ $(CC ) -O3 $(CFLAGS ) $(DEFS ) $(FPIC ) -fstrict-aliasing -march=corei7-avx -mtune=corei7-avx -mno-aes $< -c -o turbob64v128a.o
104
102
105
- turbob64v512.o : turbob64v512.c
106
- $(CC ) -O3 $(FPIC ) -march=skylake-avx512 -mavx512vbmi -fstrict-aliasing -falign-loops $< -c -o $@
107
-
108
- _tb64.o : _tb64.c
109
- $(CC ) -O3 $(FPIC ) -I/usr/include/python2.7 $< -c -o $@
103
+ # _tb64.o: _tb64.c
104
+ # $(CC) -O3 $(FPIC) -I/usr/include/python2.7 $< -c -o $@
110
105
111
106
LIB =turbob64c.o turbob64d.o turbob64v128.o
112
107
ifeq ($(ARCH ) ,x86_64)
113
108
LIB+ =turbob64v128a.o turbob64v256.o
114
- endif
115
-
116
- ifeq ($(BASE64 ) ,1)
117
- include xtb64make
118
- endif
119
-
120
109
ifneq ($(NAVX512 ) ,1)
121
110
LIB+ =turbob64v512.o
122
111
else
123
112
DEFS+ =-DNAVX512
124
113
endif
114
+ endif
125
115
126
116
# _tb64.so: _tb64.o
127
- # gcc -shared $^ -o $@
117
+ # $(CC) -shared $^ -o $@
128
118
129
119
libtb64.a : $(LIB )
130
120
ar cr $@ $+
131
121
132
122
libtb64.so : $(LIB )
133
- gcc -shared $^ -o $@
123
+ $( CC ) -shared $^ -o $@
134
124
135
125
install :
136
126
cp libtb64.so ~ /.local/lib/
@@ -139,8 +129,8 @@ install:
139
129
# ./python/tb64/build.py
140
130
# cp _tb64.so ~/.local/lib/
141
131
142
- tb64app : $(LIB ) tb64app.o
143
- $(CC ) -O3 $(LIB ) tb64app.o $(LDFLAGS ) -o tb64app
132
+ tb64app : $(LIB ) $( XLIB ) tb64app.o
133
+ $(CC ) -O3 $(LIB ) $( XLIB ) $( XDEFS ) tb64app.o $(LDFLAGS ) -o tb64app
144
134
145
135
tb64bench : $(LIB ) tb64bench.o
146
136
$(CC ) -O3 $(LIB ) tb64bench.o $(LDFLAGS ) -o tb64bench
@@ -149,7 +139,7 @@ tb64test: $(LIB) tb64test.o
149
139
$(CC ) -O3 $(LIB ) tb64test.o $(LDFLAGS ) -o tb64test
150
140
151
141
.c.o :
152
- $(CC ) -O3 $(CFLAGS ) $( MARCH ) $ < -c -o $@
142
+ $(CC ) -O3 $(CFLAGS ) $< -c -o $@
153
143
154
144
ifeq ($(OS ) ,Windows)
155
145
clean :
0 commit comments