Skip to content

Commit ad8c188

Browse files
authored
3p: update robin-map to 1.4.1 (#9698)
1 parent 9716b39 commit ad8c188

23 files changed

+5892
-3987
lines changed

third_party/robin-map/CMakeLists.txt

100755100644
Lines changed: 79 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,87 @@
1-
cmake_minimum_required(VERSION 2.8.12)
2-
project(test_robin_map)
3-
enable_testing()
1+
cmake_minimum_required(VERSION 3.10)
42

5-
find_package(Boost 1.54.0 REQUIRED COMPONENTS unit_test_framework)
3+
project(tsl-robin-map VERSION 1.4.1 LANGUAGES CXX)
64

5+
include(GNUInstallDirs)
76

8-
set(TEST_EXECUTABLE "test_robin_map")
97

10-
add_executable("${TEST_EXECUTABLE}" "tests/main.cpp"
11-
"tests/custom_allocator_tests.cpp"
12-
"tests/policy_tests.cpp"
13-
"tests/robin_map_tests.cpp"
14-
"tests/robin_set_tests.cpp")
15-
16-
target_include_directories("${TEST_EXECUTABLE}" PRIVATE "${Boost_INCLUDE_DIRS}" ".")
17-
target_link_libraries("${TEST_EXECUTABLE}" ${Boost_LIBRARIES})
8+
set(IS_MAIN_PROJECT FALSE)
9+
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
10+
set(IS_MAIN_PROJECT TRUE)
11+
endif()
12+
13+
# Enable the install target if the project is used main project (disable by default if subproject)
14+
option(TSL_ROBIN_MAP_ENABLE_INSTALL "Enable install target" ${IS_MAIN_PROJECT})
15+
16+
17+
add_library(robin_map INTERFACE)
18+
# Use tsl::robin_map as target, more consistent with other libraries conventions (Boost, Qt, ...)
19+
add_library(tsl::robin_map ALIAS robin_map)
20+
21+
target_include_directories(robin_map INTERFACE
22+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
23+
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
1824

19-
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
20-
target_compile_options("${TEST_EXECUTABLE}" PRIVATE -std=c++11 -Werror -Wall -Wextra -Wold-style-cast -O3 -DTSL_DEBUG)
21-
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
22-
target_compile_options("${TEST_EXECUTABLE}" PRIVATE /WX /W3 /DTSL_DEBUG)
25+
list(APPEND headers "${CMAKE_CURRENT_SOURCE_DIR}/include/tsl/robin_growth_policy.h"
26+
"${CMAKE_CURRENT_SOURCE_DIR}/include/tsl/robin_hash.h"
27+
"${CMAKE_CURRENT_SOURCE_DIR}/include/tsl/robin_map.h"
28+
"${CMAKE_CURRENT_SOURCE_DIR}/include/tsl/robin_set.h")
29+
target_sources(robin_map INTERFACE "$<BUILD_INTERFACE:${headers}>")
30+
31+
if(MSVC)
32+
target_sources(robin_map INTERFACE
33+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/tsl-robin-map.natvis>"
34+
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_DATAROOTDIR}/tsl-robin-map.natvis>")
2335
endif()
2436

37+
# Installation
38+
if(TSL_ROBIN_MAP_ENABLE_INSTALL)
39+
include(CMakePackageConfigHelpers)
40+
41+
## Install include directory and potential natvis file
42+
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/tsl"
43+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
44+
45+
if(MSVC)
46+
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/tsl-robin-map.natvis"
47+
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}")
48+
endif()
49+
50+
2551

26-
add_test(NAME "all_tests" COMMAND "${TEST_EXECUTABLE}")
52+
## Create and install tsl-robin-mapConfig.cmake
53+
configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/tsl-robin-mapConfig.cmake.in"
54+
"${CMAKE_CURRENT_BINARY_DIR}/tsl-robin-mapConfig.cmake"
55+
INSTALL_DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/tsl-robin-map")
56+
57+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tsl-robin-mapConfig.cmake"
58+
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/tsl-robin-map")
59+
60+
61+
## Create local tsl-robin-mapTargets.cmake
62+
export(TARGETS robin_map NAMESPACE tsl:: FILE "${CMAKE_CURRENT_BINARY_DIR}/tsl-robin-mapTargets.cmake")
63+
64+
## Create and install global tsl-robin-mapTargets.cmake
65+
install(TARGETS robin_map
66+
EXPORT tsl-robin-mapTargets)
67+
68+
install(EXPORT tsl-robin-mapTargets
69+
NAMESPACE tsl::
70+
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/tsl-robin-map")
71+
72+
73+
74+
## Create and install tsl-robin-mapConfigVersion.cmake
75+
# tsl-robin-map is header-only and does not depend on the architecture.
76+
# Remove CMAKE_SIZEOF_VOID_P from tsl-robin-mapConfigVersion.cmake so that a
77+
# tsl-robin-mapConfig.cmake generated for a 64 bit target can be used for 32 bit
78+
# targets and vice versa.
79+
set(CMAKE_SIZEOF_VOID_P_BACKUP ${CMAKE_SIZEOF_VOID_P})
80+
unset(CMAKE_SIZEOF_VOID_P)
81+
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/tsl-robin-mapConfigVersion.cmake"
82+
COMPATIBILITY SameMajorVersion)
83+
set(CMAKE_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P_BACKUP})
84+
85+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tsl-robin-mapConfigVersion.cmake"
86+
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/tsl-robin-map")
87+
endif()

third_party/robin-map/LICENSE

100755100644
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2017 Tessil
3+
Copyright (c) 2017 Thibaut Goetghebuer-Planchon <tessil@gmx.com>
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

0 commit comments

Comments
 (0)