@@ -61,9 +61,18 @@ function(_gluten_roaring_add_headers target_name)
6161 endif ()
6262endfunction ()
6363
64+ function (_gluten_roaring_ensure_target )
65+ if (NOT TARGET gluten_roaring)
66+ add_library (gluten_roaring INTERFACE )
67+ add_library (gluten::roaring ALIAS gluten_roaring )
68+ endif ()
69+ endfunction ()
70+
6471# Check if roaring target already exists.
6572if (TARGET roaring)
66- _gluten_roaring_add_headers (roaring )
73+ _gluten_roaring_ensure_target ()
74+ target_link_libraries (gluten_roaring INTERFACE roaring )
75+ _gluten_roaring_add_headers (gluten_roaring )
6776 message (STATUS "Target roaring was already found." )
6877 return ()
6978endif ()
@@ -86,9 +95,9 @@ if(PkgConfig_FOUND)
8695endif ()
8796
8897if (Roaring_FOUND)
89- add_library ( roaring INTERFACE )
90- target_link_libraries (roaring INTERFACE PkgConfig::Roaring )
91- _gluten_roaring_add_headers (roaring )
98+ _gluten_roaring_ensure_target ( )
99+ target_link_libraries (gluten_roaring INTERFACE PkgConfig::Roaring )
100+ _gluten_roaring_add_headers (gluten_roaring )
92101 message (STATUS "Found roaring via pkg-config." )
93102 return ()
94103endif ()
@@ -109,13 +118,11 @@ find_library(
109118if (Roaring_INCLUDE_DIR
110119 AND Roaring_CPP_INCLUDE_DIR
111120 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 )
121+ _gluten_roaring_ensure_target ()
122+ target_link_libraries (gluten_roaring INTERFACE "${Roaring_LIBRARY} " )
123+ target_include_directories (
124+ gluten_roaring INTERFACE "${Roaring_INCLUDE_DIR} "
125+ "${Roaring_CPP_INCLUDE_DIR} " )
119126 message (STATUS "Found roaring via direct library lookup." )
120127 return ()
121128endif ()
@@ -143,7 +150,12 @@ FetchContent_MakeAvailable(roaring_fetch)
143150
144151if (TARGET roaring)
145152 set_target_properties (roaring PROPERTIES POSITION_INDEPENDENT_CODE ON )
146- _gluten_roaring_add_headers (roaring )
153+ _gluten_roaring_ensure_target ()
154+ target_link_libraries (gluten_roaring INTERFACE "$<TARGET_FILE :roaring >" )
155+ target_include_directories (
156+ gluten_roaring INTERFACE "${roaring_fetch_SOURCE_DIR} /include"
157+ "${roaring_fetch_SOURCE_DIR} /cpp" )
158+ add_dependencies (gluten_roaring roaring )
147159 if (_roaring_restore_pic)
148160 set (CMAKE_POSITION_INDEPENDENT_CODE "${_roaring_saved_pic} " )
149161 else ()
0 commit comments