mirror of
https://github.com/Kitware/CMake.git
synced 2026-03-04 13:48:35 -06:00
Merge branch 'backport-3.28-visionOS' into visionOS
This commit is contained in:
@@ -35,10 +35,10 @@ macro(__apple_compiler_clang lang)
|
||||
set(CMAKE_${lang}_OSX_DEPLOYMENT_TARGET_FLAG "-mtvos-version-min=")
|
||||
elseif(_CMAKE_OSX_SYSROOT_PATH MATCHES "/AppleTVSimulator")
|
||||
set(CMAKE_${lang}_OSX_DEPLOYMENT_TARGET_FLAG "-mtvos-simulator-version-min=")
|
||||
elseif(_CMAKE_OSX_SYSROOT_PATH MATCHES "/XROS")
|
||||
set(CMAKE_${lang}_OSX_DEPLOYMENT_TARGET_FLAG "-mtargetos=xros")
|
||||
elseif(_CMAKE_OSX_SYSROOT_PATH MATCHES "/XROS")
|
||||
set(CMAKE_${lang}_OSX_DEPLOYMENT_TARGET_FLAG "--target=<ARCH>-apple-xros<VERSION_MIN>")
|
||||
elseif(_CMAKE_OSX_SYSROOT_PATH MATCHES "/XRSimulator")
|
||||
set(CMAKE_${lang}_OSX_DEPLOYMENT_TARGET_FLAG "-mtargetos=xros")
|
||||
set(CMAKE_${lang}_OSX_DEPLOYMENT_TARGET_FLAG "--target=<ARCH>-apple-xros<VERSION_MIN>-simulator")
|
||||
elseif(_CMAKE_OSX_SYSROOT_PATH MATCHES "/WatchOS")
|
||||
set(CMAKE_${lang}_OSX_DEPLOYMENT_TARGET_FLAG "-mwatchos-version-min=")
|
||||
elseif(_CMAKE_OSX_SYSROOT_PATH MATCHES "/WatchSimulator")
|
||||
|
||||
@@ -2011,14 +2011,49 @@ void cmLocalGenerator::AddArchitectureFlags(std::string& flags,
|
||||
|
||||
cmValue deploymentTarget =
|
||||
this->Makefile->GetDefinition("CMAKE_OSX_DEPLOYMENT_TARGET");
|
||||
std::string deploymentTargetFlagVar =
|
||||
"CMAKE_" + lang + "_OSX_DEPLOYMENT_TARGET_FLAG";
|
||||
cmValue deploymentTargetFlag =
|
||||
this->Makefile->GetDefinition(deploymentTargetFlagVar);
|
||||
if (cmNonempty(deploymentTargetFlag) && cmNonempty(deploymentTarget)) {
|
||||
flags += " ";
|
||||
flags += *deploymentTargetFlag;
|
||||
flags += *deploymentTarget;
|
||||
if (cmNonempty(deploymentTarget)) {
|
||||
std::string deploymentTargetFlagVar =
|
||||
"CMAKE_" + lang + "_OSX_DEPLOYMENT_TARGET_FLAG";
|
||||
cmValue deploymentTargetFlag =
|
||||
this->Makefile->GetDefinition(deploymentTargetFlagVar);
|
||||
if (cmNonempty(deploymentTargetFlag) &&
|
||||
// CMAKE_<LANG>_COMPILER_TARGET overrides a --target= for
|
||||
// CMAKE_OSX_DEPLOYMENT_TARGET, e.g., for visionOS.
|
||||
(!cmHasLiteralPrefix(*deploymentTarget, "--target=") ||
|
||||
this->Makefile
|
||||
->GetDefinition(cmStrCat("CMAKE_", lang, "_COMPILER_TARGET"))
|
||||
.IsEmpty())) {
|
||||
std::string flag = *deploymentTargetFlag;
|
||||
|
||||
// Add the deployment target architecture to the flag, if needed.
|
||||
static const std::string kARCH = "<ARCH>";
|
||||
std::string::size_type archPos = flag.find(kARCH);
|
||||
if (archPos != std::string::npos) {
|
||||
// This placeholder is meant for visionOS, so default to arm64
|
||||
// unless only non-arm64 archs are given.
|
||||
std::string const arch =
|
||||
(archs.empty() || cm::contains(archs, "arm64")) ? "arm64"
|
||||
: archs[0];
|
||||
// Replace the placeholder with its value.
|
||||
flag = cmStrCat(flag.substr(0, archPos), arch,
|
||||
flag.substr(archPos + kARCH.size()));
|
||||
}
|
||||
|
||||
// Add the deployment target version to the flag.
|
||||
static const std::string kVERSION_MIN = "<VERSION_MIN>";
|
||||
std::string::size_type verPos = flag.find(kVERSION_MIN);
|
||||
if (verPos != std::string::npos) {
|
||||
// Replace the placeholder with its value.
|
||||
flag = cmStrCat(flag.substr(0, verPos), *deploymentTarget,
|
||||
flag.substr(verPos + kVERSION_MIN.size()));
|
||||
} else {
|
||||
// There is no placeholder, so append the value.
|
||||
flag = cmStrCat(flag, *deploymentTarget);
|
||||
}
|
||||
|
||||
flags += " ";
|
||||
flags += flag;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,17 +14,15 @@ function(create_libraries type)
|
||||
create_library(${type} ios iOS "arm64" iphoneos)
|
||||
create_library(${type} tvos tvOS "arm64" appletvos)
|
||||
create_library(${type} watchos watchOS "armv7k\\\\;arm64_32" watchos)
|
||||
#FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
|
||||
#if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
|
||||
# create_library(${type} visionos visionOS "arm64" xros)
|
||||
#endif()
|
||||
if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15.2)
|
||||
create_library(${type} visionos visionOS "arm64" xros)
|
||||
endif()
|
||||
create_library(${type} ios-simulator iOS "${macos_archs_2}" iphonesimulator)
|
||||
create_library(${type} tvos-simulator tvOS "${macos_archs_2}" appletvsimulator)
|
||||
create_library(${type} watchos-simulator watchOS "${watch_sim_archs_2}" watchsimulator)
|
||||
#FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
|
||||
#if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
|
||||
# create_library(${type} visionos-simulator visionOS "${macos_archs_2}" xrsimulator)
|
||||
#endif()
|
||||
if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15.2)
|
||||
create_library(${type} visionos-simulator visionOS "${macos_archs_2}" xrsimulator)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(create_xcframework name type platforms)
|
||||
@@ -62,24 +60,21 @@ function(create_executables name type)
|
||||
create_executable(${name}-ios ${type} iOS "arm64" iphoneos)
|
||||
create_executable(${name}-tvos ${type} tvOS "arm64" appletvos)
|
||||
create_executable(${name}-watchos ${type} watchOS "armv7k\\\\;arm64_32" watchos)
|
||||
#FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
|
||||
#if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
|
||||
# create_executable(${name}-visionos ${type} visionOS "arm64" xros)
|
||||
#endif()
|
||||
if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15.2)
|
||||
create_executable(${name}-visionos ${type} visionOS "arm64" xros)
|
||||
endif()
|
||||
create_executable(${name}-ios-simulator ${type} iOS "${macos_archs_2}" iphonesimulator)
|
||||
create_executable(${name}-tvos-simulator ${type} tvOS "${macos_archs_2}" appletvsimulator)
|
||||
create_executable(${name}-watchos-simulator ${type} watchOS "${watch_sim_archs_2}" watchsimulator)
|
||||
#FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
|
||||
#if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
|
||||
# create_executable(${name}-visionos-simulator ${type} visionOS "${macos_archs_2}" xrsimulator)
|
||||
#endif()
|
||||
if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15.2)
|
||||
create_executable(${name}-visionos-simulator ${type} visionOS "${macos_archs_2}" xrsimulator)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
set(xcframework_platforms macos ios tvos watchos ios-simulator tvos-simulator watchos-simulator)
|
||||
#FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
|
||||
#if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
|
||||
# list(APPEND xcframework_platforms visionos visionos-simulator)
|
||||
#endif()
|
||||
if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15.2)
|
||||
list(APPEND xcframework_platforms visionos visionos-simulator)
|
||||
endif()
|
||||
if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 12)
|
||||
set(macos_archs_1 "x86_64\\;arm64")
|
||||
set(macos_archs_2 "x86_64\\\\;arm64")
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
# if __MAC_OS_X_VERSION_MIN_REQUIRED != __MAC_10_11
|
||||
# error macOS deployment version mismatch
|
||||
# endif
|
||||
#elif TARGET_OS_XR
|
||||
# if __XR_OS_VERSION_MIN_REQUIRED != __XROS_1_0
|
||||
#elif TARGET_OS_VISION
|
||||
# if __VISION_OS_VERSION_MIN_REQUIRED != __VISIONOS_1_0
|
||||
# error visionOS deployment version mismatch
|
||||
# endif
|
||||
#elif TARGET_OS_IOS
|
||||
|
||||
@@ -93,25 +93,24 @@ if(NOT XCODE_VERSION VERSION_LESS 7.1)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
endif()
|
||||
|
||||
#FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
|
||||
#if(NOT XCODE_VERSION VERSION_LESS 15)
|
||||
# set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesVisionOS-build)
|
||||
# set(RunCMake_TEST_NO_CLEAN 1)
|
||||
# set(RunCMake_TEST_OPTIONS
|
||||
# "-DCMAKE_SYSTEM_NAME=visionOS"
|
||||
# "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
|
||||
#
|
||||
# file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
||||
# file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
||||
#
|
||||
# run_cmake(XcodeBundles)
|
||||
# run_cmake_command(XcodeBundles-build-visionOS ${CMAKE_COMMAND} --build .)
|
||||
# run_cmake_command(XcodeBundles-install-visionOS ${CMAKE_COMMAND} --build . --target install)
|
||||
#
|
||||
# unset(RunCMake_TEST_BINARY_DIR)
|
||||
# unset(RunCMake_TEST_NO_CLEAN)
|
||||
# unset(RunCMake_TEST_OPTIONS)
|
||||
#endif()
|
||||
if(NOT XCODE_VERSION VERSION_LESS 15.2)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesVisionOS-build)
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
set(RunCMake_TEST_OPTIONS
|
||||
"-DCMAKE_SYSTEM_NAME=visionOS"
|
||||
"-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
|
||||
|
||||
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
||||
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
||||
|
||||
run_cmake(XcodeBundles)
|
||||
run_cmake_command(XcodeBundles-build-visionOS ${CMAKE_COMMAND} --build .)
|
||||
run_cmake_command(XcodeBundles-install-visionOS ${CMAKE_COMMAND} --build . --target install)
|
||||
|
||||
unset(RunCMake_TEST_BINARY_DIR)
|
||||
unset(RunCMake_TEST_NO_CLEAN)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
endif()
|
||||
|
||||
if(NOT XCODE_VERSION VERSION_LESS 7)
|
||||
set(RunCMake_TEST_OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/osx.cmake")
|
||||
@@ -262,11 +261,10 @@ if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
|
||||
deployment_target_test(tvOS appletvsimulator)
|
||||
deployment_target_test(watchOS watchos)
|
||||
deployment_target_test(watchOS watchsimulator)
|
||||
#FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
|
||||
#if(XCODE_VERSION VERSION_GREATER_EQUAL 15)
|
||||
# deployment_target_test(visionOS xros)
|
||||
# deployment_target_test(visionOS xrsimulator)
|
||||
#endif()
|
||||
if(XCODE_VERSION VERSION_GREATER_EQUAL 15.2)
|
||||
deployment_target_test(visionOS xros)
|
||||
deployment_target_test(visionOS xrsimulator)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
|
||||
|
||||
Reference in New Issue
Block a user