@@ -20,7 +20,6 @@ set(_roaring_library_hints "")
2020foreach (_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 ()
6261endfunction ()
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.
6571if (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 ()
6977endif ()
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+
71104find_package (PkgConfig QUIET )
72105
73106if (PkgConfig_FOUND)
@@ -86,40 +119,13 @@ if(PkgConfig_FOUND)
86119endif ()
87120
88121if (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 ()
94127endif ()
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-
123129include (FetchContent )
124130
125131set (_roaring_version "4.3.11" )
@@ -143,7 +149,12 @@ FetchContent_MakeAvailable(roaring_fetch)
143149
144150if (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 ()
0 commit comments