@@ -26,13 +26,12 @@ if(VELOX_ENABLE_ARROW)
2626 endif ()
2727
2828 # Use external arrow & parquet only if <package>_DIR is defined
29- if (Thrift_FOUND AND DEFINED Arrow_DIR AND DEFINED Parquet_DIR )
30- find_package (Arrow PATHS "${Arrow_DIR} " NO_DEFAULT_PATH)
31- find_package (Parquet PATHS "${Parquet_DIR} " NO_DEFAULT_PATH)
29+ if (DEFINED Arrow_HOME )
30+ find_package (Arrow PATHS "${Arrow_HOME} /arrow_install " NO_DEFAULT_PATH)
31+ find_package (Parquet PATHS "${Arrow_HOME} /arrow_install " NO_DEFAULT_PATH)
3232 if (Arrow_FOUND AND Parquet_FOUND)
3333 add_library (arrow INTERFACE )
3434 add_library (parquet INTERFACE )
35- add_library (thrift INTERFACE )
3635
3736 if (TARGET Arrow::arrow_static)
3837 target_link_libraries (arrow INTERFACE Arrow::arrow_static)
@@ -46,11 +45,33 @@ if(VELOX_ENABLE_ARROW)
4645 target_link_libraries (parquet INTERFACE Parquet::parquet_shared)
4746 endif ()
4847
48+ message (STATUS "Using pre-builded arrow" )
49+ endif ()
50+
51+ if (Thrift_FOUND)
52+ add_library (thrift INTERFACE )
4953 target_link_libraries (thrift INTERFACE thrift::thrift)
54+ message (STATUS "Using system thrift" )
55+ else ()
56+ add_library (thrift STATIC IMPORTED GLOBAL )
57+ if (NOT Thrift_FOUND)
58+ set (THRIFT_ROOT ${Arrow_HOME} /arrow_ep/cpp/build /thrift_ep-install )
59+ if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
60+ set (THRIFT_LIB ${THRIFT_ROOT} /lib/libthriftd.a)
61+ else ()
62+ set (THRIFT_LIB ${THRIFT_ROOT} /lib/libthrift.a)
63+ endif ()
64+
65+ file (MAKE_DIRECTORY ${THRIFT_ROOT} /include )
66+ set (THRIFT_INCLUDE_DIR ${THRIFT_ROOT} /include )
67+ endif ()
5068
51- message (STATUS "Using external arrow" )
52- return ()
53- endif ()
69+ set_property (TARGET thrift PROPERTY INTERFACE_INCLUDE_DIRECTORIES
70+ ${THRIFT_INCLUDE_DIR} )
71+ set_property (TARGET thrift PROPERTY IMPORTED_LOCATION ${THRIFT_LIB} )
72+ message (STATUS "Using pre-builded thrift" )
73+ endif ()
74+ return ()
5475 endif ()
5576
5677 set (ARROW_PREFIX "${CMAKE_CURRENT_BINARY_DIR} /arrow_ep" )
0 commit comments