-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
541 lines (498 loc) · 23.1 KB
/
Copy pathCMakeLists.txt
File metadata and controls
541 lines (498 loc) · 23.1 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
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
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
set_gflags_lib_name ()
include(CheckCXXSourceCompiles)
# Look for GCC-style builtins (also in clang, ICC, and possibly others) that
# translate to fast assembly instructions for fancy bitwise operations.
CHECK_CXX_SOURCE_COMPILES("
int main() {
return __builtin_popcount(1234);
}
" QUICKSTEP_HAVE_BUILTIN_POPCOUNT)
CHECK_CXX_SOURCE_COMPILES("
int main() {
return __builtin_clz(12340);
}
" QUICKSTEP_HAVE_BUILTIN_CLZ)
CHECK_CXX_SOURCE_COMPILES("
int main() {
return __builtin_ctz(12340);
}
" QUICKSTEP_HAVE_BUILTIN_CTZ)
# Look for c++11 std::align (still not available in G++ 4.8.3).
CHECK_CXX_SOURCE_COMPILES("
#include <cstddef>
#include <memory>
int main() {
void *ptr = nullptr;
std::size_t space = 16;
void *aligned = std::align(8, 8, ptr, space);
return 0;
}
" QUICKSTEP_HAVE_STD_ALIGN)
# Try to find some version of malloc that we can use to do aligned allocations.
set (ALIGNED_MALLOC_FOUND FALSE)
if ((NOT ALIGNED_MALLOC_FOUND) AND USE_TCMALLOC)
# TCMalloc provides its own version of posix_memalign we can use directly.
set(ALIGNED_MALLOC_FOUND TRUE)
set(QUICKSTEP_HAVE_TCMALLOC TRUE)
endif()
if (NOT ALIGNED_MALLOC_FOUND)
# Try C11's aligned_alloc.
CHECK_CXX_SOURCE_COMPILES("
#include <stdlib.h>
int main() {
void *ptr = aligned_alloc(64, 256);
return 0;
}
" QUICKSTEP_HAVE_ALIGNED_ALLOC)
if (QUICKSTEP_HAVE_ALIGNED_ALLOC)
set(ALIGNED_MALLOC_FOUND TRUE)
endif()
endif()
if (NOT ALIGNED_MALLOC_FOUND)
# Try posix_memalign
CHECK_CXX_SOURCE_COMPILES("
#include <stdlib.h>
int main() {
void *ptr;
return posix_memalign(&ptr, 64, 256);
}
" QUICKSTEP_HAVE_POSIX_MEMALIGN)
if (QUICKSTEP_HAVE_POSIX_MEMALIGN)
set(ALIGNED_MALLOC_FOUND TRUE)
endif()
endif()
if (NOT ALIGNED_MALLOC_FOUND)
# Try memalign (now deprecated in favor of posix_memalign)
CHECK_CXX_SOURCE_COMPILES("
#include <malloc.h>
int main() {
void *ptr = memalign(64, 256);
return 0;
}
" QUICKSTEP_HAVE_MEMALIGN)
if (QUICKSTEP_HAVE_MEMALIGN)
set(ALIGNED_MALLOC_FOUND TRUE)
endif()
endif()
if (NOT ALIGNED_MALLOC_FOUND)
# Try windows _aligned_malloc
CHECK_CXX_SOURCE_COMPILES("
#include <malloc.h>
int main() {
void *ptr = _aligned_malloc(256, 64);
return 0;
}
" QUICKSTEP_HAVE_WIN_ALIGNED_MALLOC)
if (QUICKSTEP_HAVE_WIN_ALIGNED_MALLOC)
set(ALIGNED_MALLOC_FOUND TRUE)
endif()
endif()
if (NOT ALIGNED_MALLOC_FOUND)
message(FATAL_ERROR "Can't find any version of malloc capable of doing "
"aligned memory allocation.")
endif()
# Check for sysconf on Linux
include(CheckIncludeFileCXX)
include(CheckCXXSourceCompiles)
CHECK_CXX_SOURCE_COMPILES("
#include <unistd.h>
int main() {
return (sysconf(_SC_PAGE_SIZE) > 0 && sysconf(_SC_PHYS_PAGES) > 0);
}
" QUICKSTEP_HAVE_SYSCONF)
if (NOT QUICKSTEP_HAVE_SYSCONF)
check_include_files("windows.h" QUICKSTEP_HAVE_WINDOWS)
endif()
include(CheckIncludeFileCXX)
check_include_files("glob.h" QUICKSTEP_HAVE_GLOB)
if (NOT QUICKSTEP_HAVE_GLOB)
check_include_files("windows.h" QUICKSTEP_HAVE_WINDOWS)
endif()
# Check for POSIX.1-2008 memstreams.
include(CheckFunctionExists)
CHECK_FUNCTION_EXISTS(open_memstream QUICKSTEP_HAVE_OPEN_MEMSTREAM)
configure_file (
"${CMAKE_CURRENT_SOURCE_DIR}/UtilityConfig.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/UtilityConfig.h"
)
QS_PROTOBUF_GENERATE_CPP(quickstep_utility_BloomFilter_proto_srcs
quickstep_utility_BloomFilter_proto_hdrs
BloomFilter.proto)
QS_PROTOBUF_GENERATE_CPP(quickstep_utility_SortConfiguration_proto_srcs
quickstep_utility_SortConfiguration_proto_hdrs
SortConfiguration.proto)
add_subdirectory(lip_filter)
# Declare micro-libs:
add_library(quickstep_utility_Alignment ../empty_src.cpp Alignment.hpp)
add_library(quickstep_utility_BarrieredReadWriteConcurrentBitVector
../empty_src.cpp
BarrieredReadWriteConcurrentBitVector.hpp)
add_library(quickstep_utility_BitManipulation ../empty_src.cpp BitManipulation.hpp)
add_library(quickstep_utility_BitVector ../empty_src.cpp BitVector.hpp)
add_library(quickstep_utility_BloomFilter ../empty_src.cpp BloomFilter.hpp)
add_library(quickstep_utility_BloomFilter_proto
${quickstep_utility_BloomFilter_proto_srcs}
${quickstep_utility_BloomFilter_proto_hdrs})
add_library(quickstep_utility_BulkIoConfiguration BulkIoConfiguration.cpp BulkIoConfiguration.hpp)
add_library(quickstep_utility_CalculateInstalledMemory CalculateInstalledMemory.cpp CalculateInstalledMemory.hpp)
add_library(quickstep_utility_Cast ../empty_src.cpp Cast.hpp)
add_library(quickstep_utility_CheckSnprintf ../empty_src.cpp CheckSnprintf.hpp)
add_library(quickstep_utility_ColumnVectorCache ../empty_src.cpp ColumnVectorCache.hpp)
add_library(quickstep_utility_CompositeHash ../empty_src.cpp CompositeHash.hpp)
add_library(quickstep_utility_DAG ../empty_src.cpp DAG.hpp)
add_library(quickstep_utility_DisjointTreeForest ../empty_src.cpp DisjointTreeForest.hpp)
add_library(quickstep_utility_EqualsAnyConstant ../empty_src.cpp EqualsAnyConstant.hpp)
add_library(quickstep_utility_ExecutionDAGVisualizer
ExecutionDAGVisualizer.cpp
ExecutionDAGVisualizer.hpp)
add_library(quickstep_utility_Glob Glob.cpp Glob.hpp)
add_library(quickstep_utility_HashError ../empty_src.cpp HashError.hpp)
add_library(quickstep_utility_HashPair ../empty_src.cpp HashPair.hpp)
add_library(quickstep_utility_Macros ../empty_src.cpp Macros.hpp)
add_library(quickstep_utility_MemStream ../empty_src.cpp MemStream.hpp)
add_library(quickstep_utility_NetworkUtil NetworkUtil.cpp NetworkUtil.hpp)
add_library(quickstep_utility_PlanVisualizer PlanVisualizer.cpp PlanVisualizer.hpp)
add_library(quickstep_utility_PrimeNumber PrimeNumber.cpp PrimeNumber.hpp)
add_library(quickstep_utility_PtrList ../empty_src.cpp PtrList.hpp)
add_library(quickstep_utility_PtrMap ../empty_src.cpp PtrMap.hpp)
add_library(quickstep_utility_PtrVector ../empty_src.cpp PtrVector.hpp)
add_library(quickstep_utility_ScopedBuffer ../empty_src.cpp ScopedBuffer.hpp)
add_library(quickstep_utility_ScopedDeleter ../empty_src.cpp ScopedDeleter.hpp)
add_library(quickstep_utility_ScopedReassignment ../empty_src.cpp ScopedReassignment.hpp)
add_library(quickstep_utility_ShardedLockManager ../empty_src.cpp ShardedLockManager.hpp)
add_library(quickstep_utility_SortConfiguration SortConfiguration.cpp SortConfiguration.hpp)
add_library(quickstep_utility_SortConfiguration_proto
${quickstep_utility_SortConfiguration_proto_srcs}
${quickstep_utility_SortConfiguration_proto_hdrs})
add_library(quickstep_utility_SqlError SqlError.cpp SqlError.hpp)
add_library(quickstep_utility_StringUtil StringUtil.cpp StringUtil.hpp)
add_library(quickstep_utility_TemplateUtil ../empty_src.cpp TemplateUtil.hpp)
add_library(quickstep_utility_ThreadSafeQueue ../empty_src.cpp ThreadSafeQueue.hpp)
add_library(quickstep_utility_TreeStringSerializable ../empty_src.cpp TreeStringSerializable.hpp)
add_library(quickstep_utility_VectorUtil ../empty_src.cpp VectorUtil.hpp)
# Note that TextBasedTest.{hpp, cpp} are not in this static library.
# Any tests that use them need to include them in the
# executable.
add_library(quickstep_utility_TextBasedTestDriver
textbased_test/TextBasedTestDriver.cpp
textbased_test/TextBasedTestDriver.hpp
textbased_test/TextBasedTestRunner.hpp)
# Link dependencies:
target_link_libraries(quickstep_utility_Alignment
glog
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_BarrieredReadWriteConcurrentBitVector
glog
quickstep_utility_BitManipulation
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_BitVector
glog
quickstep_utility_BitManipulation
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_BloomFilter
glog
quickstep_storage_StorageConstants
quickstep_threading_Mutex
quickstep_threading_SharedMutex
quickstep_threading_SpinSharedMutex
quickstep_utility_BloomFilter_proto
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_BloomFilter_proto
${PROTOBUF_LIBRARY})
target_link_libraries(quickstep_utility_BulkIoConfiguration
glog
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_CalculateInstalledMemory
glog)
target_link_libraries(quickstep_utility_CheckSnprintf
glog)
target_link_libraries(quickstep_utility_ColumnVectorCache
glog
quickstep_types_containers_ColumnVector
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_CompositeHash
glog
quickstep_types_TypedValue
quickstep_utility_HashPair)
target_link_libraries(quickstep_utility_DAG
glog
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_DisjointTreeForest
glog)
target_link_libraries(quickstep_utility_ExecutionDAGVisualizer
${GFLAGS_LIB_NAME}
glog
quickstep_catalog_CatalogRelation
quickstep_catalog_CatalogRelationSchema
quickstep_queryexecution_QueryExecutionTypedefs
quickstep_queryoptimizer_QueryPlan
quickstep_relationaloperators_AggregationOperator
quickstep_relationaloperators_BuildHashOperator
quickstep_relationaloperators_BuildLIPFilterOperator
quickstep_relationaloperators_HashJoinOperator
quickstep_relationaloperators_NestedLoopsJoinOperator
quickstep_relationaloperators_RelationalOperator
quickstep_relationaloperators_SelectOperator
quickstep_relationaloperators_SortRunGenerationOperator
quickstep_relationaloperators_UnionAllOperator
quickstep_utility_DAG
quickstep_utility_Macros
quickstep_utility_StringUtil)
target_link_libraries(quickstep_utility_Glob
glog)
target_link_libraries(quickstep_utility_MemStream
glog
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_NetworkUtil
${GFLAGS_LIB_NAME}
glog)
target_link_libraries(quickstep_utility_PlanVisualizer
glog
quickstep_catalog_CatalogRelation
quickstep_queryoptimizer_costmodel_StarSchemaSimpleCostModel
quickstep_queryoptimizer_expressions_AttributeReference
quickstep_queryoptimizer_expressions_ExprId
quickstep_queryoptimizer_physical_FilterJoin
quickstep_queryoptimizer_physical_HashJoin
quickstep_queryoptimizer_physical_LIPFilterConfiguration
quickstep_queryoptimizer_physical_PartitionSchemeHeader
quickstep_queryoptimizer_physical_Physical
quickstep_queryoptimizer_physical_PhysicalType
quickstep_queryoptimizer_physical_TableReference
quickstep_queryoptimizer_physical_TopLevelPlan
quickstep_utility_Macros
quickstep_utility_StringUtil)
target_link_libraries(quickstep_utility_PrimeNumber
glog)
target_link_libraries(quickstep_utility_PtrList
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_PtrMap
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_PtrVector
glog
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_ScopedBuffer
glog
quickstep_utility_Alignment
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_ScopedDeleter
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_ScopedReassignment
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_ShardedLockManager
quickstep_storage_StorageConstants
quickstep_threading_Mutex
quickstep_threading_SharedMutex
quickstep_threading_SpinSharedMutex
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_SortConfiguration
glog
quickstep_expressions_ExpressionFactories
quickstep_expressions_Expressions_proto
quickstep_expressions_scalar_Scalar
quickstep_utility_PtrVector
quickstep_utility_SortConfiguration_proto)
target_link_libraries(quickstep_utility_SortConfiguration_proto
${PROTOBUF_LIBRARY}
quickstep_expressions_Expressions_proto)
target_link_libraries(quickstep_utility_SqlError
glog)
target_link_libraries(quickstep_utility_StringUtil
glog)
target_link_libraries(quickstep_utility_TextBasedTestDriver
glog
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_ThreadSafeQueue
quickstep_threading_ConditionVariable
quickstep_threading_Mutex
quickstep_utility_Macros)
target_link_libraries(quickstep_utility_TreeStringSerializable
glog
quickstep_utility_Macros)
if (QUICKSTEP_HAVE_TCMALLOC)
target_link_libraries(quickstep_utility_Alignment
libtcmalloc_minimal)
endif()
# Module all-in-one library:
add_library(quickstep_utility ../empty_src.cpp UtilityModule.hpp)
target_link_libraries(quickstep_utility
quickstep_utility_Alignment
quickstep_utility_BarrieredReadWriteConcurrentBitVector
quickstep_utility_BitManipulation
quickstep_utility_BitVector
quickstep_utility_BloomFilter
quickstep_utility_BloomFilter_proto
quickstep_utility_BulkIoConfiguration
quickstep_utility_CalculateInstalledMemory
quickstep_utility_Cast
quickstep_utility_CheckSnprintf
quickstep_utility_ColumnVectorCache
quickstep_utility_CompositeHash
quickstep_utility_DAG
quickstep_utility_DisjointTreeForest
quickstep_utility_EqualsAnyConstant
quickstep_utility_ExecutionDAGVisualizer
quickstep_utility_Glob
quickstep_utility_HashError
quickstep_utility_HashPair
quickstep_utility_Macros
quickstep_utility_MemStream
quickstep_utility_NetworkUtil
quickstep_utility_PlanVisualizer
quickstep_utility_PrimeNumber
quickstep_utility_PtrList
quickstep_utility_PtrMap
quickstep_utility_PtrVector
quickstep_utility_ScopedBuffer
quickstep_utility_ScopedDeleter
quickstep_utility_ScopedReassignment
quickstep_utility_ShardedLockManager
quickstep_utility_SortConfiguration
quickstep_utility_SortConfiguration_proto
quickstep_utility_SqlError
quickstep_utility_StringUtil
quickstep_utility_TemplateUtil
quickstep_utility_TextBasedTestDriver
quickstep_utility_ThreadSafeQueue
quickstep_utility_TreeStringSerializable
quickstep_utility_VectorUtil)
# Tests:
add_executable(BitVector_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/BitVector_unittest.cpp")
target_link_libraries(BitVector_unittest
${LIBS}
gtest
gtest_main
quickstep_utility_BitVector)
add_test(BitVector_unittest BitVector_unittest)
add_executable(BloomFilter_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/BloomFilter_unittest.cpp")
target_link_libraries(BloomFilter_unittest
${LIBS}
gtest
gtest_main
quickstep_utility_BloomFilter)
add_test(BloomFilter_unittest BloomFilter_unittest)
add_executable(CalculateInstalledMemory_unittest
"${CMAKE_CURRENT_SOURCE_DIR}/tests/CalculateInstalledMemory_unittest.cpp")
target_link_libraries(CalculateInstalledMemory_unittest
gtest
gtest_main
quickstep_utility_CalculateInstalledMemory)
add_test(CalculateInstalledMemory_unittest CalculateInstalledMemory_unittest)
add_executable(DAG_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/DAG_unittest.cpp")
target_link_libraries(DAG_unittest
${LIBS}
gtest
gtest_main
quickstep_utility_DAG)
add_test(DAG_unittest DAG_unittest)
add_executable(DisjointTreeForest_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/DisjointTreeForest_unittest.cpp")
target_link_libraries(DisjointTreeForest_unittest
gtest
gtest_main
quickstep_utility_DisjointTreeForest)
add_test(DisjointTreeForest_unittest DisjointTreeForest_unittest)
add_executable(EqualsAnyConstant_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/EqualsAnyConstant_unittest.cpp")
target_link_libraries(EqualsAnyConstant_unittest
${LIBS}
gtest
gtest_main
quickstep_utility_EqualsAnyConstant)
add_test(EqualsAnyConstant_unittest EqualsAnyConstant_unittest)
add_executable(NetworkUtil_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/NetworkUtil_unittest.cpp")
target_link_libraries(NetworkUtil_unittest
${GFLAGS_LIB_NAME}
${LIBS}
gtest
gtest_main
quickstep_utility_NetworkUtil)
add_test(NetworkUtil_unittest NetworkUtil_unittest)
add_executable(PrimeNumber_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/PrimeNumber_unittest.cpp")
target_link_libraries(PrimeNumber_unittest
${LIBS}
gtest
gtest_main
quickstep_utility_PrimeNumber)
add_test(PrimeNumber_unittest PrimeNumber_unittest)
add_executable(ScopedDeleter_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/ScopedDeleter_unittest.cpp")
target_link_libraries(ScopedDeleter_unittest
${LIBS}
gtest
gtest_main
quickstep_utility_ScopedDeleter)
add_test(ScopedDeleter_unittest ScopedDeleter_unittest)
add_executable(ScopedReassignment_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/ScopedReassignment_unittest.cpp")
target_link_libraries(ScopedReassignment_unittest
${LIBS}
gtest
gtest_main
quickstep_utility_Macros
quickstep_utility_ScopedReassignment)
add_test(ScopedReassignment_unittest ScopedReassignment_unittest)
add_executable(SqlError_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/SqlError_unittest.cpp")
target_link_libraries(SqlError_unittest
glog
gtest
gtest_main
quickstep_utility_Macros
quickstep_utility_SqlError)
add_test(SqlError_unittest SqlError_unittest)
add_executable(TextBasedTestDriver_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/TextBasedTestDriver_unittest.cpp")
target_link_libraries(TextBasedTestDriver_unittest
glog
gtest
gtest_main
quickstep_utility_Macros
quickstep_utility_TextBasedTestDriver)
add_test(TextBasedTestDriver_unittest TextBasedTestDriver_unittest)
add_executable(ThreadSafeQueue_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/ThreadSafeQueue_unittest.cpp")
target_link_libraries(ThreadSafeQueue_unittest
${LIBS}
gtest
gtest_main
quickstep_utility_ThreadSafeQueue)
add_test(ThreadSafeQueue_unittest ThreadSafeQueue_unittest)
add_executable(TreeStringSerializable_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/TreeStringSerializable_unittest.cpp")
target_link_libraries(TreeStringSerializable_unittest
glog
gtest
gtest_main
quickstep_utility_TreeStringSerializable)
add_test(TreeStringSerializable_unittest TreeStringSerializable_unittest)
add_executable(TemplateUtil_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/TemplateUtil_unittest.cpp")
target_link_libraries(TemplateUtil_unittest
gtest
gtest_main
quickstep_utility_Macros
quickstep_utility_TemplateUtil)
add_test(TemplateUtil_unittest TemplateUtil_unittest)
# Benchmarks:
if (UNIX)
add_executable(EqualsAnyConstant_benchmark
"${CMAKE_CURRENT_SOURCE_DIR}/tests/EqualsAnyConstant_benchmark.cpp")
target_link_libraries(EqualsAnyConstant_benchmark
${LIBS}
benchmark
quickstep_utility_EqualsAnyConstant)
add_executable(HashPair_benchmark "${CMAKE_CURRENT_SOURCE_DIR}/tests/HashPair_benchmark.cpp")
target_link_libraries(HashPair_benchmark
${LIBS}
benchmark
quickstep_types_TypedValue
quickstep_utility_HashPair)
endif()