Skip to content

Commit d2d279e

Browse files
Mohammad LinjawiMohammad Linjawi
authored andcommitted
[VL][Delta] Fix roaring link propagation
1 parent 0caeb7e commit d2d279e

2 files changed

Lines changed: 45 additions & 34 deletions

File tree

cpp/CMake/FindRoaring.cmake

Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ set(_roaring_library_hints "")
2020
foreach(_root ${VELOX_BUILD_PATH} ${VELOX_HOME}/_build/release
2121
${VELOX_HOME}/_build/debug)
2222
if(_root)
23-
list(APPEND _roaring_pkgconfig_hints "${_root}/_deps/roaring-build")
2423
list(APPEND _roaring_include_hints "${_root}/_deps/roaring-src/include"
2524
"${_root}/_deps/roaring-src/cpp"
2625
"${_root}/_deps/roaring-build/include")
@@ -61,13 +60,47 @@ function(_gluten_roaring_add_headers target_name)
6160
endif()
6261
endfunction()
6362

63+
function(_gluten_roaring_ensure_target)
64+
if(NOT TARGET gluten_roaring)
65+
add_library(gluten_roaring INTERFACE)
66+
add_library(gluten::roaring ALIAS gluten_roaring)
67+
endif()
68+
endfunction()
69+
6470
# Check if roaring target already exists.
6571
if(TARGET roaring)
66-
_gluten_roaring_add_headers(roaring)
72+
_gluten_roaring_ensure_target()
73+
target_link_libraries(gluten_roaring INTERFACE roaring)
74+
_gluten_roaring_add_headers(gluten_roaring)
6775
message(STATUS "Target roaring was already found.")
6876
return()
6977
endif()
7078

79+
find_path(
80+
Roaring_INCLUDE_DIR
81+
NAMES roaring/roaring.h
82+
HINTS ${_roaring_include_hints})
83+
find_path(
84+
Roaring_CPP_INCLUDE_DIR
85+
NAMES roaring/roaring64map.hh
86+
HINTS ${_roaring_include_hints})
87+
find_library(
88+
Roaring_LIBRARY
89+
NAMES roaring
90+
HINTS ${_roaring_library_hints})
91+
92+
if(Roaring_INCLUDE_DIR
93+
AND Roaring_CPP_INCLUDE_DIR
94+
AND Roaring_LIBRARY)
95+
_gluten_roaring_ensure_target()
96+
target_link_libraries(gluten_roaring INTERFACE "${Roaring_LIBRARY}")
97+
target_include_directories(
98+
gluten_roaring INTERFACE "${Roaring_INCLUDE_DIR}"
99+
"${Roaring_CPP_INCLUDE_DIR}")
100+
message(STATUS "Found roaring via direct library lookup.")
101+
return()
102+
endif()
103+
71104
find_package(PkgConfig QUIET)
72105

73106
if(PkgConfig_FOUND)
@@ -86,40 +119,13 @@ if(PkgConfig_FOUND)
86119
endif()
87120

88121
if(Roaring_FOUND)
89-
add_library(roaring INTERFACE)
90-
target_link_libraries(roaring INTERFACE PkgConfig::Roaring)
91-
_gluten_roaring_add_headers(roaring)
122+
_gluten_roaring_ensure_target()
123+
target_link_libraries(gluten_roaring INTERFACE PkgConfig::Roaring)
124+
_gluten_roaring_add_headers(gluten_roaring)
92125
message(STATUS "Found roaring via pkg-config.")
93126
return()
94127
endif()
95128

96-
find_path(
97-
Roaring_INCLUDE_DIR
98-
NAMES roaring/roaring.h
99-
HINTS ${_roaring_include_hints})
100-
find_path(
101-
Roaring_CPP_INCLUDE_DIR
102-
NAMES roaring/roaring64map.hh
103-
HINTS ${_roaring_include_hints})
104-
find_library(
105-
Roaring_LIBRARY
106-
NAMES roaring
107-
HINTS ${_roaring_library_hints})
108-
109-
if(Roaring_INCLUDE_DIR
110-
AND Roaring_CPP_INCLUDE_DIR
111-
AND Roaring_LIBRARY)
112-
add_library(roaring UNKNOWN IMPORTED)
113-
set_target_properties(
114-
roaring
115-
PROPERTIES IMPORTED_LOCATION "${Roaring_LIBRARY}"
116-
INTERFACE_INCLUDE_DIRECTORIES
117-
"${Roaring_INCLUDE_DIR};${Roaring_CPP_INCLUDE_DIR}")
118-
_gluten_roaring_add_headers(roaring)
119-
message(STATUS "Found roaring via direct library lookup.")
120-
return()
121-
endif()
122-
123129
include(FetchContent)
124130

125131
set(_roaring_version "4.3.11")
@@ -143,7 +149,12 @@ FetchContent_MakeAvailable(roaring_fetch)
143149

144150
if(TARGET roaring)
145151
set_target_properties(roaring PROPERTIES POSITION_INDEPENDENT_CODE ON)
146-
_gluten_roaring_add_headers(roaring)
152+
_gluten_roaring_ensure_target()
153+
target_link_libraries(gluten_roaring INTERFACE "$<TARGET_FILE:roaring>")
154+
target_include_directories(
155+
gluten_roaring INTERFACE "${roaring_fetch_SOURCE_DIR}/include"
156+
"${roaring_fetch_SOURCE_DIR}/cpp")
157+
add_dependencies(gluten_roaring roaring)
147158
if(_roaring_restore_pic)
148159
set(CMAKE_POSITION_INDEPENDENT_CODE "${_roaring_saved_pic}")
149160
else()

cpp/velox/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ endif()
326326
target_link_libraries(velox PUBLIC facebook::velox)
327327

328328
target_link_libraries(velox PUBLIC Folly::folly)
329-
target_link_libraries(velox PUBLIC roaring)
329+
target_link_libraries(velox PUBLIC gluten::roaring)
330330

331331
find_re2()
332332
target_link_libraries(velox PUBLIC ${RE2_LIBRARY})

0 commit comments

Comments
 (0)