diff --git a/cpp/cmake_modules/FindBrotli.cmake b/cpp/cmake_modules/FindBrotli.cmake index ea971f09ed8..17129474584 100644 --- a/cpp/cmake_modules/FindBrotli.cmake +++ b/cpp/cmake_modules/FindBrotli.cmake @@ -26,12 +26,11 @@ # # This module defines # BROTLI_INCLUDE_DIR, directory containing headers -# BROTLI_LIBS, directory containing brotli libraries -# BROTLI_STATIC_LIB, path to libbrotli.a +# BROTLI_STATIC_LIB, path to libbrotli's static library # BROTLI_SHARED_LIB, path to libbrotli's shared library # BROTLI_FOUND, whether brotli has been found -if( NOT "${BROTLI_HOME}" STREQUAL "") +if (NOT "${BROTLI_HOME}" STREQUAL "") file( TO_CMAKE_PATH "${BROTLI_HOME}" _native_path ) list( APPEND _brotli_roots ${_native_path} ) elseif ( Brotli_HOME ) @@ -43,66 +42,53 @@ find_path( BROTLI_INCLUDE_DIR NAMES brotli/decode.h NO_DEFAULT_PATH PATH_SUFFIXES "include" ) -find_library( BROTLI_LIBRARY_ENC NAMES libbrotlienc.a libbrotlienc-static.a brotlienc - PATHS ${_brotli_roots} - NO_DEFAULT_PATH - PATH_SUFFIXES "lib/${CMAKE_LIBRARY_ARCHITECTURE}" "lib" ) +set(BROTLI_LIB_NAME brotli) -find_library( BROTLI_LIBRARY_DEC NAMES libbrotlidec.a libbrotlidec-static.a brotlidec - PATHS ${_brotli_roots} - NO_DEFAULT_PATH - PATH_SUFFIXES "lib/${CMAKE_LIBRARY_ARCHITECTURE}" "lib" ) +if (DEFINED BROTLI_MSVC_STATIC_LIB_SUFFIX) + set(BROTLI_STATIC_LIB_SUFFIX "${BROTLI_MSVC_STATIC_LIB_SUFFIX}") +endif() +if (NOT DEFINED BROTLI_STATIC_LIB_SUFFIX) + if (MSVC) + set(BROTLI_STATIC_LIB_SUFFIX _static) + else() + set(BROTLI_STATIC_LIB_SUFFIX -static) + endif() +endif() -find_library( BROTLI_LIBRARY_COMMON NAMES libbrotlicommon.a libbrotlicommon-static.a brotlicommon - PATHS ${_brotli_roots} - NO_DEFAULT_PATH - PATH_SUFFIXES "lib/${CMAKE_LIBRARY_ARCHITECTURE}" "lib" ) +list(APPEND BROTLI_PATH_SUFFIXES "lib/${CMAKE_LIBRARY_ARCHITECTURE}" "lib" "lib64") -set(BROTLI_LIBRARIES ${BROTLI_LIBRARY_ENC} ${BROTLI_LIBRARY_DEC} - ${BROTLI_LIBRARY_COMMON}) +foreach (BROTLI_LIB enc dec common) + string(TOUPPER "LIBRARY_${BROTLI_LIB}" LIBRARY) -if (BROTLI_INCLUDE_DIR AND (PARQUET_MINIMAL_DEPENDENCY OR BROTLI_LIBRARIES)) - set(BROTLI_FOUND TRUE) - get_filename_component( BROTLI_LIBS ${BROTLI_LIBRARY_ENC} PATH ) - set(BROTLI_LIB_NAME brotli) - if (BROTLI_MSVC_STATIC_LIB_SUFFIX) - set(BROTLI_STATIC_LIB_SUFFIX "${BROTLI_MSVC_STATIC_LIB_SUFFIX}") - endif() - if (NOT BROTLI_STATIC_LIB_SUFFIX) - if (EXISTS "${BROTLI_LIBS}/${CMAKE_STATIC_LIBRARY_PREFIX}${BROTLI_LIB_NAME}enc-static${CMAKE_STATIC_LIBRARY_SUFFIX}") - set(BROTLI_STATIC_LIB_SUFFIX -static) - else() - if (MSVC) - set(BROTLI_STATIC_LIB_SUFFIX _static) - else() - set(BROTLI_STATIC_LIB_SUFFIX "") - endif() - endif() - endif() - set(BROTLI_STATIC_LIB - ${BROTLI_LIBS}/${CMAKE_STATIC_LIBRARY_PREFIX}${BROTLI_LIB_NAME}enc${BROTLI_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} - ${BROTLI_LIBS}/${CMAKE_STATIC_LIBRARY_PREFIX}${BROTLI_LIB_NAME}dec${BROTLI_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} - ${BROTLI_LIBS}/${CMAKE_STATIC_LIBRARY_PREFIX}${BROTLI_LIB_NAME}common${BROTLI_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(BROTLI_STATIC_LIBRARY_ENC ${BROTLI_LIBS}/${CMAKE_STATIC_LIBRARY_PREFIX}${BROTLI_LIB_NAME}enc${BROTLI_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(BROTLI_STATIC_LIBRARY_DEC ${BROTLI_LIBS}/${CMAKE_STATIC_LIBRARY_PREFIX}${BROTLI_LIB_NAME}dec${BROTLI_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(BROTLI_STATIC_LIBRARY_COMMON ${BROTLI_LIBS}/${CMAKE_STATIC_LIBRARY_PREFIX}${BROTLI_LIB_NAME}common${BROTLI_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(BROTLI_SHARED_LIB - ${BROTLI_LIBS}/${CMAKE_SHARED_LIBRARY_PREFIX}${BROTLI_LIB_NAME}enc${CMAKE_SHARED_LIBRARY_SUFFIX} - ${BROTLI_LIBS}/${CMAKE_SHARED_LIBRARY_PREFIX}${BROTLI_LIB_NAME}dec${CMAKE_SHARED_LIBRARY_SUFFIX} - ${BROTLI_LIBS}/${CMAKE_SHARED_LIBRARY_PREFIX}${BROTLI_LIB_NAME}common${CMAKE_SHARED_LIBRARY_SUFFIX}) -else () - set(BROTLI_FOUND FALSE) -endif () + find_library(BROTLI_SHARED_${LIBRARY} + NAMES ${CMAKE_SHARED_LIBRARY_PREFIX}${BROTLI_LIB_NAME}${BROTLI_LIB}${BROTLI_SHARED_LIB_SUFFIX}${CMAKE_SHARED_LIBRARY_SUFFIX} + PATHS ${_brotli_roots} NO_DEFAULT_PATH + PATH_SUFFIXES ${BROTLI_PATH_SUFFIXES}) + list(APPEND BROTLI_SHARED_LIB ${BROTLI_SHARED_${LIBRARY}}) -if (BROTLI_FOUND) + find_library(BROTLI_STATIC_${LIBRARY} + NAMES ${CMAKE_STATIC_LIBRARY_PREFIX}${BROTLI_LIB_NAME}${BROTLI_LIB}${BROTLI_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} + PATHS ${_brotli_roots} NO_DEFAULT_PATH + PATH_SUFFIXES ${BROTLI_PATH_SUFFIXES}) + list(APPEND BROTLI_STATIC_LIB ${BROTLI_STATIC_${LIBRARY}}) +endforeach() + +if (BROTLI_INCLUDE_DIR AND (PARQUET_MINIMAL_DEPENDENCY OR BROTLI_STATIC_LIB OR BROTLI_SHARED_LIB)) + set(BROTLI_FOUND TRUE) if (NOT Brotli_FIND_QUIETLY) if (PARQUET_MINIMAL_DEPENDENCY) message(STATUS "Found the Brotli headers: ${BROTLI_INCLUDE_DIR}") else () - message(STATUS "Found the Brotli library: ${BROTLI_LIBRARIES}") + if (BROTLI_STATIC_LIB) + message(STATUS "Found the Brotli static library: ${BROTLI_STATIC_LIB}") + endif() + if (BROTLI_SHARED_LIB) + message(STATUS "Found the Brotli shared library: ${BROTLI_SHARED_LIB}") + endif() endif () endif () else () + set(BROTLI_FOUND FALSE) if (NOT Brotli_FIND_QUIETLY) set(BROTLI_ERR_MSG "Could not find the Brotli library. Looked in ") if ( _brotli_roots ) @@ -120,8 +106,6 @@ endif () mark_as_advanced( BROTLI_INCLUDE_DIR - BROTLI_LIBS - BROTLI_LIBRARIES BROTLI_STATIC_LIB BROTLI_SHARED_LIB ) diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index 726db851cbb..63fe1b9eee6 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -1077,7 +1077,7 @@ if (ARROW_WITH_BROTLI) # ---------------------------------------------------------------------- # Brotli - if("${BROTLI_HOME}" STREQUAL "") + if ("${BROTLI_HOME}" STREQUAL "") set(BROTLI_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/brotli_ep/src/brotli_ep-install") set(BROTLI_HOME "${BROTLI_PREFIX}") set(BROTLI_INCLUDE_DIR "${BROTLI_PREFIX}/include") @@ -1118,12 +1118,21 @@ if (ARROW_WITH_BROTLI) endif() include_directories(SYSTEM ${BROTLI_INCLUDE_DIR}) - ADD_THIRDPARTY_LIB(brotli_enc - STATIC_LIB ${BROTLI_STATIC_LIBRARY_ENC}) - ADD_THIRDPARTY_LIB(brotli_dec - STATIC_LIB ${BROTLI_STATIC_LIBRARY_DEC}) - ADD_THIRDPARTY_LIB(brotli_common - STATIC_LIB ${BROTLI_STATIC_LIBRARY_COMMON}) + if (BROTLI_STATIC_LIB OR BROTLI_VENDORED) + ADD_THIRDPARTY_LIB(brotli_enc + STATIC_LIB ${BROTLI_STATIC_LIBRARY_ENC}) + ADD_THIRDPARTY_LIB(brotli_dec + STATIC_LIB ${BROTLI_STATIC_LIBRARY_DEC}) + ADD_THIRDPARTY_LIB(brotli_common + STATIC_LIB ${BROTLI_STATIC_LIBRARY_COMMON}) + else() + ADD_THIRDPARTY_LIB(brotli_enc + SHARED_LIB ${BROTLI_SHARED_LIBRARY_ENC}) + ADD_THIRDPARTY_LIB(brotli_dec + SHARED_LIB ${BROTLI_SHARED_LIBRARY_DEC}) + ADD_THIRDPARTY_LIB(brotli_common + SHARED_LIB ${BROTLI_SHARED_LIBRARY_COMMON}) + endif() if (BROTLI_VENDORED) add_dependencies(brotli_enc_static brotli_ep) diff --git a/python/manylinux1/build_arrow.sh b/python/manylinux1/build_arrow.sh index e0475bb6c48..19bb6ad7536 100755 --- a/python/manylinux1/build_arrow.sh +++ b/python/manylinux1/build_arrow.sh @@ -73,6 +73,7 @@ PATH="${CPYTHON_PATH}/bin:${PATH}" cmake -DCMAKE_BUILD_TYPE=Release \ -DARROW_BUILD_SHARED=ON \ -DARROW_BOOST_USE_SHARED=ON \ -DARROW_GANDIVA_PC_CXX_FLAGS="-isystem;/opt/rh/devtoolset-2/root/usr/include/c++/4.8.2;-isystem;/opt/rh/devtoolset-2/root/usr/include/c++/4.8.2/x86_64-CentOS-linux/" \ + -DBROTLI_STATIC_LIB_SUFFIX= \ -DARROW_JEMALLOC=ON \ -DARROW_RPATH_ORIGIN=ON \ -DARROW_PYTHON=ON \