From 528015d17e63adc0715913c3ecb8560335e1c045 Mon Sep 17 00:00:00 2001 From: spectrum Date: Fri, 13 Feb 2026 00:17:19 +0200 Subject: [PATCH] feat: add support for Apple TV target settings for iOS/Xcode projects --- client/CMakeLists.txt | 1 + client/cmake/ios-arch-fixup.cmake | 4 +++- client/cmake/ios.cmake | 35 ++++++++++++++++++++++++++----- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 2324570ab..eb4c81258 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -184,6 +184,7 @@ if(ANDROID) endif() if(IOS) + option(AMNEZIA_IOS_ENABLE_APPLETV_TARGET "Enable Apple TV target settings for iOS/Xcode projects" OFF) include(cmake/ios.cmake) include(cmake/ios-arch-fixup.cmake) elseif(APPLE AND MACOS_NE) diff --git a/client/cmake/ios-arch-fixup.cmake b/client/cmake/ios-arch-fixup.cmake index 0f349f8d2..afede2cca 100644 --- a/client/cmake/ios-arch-fixup.cmake +++ b/client/cmake/ios-arch-fixup.cmake @@ -39,5 +39,7 @@ while(IOS_TARGETS) set_target_properties(${TARGET_NAME} PROPERTIES XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64" XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64" + XCODE_ATTRIBUTE_ARCHS[sdk=appletvos*] "arm64" + XCODE_ATTRIBUTE_ARCHS[sdk=appletvsimulator*] "arm64 x86_64" ) -endwhile() \ No newline at end of file +endwhile() diff --git a/client/cmake/ios.cmake b/client/cmake/ios.cmake index d8483e0ec..dd651c0aa 100644 --- a/client/cmake/ios.cmake +++ b/client/cmake/ios.cmake @@ -1,5 +1,14 @@ message("Client iOS build") set(APPLE_PROJECT_VERSION ${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}) +set(AMNEZIA_IOS_APPLETV ${AMNEZIA_IOS_ENABLE_APPLETV_TARGET}) + +if(AMNEZIA_IOS_APPLETV) + message("Apple TV target mode is ON") + set(QT_NO_SET_DEFAULT_IOS_LAUNCH_SCREEN TRUE) + set(QT_NO_ADD_IOS_LAUNCH_SCREEN_TO_BUNDLE TRUE) +else() + message("Apple TV target mode is OFF") +endif() enable_language(OBJC) enable_language(OBJCXX) @@ -14,7 +23,9 @@ find_library(FW_AVFOUNDATION AVFoundation) find_library(FW_FOUNDATION Foundation) find_library(FW_STOREKIT StoreKit) find_library(FW_USERNOTIFICATIONS UserNotifications) -find_library(FW_NETWORKEXTENSION NetworkExtension) +if(NOT AMNEZIA_IOS_APPLETV) + find_library(FW_NETWORKEXTENSION NetworkExtension) +endif() set(LIBS ${LIBS} ${FW_AUTHENTICATIONSERVICES} @@ -23,9 +34,12 @@ set(LIBS ${LIBS} ${FW_FOUNDATION} ${FW_STOREKIT} ${FW_USERNOTIFICATIONS} - ${FW_NETWORKEXTENSION} ) +if(NOT AMNEZIA_IOS_APPLETV) + set(LIBS ${LIBS} ${FW_NETWORKEXTENSION}) +endif() + set(HEADERS ${HEADERS} ${CMAKE_CURRENT_SOURCE_DIR}/platforms/ios/ios_controller.h @@ -64,7 +78,6 @@ set_target_properties(${PROJECT} PROPERTIES MACOSX_BUNDLE_LONG_VERSION_STRING "${APPLE_PROJECT_VERSION}-${CMAKE_PROJECT_VERSION_TWEAK}" MACOSX_BUNDLE_SHORT_VERSION_STRING "${APPLE_PROJECT_VERSION}" XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${BUILD_IOS_APP_IDENTIFIER}" - XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/ios/app/main.entitlements" XCODE_ATTRIBUTE_MARKETING_VERSION "${APPLE_PROJECT_VERSION}" XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION "${CMAKE_PROJECT_VERSION_TWEAK}" XCODE_ATTRIBUTE_PRODUCT_NAME "AmneziaVPN" @@ -72,13 +85,25 @@ set_target_properties(${PROJECT} PROPERTIES XCODE_GENERATE_SCHEME TRUE XCODE_ATTRIBUTE_ENABLE_BITCODE "NO" XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon" - XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY ON XCODE_LINK_BUILD_PHASE_MODE KNOWN_LOCATION XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/Frameworks" - XCODE_EMBED_APP_EXTENSIONS networkextension ) +if(AMNEZIA_IOS_APPLETV) + set_target_properties(${PROJECT} PROPERTIES + XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "appletvos appletvsimulator" + XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "3" + XCODE_ATTRIBUTE_TVOS_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" + ) +else() + set_target_properties(${PROJECT} PROPERTIES + XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/ios/app/main.entitlements" + XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" + XCODE_EMBED_APP_EXTENSIONS networkextension + ) +endif() + if(DEFINED DEPLOY) set_target_properties(${PROJECT} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Distribution"