@@ -8,17 +8,43 @@ if (NOT TARGET emhash::emhash)
8
8
include (FetchEmhash )
9
9
endif ()
10
10
11
- set (PARALLEL_HASHMAP_REPO https://github.com/greg7mdp/parallel-hashmap.git )
12
- message (STATUS "Will fetch parallel-hashmap from ${PARALLEL_HASHMAP_REPO} " )
13
- FetchContent_Declare (parallel-hashmap
14
- GIT_REPOSITORY ${PARALLEL_HASHMAP_REPO}
15
- GIT_TAG 8a889d3699b3c09ade435641fb034427f3fd12b6
16
- )
11
+ set (PHMAP_REQUIRED_VER "1.3.12" )
17
12
18
- FetchContent_GetProperties (parallel-hashmap )
19
- FetchContent_MakeAvailable (parallel-hashmap )
13
+ find_path (PHMAP_LOC phmap_base.h PATH_SUFFIXES parallel_hashmap )
14
+ if (PHMAP_LOC )
15
+ file (READ "${PHMAP_LOC} /phmap_config.h" PHMAP_CONFIG_H )
16
+ string (REGEX MATCH "#define PHMAP_VERSION_MAJOR [0-9]+" PHMAP_VER_MAJOR_LINE "${PHMAP_CONFIG_H} " )
17
+ string (REGEX MATCH "#define PHMAP_VERSION_MINOR [0-9]+" PHMAP_VER_MINOR_LINE "${PHMAP_CONFIG_H} " )
18
+ string (REGEX MATCH "#define PHMAP_VERSION_PATCH [0-9]+" PHMAP_VER_PATCH_LINE "${PHMAP_CONFIG_H} " )
19
+
20
+ # We mached the whole line, extract out the number.
21
+ string (REGEX REPLACE ".*PHMAP_VERSION_MAJOR ([0-9]+).*" "\\ 1" PHMAP_VER_MAJOR "${PHMAP_VER_MAJOR_LINE} " )
22
+ string (REGEX REPLACE ".*PHMAP_VERSION_MINOR ([0-9]+).*" "\\ 1" PHMAP_VER_MINOR "${PHMAP_VER_MINOR_LINE} " )
23
+ string (REGEX REPLACE ".*PHMAP_VERSION_PATCH ([0-9]+).*" "\\ 1" PHMAP_VER_PATCH "${PHMAP_VER_PATCH_LINE} " )
24
+ set (PHMAP_VER "${PHMAP_VER_MAJOR} .${PHMAP_VER_MINOR} .${PHMAP_VER_PATCH} " )
25
+ if (${PHMAP_VER} VERSION_LESS ${PHMAP_REQUIRED_VER} )
26
+ message (WARNING "Found system install of parallel-hashmap, but it is version ${PHMAP_VER} "
27
+ " and ${PHMAP_REQUIRED_VER} or later is required, building from source" )
28
+ set (PHMAP_LOC 0 )
29
+ endif ()
30
+ endif ()
31
+ if (PHMAP_LOC )
32
+ set (XPTIFW_PARALLEL_HASHMAP_HEADERS "${PHMAP_LOC} " )
33
+ message (STATUS "Using system parallel-hashmap version ${PHMAP_VER} " )
34
+ else ()
35
+ set (PARALLEL_HASHMAP_REPO https://github.com/greg7mdp/parallel-hashmap.git )
36
+ message (STATUS "Will fetch parallel-hashmap version ${PHMAP_REQUIRED_VER} from ${PARALLEL_HASHMAP_REPO} " )
37
+ # When updating the tag, please check phmap_config.h and update PHMAP_REQUIRED_VER above as well.
38
+ FetchContent_Declare (parallel-hashmap
39
+ GIT_REPOSITORY ${PARALLEL_HASHMAP_REPO}
40
+ GIT_TAG 8a889d3699b3c09ade435641fb034427f3fd12b6
41
+ )
42
+
43
+ FetchContent_GetProperties (parallel-hashmap )
44
+ FetchContent_MakeAvailable (parallel-hashmap )
45
+ set (XPTIFW_PARALLEL_HASHMAP_HEADERS "${parallel-hashmap_SOURCE_DIR}" )
46
+ endif ()
20
47
21
- set (XPTIFW_PARALLEL_HASHMAP_HEADERS "${parallel-hashmap_SOURCE_DIR}" )
22
48
23
49
file (GLOB SOURCES *.cpp )
24
50
0 commit comments