CMake: Refactor _qt_internal_get_apple_sdk_version
Introduce two new functions _qt_internal_get_apple_xcrun_output and _qt_internal_get_apple_sdk_name, to allow reusing them in the future. Make sure to set the output variables to empty even outside Apple platforms. Show an error when xcrun is called when targeting a non-Apple platform. Change-Id: Ic3895f74cfcac337bff069f8e6ec1517aec6c8d0 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit c0f0a275b379b97f3ddccdaa9fd8aa8f10cf0adf) (cherry picked from commit 3ce44b88e22891839820407e5e45df021f7a55e5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
4b3fccb68e
commit
e25aa58ee3
@ -811,7 +811,8 @@ endif()")
|
|||||||
set(${out_var} "${assignments}" PARENT_SCOPE)
|
set(${out_var} "${assignments}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(_qt_internal_get_apple_sdk_version out_var)
|
function(_qt_internal_get_apple_sdk_name out_var)
|
||||||
|
set(sdk_name "")
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL iOS)
|
if(CMAKE_SYSTEM_NAME STREQUAL iOS)
|
||||||
set(sdk_name "iphoneos")
|
set(sdk_name "iphoneos")
|
||||||
@ -821,28 +822,74 @@ function(_qt_internal_get_apple_sdk_version out_var)
|
|||||||
# Default to macOS
|
# Default to macOS
|
||||||
set(sdk_name "macosx")
|
set(sdk_name "macosx")
|
||||||
endif()
|
endif()
|
||||||
set(xcrun_version_arg "--show-sdk-version")
|
endif()
|
||||||
execute_process(COMMAND xcrun --sdk ${sdk_name} ${xcrun_version_arg}
|
set(${out_var} "${sdk_name}" PARENT_SCOPE)
|
||||||
OUTPUT_VARIABLE sdk_version
|
endfunction()
|
||||||
ERROR_VARIABLE xcrun_error)
|
|
||||||
|
function(_qt_internal_execute_xcrun out_var)
|
||||||
|
set(opt_args "")
|
||||||
|
set(single_args "")
|
||||||
|
set(multi_args
|
||||||
|
XCRUN_ARGS
|
||||||
|
OUT_ERROR_VAR
|
||||||
|
)
|
||||||
|
cmake_parse_arguments(PARSE_ARGV 1 arg "${opt_args}" "${single_args}" "${multi_args}")
|
||||||
|
|
||||||
|
set(output "")
|
||||||
|
set(xcrun_error "")
|
||||||
|
|
||||||
|
if(NOT APPLE)
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"Executing xcrun should only happen happen when targeting Apple plaforms")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_program(QT_XCRUN xcrun)
|
||||||
|
if(NOT QT_XCRUN)
|
||||||
|
message(FATAL_ERROR "Can't find xcrun in PATH")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(COMMAND "${QT_XCRUN}" ${arg_XCRUN_ARGS}
|
||||||
|
OUTPUT_VARIABLE output
|
||||||
|
ERROR_VARIABLE xcrun_error)
|
||||||
|
|
||||||
|
if(arg_OUT_ERROR_VAR)
|
||||||
|
set(${arg_OUT_ERROR_VAR} "${xcrun_error}" PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(${out_var} "${output}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(_qt_internal_get_apple_sdk_version out_var)
|
||||||
|
set(sdk_version "")
|
||||||
|
if(APPLE)
|
||||||
|
_qt_internal_get_apple_sdk_name(sdk_name)
|
||||||
|
_qt_internal_execute_xcrun(sdk_version
|
||||||
|
XCRUN_ARGS --sdk ${sdk_name} --show-sdk-version
|
||||||
|
OUT_ERROR_VAR xcrun_error
|
||||||
|
)
|
||||||
|
|
||||||
if(NOT sdk_version)
|
if(NOT sdk_version)
|
||||||
message(FATAL_ERROR
|
message(FATAL_ERROR
|
||||||
"Can't determine darwin ${sdk_name} SDK version. Error: ${xcrun_error}")
|
"Can't determine darwin ${sdk_name} SDK version. Error: ${xcrun_error}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
string(STRIP "${sdk_version}" sdk_version)
|
string(STRIP "${sdk_version}" sdk_version)
|
||||||
set(${out_var} "${sdk_version}" PARENT_SCOPE)
|
|
||||||
endif()
|
endif()
|
||||||
|
set(${out_var} "${sdk_version}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(_qt_internal_get_xcode_version_raw out_var)
|
function(_qt_internal_get_xcode_version_raw out_var)
|
||||||
|
set(xcode_version "")
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
execute_process(COMMAND xcrun xcodebuild -version
|
_qt_internal_execute_xcrun(xcode_version
|
||||||
OUTPUT_VARIABLE xcode_version
|
XCRUN_ARGS xcodebuild -version
|
||||||
ERROR_VARIABLE xcrun_error)
|
OUT_ERROR_VAR xcrun_error
|
||||||
|
)
|
||||||
|
|
||||||
string(REPLACE "\n" " " xcode_version "${xcode_version}")
|
string(REPLACE "\n" " " xcode_version "${xcode_version}")
|
||||||
string(STRIP "${xcode_version}" xcode_version)
|
string(STRIP "${xcode_version}" xcode_version)
|
||||||
set(${out_var} "${xcode_version}" PARENT_SCOPE)
|
|
||||||
endif()
|
endif()
|
||||||
|
set(${out_var} "${xcode_version}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(_qt_internal_get_xcode_version out_var)
|
function(_qt_internal_get_xcode_version out_var)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user