mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-19 18:15:50 +00:00
Exclude several libraries from build when we are included in a super-project (this is the case when someone only wants to use xrpl_core). Force several target (deprecated) params to be cache variables since they are now exposed as options.
118 lines
3.3 KiB
CMake
118 lines
3.3 KiB
CMake
|
|
## "target" parsing..DEPRECATED and will be removed in future
|
|
macro(parse_target)
|
|
if (target)
|
|
# Parse the target
|
|
set(remaining ${target})
|
|
while (remaining)
|
|
# get the component up to the next dot or end
|
|
string(REGEX REPLACE "^\\.?([^\\.]+).*$" "\\1" cur_component ${remaining})
|
|
string(REGEX REPLACE "^\\.?[^\\.]+(.*$)" "\\1" remaining ${remaining})
|
|
|
|
if (${cur_component} STREQUAL gcc)
|
|
if (DEFINED ENV{GNU_CC})
|
|
set(CMAKE_C_COMPILER $ENV{GNU_CC})
|
|
elseif ($ENV{CC} MATCHES .*gcc.*)
|
|
set(CMAKE_C_COMPILER $ENV{CC})
|
|
else()
|
|
find_program(CMAKE_C_COMPILER gcc)
|
|
endif()
|
|
|
|
if (DEFINED ENV{GNU_CXX})
|
|
set(CMAKE_CXX_COMPILER $ENV{GNU_CXX})
|
|
elseif ($ENV{CXX} MATCHES .*g\\+\\+.*)
|
|
set(CMAKE_CXX_COMPILER $ENV{CXX})
|
|
else()
|
|
find_program(CMAKE_CXX_COMPILER g++)
|
|
endif()
|
|
endif()
|
|
|
|
if (${cur_component} STREQUAL clang)
|
|
if (DEFINED ENV{CLANG_CC})
|
|
set(CMAKE_C_COMPILER $ENV{CLANG_CC})
|
|
elseif ($ENV{CC} MATCHES .*clang.*)
|
|
set(CMAKE_C_COMPILER $ENV{CC})
|
|
else()
|
|
find_program(CMAKE_C_COMPILER clang)
|
|
endif()
|
|
|
|
if (DEFINED ENV{CLANG_CXX})
|
|
set(CMAKE_CXX_COMPILER $ENV{CLANG_CXX})
|
|
elseif ($ENV{CXX} MATCHES .*clang.*)
|
|
set(CMAKE_CXX_COMPILER $ENV{CXX})
|
|
else()
|
|
find_program(CMAKE_CXX_COMPILER clang++)
|
|
endif()
|
|
endif()
|
|
|
|
if (${cur_component} STREQUAL msvc)
|
|
# TBD
|
|
endif()
|
|
|
|
if (${cur_component} STREQUAL unity)
|
|
set(unity ON CACHE BOOL "" FORCE)
|
|
endif()
|
|
|
|
if (${cur_component} STREQUAL nounity)
|
|
set(unity OFF CACHE BOOL "" FORCE)
|
|
endif()
|
|
|
|
if (${cur_component} STREQUAL debug)
|
|
set(release false)
|
|
endif()
|
|
|
|
if (${cur_component} STREQUAL release)
|
|
set(release true)
|
|
endif()
|
|
|
|
if (${cur_component} STREQUAL coverage)
|
|
set(coverage ON CACHE BOOL "" FORCE)
|
|
set(debug true)
|
|
endif()
|
|
|
|
if (${cur_component} STREQUAL profile)
|
|
set(profile ON CACHE BOOL "" FORCE)
|
|
endif()
|
|
endwhile()
|
|
endif()
|
|
|
|
if(CMAKE_C_COMPILER MATCHES "-NOTFOUND$" OR
|
|
CMAKE_CXX_COMPILER MATCHES "-NOTFOUND$")
|
|
message(FATAL_ERROR "Can not find appropriate compiler for target ${target}")
|
|
endif()
|
|
|
|
if (release)
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
else()
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
endif()
|
|
endmacro()
|
|
|
|
############################################################
|
|
|
|
macro(group_sources_in source_dir curdir)
|
|
file(GLOB children RELATIVE ${source_dir}/${curdir}
|
|
${source_dir}/${curdir}/*)
|
|
foreach (child ${children})
|
|
if (IS_DIRECTORY ${source_dir}/${curdir}/${child})
|
|
group_sources_in(${source_dir} ${curdir}/${child})
|
|
else()
|
|
string(REPLACE "/" "\\" groupname ${curdir})
|
|
source_group(${groupname} FILES
|
|
${source_dir}/${curdir}/${child})
|
|
endif()
|
|
endforeach()
|
|
endmacro()
|
|
|
|
macro(group_sources curdir)
|
|
group_sources_in(${PROJECT_SOURCE_DIR} ${curdir})
|
|
endmacro()
|
|
|
|
macro (exclude_if_included target_)
|
|
if (NOT ${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
|
|
set_target_properties (${target_} PROPERTIES EXCLUDE_FROM_ALL ON)
|
|
set_target_properties (${target_} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD ON)
|
|
endif ()
|
|
endmacro ()
|
|
|