Skip to content

Commit f03cc45

Browse files
committed
Finds rapidhash via system or vendored fallback
Ensures rapidhash is located either as a system-installed dependency or through a vendored copy. This allows the project to function correctly regardless of whether rapidhash is pre-installed on the system.
1 parent 0fde73e commit f03cc45

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

CMakeLists.txt

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,17 @@ elseif(ZXC_ENABLE_COVERAGE)
5757
set(ZXC_PGO_MODE "OFF")
5858
endif()
5959

60+
# =============================================================================
61+
# Rapidhash: system-installed (e.g. vcpkg) or vendored fallback
62+
# =============================================================================
63+
find_path(RAPIDHASH_INCLUDE_DIR rapidhash.h)
64+
if(NOT RAPIDHASH_INCLUDE_DIR)
65+
set(RAPIDHASH_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/lib/vendors")
66+
message(STATUS "Using vendored rapidhash from ${RAPIDHASH_INCLUDE_DIR}")
67+
else()
68+
message(STATUS "Found system rapidhash in ${RAPIDHASH_INCLUDE_DIR}")
69+
endif()
70+
6071
# =============================================================================
6172
# Core Library & Runtime Dispatch
6273
# =============================================================================
@@ -80,7 +91,7 @@ macro(zxc_add_variant suffix flags)
8091
endif()
8192
endif()
8293
# Inherit include directories
83-
target_include_directories(zxc_compress${suffix} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/lib ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/vendors PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
94+
target_include_directories(zxc_compress${suffix} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/lib ${RAPIDHASH_INCLUDE_DIR} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
8495

8596
add_library(zxc_decompress${suffix} OBJECT src/lib/zxc_decompress.c)
8697
target_compile_options(zxc_decompress${suffix} PRIVATE ${flags})
@@ -97,7 +108,7 @@ macro(zxc_add_variant suffix flags)
97108
target_compile_options(zxc_decompress${suffix} PRIVATE -fvisibility=hidden)
98109
endif()
99110
endif()
100-
target_include_directories(zxc_decompress${suffix} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/lib ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/vendors PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
111+
target_include_directories(zxc_decompress${suffix} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/lib ${RAPIDHASH_INCLUDE_DIR} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
101112

102113
list(APPEND ZXC_VARIANT_OBJECTS $<TARGET_OBJECTS:zxc_compress${suffix}> $<TARGET_OBJECTS:zxc_decompress${suffix}>)
103114
endmacro()
@@ -158,7 +169,7 @@ target_include_directories(zxc_lib
158169
$<INSTALL_INTERFACE:include>
159170
PRIVATE
160171
${CMAKE_CURRENT_SOURCE_DIR}/src/lib
161-
${CMAKE_CURRENT_SOURCE_DIR}/src/lib/vendors
172+
${RAPIDHASH_INCLUDE_DIR}
162173
)
163174

164175
# Symbol visibility for shared libraries
@@ -248,7 +259,7 @@ target_link_libraries(zxc_lib PRIVATE Threads::Threads)
248259
if(ZXC_BUILD_CLI)
249260
add_executable(zxc src/cli/main.c)
250261
target_link_libraries(zxc PRIVATE zxc_lib)
251-
target_include_directories(zxc PRIVATE src/lib/vendors)
262+
target_include_directories(zxc PRIVATE ${RAPIDHASH_INCLUDE_DIR})
252263

253264
# Math library on Unix
254265
if(UNIX)
@@ -341,7 +352,7 @@ if(ZXC_BUILD_TESTS)
341352
$<INSTALL_INTERFACE:include>
342353
PRIVATE
343354
${CMAKE_CURRENT_SOURCE_DIR}/src/lib
344-
${CMAKE_CURRENT_SOURCE_DIR}/src/lib/vendors
355+
${RAPIDHASH_INCLUDE_DIR}
345356
)
346357

347358
# Apply same compiler settings as main library
@@ -382,7 +393,7 @@ if(ZXC_BUILD_TESTS)
382393
endif()
383394
endif()
384395

385-
target_include_directories(zxc_test PRIVATE src/lib src/lib/vendors)
396+
target_include_directories(zxc_test PRIVATE src/lib ${RAPIDHASH_INCLUDE_DIR})
386397
add_test(NAME UnitTests COMMAND zxc_test)
387398
endif()
388399

0 commit comments

Comments
 (0)