@@ -8,17 +8,43 @@ if (NOT TARGET emhash::emhash)
88 include (FetchEmhash)
99endif ()
1010
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" )
1712
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 ()
2047
21- set (XPTIFW_PARALLEL_HASHMAP_HEADERS "${parallel-hashmap_SOURCE_DIR}" )
2248
2349file (GLOB SOURCES *.cpp)
2450
0 commit comments