-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile
355 lines (322 loc) · 18.5 KB
/
Makefile
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
# Определяем тип операционной системы
OS := $(shell uname -s)
# Название приложения
NAME = asc
# Если это MacOS X (Сборка через make)
ifeq ($(OS), Darwin)
# Компилятор
CC = clang++
# Версия
PYVER = 8
# Питон
PYTHON = python3.$(PYVER)
# Путь питона
PYPATH = /System/Volumes/Data/usr/local/Cellar/python@3.$(PYVER)/3.$(PYVER).5/Frameworks/Python.framework/Versions/3.$(PYVER)
# Сторонние модули
LIBS = \
-lm \
-lz \
-lssl \
-flto \
-lstdc++ \
-lcrypto \
-lpthread \
-ljemalloc \
-l$(PYTHON) \
-L$(PYPATH)/lib \
-L/usr/lib \
-L/usr/local/lib \
-L/usr/local/Cellar/openssl@1.1/1.1.1g/lib
# Расширение библиотеки
EXT = dylib
# Библиотеки для тестовой сборки
UNITLIBS = \
./gtest/mac/libgtest.a \
./gtest/mac/libgtest_main.a
# Заголовочные файлы
INCLUDE = \
-I./ \
-I./alm \
-I./include \
-I./alm/include \
-I./contrib/include \
-I./alm/contrib/include \
-I/usr/include \
-I/usr/local/include \
-I./gtest/include \
-I$(PYPATH)/include/$(PYTHON) \
-I/usr/local/Cellar/openssl@1.1/1.1.1g/include
# brew install google-perftools
# Отладчик
DEBUG = -glldb
endif
# Если это FreeBSD (Сборка через gmake)
ifeq ($(OS), FreeBSD)
# Компилятор
CC = clang++
# Версия
PYVER = 7
# Питон
PYTHON = python3.$(PYVER)m
# Сторонние модули
LIBS = \
-lm \
-lz \
-lssl \
-flto \
-lstdc++ \
-lcrypto \
-lpthread \
-ljemalloc \
-l$(PYTHON) \
-L/usr/lib \
-L/usr/local/lib
# Расширение библиотеки
EXT = so
# Библиотеки для тестовой сборки
UNITLIBS = \
./gtest/freebsd/libgtest.a \
./gtest/freebsd/libgtest_main.a
# Заголовочные файлы
INCLUDE = \
-I./ \
-I./alm \
-I./include \
-I./alm/include \
-I./contrib/include \
-I./alm/contrib/include \
-I/usr/include \
-I/usr/local/include \
-I./gtest/include \
-I/usr/local/include/$(PYTHON)
# pkg install google-perftools-2.7_1
# Отладчик
DEBUG = -glldb
endif
# Если это Linux
ifeq ($(OS), Linux)
# Компилятор
CC = gcc
# Версия
PYVER = 7
# Питон
PYTHON = python3.$(PYVER)m
# Сторонние модули
LIBS = \
-lm \
-lz \
-lssl \
-flto \
-lstdc++ \
-lcrypto \
-lpthread \
-ljemalloc \
-l$(PYTHON) \
-L/usr/lib \
-L/usr/local/lib
# Расширение библиотеки
EXT = so
# Библиотеки для тестовой сборки
UNITLIBS = \
./gtest/linux/libgtest.a \
./gtest/linux/libgtest_main.a
# Заголовочные файлы
INCLUDE = \
-I./ \
-I./alm \
-I./include \
-I./alm/include \
-I./contrib/include \
-I./alm/contrib/include \
-I/usr/include \
-I/usr/local/include \
-I./gtest/include \
-I/usr/include/$(PYTHON)
# apt install libgoogle-perftools-dev
# Отладчик
DEBUG = -ggdb3
endif
# Бинарный файл
BIN = ./bin
# Каталог сборки
BUILD = ./build
# Конфиг для сборки отладочной версии
CONFDEV = -std=c++11 -O0 -fno-permissive -Wno-pedantic -Wno-unknown-attributes
# Конфиг для стандартной сборки
CONFIG = -std=c++11 -O2 -pipe -mfma -mrdrnd -mf16c -fno-permissive -Wno-pedantic -Wno-unknown-attributes
# ./app/alm.cpp
# Правило сборки
all:
mkdir -p $(BUILD) && \
mkdir -p $(BIN)/libs && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./app/asc.cpp -o $(BUILD)/main.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/alt.cpp -o $(BUILD)/alt.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/spl.cpp -o $(BUILD)/spl.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/dict.cpp -o $(BUILD)/dict.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/hnsw.cpp -o $(BUILD)/hnsw.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/ascb.cpp -o $(BUILD)/ascb.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/bloom.cpp -o $(BUILD)/bloom.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/dumper.cpp -o $(BUILD)/dumper.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/stemmer.cpp -o $(BUILD)/stemmer.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/idw.cpp -o $(BUILD)/idw.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/nwt.cpp -o $(BUILD)/nwt.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/env.cpp -o $(BUILD)/env.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alm.cpp -o $(BUILD)/alm.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alm1.cpp -o $(BUILD)/alm1.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alm2.cpp -o $(BUILD)/alm2.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/arpa.cpp -o $(BUILD)/arpa.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/ablm.cpp -o $(BUILD)/ablm.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/python.cpp -o $(BUILD)/python.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/toolkit.cpp -o $(BUILD)/toolkit.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alphabet.cpp -o $(BUILD)/alphabet.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/progress.cpp -o $(BUILD)/progress.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/tokenizer.cpp -o $(BUILD)/tokenizer.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/collector.cpp -o $(BUILD)/collector.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/levenshtein.cpp -o $(BUILD)/levenshtein.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/cityhash/city.cc -o $(BUILD)/cityhash.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigInteger.cc -o $(BUILD)/BigInteger.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigUnsigned.cc -o $(BUILD)/BigUnsigned.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigIntegerUtils.cc -o $(BUILD)/BigIntegerUtils.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigUnsignedInABase.cc -o $(BUILD)/BigUnsignedInABase.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigIntegerAlgorithms.cc -o $(BUILD)/BigIntegerAlgorithms.o && \
$(CC) $(LIBS) -shared -fPIC -o $(BIN)/libs/libspl.$(EXT) $(BUILD)/spl.o $(BUILD)/alt.o $(BUILD)/idw.o $(BUILD)/nwt.o $(BUILD)/env.o \
$(BUILD)/cityhash.o $(BUILD)/bloom.o $(BUILD)/dict.o $(BUILD)/dumper.o $(BUILD)/stemmer.o $(BUILD)/hnsw.o $(BUILD)/arpa.o $(BUILD)/ablm.o \
$(BUILD)/python.o $(BUILD)/toolkit.o $(BUILD)/alm.o $(BUILD)/alm1.o $(BUILD)/alm2.o $(BUILD)/tokenizer.o $(BUILD)/alphabet.o \
$(BUILD)/levenshtein.o $(BUILD)/collector.o $(BUILD)/progress.o $(BUILD)/ascb.o $(BUILD)/BigInteger.o $(BUILD)/BigUnsigned.o \
$(BUILD)/BigIntegerUtils.o $(BUILD)/BigUnsignedInABase.o $(BUILD)/BigIntegerAlgorithms.o && \
ar rcs $(BIN)/libs/libspl.a $(BUILD)/spl.o $(BUILD)/alt.o $(BUILD)/idw.o $(BUILD)/nwt.o $(BUILD)/env.o $(BUILD)/bloom.o \
$(BUILD)/alm.o $(BUILD)/alm1.o $(BUILD)/alm2.o $(BUILD)/cityhash.o $(BUILD)/arpa.o $(BUILD)/dict.o $(BUILD)/dumper.o \
$(BUILD)/stemmer.o $(BUILD)/hnsw.o $(BUILD)/ablm.o $(BUILD)/python.o $(BUILD)/toolkit.o $(BUILD)/collector.o \
$(BUILD)/tokenizer.o $(BUILD)/alphabet.o $(BUILD)/levenshtein.o $(BUILD)/progress.o $(BUILD)/ascb.o $(BUILD)/BigInteger.o \
$(BUILD)/BigUnsigned.o $(BUILD)/BigIntegerUtils.o $(BUILD)/BigUnsignedInABase.o $(BUILD)/BigIntegerAlgorithms.o && \
$(CC) $(BUILD)/main.o -L$(BIN)/libs -Wl,-rpath,$(BIN)/libs -lspl $(LIBS) -o $(BIN)/$(NAME) && \
rm -rf $(BUILD)
# Правила сборки под Dev
dev:
mkdir -p $(BUILD) && \
mkdir -p $(BIN)/libs && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./app/asc.cpp -o $(BUILD)/main.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./src/alt.cpp -o $(BUILD)/alt.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./src/spl.cpp -o $(BUILD)/spl.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./src/dict.cpp -o $(BUILD)/dict.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./src/hnsw.cpp -o $(BUILD)/hnsw.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./src/ascb.cpp -o $(BUILD)/ascb.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./src/bloom.cpp -o $(BUILD)/bloom.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./src/dumper.cpp -o $(BUILD)/dumper.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./src/stemmer.cpp -o $(BUILD)/stemmer.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/idw.cpp -o $(BUILD)/idw.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/nwt.cpp -o $(BUILD)/nwt.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/env.cpp -o $(BUILD)/env.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/alm.cpp -o $(BUILD)/alm.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/alm1.cpp -o $(BUILD)/alm1.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/alm2.cpp -o $(BUILD)/alm2.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/arpa.cpp -o $(BUILD)/arpa.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/ablm.cpp -o $(BUILD)/ablm.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/python.cpp -o $(BUILD)/python.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/toolkit.cpp -o $(BUILD)/toolkit.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/alphabet.cpp -o $(BUILD)/alphabet.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/progress.cpp -o $(BUILD)/progress.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/tokenizer.cpp -o $(BUILD)/tokenizer.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/collector.cpp -o $(BUILD)/collector.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/src/levenshtein.cpp -o $(BUILD)/levenshtein.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/contrib/src/cityhash/city.cc -o $(BUILD)/cityhash.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigInteger.cc -o $(BUILD)/BigInteger.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigUnsigned.cc -o $(BUILD)/BigUnsigned.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigIntegerUtils.cc -o $(BUILD)/BigIntegerUtils.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigUnsignedInABase.cc -o $(BUILD)/BigUnsignedInABase.o && \
$(CC) $(CONFDEV) $(DEBUG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigIntegerAlgorithms.cc -o $(BUILD)/BigIntegerAlgorithms.o && \
ar rcs $(BIN)/libs/libspl.a $(BUILD)/spl.o $(BUILD)/alt.o $(BUILD)/idw.o $(BUILD)/nwt.o $(BUILD)/env.o $(BUILD)/bloom.o \
$(BUILD)/alm.o $(BUILD)/alm1.o $(BUILD)/alm2.o $(BUILD)/cityhash.o $(BUILD)/arpa.o $(BUILD)/dict.o $(BUILD)/dumper.o \
$(BUILD)/stemmer.o $(BUILD)/hnsw.o $(BUILD)/ablm.o $(BUILD)/python.o $(BUILD)/toolkit.o $(BUILD)/collector.o \
$(BUILD)/tokenizer.o $(BUILD)/alphabet.o $(BUILD)/levenshtein.o $(BUILD)/progress.o $(BUILD)/ascb.o $(BUILD)/BigInteger.o \
$(BUILD)/BigUnsigned.o $(BUILD)/BigIntegerUtils.o $(BUILD)/BigUnsignedInABase.o $(BUILD)/BigIntegerAlgorithms.o && \
$(CC) $(DEBUG) $(BUILD)/main.o -L$(BIN)/libs -Wl,-rpath,$(BIN)/libs -lspl $(LIBS) -o $(BIN)/$(NAME) && \
rm -rf $(BUILD)
# Правила статической сборки
static:
mkdir -p $(BUILD) && \
mkdir -p $(BIN)/libs && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./app/asc.cpp -o $(BUILD)/main.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/alt.cpp -o $(BUILD)/alt.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/spl.cpp -o $(BUILD)/spl.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/dict.cpp -o $(BUILD)/dict.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/hnsw.cpp -o $(BUILD)/hnsw.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/ascb.cpp -o $(BUILD)/ascb.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/bloom.cpp -o $(BUILD)/bloom.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/dumper.cpp -o $(BUILD)/dumper.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/stemmer.cpp -o $(BUILD)/stemmer.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/idw.cpp -o $(BUILD)/idw.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/nwt.cpp -o $(BUILD)/nwt.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/env.cpp -o $(BUILD)/env.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alm.cpp -o $(BUILD)/alm.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alm1.cpp -o $(BUILD)/alm1.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alm2.cpp -o $(BUILD)/alm2.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/arpa.cpp -o $(BUILD)/arpa.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/ablm.cpp -o $(BUILD)/ablm.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/python.cpp -o $(BUILD)/python.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/toolkit.cpp -o $(BUILD)/toolkit.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alphabet.cpp -o $(BUILD)/alphabet.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/progress.cpp -o $(BUILD)/progress.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/tokenizer.cpp -o $(BUILD)/tokenizer.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/collector.cpp -o $(BUILD)/collector.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/levenshtein.cpp -o $(BUILD)/levenshtein.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/cityhash/city.cc -o $(BUILD)/cityhash.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigInteger.cc -o $(BUILD)/BigInteger.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigUnsigned.cc -o $(BUILD)/BigUnsigned.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigIntegerUtils.cc -o $(BUILD)/BigIntegerUtils.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigUnsignedInABase.cc -o $(BUILD)/BigUnsignedInABase.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigIntegerAlgorithms.cc -o $(BUILD)/BigIntegerAlgorithms.o && \
ar rcs $(BIN)/libs/libspl.a $(BUILD)/spl.o $(BUILD)/alt.o $(BUILD)/idw.o $(BUILD)/nwt.o $(BUILD)/env.o $(BUILD)/bloom.o \
$(BUILD)/alm.o $(BUILD)/alm1.o $(BUILD)/alm2.o $(BUILD)/cityhash.o $(BUILD)/arpa.o $(BUILD)/dict.o $(BUILD)/dumper.o \
$(BUILD)/stemmer.o $(BUILD)/hnsw.o $(BUILD)/ablm.o $(BUILD)/python.o $(BUILD)/toolkit.o $(BUILD)/collector.o \
$(BUILD)/tokenizer.o $(BUILD)/alphabet.o $(BUILD)/levenshtein.o $(BUILD)/progress.o $(BUILD)/ascb.o $(BUILD)/BigInteger.o \
$(BUILD)/BigUnsigned.o $(BUILD)/BigIntegerUtils.o $(BUILD)/BigUnsignedInABase.o $(BUILD)/BigIntegerAlgorithms.o && \
$(CC) $(BUILD)/main.o -L$(BIN)/libs -Wl,-rpath,$(BIN)/libs -lspl $(LIBS) -o $(BIN)/$(NAME) && \
rm -rf $(BUILD)
py:
mkdir -p $(BIN) && \
mkdir -p $(BUILD)/pybind11 && \
cp -rf ./python/pybind11/* $(BUILD)/pybind11/ && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/spl.cpp -o $(BUILD)/pybind11/spl.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/alt.cpp -o $(BUILD)/pybind11/alt.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/dict.cpp -o $(BUILD)/pybind11/dict.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/hnsw.cpp -o $(BUILD)/pybind11/hnsw.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/ascb.cpp -o $(BUILD)/pybind11/ascb.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/bloom.cpp -o $(BUILD)/pybind11/bloom.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/dumper.cpp -o $(BUILD)/pybind11/dumper.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./src/stemmer.cpp -o $(BUILD)/pybind11/stemmer.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/app/alm.cpp -o $(BUILD)/pybind11/main.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/idw.cpp -o $(BUILD)/pybind11/idw.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/nwt.cpp -o $(BUILD)/pybind11/nwt.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/env.cpp -o $(BUILD)/pybind11/env.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alm.cpp -o $(BUILD)/pybind11/alm.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alm1.cpp -o $(BUILD)/pybind11/alm1.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alm2.cpp -o $(BUILD)/pybind11/alm2.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/arpa.cpp -o $(BUILD)/pybind11/arpa.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/ablm.cpp -o $(BUILD)/pybind11/ablm.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/ascb.cpp -o $(BUILD)/pybind11/ascb.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/python.cpp -o $(BUILD)/pybind11/python.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/toolkit.cpp -o $(BUILD)/pybind11/toolkit.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/alphabet.cpp -o $(BUILD)/pybind11/alphabet.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/progress.cpp -o $(BUILD)/pybind11/progress.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/tokenizer.cpp -o $(BUILD)/pybind11/tokenizer.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/collector.cpp -o $(BUILD)/pybind11/collector.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/src/levenshtein.cpp -o $(BUILD)/pybind11/levenshtein.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/cityhash/city.cc -o $(BUILD)/pybind11/cityhash.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigInteger.cc -o $(BUILD)/pybind11/BigInteger.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigUnsigned.cc -o $(BUILD)/pybind11/BigUnsigned.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigIntegerUtils.cc -o $(BUILD)/pybind11/BigIntegerUtils.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigUnsignedInABase.cc -o $(BUILD)/pybind11/BigUnsignedInABase.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c ./alm/contrib/src/bigint/BigIntegerAlgorithms.cc -o $(BUILD)/pybind11/BigIntegerAlgorithms.o && \
$(CC) $(CONFIG) $(INCLUDE) -fPIC -c $(BUILD)/pybind11/palm.cxx -o $(BUILD)/pybind11/palm.o && \
$(CC) $(LIBS) -shared -fPIC -o $(BIN)/$(NAME).so $(BUILD)/pybind11/palm.o $(BUILD)/pybind11/spl.o $(BUILD)/pybind11/alt.o \
$(BUILD)/pybind11/idw.o $(BUILD)/pybind11/dict.o $(BUILD)/pybind11/dumper.o $(BUILD)/pybind11/hnsw.o $(BUILD)/pybind11/bloom.o \
$(BUILD)/pybind11/stemmer.o $(BUILD)/pybind11/nwt.o $(BUILD)/pybind11/env.o $(BUILD)/pybind11/arpa.o $(BUILD)/pybind11/ablm.o \
$(BUILD)/pybind11/python.o $(BUILD)/pybind11/toolkit.o $(BUILD)/pybind11/alm.o $(BUILD)/pybind11/alm1.o $(BUILD)/pybind11/alm2.o \
$(BUILD)/pybind11/tokenizer.o $(BUILD)/pybind11/alphabet.o $(BUILD)/pybind11/levenshtein.o $(BUILD)/pybind11/collector.o \
$(BUILD)/pybind11/progress.o $(BUILD)/pybind11/ascb.o $(BUILD)/pybind11/cityhash.o $(BUILD)/pybind11/BigInteger.o \
$(BUILD)/pybind11/BigUnsigned.o $(BUILD)/pybind11/BigIntegerUtils.o $(BUILD)/pybind11/BigUnsignedInABase.o $(BUILD)/pybind11/BigIntegerAlgorithms.o && \
rm -rf $(BUILD)
# Правило очистки
clean:
rm -rf $(BIN) && rm -rf $(BUILD)