You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ap...@apache.org on 2019/04/22 13:21:42 UTC

[arrow] branch master updated: ARROW-5185: [C++] Add support for Boost with CMake configuration file

This is an automated email from the ASF dual-hosted git repository.

apitrou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new f014d76  ARROW-5185: [C++] Add support for Boost with CMake configuration file
f014d76 is described below

commit f014d76c68a9a977a19f87f7ea77511e4753bb8c
Author: Kouhei Sutou <ko...@clear-code.com>
AuthorDate: Mon Apr 22 15:21:33 2019 +0200

    ARROW-5185: [C++] Add support for Boost with CMake configuration file
    
    `FindBoost.cmake` will provide `Boost_<C>_LIBRARY_{DEBUG,RELEASE}` and
    `Boost::<C>`.
    
    But if `BoostConfig.cmake` provided by Boost is used, the
    `BoostConfig.cmake` only provides `Boost::<C>`. So using `Boost::<C>` is
    more portable than using `Boost_<C>_LIBRARY_{DEBUG,RELEASE}`.
    
    Author: Kouhei Sutou <ko...@clear-code.com>
    
    Closes #4173 from kou/cpp-mingw-boost-1.70 and squashes the following commits:
    
    f77408f8f <Kouhei Sutou>  Add support for Boost with CMake configuration file
---
 appveyor.yml                                | 24 +++++------
 cpp/cmake_modules/ThirdpartyToolchain.cmake | 66 +++++++++--------------------
 2 files changed, 32 insertions(+), 58 deletions(-)

diff --git a/appveyor.yml b/appveyor.yml
index 9428c69..2ab7ff8 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -63,18 +63,18 @@ environment:
     - JOB: "Build_Debug"
       GENERATOR: Ninja
       CONFIGURATION: "Debug"
-    #- JOB: "MinGW32"
-      #MINGW_ARCH: i686
-      #MINGW_PACKAGE_PREFIX: mingw-w64-i686
-      #MINGW_PREFIX: c:\msys64\mingw32
-      #MSYSTEM: MINGW32
-      #USE_CLCACHE: false
-    #- JOB: "MinGW64"
-      #MINGW_ARCH: x86_64
-      #MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
-      #MINGW_PREFIX: c:\msys64\mingw64
-      #MSYSTEM: MINGW64
-      #USE_CLCACHE: false
+    - JOB: "MinGW32"
+      MINGW_ARCH: i686
+      MINGW_PACKAGE_PREFIX: mingw-w64-i686
+      MINGW_PREFIX: c:\msys64\mingw32
+      MSYSTEM: MINGW32
+      USE_CLCACHE: false
+    - JOB: "MinGW64"
+      MINGW_ARCH: x86_64
+      MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
+      MINGW_PREFIX: c:\msys64\mingw64
+      MSYSTEM: MINGW64
+      USE_CLCACHE: false
     - JOB: "Rust"
       TARGET: x86_64-pc-windows-msvc
       USE_CLCACHE: false
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 80caff5..30f99ff 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -2201,6 +2201,14 @@ if(ARROW_BOOST_VENDORED)
         "link=${BOOST_BUILD_LINK}"
         "variant=${BOOST_BUILD_VARIANT}"
         "cxxflags=-fPIC")
