mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-18 18:15:50 +00:00
* use tagged containers for pkg build * update build images * continue to build container images in pipeline, but allow failure (non-block) * limit travis macos cache * add vs2019 windows to travis * remove xcode 9 travis build * remove clang5/6 from CI and update min version of Clang required in cmake * break windows CI build into stages to reduce timeouts * update datelib * add if condition to travis builds to allow commit message to limit builds by platform
89 lines
3.1 KiB
CMake
89 lines
3.1 KiB
CMake
#[===================================================================[
|
|
convenience variables and sanity checks
|
|
#]===================================================================]
|
|
|
|
if (NOT ep_procs)
|
|
ProcessorCount(ep_procs)
|
|
if (ep_procs GREATER 1)
|
|
# never use more than half of cores for EP builds
|
|
math (EXPR ep_procs "${ep_procs} / 2")
|
|
message (STATUS "Using ${ep_procs} cores for ExternalProject builds.")
|
|
endif ()
|
|
endif ()
|
|
get_property (is_multiconfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
|
if (is_multiconfig STREQUAL "NOTFOUND")
|
|
if (${CMAKE_GENERATOR} STREQUAL "Xcode" OR ${CMAKE_GENERATOR} MATCHES "^Visual Studio")
|
|
set (is_multiconfig TRUE)
|
|
endif ()
|
|
endif ()
|
|
|
|
set (CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
|
|
if (NOT is_multiconfig)
|
|
if (NOT CMAKE_BUILD_TYPE)
|
|
message (STATUS "Build type not specified - defaulting to Release")
|
|
set (CMAKE_BUILD_TYPE Release CACHE STRING "build type" FORCE)
|
|
elseif (NOT (CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_BUILD_TYPE STREQUAL Release))
|
|
# for simplicity, these are the only two config types we care about. Limiting
|
|
# the build types simplifies dealing with external project builds especially
|
|
message (FATAL_ERROR " *** Only Debug or Release build types are currently supported ***")
|
|
endif ()
|
|
endif ()
|
|
|
|
get_directory_property(has_parent PARENT_DIRECTORY)
|
|
if (has_parent)
|
|
set (is_root_project OFF)
|
|
else ()
|
|
set (is_root_project ON)
|
|
endif ()
|
|
|
|
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES ".*Clang") # both Clang and AppleClang
|
|
set (is_clang TRUE)
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND
|
|
CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)
|
|
message (FATAL_ERROR "This project requires clang 7 or later")
|
|
endif ()
|
|
# TODO min AppleClang version check ?
|
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
|
set (is_gcc TRUE)
|
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)
|
|
message (FATAL_ERROR "This project requires GCC 7 or later")
|
|
endif ()
|
|
endif ()
|
|
if (CMAKE_GENERATOR STREQUAL "Xcode")
|
|
set (is_xcode TRUE)
|
|
endif ()
|
|
|
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
set (is_linux TRUE)
|
|
else ()
|
|
set (is_linux FALSE)
|
|
endif ()
|
|
|
|
if ("$ENV{CI}" STREQUAL "true" OR "$ENV{CONTINUOUS_INTEGRATION}" STREQUAL "true")
|
|
set (is_ci TRUE)
|
|
else ()
|
|
set (is_ci FALSE)
|
|
endif ()
|
|
|
|
# check for in-source build and fail
|
|
if ("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
|
|
message (FATAL_ERROR "Builds (in-source) are not allowed in "
|
|
"${CMAKE_CURRENT_SOURCE_DIR}. Please remove CMakeCache.txt and the CMakeFiles "
|
|
"directory from ${CMAKE_CURRENT_SOURCE_DIR} and try building in a separate directory.")
|
|
endif ()
|
|
|
|
if ("${CMAKE_GENERATOR}" MATCHES "Visual Studio" AND
|
|
NOT ("${CMAKE_GENERATOR}" MATCHES .*Win64.*))
|
|
message (FATAL_ERROR
|
|
"Visual Studio 32-bit build is not supported. Use -G\"${CMAKE_GENERATOR} Win64\"")
|
|
endif ()
|
|
|
|
if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
message (FATAL_ERROR "Rippled requires a 64 bit target architecture.\n"
|
|
"The most likely cause of this warning is trying to build rippled with a 32-bit OS.")
|
|
endif ()
|
|
|
|
if (APPLE AND NOT HOMEBREW)
|
|
find_program (HOMEBREW brew)
|
|
endif ()
|