From fb7ba3b89b0d8e3e56b0508a144fe85015edfab6 Mon Sep 17 00:00:00 2001 From: Colin Cornaby Date: Wed, 25 Jun 2025 11:52:26 -0700 Subject: [PATCH] [vcpkg scripts] Adding support for visionOS (#45464) --- scripts/buildsystems/vcpkg.cmake | 4 +++- scripts/cmake/vcpkg_common_definitions.cmake | 6 ++++-- scripts/cmake/vcpkg_configure_cmake.cmake | 2 ++ scripts/cmake/vcpkg_configure_make.cmake | 2 +- scripts/cmake/vcpkg_configure_meson.cmake | 2 +- triplets/community/arm64-visionos.cmake | 4 ++++ 6 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 triplets/community/arm64-visionos.cmake diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index 46a6c7f2bc..c34a1b615c 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -352,6 +352,8 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_H set(Z_VCPKG_TARGET_TRIPLET_PLAT osx) elseif(CMAKE_SYSTEM_NAME STREQUAL "iOS") set(Z_VCPKG_TARGET_TRIPLET_PLAT ios) +elseif(CMAKE_SYSTEM_NAME STREQUAL "visionOS") + set(Z_VCPKG_TARGET_TRIPLET_PLAT visionos) elseif(MINGW) set(Z_VCPKG_TARGET_TRIPLET_PLAT mingw-dynamic) elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")) @@ -820,7 +822,7 @@ macro("${VCPKG_OVERRIDE_FIND_PACKAGE_NAME}" z_vcpkg_find_package_package_name) # the ROOT_PATH at apple OS initialization phase. # See https://gitlab.kitware.com/cmake/cmake/merge_requests/3273 # Fixed in CMake 3.15 - if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + if(CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_SYSTEM_NAME STREQUAL "visionOS") list(APPEND z_vcpkg_find_package_${z_vcpkg_find_package_backup_id}_backup_vars "CMAKE_FIND_ROOT_PATH") if(DEFINED CMAKE_FIND_ROOT_PATH) set(z_vcpkg_find_package_${z_vcpkg_find_package_backup_id}_backup_CMAKE_FIND_ROOT_PATH "${CMAKE_FIND_ROOT_PATH}") diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index cd87bf5e0e..64804a828f 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -13,6 +13,8 @@ elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin") set(VCPKG_TARGET_IS_OSX ON) elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "iOS") set(VCPKG_TARGET_IS_IOS ON) +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "visionOS") + set(VCPKG_TARGET_IS_VISIONOS ON) elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") set(VCPKG_TARGET_IS_LINUX ON) elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") @@ -69,7 +71,7 @@ else() set(VCPKG_HOST_BUNDLE_SUFFIX "") endif() -if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) +if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_VISIONOS) set(VCPKG_TARGET_BUNDLE_SUFFIX ".app") else() set(VCPKG_TARGET_BUNDLE_SUFFIX "") @@ -95,7 +97,7 @@ elseif(VCPKG_TARGET_IS_WINDOWS) set(VCPKG_TARGET_IMPORT_LIBRARY_PREFIX "") set(VCPKG_FIND_LIBRARY_SUFFIXES ".lib" ".dll") #This is a slight modification to CMakes value which does not include ".dll". set(VCPKG_FIND_LIBRARY_PREFIXES "" "lib") #This is a slight modification to CMakes value which does not include "lib". -elseif(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) +elseif(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_VISIONOS) set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a") set(VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX "") set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dylib") diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index b051bf8216..03c7f34376 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -75,6 +75,8 @@ function(z_vcpkg_select_default_vcpkg_chainload_toolchain) set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/osx.cmake") elseif(VCPKG_TARGET_IS_IOS) set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake") + elseif(VCPKG_TARGET_IS_VISIONOS) + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake") elseif(VCPKG_TARGET_IS_FREEBSD) set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake") elseif(VCPKG_TARGET_IS_OPENBSD) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 73d94f956e..f4a139b394 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -375,7 +375,7 @@ function(vcpkg_configure_make) endif() # macOS - cross-compiling support - if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) + if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_VISIONOS) if (requires_autoconfig AND NOT arg_BUILD_TRIPLET OR arg_DETERMINE_BUILD_TRIPLET) z_vcpkg_determine_autotools_host_arch_mac(BUILD_ARCH) # machine you are building on => --build= z_vcpkg_determine_autotools_target_arch_mac(TARGET_ARCH) diff --git a/scripts/cmake/vcpkg_configure_meson.cmake b/scripts/cmake/vcpkg_configure_meson.cmake index bbc806b81d..c6ff9235ee 100644 --- a/scripts/cmake/vcpkg_configure_meson.cmake +++ b/scripts/cmake/vcpkg_configure_meson.cmake @@ -252,7 +252,7 @@ function(z_vcpkg_get_build_and_host_system build_system host_system is_cross) #h endif() if(NOT build_cpu_fam MATCHES "${host_cpu_fam}" - OR VCPKG_TARGET_IS_ANDROID OR VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_UWP + OR VCPKG_TARGET_IS_ANDROID OR VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_VISIONOS OR VCPKG_TARGET_IS_UWP OR (VCPKG_TARGET_IS_MINGW AND NOT CMAKE_HOST_WIN32)) set(${is_cross} TRUE PARENT_SCOPE) endif() diff --git a/triplets/community/arm64-visionos.cmake b/triplets/community/arm64-visionos.cmake new file mode 100644 index 0000000000..77d463a883 --- /dev/null +++ b/triplets/community/arm64-visionos.cmake @@ -0,0 +1,4 @@ +set(VCPKG_TARGET_ARCHITECTURE arm64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE static) +set(VCPKG_CMAKE_SYSTEM_NAME visionOS)