- Replace hardcoded simulator framework path with SDK-conditional paths so Xcode automatically resolves iosSimulatorArm64 or iosArm64 based on the selected build target - Fix Compose Resources build script to use \$PLATFORM_NAME instead of \$CONFIGURATION for platform detection - Add CODE_SIGN_IDENTITY override for iphoneos SDK to enable device signing - Document simulator and physical device build workflows in README
338 lines
12 KiB
Text
338 lines
12 KiB
Text
// !$*UTF8*$!
|
|
{
|
|
archiveVersion = 1;
|
|
classes = {
|
|
};
|
|
objectVersion = 56;
|
|
objects = {
|
|
|
|
/* Begin PBXBuildFile section */
|
|
AAA00001 /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBB00001; };
|
|
AAA00005 /* KoinHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBB00005; };
|
|
AAA00007 /* SharedFrameworkTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBB00007; };
|
|
AAA0000B /* ComposeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBB0000B; };
|
|
AAA0000C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BBB0000C; };
|
|
AAA00010 /* Shared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBB00010; };
|
|
AAA00011 /* Shared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BBB00010; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
|
/* End PBXBuildFile section */
|
|
|
|
/* Begin PBXCopyFilesBuildPhase section */
|
|
CCC00001 /* Embed Frameworks */ = {
|
|
isa = PBXCopyFilesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
dstPath = "";
|
|
dstSubfolderSpec = 10;
|
|
files = (
|
|
AAA00011 /* Shared.framework in Embed Frameworks */,
|
|
);
|
|
name = "Embed Frameworks";
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXCopyFilesBuildPhase section */
|
|
|
|
/* Begin PBXShellScriptBuildPhase section */
|
|
SSS00001 /* Copy Compose Resources */ = {
|
|
isa = PBXShellScriptBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
);
|
|
inputPaths = (
|
|
);
|
|
name = "Copy Compose Resources";
|
|
outputPaths = (
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
shellPath = /bin/sh;
|
|
shellScript = "# Aggregate and copy Compose Multiplatform resources into the app bundle.\n# Runs the Gradle aggregation task to ensure resources from all feature\n# modules are collected, then copies them into the .app bundle where\n# the Compose resource reader expects them at runtime.\n\nif [ \"$PLATFORM_NAME\" = \"iphonesimulator\" ]; then\n ARCH_DIR=\"iosSimulatorArm64\"\n GRADLE_TASK=\":shared:iosSimulatorArm64AggregateResources\"\nelif [ \"$PLATFORM_NAME\" = \"iphoneos\" ]; then\n ARCH_DIR=\"iosArm64\"\n GRADLE_TASK=\":shared:iosArm64AggregateResources\"\nelse\n echo \"error: Unsupported PLATFORM_NAME: $PLATFORM_NAME\"\n exit 1\nfi\n\nPROJECT_ROOT=\"$SRCROOT/..\"\nSRC=\"$PROJECT_ROOT/shared/build/kotlin-multiplatform-resources/aggregated-resources/$ARCH_DIR/composeResources\"\nDST=\"$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/compose-resources/composeResources\"\n\n# Run Gradle aggregation to ensure resources are up to date\necho \"Running $GRADLE_TASK...\"\ncd \"$PROJECT_ROOT\" && ./gradlew \"$GRADLE_TASK\" 2>&1\nGRADLE_EXIT=$?\nif [ $GRADLE_EXIT -ne 0 ]; then\n echo \"error: Gradle task $GRADLE_TASK failed with exit code $GRADLE_EXIT\"\n exit $GRADLE_EXIT\nfi\n\n# Clean stale resources before copying fresh ones\nif [ -d \"$DST\" ]; then\n rm -rf \"$DST\"\nfi\n\nif [ -d \"$SRC\" ]; then\n mkdir -p \"$DST\"\n cp -R \"$SRC/\" \"$DST/\"\n echo \"Copied Compose resources from $SRC to $DST\"\nelse\n echo \"error: Compose resources not found at $SRC after Gradle aggregation\"\n exit 1\nfi\n";
|
|
};
|
|
/* End PBXShellScriptBuildPhase section */
|
|
|
|
/* Begin PBXResourcesBuildPhase section */
|
|
RRR00001 /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
AAA0000C /* Assets.xcassets in Resources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXResourcesBuildPhase section */
|
|
|
|
/* Begin PBXFileReference section */
|
|
BBB00001 /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = "<group>"; };
|
|
BBB00005 /* KoinHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KoinHelper.swift; sourceTree = "<group>"; };
|
|
BBB00007 /* SharedFrameworkTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedFrameworkTest.swift; sourceTree = "<group>"; };
|
|
BBB00008 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
BBB0000B /* ComposeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeView.swift; sourceTree = "<group>"; };
|
|
BBB0000C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
|
BBB00010 /* Shared.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Shared.framework; path = "../shared/build/bin/iosSimulatorArm64/debugFramework/Shared.framework"; sourceTree = "<group>"; };
|
|
DDD00001 /* iosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
/* End PBXFileReference section */
|
|
|
|
/* Begin PBXFrameworksBuildPhase section */
|
|
EEE00001 /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
AAA00010 /* Shared.framework in Frameworks */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXFrameworksBuildPhase section */
|
|
|
|
/* Begin PBXGroup section */
|
|
FFF00001 = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
FFF00002 /* iosApp */,
|
|
FFF00003 /* Frameworks */,
|
|
FFF00004 /* Products */,
|
|
);
|
|
sourceTree = "<group>";
|
|
};
|
|
FFF00002 /* iosApp */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
BBB00001 /* iOSApp.swift */,
|
|
BBB00005 /* KoinHelper.swift */,
|
|
BBB00007 /* SharedFrameworkTest.swift */,
|
|
BBB0000B /* ComposeView.swift */,
|
|
BBB0000C /* Assets.xcassets */,
|
|
BBB00008 /* Info.plist */,
|
|
);
|
|
path = iosApp;
|
|
sourceTree = "<group>";
|
|
};
|
|
FFF00003 /* Frameworks */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
BBB00010 /* Shared.framework */,
|
|
);
|
|
name = Frameworks;
|
|
sourceTree = "<group>";
|
|
};
|
|
FFF00004 /* Products */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
DDD00001 /* iosApp.app */,
|
|
);
|
|
name = Products;
|
|
sourceTree = "<group>";
|
|
};
|
|
/* End PBXGroup section */
|
|
|
|
/* Begin PBXNativeTarget section */
|
|
GGG00001 /* iosApp */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = HHH00003 /* Build configuration list for PBXNativeTarget "iosApp" */;
|
|
buildPhases = (
|
|
III00001 /* Sources */,
|
|
RRR00001 /* Resources */,
|
|
EEE00001 /* Frameworks */,
|
|
CCC00001 /* Embed Frameworks */,
|
|
SSS00001 /* Copy Compose Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
);
|
|
name = iosApp;
|
|
productName = iosApp;
|
|
productReference = DDD00001 /* iosApp.app */;
|
|
productType = "com.apple.product-type.application";
|
|
};
|
|
/* End PBXNativeTarget section */
|
|
|
|
/* Begin PBXProject section */
|
|
JJJ00001 /* Project object */ = {
|
|
isa = PBXProject;
|
|
attributes = {
|
|
BuildIndependentTargetsInParallel = 1;
|
|
LastSwiftUpdateCheck = 1600;
|
|
LastUpgradeCheck = 1600;
|
|
};
|
|
buildConfigurationList = HHH00001 /* Build configuration list for PBXProject "iosApp" */;
|
|
compatibilityVersion = "Xcode 14.0";
|
|
developmentRegion = en;
|
|
hasScannedForEncodings = 0;
|
|
knownRegions = (
|
|
en,
|
|
Base,
|
|
);
|
|
mainGroup = FFF00001;
|
|
productRefGroup = FFF00004 /* Products */;
|
|
projectDirPath = "";
|
|
projectRoot = "";
|
|
targets = (
|
|
GGG00001 /* iosApp */,
|
|
);
|
|
};
|
|
/* End PBXProject section */
|
|
|
|
/* Begin PBXSourcesBuildPhase section */
|
|
III00001 /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
AAA00001 /* iOSApp.swift in Sources */,
|
|
AAA00005 /* KoinHelper.swift in Sources */,
|
|
AAA00007 /* SharedFrameworkTest.swift in Sources */,
|
|
AAA0000B /* ComposeView.swift in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXSourcesBuildPhase section */
|
|
|
|
/* Begin XCBuildConfiguration section */
|
|
KKK00001 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
ENABLE_TESTABILITY = YES;
|
|
GCC_DYNAMIC_NO_PIC = NO;
|
|
GCC_OPTIMIZATION_LEVEL = 0;
|
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
"DEBUG=1",
|
|
"$(inherited)",
|
|
);
|
|
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
|
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
|
ONLY_ACTIVE_ARCH = YES;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
};
|
|
name = Debug;
|
|
};
|
|
KKK00002 /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
ENABLE_NS_ASSERTIONS = NO;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
GCC_OPTIMIZATION_LEVEL = s;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_COMPILATION_MODE = wholemodule;
|
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
|
VALIDATE_PRODUCT = YES;
|
|
};
|
|
name = Release;
|
|
};
|
|
KKK00003 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
CODE_SIGN_IDENTITY = "-";
|
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
|
|
CODE_SIGN_STYLE = Automatic;
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
DEVELOPMENT_TEAM = "";
|
|
ENABLE_PREVIEWS = YES;
|
|
FRAMEWORK_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
);
|
|
"FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/../shared/build/bin/iosSimulatorArm64/debugFramework",
|
|
);
|
|
"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/../shared/build/bin/iosArm64/debugFramework",
|
|
);
|
|
GENERATE_INFOPLIST_FILE = NO;
|
|
INFOPLIST_FILE = iosApp/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
MARKETING_VERSION = 1.0;
|
|
OTHER_LDFLAGS = (
|
|
"$(inherited)",
|
|
"-lsqlite3",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.garfiec.librechat.ios;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Debug;
|
|
};
|
|
KKK00004 /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
CODE_SIGN_IDENTITY = "-";
|
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
|
|
CODE_SIGN_STYLE = Automatic;
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
DEVELOPMENT_TEAM = "";
|
|
ENABLE_PREVIEWS = YES;
|
|
FRAMEWORK_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
);
|
|
"FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/../shared/build/bin/iosSimulatorArm64/releaseFramework",
|
|
);
|
|
"FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/../shared/build/bin/iosArm64/releaseFramework",
|
|
);
|
|
GENERATE_INFOPLIST_FILE = NO;
|
|
INFOPLIST_FILE = iosApp/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
MARKETING_VERSION = 1.0;
|
|
OTHER_LDFLAGS = (
|
|
"$(inherited)",
|
|
"-lsqlite3",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.garfiec.librechat.ios;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Release;
|
|
};
|
|
/* End XCBuildConfiguration section */
|
|
|
|
/* Begin XCConfigurationList section */
|
|
HHH00001 /* Build configuration list for PBXProject "iosApp" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
KKK00001 /* Debug */,
|
|
KKK00002 /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Debug;
|
|
};
|
|
HHH00003 /* Build configuration list for PBXNativeTarget "iosApp" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
KKK00003 /* Debug */,
|
|
KKK00004 /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Debug;
|
|
};
|
|
/* End XCConfigurationList section */
|
|
|
|
};
|
|
rootObject = JJJ00001 /* Project object */;
|
|
}
|