+
+    add_thirdparty_lib(boost_system STATIC_LIB "${BOOST_STATIC_SYSTEM_LIBRARY}")
+
+    add_thirdparty_lib(boost_filesystem STATIC_LIB "${BOOST_STATIC_FILESYSTEM_LIBRARY}")
+
+    add_thirdparty_lib(boost_regex STATIC_LIB "${BOOST_STATIC_REGEX_LIBRARY}")
+
+    set(ARROW_BOOST_LIBS ${BOOST_SYSTEM_LIBRARY} ${BOOST_FILESYSTEM_LIBRARY})
   endif()
   externalproject_add(boost_ep
                       URL
@@ -2234,6 +2242,8 @@ else()
   if(ARROW_BOOST_USE_SHARED)
     # Find shared Boost libraries.
     set(Boost_USE_STATIC_LIBS OFF)
+    set(BUILD_SHARED_LIBS_KEEP ${BUILD_SHARED_LIBS})
+    set(BUILD_SHARED_LIBS ON)
 
     if(MSVC)
       # force all boost libraries to dynamic link
@@ -2244,19 +2254,13 @@ else()
       find_package(Boost REQUIRED)
     else()
       find_package(Boost COMPONENTS regex system filesystem REQUIRED)
-      if("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
-        set(BOOST_SHARED_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_DEBUG})
-        set(BOOST_SHARED_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY_DEBUG})
-        set(BOOST_SHARED_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_DEBUG})
-      else()
-        set(BOOST_SHARED_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_RELEASE})
-        set(BOOST_SHARED_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY_RELEASE})
-        set(BOOST_SHARED_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_RELEASE})
-      endif()
-      set(BOOST_SYSTEM_LIBRARY boost_system_shared)
-      set(BOOST_FILESYSTEM_LIBRARY boost_filesystem_shared)
-      set(BOOST_REGEX_LIBRARY boost_regex_shared)
+      set(BOOST_SYSTEM_LIBRARY Boost::system)
+      set(BOOST_FILESYSTEM_LIBRARY Boost::filesystem)
+      set(BOOST_REGEX_LIBRARY Boost::regex)
+      set(ARROW_BOOST_LIBS ${BOOST_SYSTEM_LIBRARY} ${BOOST_FILESYSTEM_LIBRARY})
     endif()
+    set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_KEEP})
+    unset(BUILD_SHARED_LIBS_KEEP)
   else()
     # Find static boost headers and libs
     # TODO Differentiate here between release and debug builds
@@ -2265,18 +2269,10 @@ else()
       find_package(Boost REQUIRED)
     else()
       find_package(Boost COMPONENTS regex system filesystem REQUIRED)
-      if("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
-        set(BOOST_STATIC_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_DEBUG})
-        set(BOOST_STATIC_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY_DEBUG})
-        set(BOOST_STATIC_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_DEBUG})
-      else()
-        set(BOOST_STATIC_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY_RELEASE})
-        set(BOOST_STATIC_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY_RELEASE})
-        set(BOOST_STATIC_REGEX_LIBRARY ${Boost_REGEX_LIBRARY_RELEASE})
-      endif()
-      set(BOOST_SYSTEM_LIBRARY boost_system_static)
-      set(BOOST_FILESYSTEM_LIBRARY boost_filesystem_static)
-      set(BOOST_REGEX_LIBRARY boost_regex_static)
+      set(BOOST_SYSTEM_LIBRARY Boost::system)
+      set(BOOST_FILESYSTEM_LIBRARY Boost::filesystem)
+      set(BOOST_REGEX_LIBRARY Boost::regex)
+      set(ARROW_BOOST_LIBS ${BOOST_SYSTEM_LIBRARY} ${BOOST_FILESYSTEM_LIBRARY})
     endif()
   endif()
 endif()
@@ -2284,28 +2280,6 @@ endif()
 message(STATUS "Boost include dir: " ${Boost_INCLUDE_DIR})
 message(STATUS "Boost libraries: " ${Boost_LIBRARIES})
 
-if(NOT ARROW_BOOST_HEADER_ONLY)
-  add_thirdparty_lib(boost_system
-                     STATIC_LIB
-                     "${BOOST_STATIC_SYSTEM_LIBRARY}"
-                     SHARED_LIB
-                     "${BOOST_SHARED_SYSTEM_LIBRARY}")
-
-  add_thirdparty_lib(boost_filesystem
-                     STATIC_LIB
-                     "${BOOST_STATIC_FILESYSTEM_LIBRARY}"
-                     SHARED_LIB
-                     "${BOOST_SHARED_FILESYSTEM_LIBRARY}")
-
-  add_thirdparty_lib(boost_regex
-                     STATIC_LIB
-                     "${BOOST_STATIC_REGEX_LIBRARY}"
-                     SHARED_LIB
-                     "${BOOST_SHARED_REGEX_LIBRARY}")
-
-  set(ARROW_BOOST_LIBS ${BOOST_SYSTEM_LIBRARY} ${BOOST_FILESYSTEM_LIBRARY})
-endif()
-
 include_directories(SYSTEM ${Boost_INCLUDE_DIR})
 
 #