Initial release
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
|
||||
# Detect the platform which cmake builds for.
|
||||
#
|
||||
# Needed for check_language(CXX)
|
||||
include(CheckLanguage)
|
||||
# The detected platform var is stored within the internal cache of cmake in order to make it
|
||||
# available globally.
|
||||
set(SMTG_PLATFORM_DETECTION_COMMENT "The platform which was detected by SMTG")
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
# Detect the Platform
|
||||
#
|
||||
macro(smtg_detect_platform)
|
||||
if(APPLE)
|
||||
set(SMTG_MAC TRUE CACHE INTERNAL ${SMTG_PLATFORM_DETECTION_COMMENT})
|
||||
elseif(UNIX OR ANDROID_PLATFORM)
|
||||
set(SMTG_LINUX TRUE CACHE INTERNAL ${SMTG_PLATFORM_DETECTION_COMMENT})
|
||||
elseif(WIN32)
|
||||
set(SMTG_WIN TRUE CACHE INTERNAL ${SMTG_PLATFORM_DETECTION_COMMENT})
|
||||
endif(APPLE)
|
||||
endmacro(smtg_detect_platform)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
# Check if c++ compiler is available
|
||||
# Handling cmake issue: https://gitlab.kitware.com/cmake/cmake/-/issues/20890
|
||||
function(smtg_check_language_cxx)
|
||||
message(STATUS "[SMTG] Check C++ compiler")
|
||||
check_language(CXX)
|
||||
if(NOT CMAKE_CXX_COMPILER)
|
||||
if(SMTG_MAC)
|
||||
execute_process(COMMAND xcode-select -p OUTPUT_VARIABLE _xcode ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
cmake_path(SET _xcode NORMALIZE "${_xcode}/../..")
|
||||
string(FIND "${_xcode}" " " _pos)
|
||||
if(_pos GREATER "-1")
|
||||
message(FATAL_ERROR "[SMTG] Spaces in Xcode path are not supported by cmake: \"${_xcode}\"" )
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
# Detect the default Xcode Version
|
||||
#
|
||||
macro(smtg_detect_xcode_version)
|
||||
if(SMTG_MAC)
|
||||
# Check if CXX compiler is available
|
||||
smtg_check_language_cxx()
|
||||
if(NOT DEFINED ENV{XCODE_VERSION})
|
||||
# find out Xcode version if not set by cmake
|
||||
execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION "${XCODE_VERSION}")
|
||||
string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION "${XCODE_VERSION}")
|
||||
endif()
|
||||
if(XCODE_VERSION VERSION_LESS "9")
|
||||
message(FATAL_ERROR "[SMTG] XCode 9 or newer is required")
|
||||
endif()
|
||||
message(STATUS "[SMTG] Building with Xcode version: ${XCODE_VERSION}")
|
||||
if(NOT DEFINED ENV{SDKROOT})
|
||||
execute_process(COMMAND xcrun --sdk macosx --show-sdk-path OUTPUT_VARIABLE CMAKE_OSX_SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
endif()
|
||||
endif(SMTG_MAC)
|
||||
endmacro(smtg_detect_xcode_version)
|
||||
Reference in New Issue
Block a user