diff --git a/cmake/Modules/ArrowExternalProject.cmake b/cmake/Modules/ArrowExternalProject.cmake index d5b19c786..dfb25f244 100644 --- a/cmake/Modules/ArrowExternalProject.cmake +++ b/cmake/Modules/ArrowExternalProject.cmake @@ -92,7 +92,7 @@ endif() ExternalProject_Add(arrow_ep PREFIX external/arrow - DEPENDS flatbuffers_ep boost_ep + DEPENDS flatbuffers boost GIT_REPOSITORY ${arrow_URL} GIT_TAG ${arrow_TAG} ${ARROW_CONFIGURE} diff --git a/cmake/Modules/BoostExternalProject.cmake b/cmake/Modules/BoostExternalProject.cmake index 151f4161c..bab016a02 100644 --- a/cmake/Modules/BoostExternalProject.cmake +++ b/cmake/Modules/BoostExternalProject.cmake @@ -7,32 +7,47 @@ # - Boost_SYSTEM_LIBRARY # - Boost_FILESYSTEM_LIBRARY -set(Boost_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external/boost-install) +# boost is a stable library in ray, and it supports to find +# the boost pre-built in environment to speed up build process +if (DEFINED ENV{BOOST_ROOT} AND EXISTS ENV{BOOST_ROOT}) + set(Boost_USE_STATIC_LIBS ON) + set(BOOST_ROOT "$ENV{BOOST_ROOT}") + message(STATUS "Find BOOST_ROOT: ${BOOST_ROOT}") +# find_package(Boost COMPONENTS system filesystem REQUIRED) + set(Boost_INCLUDE_DIR ${BOOST_ROOT}/include) + set(Boost_LIBRARY_DIR ${BOOST_ROOT}/lib) + set(Boost_SYSTEM_LIBRARY ${Boost_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_system${CMAKE_STATIC_LIBRARY_SUFFIX}) + set(Boost_FILESYSTEM_LIBRARY ${Boost_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_filesystem${CMAKE_STATIC_LIBRARY_SUFFIX}) -set(Boost_INCLUDE_DIR ${Boost_INSTALL_PREFIX}/include) -set(BOOST_ROOT ${Boost_INSTALL_PREFIX}) -set(Boost_LIBRARY_DIR ${Boost_INSTALL_PREFIX}/lib) -set(Boost_SYSTEM_LIBRARY ${Boost_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_system${CMAKE_STATIC_LIBRARY_SUFFIX}) -set(Boost_FILESYSTEM_LIBRARY ${Boost_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_filesystem${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_custom_target(boost_ep) +else() + set(Boost_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external/boost-install) -#set(boost_URL https://github.com/boostorg/boost.git) -#set(boost_TAG boost-1.65.1) + set(Boost_INCLUDE_DIR ${Boost_INSTALL_PREFIX}/include) + set(BOOST_ROOT ${Boost_INSTALL_PREFIX}) + set(Boost_LIBRARY_DIR ${Boost_INSTALL_PREFIX}/lib) + set(Boost_SYSTEM_LIBRARY ${Boost_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_system${CMAKE_STATIC_LIBRARY_SUFFIX}) + set(Boost_FILESYSTEM_LIBRARY ${Boost_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_filesystem${CMAKE_STATIC_LIBRARY_SUFFIX}) -set(Boost_TAR_GZ_URL http://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz) -set(Boost_BUILD_PRODUCTS ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY}) -set(Boost_URL_MD5 "ee64fd29a3fe42232c6ac3c419e523cf") + #set(boost_URL https://github.com/boostorg/boost.git) + #set(boost_TAG boost-1.65.1) -set(Boost_USE_STATIC_LIBS ON) + set(Boost_TAR_GZ_URL http://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz) + set(Boost_BUILD_PRODUCTS ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY}) + set(Boost_URL_MD5 "ee64fd29a3fe42232c6ac3c419e523cf") -ExternalProject_Add(boost_ep - PREFIX external/boost - URL ${Boost_TAR_GZ_URL} - URL_MD5 ${Boost_URL_MD5} - # GIT_REPOSITORY ${boost_URL} - # GIT_TAG ${boost_TAG} - # GIT_SUBMODULES "" - BUILD_IN_SOURCE 1 - BUILD_BYPRODUCTS ${Boost_BUILD_PRODUCTS} - CONFIGURE_COMMAND ./bootstrap.sh - BUILD_COMMAND bash -c "./b2 cxxflags=-fPIC cflags=-fPIC variant=release link=static --with-filesystem --with-system --with-regex -j8 install --prefix=${Boost_INSTALL_PREFIX} > /dev/null" - INSTALL_COMMAND "") + set(Boost_USE_STATIC_LIBS ON) + + ExternalProject_Add(boost_ep + PREFIX external/boost + URL ${Boost_TAR_GZ_URL} + URL_MD5 ${Boost_URL_MD5} + # GIT_REPOSITORY ${boost_URL} + # GIT_TAG ${boost_TAG} + # GIT_SUBMODULES "" + BUILD_IN_SOURCE 1 + BUILD_BYPRODUCTS ${Boost_BUILD_PRODUCTS} + CONFIGURE_COMMAND ./bootstrap.sh + BUILD_COMMAND bash -c "./b2 cxxflags=-fPIC cflags=-fPIC variant=release link=static --with-filesystem --with-system --with-regex -j8 install --prefix=${Boost_INSTALL_PREFIX} > /dev/null" + INSTALL_COMMAND "") +endif () diff --git a/cmake/Modules/FlatBuffersExternalProject.cmake b/cmake/Modules/FlatBuffersExternalProject.cmake index 85c608764..57c2216ce 100644 --- a/cmake/Modules/FlatBuffersExternalProject.cmake +++ b/cmake/Modules/FlatBuffersExternalProject.cmake @@ -10,29 +10,39 @@ # - FLATBUFFERS_COMPILER # - FBS_DEPENDS, to keep compatible -set(flatbuffers_VERSION "1.9.0") -set(flatbuffers_URL "https://github.com/google/flatbuffers/archive/v${flatbuffers_VERSION}.tar.gz") -set(flatbuffers_URL_MD5 "8be7513bf960034f6873326d09521a4b") - -set(FLATBUFFERS_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/external/flatbuffers-install") -set(FBS_DEPENDS flatbuffers_ep) - # The following is needed because in CentOS, the lib directory is named lib64 if(EXISTS "/etc/redhat-release" AND CMAKE_SIZEOF_VOID_P EQUAL 8) set(LIB_SUFFIX 64) endif() -set(FLATBUFFERS_HOME "${FLATBUFFERS_INSTALL_PREFIX}") -set(FLATBUFFERS_INCLUDE_DIR "${FLATBUFFERS_INSTALL_PREFIX}/include") -set(FLATBUFFERS_STATIC_LIB "${FLATBUFFERS_INSTALL_PREFIX}/lib${LIB_SUFFIX}/libflatbuffers.a") -set(FLATBUFFERS_COMPILER "${FLATBUFFERS_INSTALL_PREFIX}/bin/flatc") +if(DEFINED ENV{FLATBUFFERS_HOME} AND EXISTS ENV{FLATBUFFERS_HOME}) + set(FLATBUFFERS_HOME "$ENV{FLATBUFFERS_HOME}") + set(FLATBUFFERS_INCLUDE_DIR "${FLATBUFFERS_HOME}/include") + set(FLATBUFFERS_STATIC_LIB "${FLATBUFFERS_HOME}/lib${LIB_SUFFIX}/libflatbuffers.a") + set(FLATBUFFERS_COMPILER "${FLATBUFFERS_HOME}/bin/flatc") -ExternalProject_Add(flatbuffers_ep - PREFIX external/flatbuffers - URL ${flatbuffers_URL} - URL_MD5 ${flatbuffers_URL_MD5} - CMAKE_ARGS - "-DCMAKE_CXX_FLAGS=-fPIC" - "-DCMAKE_INSTALL_PREFIX:PATH=${FLATBUFFERS_INSTALL_PREFIX}" - "-DFLATBUFFERS_BUILD_TESTS=OFF" - "-DCMAKE_BUILD_TYPE=RELEASE") + add_custom_target(flatbuffers_ep) +else() + set(flatbuffers_VERSION "1.9.0") + set(flatbuffers_URL "https://github.com/google/flatbuffers/archive/v${flatbuffers_VERSION}.tar.gz") + set(flatbuffers_URL_MD5 "8be7513bf960034f6873326d09521a4b") + + set(FLATBUFFERS_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/external/flatbuffers-install") + + set(FLATBUFFERS_HOME "${FLATBUFFERS_INSTALL_PREFIX}") + set(FLATBUFFERS_INCLUDE_DIR "${FLATBUFFERS_INSTALL_PREFIX}/include") + set(FLATBUFFERS_STATIC_LIB "${FLATBUFFERS_INSTALL_PREFIX}/lib${LIB_SUFFIX}/libflatbuffers.a") + set(FLATBUFFERS_COMPILER "${FLATBUFFERS_INSTALL_PREFIX}/bin/flatc") + + ExternalProject_Add(flatbuffers_ep + PREFIX external/flatbuffers + URL ${flatbuffers_URL} + URL_MD5 ${flatbuffers_URL_MD5} + CMAKE_ARGS + "-DCMAKE_CXX_FLAGS=-fPIC" + "-DCMAKE_INSTALL_PREFIX:PATH=${FLATBUFFERS_INSTALL_PREFIX}" + "-DFLATBUFFERS_BUILD_TESTS=OFF" + "-DCMAKE_BUILD_TYPE=RELEASE") +endif() + +set(FBS_DEPENDS flatbuffers_ep) diff --git a/cmake/Modules/GlogExternalProject.cmake b/cmake/Modules/GlogExternalProject.cmake new file mode 100644 index 000000000..47f11fbdb --- /dev/null +++ b/cmake/Modules/GlogExternalProject.cmake @@ -0,0 +1,48 @@ +# glog external project +# target: +# - glog_ep +# defines: +# - GLOG_HOME +# - GLOG_INCLUDE_DIR +# - GLOG_STATIC_LIB + +if(DEFINED ENV{GLOG_HOME} AND EXISTS ENV{GLOG_HOME}) + set(GLOG_HOME "$ENV{GLOG_HOME}") + set(GLOG_INCLUDE_DIR "${GLOG_HOME}/include") + set(GLOG_STATIC_LIB "${GLOG_HOME}/lib/libglog.a") + + add_custom_target(glog_ep) +else() + message(STATUS "Starting to build glog") + set(GLOG_VERSION "0.3.5") + # keep the url md5 equals with the version, `md5 v0.3.5.tar.gz` + set(GLOG_URL_MD5 "5df6d78b81e51b90ac0ecd7ed932b0d4") + set(GLOG_CMAKE_CXX_FLAGS "${EP_CXX_FLAGS} -fPIC") + if(APPLE) + set(GLOG_CMAKE_CXX_FLAGS "${GLOG_CMAKE_CXX_FLAGS} -mmacosx-version-min=10.12") + endif() + + set(GLOG_URL "https://github.com/google/glog/archive/v${GLOG_VERSION}.tar.gz") + set(GLOG_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/external/glog/src/glog_ep") + set(GLOG_HOME "${GLOG_PREFIX}") + set(GLOG_INCLUDE_DIR "${GLOG_PREFIX}/include") + set(GLOG_STATIC_LIB "${GLOG_PREFIX}/lib/libglog.a") + + set(GLOG_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX=${GLOG_PREFIX} + -DBUILD_SHARED_LIBS=OFF + -DBUILD_TESTING=OFF + -DWITH_GFLAGS=OFF + -DCMAKE_CXX_FLAGS_${UPPERCASE_BUILD_TYPE}=${GLOG_CMAKE_CXX_FLAGS} + -DCMAKE_C_FLAGS_${UPPERCASE_BUILD_TYPE}=${EP_C_FLAGS} + -DCMAKE_CXX_FLAGS=${GLOG_CMAKE_CXX_FLAGS}) + + ExternalProject_Add(glog_ep + PREFIX external/glog + URL ${GLOG_URL} + URL_MD5 ${GLOG_URL_MD5} + ${EP_LOG_OPTIONS} + BUILD_IN_SOURCE 1 + BUILD_BYPRODUCTS "${GLOG_STATIC_LIB}" + CMAKE_ARGS ${GLOG_CMAKE_ARGS}) +endif() diff --git a/cmake/Modules/GtestExternalProject.cmake b/cmake/Modules/GtestExternalProject.cmake new file mode 100644 index 000000000..5570066c6 --- /dev/null +++ b/cmake/Modules/GtestExternalProject.cmake @@ -0,0 +1,58 @@ +# gtest external project +# target: +# - googletest_ep +# defines: +# - GTEST_HOME +# - GTEST_STATIC_LIB +# - GTEST_MAIN_STATIC_LIB +# - GMOCK_MAIN_STATIC_LIB + +if(DEFINED ENV{GTEST_HOME} AND EXISTS ENV{GTEST_HOME}) + set(GTEST_HOME "$ENV{GTEST_HOME}") + set(GTEST_INCLUDE_DIR "${GTEST_HOME}/include") + set(GTEST_STATIC_LIB + "${GTEST_HOME}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(GTEST_MAIN_STATIC_LIB + "${GTEST_HOME}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(GMOCK_MAIN_STATIC_LIB + "${GTEST_HOME}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}") + + add_custom_target(googletest_ep) +else() + set(GTEST_VERSION "1.8.0") + + if(APPLE) + set(GTEST_CMAKE_CXX_FLAGS "-fPIC -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-value -Wno-ignored-attributes") + elseif(NOT MSVC) + set(GTEST_CMAKE_CXX_FLAGS "-fPIC") + endif() + if(CMAKE_BUILD_TYPE) + string(TOUPPER ${CMAKE_BUILD_TYPE} UPPERCASE_BUILD_TYPE) + endif() + set(GTEST_CMAKE_CXX_FLAGS "${EP_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPERCASE_BUILD_TYPE}} ${GTEST_CMAKE_CXX_FLAGS}") + + set(GTEST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/external/googletest/src/googletest_ep") + set(GTEST_INCLUDE_DIR "${GTEST_PREFIX}/include") + set(GTEST_STATIC_LIB + "${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(GTEST_MAIN_STATIC_LIB + "${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(GMOCK_MAIN_STATIC_LIB + "${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(GTEST_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX=${GTEST_PREFIX} + -DCMAKE_CXX_FLAGS=${GTEST_CMAKE_CXX_FLAGS}) + if (MSVC AND NOT ARROW_USE_STATIC_CRT) + set(GTEST_CMAKE_ARGS ${GTEST_CMAKE_ARGS} -Dgtest_force_shared_crt=ON) + endif() + + set(GTEST_URL_MD5 "16877098823401d1bf2ed7891d7dce36") + + ExternalProject_Add(googletest_ep + PREFIX external/googletest + URL "https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz" + URL_MD5 ${GTEST_URL_MD5} + BUILD_BYPRODUCTS ${GTEST_STATIC_LIB} ${GTEST_MAIN_STATIC_LIB} ${GMOCK_MAIN_STATIC_LIB} + CMAKE_ARGS ${GTEST_CMAKE_ARGS} + ${EP_LOG_OPTIONS}) +endif() diff --git a/cmake/Modules/ParquetExternalProject.cmake b/cmake/Modules/ParquetExternalProject.cmake new file mode 100644 index 000000000..7088e39e6 --- /dev/null +++ b/cmake/Modules/ParquetExternalProject.cmake @@ -0,0 +1,45 @@ +# parquet external project +# target: +# - parquet_ep +# depends: +# - arrow_ep +# defines: +# - PARQUET_HOME +# - PARQUET_INCLUDE_DIR +# - PARQUET_STATIC_LIB +# - PARQUET_SHARED_LIB + +include(ExternalProject) + +set(parquet_URL https://github.com/apache/parquet-cpp.git) +set(parquet_TAG 63f41b00bddecb172bd5b3aa0366b4653f498811) + +# install parquet into arrow_home... +set(PARQUET_INSTALL_PREFIX ${ARROW_HOME}) +set(PARQUET_HOME ${PARQUET_INSTALL_PREFIX}) +set(PARQUET_INCLUDE_DIR ${PARQUET_INSTALL_PREFIX}/include) +set(PARQUET_STATIC_LIB ${PARQUET_INSTALL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}parquet.a) +set(PARQUET_SHARED_LIB ${PARQUET_INSTALL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}parquet${CMAKE_SHARED_LIBRARY_SUFFIX}) + +set(parquet_CMAKE_ARGS + -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_INSTALL_PREFIX=${PARQUET_INSTALL_PREFIX} + -DARROW_HOME=${ARROW_HOME} + -DBOOST_ROOT=${BOOST_ROOT} + -DPARQUET_BUILD_BENCHMARKS=off + -DPARQUET_BUILD_EXECUTABLES=off + -DPARQUET_BUILD_TESTS=off) + +set(parquet_ENV "") +if (APPLE) + set(parquet_ENV "PATH=/usr/local/opt/bison/bin:$ENV{PATH}" + "OPENSSL_ROOT_DIR=/usr/local/opt/openssl") +endif () + +ExternalProject_Add(parquet_ep + PREFIX external/parquet + DEPENDS arrow + GIT_REPOSITORY ${parquet_URL} + GIT_TAG ${parquet_TAG} + BUILD_COMMAND ${CMAKE_COMMAND} -E env ${parquet_ENV} $(MAKE) + CMAKE_ARGS ${parquet_CMAKE_ARGS}) diff --git a/cmake/Modules/ThirdpartyToolchain.cmake b/cmake/Modules/ThirdpartyToolchain.cmake index bb58b61b1..0e0553483 100644 --- a/cmake/Modules/ThirdpartyToolchain.cmake +++ b/cmake/Modules/ThirdpartyToolchain.cmake @@ -1,6 +1,4 @@ -set(GFLAGS_VERSION "2.2.0") -set(GTEST_VERSION "1.8.0") -set(GBENCHMARK_VERSION "1.1.0") +# include all ray third party dependencies # Because we use the old C++ ABI to be compatible with TensorFlow, # we have to turn it on for dependencies too @@ -9,43 +7,11 @@ set(EP_CXX_FLAGS "${EP_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0") if(RAY_BUILD_TESTS OR RAY_BUILD_BENCHMARKS) add_custom_target(unittest ctest -L unittest) - if(APPLE) - set(GTEST_CMAKE_CXX_FLAGS "-fPIC -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-value -Wno-ignored-attributes") - elseif(NOT MSVC) - set(GTEST_CMAKE_CXX_FLAGS "-fPIC") - endif() - if(CMAKE_BUILD_TYPE) - string(TOUPPER ${CMAKE_BUILD_TYPE} UPPERCASE_BUILD_TYPE) - endif() - set(GTEST_CMAKE_CXX_FLAGS "${EP_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPERCASE_BUILD_TYPE}} ${GTEST_CMAKE_CXX_FLAGS}") - - set(GTEST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/external/googletest/src/googletest_ep") - set(GTEST_INCLUDE_DIR "${GTEST_PREFIX}/include") - set(GTEST_STATIC_LIB - "${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}") - set(GTEST_MAIN_STATIC_LIB - "${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}") - set(GMOCK_MAIN_STATIC_LIB - "${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}") - set(GTEST_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX=${GTEST_PREFIX} - -DCMAKE_CXX_FLAGS=${GTEST_CMAKE_CXX_FLAGS}) - if (MSVC AND NOT ARROW_USE_STATIC_CRT) - set(GTEST_CMAKE_ARGS ${GTEST_CMAKE_ARGS} -Dgtest_force_shared_crt=ON) - endif() - - set(GTEST_URL_MD5 "16877098823401d1bf2ed7891d7dce36") - - ExternalProject_Add(googletest_ep - PREFIX external/googletest - URL "https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz" - URL_MD5 ${GTEST_URL_MD5} - BUILD_BYPRODUCTS ${GTEST_STATIC_LIB} ${GTEST_MAIN_STATIC_LIB} ${GMOCK_MAIN_STATIC_LIB} - CMAKE_ARGS ${GTEST_CMAKE_ARGS} - ${EP_LOG_OPTIONS}) - + include(GtestExternalProject) message(STATUS "GTest include dir: ${GTEST_INCLUDE_DIR}") message(STATUS "GTest static library: ${GTEST_STATIC_LIB}") + message(STATUS "GTest static main library: ${GTEST_MAIN_STATIC_LIB}") + message(STATUS "GMock static main library: ${GMOCK_MAIN_STATIC_LIB}") include_directories(SYSTEM ${GTEST_INCLUDE_DIR}) ADD_THIRDPARTY_LIB(gtest STATIC_LIB ${GTEST_STATIC_LIB}) @@ -60,43 +26,12 @@ if(RAY_BUILD_TESTS OR RAY_BUILD_BENCHMARKS) endif() if(RAY_USE_GLOG) - message(STATUS "Starting to build glog") - set(GLOG_VERSION "0.3.5") - # keep the url md5 equals with the version, `md5 v0.3.5.tar.gz` - set(GLOG_URL_MD5 "5df6d78b81e51b90ac0ecd7ed932b0d4") - set(GLOG_CMAKE_CXX_FLAGS "${EP_CXX_FLAGS} -fPIC") - if(APPLE) - set(GLOG_CMAKE_CXX_FLAGS "${GLOG_CMAKE_CXX_FLAGS} -mmacosx-version-min=10.12") - endif() + include(GlogExternalProject) + message(STATUS "Glog home: ${GLOG_HOME}") + message(STATUS "Glog include dir: ${GLOG_INCLUDE_DIR}") + message(STATUS "Glog static lib: ${GLOG_STATIC_LIB}") - set(GLOG_URL "https://github.com/google/glog/archive/v${GLOG_VERSION}.tar.gz") - set(GLOG_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/external/glog/src/glog_ep") - set(GLOG_HOME "${GLOG_PREFIX}") - set(GLOG_INCLUDE_DIR "${GLOG_PREFIX}/include") - set(GLOG_STATIC_LIB "${GLOG_PREFIX}/lib/libglog.a") - - - set(GLOG_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX=${GLOG_PREFIX} - -DBUILD_SHARED_LIBS=OFF - -DBUILD_TESTING=OFF - -DWITH_GFLAGS=OFF - -DCMAKE_CXX_FLAGS_${UPPERCASE_BUILD_TYPE}=${GLOG_CMAKE_CXX_FLAGS} - -DCMAKE_C_FLAGS_${UPPERCASE_BUILD_TYPE}=${EP_C_FLAGS} - -DCMAKE_CXX_FLAGS=${GLOG_CMAKE_CXX_FLAGS}) - - ExternalProject_Add(glog_ep - PREFIX external/glog - URL ${GLOG_URL} - URL_MD5 ${GLOG_URL_MD5} - ${EP_LOG_OPTIONS} - BUILD_IN_SOURCE 1 - BUILD_BYPRODUCTS "${GLOG_STATIC_LIB}" - CMAKE_ARGS ${GLOG_CMAKE_ARGS}) - - message(STATUS "GLog include dir: ${GLOG_INCLUDE_DIR}") - message(STATUS "GLog static library: ${GLOG_STATIC_LIB}") - include_directories(SYSTEM ${GLOG_INCLUDE_DIR}) + include_directories(${GLOG_INCLUDE_DIR}) ADD_THIRDPARTY_LIB(glog STATIC_LIB ${GLOG_STATIC_LIB}) @@ -112,6 +47,16 @@ message(STATUS "Boost system library: ${Boost_SYSTEM_LIBRARY}") message(STATUS "Boost filesystem library: ${Boost_FILESYSTEM_LIBRARY}") include_directories(${Boost_INCLUDE_DIR}) +ADD_THIRDPARTY_LIB(boost_system + STATIC_LIB ${Boost_SYSTEM_LIBRARY}) +ADD_THIRDPARTY_LIB(boost_filesystem + STATIC_LIB ${Boost_FILESYSTEM_LIBRARY}) + +add_dependencies(boost_system boost_ep) +add_dependencies(boost_filesystem boost_ep) + +add_custom_target(boost DEPENDS boost_system boost_filesystem) + # flatbuffers include(FlatBuffersExternalProject) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 5cff0d20e..b024b4a04 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -96,7 +96,7 @@ add_library(common STATIC thirdparty/ae/ae.c thirdparty/sha256.c) -add_dependencies(common arrow_ep) +add_dependencies(common arrow) if ("${CMAKE_RAY_LANG_PYTHON}" STREQUAL "YES") add_dependencies(common gen_common_python_fbs) diff --git a/src/local_scheduler/CMakeLists.txt b/src/local_scheduler/CMakeLists.txt index 1bc88bbcf..7033c4f23 100644 --- a/src/local_scheduler/CMakeLists.txt +++ b/src/local_scheduler/CMakeLists.txt @@ -42,12 +42,12 @@ add_custom_command( add_custom_target(gen_local_scheduler_fbs DEPENDS ${LOCAL_SCHEDULER_FBS_OUTPUT_FILES}) -add_dependencies(gen_local_scheduler_fbs arrow_ep) +add_dependencies(gen_local_scheduler_fbs arrow) add_library(local_scheduler_client STATIC local_scheduler_client.cc) # local_scheduler_shared.h includes ray/gcs/client.h which requires gen_gcs_fbs & gen_node_manager_fbs. -add_dependencies(local_scheduler_client hiredis gen_local_scheduler_fbs ${COMMON_FBS_OUTPUT_FILES} gen_gcs_fbs gen_node_manager_fbs) +add_dependencies(local_scheduler_client common hiredis gen_local_scheduler_fbs ${COMMON_FBS_OUTPUT_FILES} gen_gcs_fbs gen_node_manager_fbs) add_executable(local_scheduler local_scheduler.cc local_scheduler_algorithm.cc) add_dependencies(local_scheduler hiredis)