UNPKG

@bacons/apple-targets

Version:
731 lines (730 loc) 30.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createConfigurationListForType = void 0; const xcode_1 = require("@bacons/xcode"); const target_1 = require("./target"); function createDefaultConfigurationList({ name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, }) { const common = { CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", COPY_PHASE_STRIP: "NO", DEBUG_INFORMATION_FORMAT: "dwarf-with-dsym", GCC_C_LANGUAGE_STANDARD: "gnu11", GENERATE_INFOPLIST_FILE: "YES", CURRENT_PROJECT_VERSION: currentProjectVersion, INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_NSHumanReadableCopyright: "", IPHONEOS_DEPLOYMENT_TARGET: deploymentTarget, LD_RUNPATH_SEARCH_PATHS: [ "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ], MARKETING_VERSION: "1.0", MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SKIP_INSTALL: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_COMPILATION_MODE: "wholemodule", SWIFT_OPTIMIZATION_LEVEL: "-O", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "1,2", }; return { debug: { ...common, // Diff MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG", SWIFT_OPTIMIZATION_LEVEL: "-Onone", DEBUG_INFORMATION_FORMAT: "dwarf", }, release: { ...common, CLANG_ANALYZER_NONNULL: "YES", }, }; } function createActionConfigurationList({ name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, icon, }) { const common = { CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", CURRENT_PROJECT_VERSION: 1, DEVELOPMENT_TEAM: "QQ57RJ5UTD", ENABLE_USER_SCRIPT_SANDBOXING: "YES", GCC_C_LANGUAGE_STANDARD: "gnu17", GENERATE_INFOPLIST_FILE: "YES", INFOPLIST_FILE: "axun/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: "axun", INFOPLIST_KEY_NSHumanReadableCopyright: "", IPHONEOS_DEPLOYMENT_TARGET: "17", LD_RUNPATH_SEARCH_PATHS: "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks", MARKETING_VERSION: 1, MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: "com.bacon.2095.axun", PRODUCT_NAME: "$(TARGET_NAME)", SKIP_INSTALL: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "1,2", LOCALIZATION_PREFERS_STRING_CATALOGS: "YES", ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS: "YES", }; const dynamic = { CURRENT_PROJECT_VERSION: currentProjectVersion, INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, IPHONEOS_DEPLOYMENT_TARGET: deploymentTarget, PRODUCT_BUNDLE_IDENTIFIER: bundleId, }; if (icon) { // Add `ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;` build settings dynamic.ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon"; } return { debug: { ...common, DEBUG_INFORMATION_FORMAT: "dwarf", MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG $(inherited)", SWIFT_OPTIMIZATION_LEVEL: "-Onone", ...dynamic, }, release: { ...common, COPY_PHASE_STRIP: "NO", DEBUG_INFORMATION_FORMAT: "dwarf-with-dsym", SWIFT_COMPILATION_MODE: "wholemodule", ...dynamic, }, }; } function createAppIntentConfigurationList({ name, displayName, cwd, bundleId, }) { const commonBuildSettings = { ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS: "YES", CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", CURRENT_PROJECT_VERSION: "1", DEBUG_INFORMATION_FORMAT: "dwarf", ENABLE_USER_SCRIPT_SANDBOXING: "YES", GCC_C_LANGUAGE_STANDARD: "gnu17", GENERATE_INFOPLIST_FILE: "YES", INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_NSHumanReadableCopyright: "", IPHONEOS_DEPLOYMENT_TARGET: "17.0", LD_RUNPATH_SEARCH_PATHS: [ "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ], LOCALIZATION_PREFERS_STRING_CATALOGS: "YES", MARKETING_VERSION: "1.0", MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SKIP_INSTALL: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "1,2", }; return { debug: { ...commonBuildSettings, GCC_PREPROCESSOR_DEFINITIONS: ["DEBUG=1", "$(inherited)"], MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG $(inherited)", SWIFT_OPTIMIZATION_LEVEL: "-Onone", }, release: { ...commonBuildSettings, COPY_PHASE_STRIP: "NO", DEBUG_INFORMATION_FORMAT: "dwarf-with-dsym", ...{ SWIFT_COMPILATION_MODE: "wholemodule" }, }, }; } function createShareConfigurationList({ name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, }) { const common = { CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", DEBUG_INFORMATION_FORMAT: "dwarf", // NOTE GCC_C_LANGUAGE_STANDARD: "gnu11", GENERATE_INFOPLIST_FILE: "YES", CURRENT_PROJECT_VERSION: currentProjectVersion, INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_NSHumanReadableCopyright: "", IPHONEOS_DEPLOYMENT_TARGET: deploymentTarget, LD_RUNPATH_SEARCH_PATHS: [ "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ], MARKETING_VERSION: "1.0", MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SKIP_INSTALL: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_OPTIMIZATION_LEVEL: "-Onone", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "1,2", }; return { debug: { ...common, // Diff MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG", }, release: { CLANG_ANALYZER_NONNULL: "YES", ...common, // Diff COPY_PHASE_STRIP: "NO", }, }; } function createIMessageConfigurationList({ name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, }) { const common = { ASSETCATALOG_COMPILER_APPICON_NAME: "iMessage App Icon", CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", DEBUG_INFORMATION_FORMAT: "dwarf", // NOTE GCC_C_LANGUAGE_STANDARD: "gnu11", GENERATE_INFOPLIST_FILE: "YES", CURRENT_PROJECT_VERSION: currentProjectVersion, INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_NSHumanReadableCopyright: "", IPHONEOS_DEPLOYMENT_TARGET: deploymentTarget, LD_RUNPATH_SEARCH_PATHS: [ "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ], MARKETING_VERSION: "1.0", MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SKIP_INSTALL: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_OPTIMIZATION_LEVEL: "-Onone", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "1,2", }; return { debug: { ...common, // Diff MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG", }, release: { ...common, // Diff COPY_PHASE_STRIP: "NO", }, }; } function createWatchAppConfigurationList(project, { name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, hasAccentColor, icon, }) { const mainAppTarget = (0, target_1.getMainAppTarget)(project).getDefaultConfiguration(); // NOTE: No base Info.plist needed. const common = { // Only set AppIcon when an icon is provided, otherwise Xcode will fail // to build because the asset catalog doesn't exist ...(icon && { ASSETCATALOG_COMPILER_APPICON_NAME: "AppIcon" }), CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", CURRENT_PROJECT_VERSION: currentProjectVersion, ENABLE_PREVIEWS: "YES", GCC_C_LANGUAGE_STANDARD: "gnu11", INFOPLIST_FILE: cwd + "/Info.plist", GENERATE_INFOPLIST_FILE: "YES", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_UISupportedInterfaceOrientations: "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown", INFOPLIST_KEY_WKCompanionAppBundleIdentifier: mainAppTarget.props.buildSettings.PRODUCT_BUNDLE_IDENTIFIER, // INFOPLIST_KEY_WKCompanionAppBundleIdentifier: "$(BUNDLE_IDENTIFIER)", // INFOPLIST_KEY_WKCompanionAppBundleIdentifier: rootBundleId, LD_RUNPATH_SEARCH_PATHS: ["$(inherited)", "@executable_path/Frameworks"], MARKETING_VERSION: "1.0", MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SDKROOT: "watchos", SKIP_INSTALL: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_OPTIMIZATION_LEVEL: "-Onone", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "4", WATCHOS_DEPLOYMENT_TARGET: deploymentTarget !== null && deploymentTarget !== void 0 ? deploymentTarget : "9.4", // WATCHOS_DEPLOYMENT_TARGET: 9.4, }; if (hasAccentColor) { common.ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = "$accent"; } return { debug: { ...common, // Diff MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG", DEBUG_INFORMATION_FORMAT: "dwarf", // NOTE }, release: { ...common, // Diff SWIFT_COMPILATION_MODE: "wholemodule", SWIFT_OPTIMIZATION_LEVEL: "-O", COPY_PHASE_STRIP: "NO", DEBUG_INFORMATION_FORMAT: "dwarf-with-dsym", }, }; } function createWatchWidgetConfigurationList(project, { name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, icon, }) { const common = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: "$accent", ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME: "$widgetBackground", ...(icon && { ASSETCATALOG_COMPILER_APPICON_NAME: "AppIcon" }), CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", CURRENT_PROJECT_VERSION: currentProjectVersion, GCC_C_LANGUAGE_STANDARD: "gnu11", GENERATE_INFOPLIST_FILE: "YES", INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_NSHumanReadableCopyright: "", LD_RUNPATH_SEARCH_PATHS: ["$(inherited)", "@executable_path/Frameworks"], MARKETING_VERSION: "1.0", MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SDKROOT: "watchos", SKIP_INSTALL: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "4", WATCHOS_DEPLOYMENT_TARGET: deploymentTarget !== null && deploymentTarget !== void 0 ? deploymentTarget : "9.4", }; return { debug: { ...common, DEBUG_INFORMATION_FORMAT: "dwarf", MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG", SWIFT_OPTIMIZATION_LEVEL: "-Onone", }, release: { ...common, COPY_PHASE_STRIP: "NO", DEBUG_INFORMATION_FORMAT: "dwarf-with-dsym", SWIFT_COMPILATION_MODE: "wholemodule", SWIFT_OPTIMIZATION_LEVEL: "-O", }, }; } function createSafariConfigurationList({ name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, }) { const common = { CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", GCC_C_LANGUAGE_STANDARD: "gnu11", GENERATE_INFOPLIST_FILE: "YES", CURRENT_PROJECT_VERSION: currentProjectVersion, INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_NSHumanReadableCopyright: "", IPHONEOS_DEPLOYMENT_TARGET: deploymentTarget, LD_RUNPATH_SEARCH_PATHS: [ "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ], MARKETING_VERSION: "1.0", MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SKIP_INSTALL: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_OPTIMIZATION_LEVEL: "-Onone", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "1,2", OTHER_LDFLAGS: [`-framework`, "SafariServices"], }; return { debug: { ...common, // Diff MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG", DEBUG_INFORMATION_FORMAT: "dwarf", // NOTE }, release: { ...common, // Diff SWIFT_COMPILATION_MODE: "wholemodule", SWIFT_OPTIMIZATION_LEVEL: "-O", COPY_PHASE_STRIP: "NO", DEBUG_INFORMATION_FORMAT: "dwarf-with-dsym", }, }; } function createAppClipConfigurationList({ name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, hasAccentColor, orientation, deviceFamilies, }) { // TODO: Unify AppIcon and AccentColor logic const dynamic = { CURRENT_PROJECT_VERSION: currentProjectVersion, INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, IPHONEOS_DEPLOYMENT_TARGET: deploymentTarget, MARKETING_VERSION: "1.0", PRODUCT_BUNDLE_IDENTIFIER: bundleId, // TODO: Add this later like entitlements // DEVELOPMENT_ASSET_PATHS: `\"${cwd}/Preview Content\"`, }; if (hasAccentColor) { dynamic.ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = "$accent"; } const superCommon = { CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", COPY_PHASE_STRIP: "NO", PRODUCT_NAME: "$(TARGET_NAME)", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_VERSION: "5.0", ...getDeviceFamilyBuildSettings(deviceFamilies), }; const infoPlist = { GENERATE_INFOPLIST_FILE: "YES", INFOPLIST_KEY_UIApplicationSceneManifest_Generation: "YES", INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents: "YES", INFOPLIST_KEY_UILaunchScreen_Generation: "YES", INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad: "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight", ...getOrientationBuildSettings(orientation), }; // Attempt to automatically set the build number to match the main app. // This only works with EAS Build, other processes can simply set the number manually. if (process.env.EAS_BUILD_IOS_BUILD_NUMBER) { // NOTE: INFOPLIST_KEY_CFBundleVersion doesn't work here. infoPlist.CURRENT_PROJECT_VERSION = process.env.EAS_BUILD_IOS_BUILD_NUMBER; } // @ts-expect-error const common = { ...dynamic, ...infoPlist, ...superCommon, ASSETCATALOG_COMPILER_APPICON_NAME: "AppIcon", LD_RUNPATH_SEARCH_PATHS: ["$(inherited)", "@executable_path/Frameworks"], MTL_FAST_MATH: "YES", ENABLE_PREVIEWS: "YES", }; return { debug: { ...common, SWIFT_OPTIMIZATION_LEVEL: "-Onone", // Diff MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG", DEBUG_INFORMATION_FORMAT: "dwarf", // NOTE }, release: { ...common, // Diff SWIFT_COMPILATION_MODE: "wholemodule", SWIFT_OPTIMIZATION_LEVEL: "-O", COPY_PHASE_STRIP: "NO", DEBUG_INFORMATION_FORMAT: "dwarf-with-dsym", }, }; } function getOrientationBuildSettings(orientation) { // NOTE: The requiresFullScreen support is deprecated in iOS 26+ // https://developer.apple.com/documentation/BundleResources/Information-Property-List/UIRequiresFullScreen // Try to align the orientation with the main app. if (orientation === "landscape") { return { INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone: "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight", }; } else if (orientation === "portrait") { return { INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone: "UIInterfaceOrientationPortrait", }; } return { INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone: "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight", }; } function getDeviceFamilyBuildSettings(deviceFamilies) { if (!deviceFamilies) { return { TARGETED_DEVICE_FAMILY: "1,2", }; } const families = []; if (deviceFamilies.includes("phone")) { families.push(1); } if (deviceFamilies.includes("tablet")) { families.push(2); } return { TARGETED_DEVICE_FAMILY: families.join(","), }; } function createWidgetConfigurationList({ name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, icon, }) { return { debug: { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: "$accent", ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME: "$widgetBackground", // Add app icon name when icon is provided to prevent inheriting main app's icon setting ...(icon && { ASSETCATALOG_COMPILER_APPICON_NAME: "AppIcon" }), CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", CURRENT_PROJECT_VERSION: currentProjectVersion, DEBUG_INFORMATION_FORMAT: "dwarf", GCC_C_LANGUAGE_STANDARD: "gnu11", GENERATE_INFOPLIST_FILE: "YES", INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_NSHumanReadableCopyright: "", IPHONEOS_DEPLOYMENT_TARGET: deploymentTarget, LD_RUNPATH_SEARCH_PATHS: [ "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ], MARKETING_VERSION: "1.0", MTL_ENABLE_DEBUG_INFO: "INCLUDE_SOURCE", MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SKIP_INSTALL: "YES", SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_OPTIMIZATION_LEVEL: "-Onone", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "1,2", }, release: { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: "$accent", ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME: "$widgetBackground", // Add app icon name when icon is provided to prevent inheriting main app's icon setting ...(icon && { ASSETCATALOG_COMPILER_APPICON_NAME: "AppIcon" }), CLANG_ANALYZER_NONNULL: "YES", CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: "YES_AGGRESSIVE", CLANG_CXX_LANGUAGE_STANDARD: "gnu++20", CLANG_ENABLE_OBJC_WEAK: "YES", CLANG_WARN_DOCUMENTATION_COMMENTS: "YES", CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: "YES", CLANG_WARN_UNGUARDED_AVAILABILITY: "YES_AGGRESSIVE", CODE_SIGN_STYLE: "Automatic", COPY_PHASE_STRIP: "NO", CURRENT_PROJECT_VERSION: currentProjectVersion, DEBUG_INFORMATION_FORMAT: "dwarf-with-dsym", GCC_C_LANGUAGE_STANDARD: "gnu11", GENERATE_INFOPLIST_FILE: "YES", INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_NSHumanReadableCopyright: "", IPHONEOS_DEPLOYMENT_TARGET: deploymentTarget, LD_RUNPATH_SEARCH_PATHS: [ "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ], MARKETING_VERSION: "1.0", MTL_FAST_MATH: "YES", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SKIP_INSTALL: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_COMPILATION_MODE: "wholemodule", SWIFT_OPTIMIZATION_LEVEL: "-O", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "1,2", }, }; } function createKeyboardConfigurationList({ name, displayName, cwd, bundleId, deploymentTarget, currentProjectVersion, }) { const common = { CODE_SIGN_STYLE: "Automatic", CURRENT_PROJECT_VERSION: currentProjectVersion, GENERATE_INFOPLIST_FILE: "YES", INFOPLIST_FILE: cwd + "/Info.plist", INFOPLIST_KEY_CFBundleDisplayName: displayName !== null && displayName !== void 0 ? displayName : name, INFOPLIST_KEY_NSHumanReadableCopyright: "", IPHONEOS_DEPLOYMENT_TARGET: deploymentTarget, LD_RUNPATH_SEARCH_PATHS: [ "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ], MARKETING_VERSION: "1.0", PRODUCT_BUNDLE_IDENTIFIER: bundleId, PRODUCT_NAME: "$(TARGET_NAME)", SDKROOT: "iphoneos", SKIP_INSTALL: "YES", // @ts-expect-error - New Xcode build settings not in types yet STRING_CATALOG_GENERATE_SYMBOLS: "YES", SWIFT_APPROACHABLE_CONCURRENCY: "YES", SWIFT_EMIT_LOC_STRINGS: "YES", SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY: "YES", SWIFT_VERSION: "5.0", TARGETED_DEVICE_FAMILY: "1,2", }; return { debug: { ...common, }, release: { ...common, // Diff VALIDATE_PRODUCT: "YES", }, }; } function getConfigurationListBuildSettingsForType(project, props) { switch (props.type) { case "widget": return createWidgetConfigurationList(props); case "action": return createActionConfigurationList(props); case "keyboard": return createKeyboardConfigurationList(props); case "share": return createShareConfigurationList(props); case "safari": return createSafariConfigurationList(props); case "imessage": return createIMessageConfigurationList(props); case "clip": return createAppClipConfigurationList(props); case "watch": return createWatchAppConfigurationList(project, props); case "watch-widget": return createWatchWidgetConfigurationList(project, props); case "app-intent": return createAppIntentConfigurationList(props); case "notification-content": // TODO: These just use this default value for now. case "notification-service": case "account-auth": case "bg-download": case "credentials-provider": case "device-activity-monitor": case "intent": case "intent-ui": case "location-push": case "matter": case "network-app-proxy": case "network-dns-proxy": case "network-filter-data": case "network-packet-tunnel": case "quicklook-thumbnail": case "spotlight": case "content-blocker": case "file-provider": case "broadcast-upload": case "call-directory": case "message-filter": case "file-provider-ui": case "broadcast-setup-ui": case "classkit-context": case "unwanted-communication": case "photo-editing": case "quicklook-preview": case "spotlight-delegate": case "virtual-conference": case "shield-action": case "shield-config": case "print-service": case "smart-card": case "authentication-services": case "wallet": case "wallet-ui": return createDefaultConfigurationList(props); default: const exhaustiveCheck = props.type; throw new Error(`Unhandled case: ${exhaustiveCheck}`); } } function createConfigurationListForType(project, props) { const { debug, release } = getConfigurationListBuildSettingsForType(project, props); return xcode_1.XCConfigurationList.create(project, { buildConfigurations: [ xcode_1.XCBuildConfiguration.create(project, { name: "Debug", buildSettings: debug, }), xcode_1.XCBuildConfiguration.create(project, { name: "Release", buildSettings: release, }), ], defaultConfigurationIsVisible: 0, defaultConfigurationName: "Release", }); } exports.createConfigurationListForType = createConfigurationListForType;