Files
parallel-hashmap/CMakeLists.txt
T

135 lines
5.0 KiB
CMake
Raw Normal View History

2019-03-27 20:07:59 -04:00
cmake_minimum_required(VERSION 3.2)
2019-03-22 21:26:45 -04:00
2019-03-23 10:33:16 -04:00
list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(DetectVersion)
2019-03-24 10:28:46 -04:00
cmake_policy(SET CMP0048 NEW) ## set VERSION as documented by the project() command.
set(CMAKE_CXX_STANDARD 11) ## compile with C++11 support
set(CMAKE_CXX_STANDARD_REQUIRED ON)
2019-03-23 10:33:16 -04:00
project(phmap VERSION ${DETECTED_PHMAP_VERSION} LANGUAGES CXX)
set(PHMAP_HEADERS phmap.h phmap_base.h phmap_bits.h phmap_utils.h phmap_config.h)
set(PHMAP_DIR parallel_hashmap)
2019-03-23 23:26:11 -04:00
set(CMAKE_SUPPRESS_REGENERATION true) ## suppress ZERO_CHECK project
2019-03-22 21:26:45 -04:00
include(GNUInstallDirs)
2019-03-23 10:33:16 -04:00
include(CMakePackageConfigHelpers)
2019-03-23 23:26:11 -04:00
include(helpers)
2019-03-22 21:26:45 -04:00
2019-03-23 10:33:16 -04:00
add_library(${PROJECT_NAME} INTERFACE)
2019-03-22 21:26:45 -04:00
2019-03-23 10:33:16 -04:00
target_sources(${PROJECT_NAME} INTERFACE ${PHMAP_HEADERS})
2019-03-22 21:26:45 -04:00
target_include_directories(
2019-03-23 10:33:16 -04:00
${PROJECT_NAME} INTERFACE
2019-03-26 08:35:11 -04:00
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
2019-03-23 10:33:16 -04:00
$<INSTALL_INTERFACE:include>)
install(
DIRECTORY ${PROJECT_SOURCE_DIR}/${PHMAP_DIR}/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PHMAP_DIR})
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}-targets)
export(EXPORT ${PROJECT_NAME}-targets
FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake")
## ------------------------- building tests and examples -------------
option(PHMAP_BUILD_TESTS "Whether or not to build the tests" OFF)
option(PHMAP_BUILD_EXAMPLES "Whether or not to build the examples" OFF)
2019-03-27 20:37:51 -04:00
if(MSVC)
2019-04-06 14:00:14 -04:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
2019-03-27 20:37:51 -04:00
else()
2019-04-07 21:44:55 -04:00
if(CXXFLAGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXXFLAGS}")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -march=native")
2019-04-07 21:44:55 -04:00
endif()
2019-03-27 20:37:51 -04:00
endif()
2019-03-23 10:33:16 -04:00
if (PHMAP_BUILD_TESTS)
2019-03-24 18:44:50 -04:00
2019-03-23 23:26:11 -04:00
include(cmake/DownloadGTest.cmake)
2019-03-26 08:35:11 -04:00
include_directories(${PROJECT_SOURCE_DIR})
2019-03-23 23:26:11 -04:00
check_target(gtest)
check_target(gtest_main)
check_target(gmock)
2019-03-26 09:00:55 -04:00
enable_testing()
## ---------------- regular hash maps ----------------------------
phmap_cc_test(NAME compressed_tuple SRCS "tests/compressed_tuple_test.cc"
DEPS gmock_main)
2019-03-24 18:10:20 -04:00
phmap_cc_test(NAME container_memory SRCS "tests/container_memory_test.cc"
DEPS gmock_main)
2019-03-23 23:26:11 -04:00
phmap_cc_test(NAME hash_policy_testing SRCS "tests/hash_policy_testing_test.cc"
2019-03-24 18:10:20 -04:00
DEPS gmock_main)
phmap_cc_test(NAME node_hash_policy SRCS "tests/node_hash_policy_test.cc"
DEPS gmock_main)
2019-03-24 18:10:20 -04:00
phmap_cc_test(NAME raw_hash_set SRCS "tests/raw_hash_set_test.cc"
DEPS gmock_main)
phmap_cc_test(NAME raw_hash_set_allocator SRCS "tests/raw_hash_set_allocator_test.cc"
DEPS gmock_main)
## ---------------- regular hash maps ----------------------------
phmap_cc_test(NAME flat_hash_set SRCS "tests/flat_hash_set_test.cc"
2019-03-24 18:10:20 -04:00
COPTS "-DUNORDERED_SET_CXX17" DEPS gmock_main)
phmap_cc_test(NAME flat_hash_map SRCS "tests/flat_hash_map_test.cc"
DEPS gmock_main)
2019-03-24 18:10:20 -04:00
phmap_cc_test(NAME node_hash_map SRCS "tests/node_hash_map_test.cc"
DEPS gmock_main)
phmap_cc_test(NAME node_hash_set SRCS "tests/node_hash_set_test.cc"
COPTS "-DUNORDERED_SET_CXX17" DEPS gmock_main)
## --------------- parallel hash maps -----------------------------------------------
phmap_cc_test(NAME parallel_flat_hash_map SRCS "tests/parallel_flat_hash_map_test.cc"
COPTS "-DUNORDERED_MAP_CXX17" DEPS gmock_main)
phmap_cc_test(NAME parallel_flat_hash_set SRCS "tests/parallel_flat_hash_set_test.cc"
COPTS "-DUNORDERED_SET_CXX17" DEPS gmock_main)
2019-03-25 07:58:34 -04:00
phmap_cc_test(NAME parallel_node_hash_map SRCS "tests/parallel_node_hash_map_test.cc"
DEPS gmock_main)
phmap_cc_test(NAME parallel_node_hash_set SRCS "tests/parallel_node_hash_set_test.cc"
COPTS "-DUNORDERED_SET_CXX17" DEPS gmock_main)
2019-04-07 09:19:04 -04:00
phmap_cc_test(NAME parallel_flat_hash_map_mutex SRCS "tests/parallel_flat_hash_map_mutex_test.cc"
COPTS "-DUNORDERED_MAP_CXX17" DEPS gmock_main)
2019-03-23 10:33:16 -04:00
endif()
if (PHMAP_BUILD_EXAMPLES)
2019-04-18 21:59:12 -04:00
if(NOT MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-include-dirs -Woverloaded-virtual -Wredundant-decls -Wshadow -Wstrict-null-sentinel -Wswitch-default -Wno-unused")
endif()
2019-04-07 21:44:55 -04:00
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
add_executable(ex_basic examples/basic.cc)
2019-04-11 18:26:49 -04:00
add_executable(ex_bench examples/bench.cc)
add_executable(ex_emplace examples/emplace.cc)
add_executable(ex_hash_std examples/hash_std.cc)
2019-05-12 10:36:40 -04:00
add_executable(ex_hash_value examples/hash_value.cc)
add_executable(ex_two_files examples/f1.cc examples/f2.cc)
2019-04-06 14:00:14 -04:00
add_executable(ex_insert_bench examples/insert_bench.cc)
2019-04-07 20:49:06 -04:00
add_executable(ex_knucleotide examples/knucleotide.cc)
2019-04-07 21:44:55 -04:00
target_link_libraries(ex_knucleotide Threads::Threads)
2019-04-11 19:02:35 -04:00
target_link_libraries(ex_bench Threads::Threads)
2019-03-23 10:33:16 -04:00
endif()