@@ -11,18 +11,21 @@ endif
11
11
12
12
# --- Configuration flags --- #
13
13
CPPFLAGS = -std=gnu++11 -fPIC -fvisibility=hidden \
14
- -D_FILE_OFFSET_BITS=64
14
+ -D_FILE_OFFSET_BITS=64
15
15
16
16
# For the Travis integration
17
17
ifdef TRAVIS
18
18
CPPFLAGS += --coverage
19
19
endif
20
20
21
21
# --- Support for OpenMP --- #
22
+ OPENMP =
22
23
OPENMP_FLAG =
23
- ifeq ($(COMPILER ) , gcc)
24
- CPPFLAGS += -DOPENMP
25
- OPENMP_FLAG = -fopenmp
24
+ ifeq ($(COMPILER ) , gcc)
25
+ ifeq ($(OPENMP), 1)
26
+ CPPFLAGS += -DHAVE_OPENMP
27
+ OPENMP_FLAG = -fopenmp
28
+ endif
26
29
endif
27
30
28
31
# --- Debug/Release mode handler --- #
@@ -42,12 +45,27 @@ endif
42
45
# --- Verbose mode handler --- #
43
46
VERBOSE =
44
47
ifeq ($(VERBOSE ) ,1)
45
- CPPFLAGS += -DNVERBOSE
48
+ CPPFLAGS += -DVERBOSE
49
+ endif
50
+
51
+ # --- Use parallel sort --- #
52
+ USE_PARALLEL_SORT =
53
+ ifeq ($(USE_PARALLEL_SORT ) ,1)
54
+ CPPFLAGS += -DUSE_PARALLEL_SORT
55
+ endif
56
+
57
+ # --- Support for MPI --- #
58
+ MPI =
59
+ ifeq ($(MPI ) ,1)
60
+ CPPFLAGS += -DHAVE_MPI
46
61
endif
47
62
48
63
# --- Compilers --- #
49
64
CXX = g++
50
65
66
+ # --- GTest Filters --- #
67
+ GTEST_FILTER ='*'
68
+
51
69
# --- Directories --- #
52
70
CORE_INCLUDE_DIR = core/include
53
71
CORE_INCLUDE_SUBDIRS = $(wildcard core/include/* )
@@ -87,10 +105,22 @@ ifeq ($(BUILD),release)
87
105
EXAMPLES_OBJ_DIR = $(EXAMPLES_OBJ_REL_DIR )
88
106
EXAMPLES_BIN_DIR = $(EXAMPLES_BIN_REL_DIR )
89
107
endif
90
- TEST_SRC_SUBDIRS = $(wildcard test/src/* )
108
+ TEST_INCLUDE_DIR = test/include
109
+ TEST_INCLUDE_SUBDIRS = $(wildcard test/include/* )
91
110
TEST_SRC_DIR = test/src
92
- TEST_OBJ_DIR = test/obj
93
- TEST_BIN_DIR = test/bin
111
+ TEST_SRC_SUBDIRS = $(wildcard test/src/* )
112
+ TEST_OBJ_DEB_DIR = test/obj/debug
113
+ TEST_BIN_DEB_DIR = test/bin/debug
114
+ ifeq ($(BUILD ) ,debug)
115
+ TEST_OBJ_DIR = $(TEST_OBJ_DEB_DIR )
116
+ TEST_BIN_DIR = $(TEST_BIN_DEB_DIR )
117
+ endif
118
+ TEST_OBJ_REL_DIR = test/obj/release
119
+ TEST_BIN_REL_DIR = test/bin/release
120
+ ifeq ($(BUILD ) ,release)
121
+ TEST_OBJ_DIR = $(TEST_OBJ_REL_DIR )
122
+ TEST_BIN_DIR = $(TEST_BIN_REL_DIR )
123
+ endif
94
124
DOXYGEN_DIR = doxygen
95
125
DOXYGEN_MAINPAGE = $(DOXYGEN_DIR ) /mainpage.dox
96
126
@@ -99,7 +129,8 @@ INCLUDE_PATHS =
99
129
CORE_INCLUDE_PATHS = $(addprefix -I, $(CORE_INCLUDE_SUBDIRS ) )
100
130
EXAMPLES_INCLUDE_PATHS = -I$(EXAMPLES_INCLUDE_DIR )
101
131
TEST_INCLUDE_PATHS = $(addprefix -I, $(CORE_INCLUDE_SUBDIRS ) )
102
- LIBRARY_PATHS =
132
+ TEST_INCLUDE_PATHS += $(addprefix -I, $(TEST_INCLUDE_SUBDIRS ) )
133
+ LIBRARY_PATHS =
103
134
104
135
ifdef TRAVIS
105
136
LIBRARY_PATHS += --coverage
@@ -110,6 +141,7 @@ ZLIB = -lz
110
141
OPENSSLLIB = -lcrypto
111
142
GTESTLIB = -lgtest -lgtest_main
112
143
MPILIB =
144
+ PTHREADLIB = -pthread
113
145
114
146
# --- For the TileDB dynamic library --- #
115
147
ifeq ($(OS ) , Darwin)
@@ -128,6 +160,7 @@ EXAMPLES_OBJ := $(patsubst $(EXAMPLES_SRC_DIR)/%.cc,\
128
160
$(EXAMPLES_OBJ_DIR ) /% .o, $(EXAMPLES_SRC ) )
129
161
EXAMPLES_BIN := $(patsubst $(EXAMPLES_SRC_DIR ) /% .cc,\
130
162
$(EXAMPLES_BIN_DIR ) /% , $(EXAMPLES_SRC ) )
163
+ TEST_INCLUDE := $(foreach D,$(TEST_INCLUDE_SUBDIRS ) ,$D/* .h)
131
164
TEST_SRC := $(wildcard $(foreach D,$(TEST_SRC_SUBDIRS ) ,$D/* .cc) )
132
165
TEST_OBJ := $(patsubst $(TEST_SRC_DIR ) /% .cc, $(TEST_OBJ_DIR ) /% .o, $(TEST_SRC ) )
133
166
@@ -151,7 +184,7 @@ doc: doxyfile.inc
151
184
152
185
test : libtiledb $(TEST_BIN_DIR ) /tiledb_test
153
186
@echo " Running TileDB tests"
154
- @$(TEST_BIN_DIR ) /tiledb_test
187
+ @$(TEST_BIN_DIR ) /tiledb_test --gtest_filter= $( GTEST_FILTER )
155
188
156
189
clean : clean_core clean_libtiledb \
157
190
clean_test clean_doc clean_examples
@@ -204,7 +237,7 @@ $(CORE_LIB_DIR)/libtiledb.$(SHLIB_EXT): $(CORE_OBJ)
204
237
@mkdir -p $(CORE_LIB_DIR )
205
238
@echo " Creating dynamic library libtiledb.$( SHLIB_EXT) "
206
239
@$(CXX ) $(SHLIB_FLAGS ) $(SONAME ) -o $@ $^ $(LIBRARY_PATHS ) $(MPILIB ) \
207
- $(ZLIB ) $(OPENSSLLIB ) $(OPENMP_FLAG )
240
+ $(PTHREADLIB ) $( ZLIB ) $(OPENSSLLIB ) $(OPENMP_FLAG )
208
241
209
242
$(CORE_LIB_DIR ) /libtiledb.a : $(CORE_OBJ )
210
243
@mkdir -p $(CORE_LIB_DIR )
@@ -243,7 +276,7 @@ $(EXAMPLES_BIN_DIR)/%: $(EXAMPLES_OBJ_DIR)/%.o $(CORE_LIB_DIR)/libtiledb.a
243
276
@mkdir -p $(EXAMPLES_BIN_DIR )
244
277
@echo " Creating $@ "
245
278
@$(CXX ) -std=gnu++11 -o $@ $^ $(LIBRARY_PATHS ) $(MPILIB ) $(ZLIB ) \
246
- $(OPENSSLLIB ) $(OPENMP_FLAG )
279
+ $(PTHREADLIB ) $( OPENSSLLIB ) $(OPENMP_FLAG )
247
280
248
281
# --- Cleaning --- #
249
282
@@ -264,8 +297,8 @@ $(TEST_OBJ_DIR)/%.o: $(TEST_SRC_DIR)/%.cc
264
297
@mkdir -p $(dir $@ )
265
298
@echo " Compiling $<"
266
299
@$(CXX ) $(CPPFLAGS ) $(OPENMP_FLAG ) $(TEST_INCLUDE_PATHS ) \
267
- $(INCLUDE_PATHS ) -c $< -o $@
268
- @$(CXX ) -MM $(TEST_INCLUDE_PATHS ) \
300
+ $(INCLUDE_PATHS ) $( PTHREADLIB ) -c $< -o $@
301
+ @$(CXX ) -MM $(TEST_INCLUDE_PATHS ) $( PTHREADLIB ) \
269
302
$(CORE_INCLUDE_PATHS ) $(INCLUDE_PATHS ) $< > $(@ :.o=.d)
270
303
@mv -f $(@:.o=.d ) $(@:.o=.d.tmp )
271
304
@sed ' s|.*:|$@:|' < $(@:.o=.d.tmp ) > $(@:.o=.d )
@@ -276,8 +309,8 @@ $(TEST_OBJ_DIR)/%.o: $(TEST_SRC_DIR)/%.cc
276
309
$(TEST_BIN_DIR ) /tiledb_test : $(TEST_OBJ ) $(CORE_LIB_DIR ) /libtiledb.a
277
310
@mkdir -p $(TEST_BIN_DIR )
278
311
@echo " Creating test_cmd"
279
- @$(CXX ) -std=gnu++11 - o $@ $^ $(LIBRARY_PATHS ) $(MPILIB ) $(ZLIB ) \
280
- $(OPENSSLLIB ) $(GTESTLIB ) $(OPENMP_FLAG )
312
+ @$(CXX ) -o $@ $^ $(LIBRARY_PATHS ) $(MPILIB ) $(ZLIB ) \
313
+ $(PTHREADLIB ) $( OPENSSLLIB ) $(GTESTLIB ) $(OPENMP_FLAG )
281
314
282
315
# --- Cleaning --- #
283
316
0 commit comments