Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,10 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
"Use vendored Boost instead of existing Boost"
OFF)

option(ARROW_PROTOBUF_USE_SHARED
"Rely on Protocol Buffers shared libraries where relevant"
OFF)

option(ARROW_PYTHON
"Build the Arrow CPython extensions"
OFF)
Expand Down Expand Up @@ -531,6 +535,7 @@ endif(UNIX)
# Linker and Dependencies
############################################################

set(ARROW_LINK_LIBS)
set(ARROW_STATIC_LINK_LIBS)

if (ARROW_WITH_BROTLI)
Expand Down Expand Up @@ -568,8 +573,16 @@ endif()
if (ARROW_ORC)
SET(ARROW_STATIC_LINK_LIBS
orc
protobuf
${ARROW_STATIC_LINK_LIBS})
if (ARROW_PROTOBUF_USE_SHARED)
SET(ARROW_LINK_LIBS
protobuf
${ARROW_LINK_LIBS})
else()
SET(ARROW_STATIC_LINK_LIBS
protobuf
${ARROW_STATIC_LINK_LIBS})
endif()
endif()

if (ARROW_STATIC_LINK_LIBS)
Expand All @@ -583,7 +596,8 @@ set(ARROW_BENCHMARK_LINK_LIBS
${ARROW_STATIC_LINK_LIBS})

set(ARROW_LINK_LIBS
${ARROW_STATIC_LINK_LIBS})
${ARROW_STATIC_LINK_LIBS}
${ARROW_LINK_LIBS})

set(ARROW_SHARED_PRIVATE_LINK_LIBS
${BOOST_SYSTEM_LIBRARY}
Expand Down
16 changes: 14 additions & 2 deletions cpp/cmake_modules/FindProtobuf.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,23 @@ find_path (PROTOBUF_INCLUDE_DIR google/protobuf/io/coded_stream.h HINTS
NO_DEFAULT_PATH
PATH_SUFFIXES "include")

set (lib_dirs "lib")
if (EXISTS "${_protobuf_path}/lib64")
set (lib_dirs "lib64" ${lib_dirs})
endif ()
if (EXISTS "${_protobuf_path}/lib/${CMAKE_LIBRARY_ARCHITECTURE}")
set (lib_dirs "lib/${CMAKE_LIBRARY_ARCHITECTURE}" ${lib_dirs})
endif ()

find_library (PROTOBUF_LIBRARY NAMES protobuf PATHS
${_protobuf_path}
NO_DEFAULT_PATH
PATH_SUFFIXES "lib")
PATH_SUFFIXES ${lib_dirs})

find_library (PROTOC_LIBRARY NAMES protoc PATHS
${_protobuf_path}
NO_DEFAULT_PATH
PATH_SUFFIXES "lib")
PATH_SUFFIXES ${lib_dirs})

find_program(PROTOBUF_EXECUTABLE protoc HINTS
${_protobuf_path}
Expand All @@ -53,6 +61,8 @@ find_program(PROTOBUF_EXECUTABLE protoc HINTS

if (PROTOBUF_INCLUDE_DIR AND PROTOBUF_LIBRARY AND PROTOC_LIBRARY AND PROTOBUF_EXECUTABLE)
set (PROTOBUF_FOUND TRUE)
set (PROTOBUF_SHARED_LIB ${PROTOBUF_LIBRARY})
set (PROTOC_SHARED_LIB ${PROTOC_LIBRARY})
get_filename_component (PROTOBUF_LIBS ${PROTOBUF_LIBRARY} PATH)
set (PROTOBUF_LIB_NAME protobuf)
set (PROTOC_LIB_NAME protoc)
Expand All @@ -64,7 +74,9 @@ endif ()

if (PROTOBUF_FOUND)
message (STATUS "Found the Protobuf headers: ${PROTOBUF_INCLUDE_DIR}")
message (STATUS "Found the Protobuf shared library: ${PROTOBUF_SHARED_LIB}")
message (STATUS "Found the Protobuf library: ${PROTOBUF_STATIC_LIB}")
message (STATUS "Found the Protoc shared library: ${PROTOC_SHARED_LIB}")
message (STATUS "Found the Protoc library: ${PROTOC_STATIC_LIB}")
message (STATUS "Found the Protoc executable: ${PROTOBUF_EXECUTABLE}")
else()
Expand Down
9 changes: 7 additions & 2 deletions cpp/cmake_modules/ThirdpartyToolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -915,8 +915,13 @@ if (ARROW_ORC)
endif ()

include_directories (SYSTEM ${PROTOBUF_INCLUDE_DIR})
ADD_THIRDPARTY_LIB(protobuf
STATIC_LIB ${PROTOBUF_STATIC_LIB})
if (ARROW_PROTOBUF_USE_SHARED)
ADD_THIRDPARTY_LIB(protobuf
SHARED_LIB ${PROTOBUF_LIBRARY})
else ()
ADD_THIRDPARTY_LIB(protobuf
STATIC_LIB ${PROTOBUF_STATIC_LIB})
endif ()

if (PROTOBUF_VENDORED)
add_dependencies (protobuf protobuf_ep)
Expand Down