Skip to content

Commit c8aecdf

Browse files
authored
[SYCL][CMake] Support pre-installed parallel-hashmap (#19909)
There's no CMake install target or pkg-config file, so we have to just search for the headers. #19635 --------- Signed-off-by: Sarnie, Nick <[email protected]>
1 parent 0203578 commit c8aecdf

File tree

1 file changed

+35
-9
lines changed

1 file changed

+35
-9
lines changed

xptifw/src/CMakeLists.txt

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,43 @@ if (NOT TARGET emhash::emhash)
88
include(FetchEmhash)
99
endif()
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

2349
file(GLOB SOURCES *.cpp)
2450

0 commit comments

Comments
 (0)