@bacons/apple-targets
Version:
Generate Apple Targets with Expo Prebuild
731 lines (730 loc) • 30.6 kB
JavaScript
"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;