Skip to content

Commit

Permalink
Fix non-CocoaPods xcframework build
Browse files Browse the repository at this point in the history
  • Loading branch information
tcobbs-bentley committed Jan 20, 2024
1 parent 1b0223d commit e33d19d
Show file tree
Hide file tree
Showing 2 changed files with 201 additions and 13 deletions.
204 changes: 194 additions & 10 deletions tools/ios-framework/NodeMobile.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,36 @@
objects = {

/* Begin PBXBuildFile section */
1F0EBA912B5B465500F27980 /* NodeMobile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C02AFD31FA919C30053C191 /* NodeMobile.cpp */; };
1F0EBA932B5B465500F27980 /* libbase64_sse42.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008C02AD14FAD00FB3D3D /* libbase64_sse42.a */; };
1F0EBA942B5B465500F27980 /* libbase64_avx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008BE2AD14FAD00FB3D3D /* libbase64_avx.a */; };
1F0EBA952B5B465500F27980 /* libv8_compiler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EC0240437AB0019E302 /* libv8_compiler.a */; };
1F0EBA962B5B465500F27980 /* libv8_snapshot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EC1240437AB0019E302 /* libv8_snapshot.a */; };
1F0EBA972B5B465500F27980 /* libngtcp2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F63BCE7C29756DAA0049F595 /* libngtcp2.a */; };
1F0EBA982B5B465500F27980 /* libhistogram.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EAB240437620019E302 /* libhistogram.a */; };
1F0EBA992B5B465500F27980 /* libbase64_ssse3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008BF2AD14FAD00FB3D3D /* libbase64_ssse3.a */; };
1F0EBA9A2B5B465500F27980 /* libllhttp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EAC240437620019E302 /* libllhttp.a */; };
1F0EBA9B2B5B465500F27980 /* libv8_initializers.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EAD240437620019E302 /* libv8_initializers.a */; };
1F0EBA9C2B5B465500F27980 /* libv8_libplatform.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EAE240437620019E302 /* libv8_libplatform.a */; };
1F0EBA9D2B5B465500F27980 /* libbrotli.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EAF240437620019E302 /* libbrotli.a */; };
1F0EBA9E2B5B465500F27980 /* libuvwasi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EB0240437620019E302 /* libuvwasi.a */; };
1F0EBA9F2B5B465500F27980 /* libv8_zlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F63BCE7E29756DCD0049F595 /* libv8_zlib.a */; };
1F0EBAA02B5B465500F27980 /* libv8_libbase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EB1240437620019E302 /* libv8_libbase.a */; };
1F0EBAA12B5B465500F27980 /* libv8_base_without_compiler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EB3240437620019E302 /* libv8_base_without_compiler.a */; };
1F0EBAA22B5B465500F27980 /* libnghttp3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F63BCE7A29756D920049F595 /* libnghttp3.a */; };
1F0EBAA32B5B465500F27980 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 331917C21EC4702A00F93D52 /* CoreFoundation.framework */; };
1F0EBAA42B5B465500F27980 /* libsimdutf.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6860EE62ACD493C00070ED3 /* libsimdutf.a */; };
1F0EBAA52B5B465500F27980 /* libcares.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3376C9191EC3922F0007AD59 /* libcares.a */; };
1F0EBAA62B5B465500F27980 /* libnghttp2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 334822141F6AFBD200CF403E /* libnghttp2.a */; };
1F0EBAA82B5B465500F27980 /* libada.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6860EE02ACD491900070ED3 /* libada.a */; };
1F0EBAA92B5B465500F27980 /* libnode.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3376C91D1EC3922F0007AD59 /* libnode.a */; };
1F0EBAAA2B5B465500F27980 /* libbase64_sse41.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008BD2AD14FAD00FB3D3D /* libbase64_sse41.a */; };
1F0EBAAB2B5B465500F27980 /* libopenssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3376C91E1EC3922F0007AD59 /* libopenssl.a */; };
1F0EBAAC2B5B465500F27980 /* libbase64.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6860EE42ACD493400070ED3 /* libbase64.a */; };
1F0EBAAD2B5B465500F27980 /* libbase64_avx2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008C12AD14FAD00FB3D3D /* libbase64_avx2.a */; };
1F0EBAAE2B5B465500F27980 /* libuv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3376C91F1EC3922F0007AD59 /* libuv.a */; };
1F0EBAB02B5B465500F27980 /* libzlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3376C9201EC3922F0007AD59 /* libzlib.a */; };
1F0EBAB22B5B465500F27980 /* NodeMobile.h in Headers */ = {isa = PBXBuildFile; fileRef = D9A762261F7C674F006097B1 /* NodeMobile.h */; settings = {ATTRIBUTES = (Public, ); }; };
33300EB6240437620019E302 /* libhistogram.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EAB240437620019E302 /* libhistogram.a */; };
33300EB7240437620019E302 /* libllhttp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EAC240437620019E302 /* libllhttp.a */; };
33300EB8240437620019E302 /* libv8_initializers.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33300EAD240437620019E302 /* libv8_initializers.a */; };
Expand Down Expand Up @@ -34,14 +64,10 @@
F6860EE52ACD493400070ED3 /* libbase64.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6860EE42ACD493400070ED3 /* libbase64.a */; };
F6860EE72ACD493C00070ED3 /* libsimdutf.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6860EE62ACD493C00070ED3 /* libsimdutf.a */; };
F6860EE92ACD494B00070ED3 /* libzlib_inflate_chunk_simd.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6860EE82ACD494B00070ED3 /* libzlib_inflate_chunk_simd.a */; };
F6D008C32AD14FAE00FB3D3D /* libbase64_sse41.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008BD2AD14FAD00FB3D3D /* libbase64_sse41.a */; };
F6D008C42AD14FAE00FB3D3D /* libbase64_avx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008BE2AD14FAD00FB3D3D /* libbase64_avx.a */; };
F6D008C52AD14FAE00FB3D3D /* libbase64_ssse3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008BF2AD14FAD00FB3D3D /* libbase64_ssse3.a */; };
F6D008C62AD14FAE00FB3D3D /* libbase64_sse42.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008C02AD14FAD00FB3D3D /* libbase64_sse42.a */; };
F6D008C72AD14FAE00FB3D3D /* libbase64_avx2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D008C12AD14FAD00FB3D3D /* libbase64_avx2.a */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
1F0EBAB72B5B465500F27980 /* NodeMobile-x64.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "NodeMobile-x64.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
331917C21EC4702A00F93D52 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
33300EAB240437620019E302 /* libhistogram.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libhistogram.a; path = bin/libhistogram.a; sourceTree = "<group>"; };
33300EAC240437620019E302 /* libllhttp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libllhttp.a; path = bin/libllhttp.a; sourceTree = "<group>"; };
Expand Down Expand Up @@ -79,17 +105,49 @@
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
1F0EBA922B5B465500F27980 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
1F0EBA932B5B465500F27980 /* libbase64_sse42.a in Frameworks */,
1F0EBA942B5B465500F27980 /* libbase64_avx.a in Frameworks */,
1F0EBA952B5B465500F27980 /* libv8_compiler.a in Frameworks */,
1F0EBA962B5B465500F27980 /* libv8_snapshot.a in Frameworks */,
1F0EBA972B5B465500F27980 /* libngtcp2.a in Frameworks */,
1F0EBA982B5B465500F27980 /* libhistogram.a in Frameworks */,
1F0EBA992B5B465500F27980 /* libbase64_ssse3.a in Frameworks */,
1F0EBA9A2B5B465500F27980 /* libllhttp.a in Frameworks */,
1F0EBA9B2B5B465500F27980 /* libv8_initializers.a in Frameworks */,
1F0EBA9C2B5B465500F27980 /* libv8_libplatform.a in Frameworks */,
1F0EBA9D2B5B465500F27980 /* libbrotli.a in Frameworks */,
1F0EBA9E2B5B465500F27980 /* libuvwasi.a in Frameworks */,
1F0EBA9F2B5B465500F27980 /* libv8_zlib.a in Frameworks */,
1F0EBAA02B5B465500F27980 /* libv8_libbase.a in Frameworks */,
1F0EBAA12B5B465500F27980 /* libv8_base_without_compiler.a in Frameworks */,
1F0EBAA22B5B465500F27980 /* libnghttp3.a in Frameworks */,
1F0EBAA32B5B465500F27980 /* CoreFoundation.framework in Frameworks */,
1F0EBAA42B5B465500F27980 /* libsimdutf.a in Frameworks */,
1F0EBAA52B5B465500F27980 /* libcares.a in Frameworks */,
1F0EBAA62B5B465500F27980 /* libnghttp2.a in Frameworks */,
1F0EBAA82B5B465500F27980 /* libada.a in Frameworks */,
1F0EBAA92B5B465500F27980 /* libnode.a in Frameworks */,
1F0EBAAA2B5B465500F27980 /* libbase64_sse41.a in Frameworks */,
1F0EBAAB2B5B465500F27980 /* libopenssl.a in Frameworks */,
1F0EBAAC2B5B465500F27980 /* libbase64.a in Frameworks */,
1F0EBAAD2B5B465500F27980 /* libbase64_avx2.a in Frameworks */,
1F0EBAAE2B5B465500F27980 /* libuv.a in Frameworks */,
1F0EBAB02B5B465500F27980 /* libzlib.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
D9A7619C1F7C63A8006AFE86 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F6D008C62AD14FAE00FB3D3D /* libbase64_sse42.a in Frameworks */,
F6D008C42AD14FAE00FB3D3D /* libbase64_avx.a in Frameworks */,
33300EC2240437AB0019E302 /* libv8_compiler.a in Frameworks */,
33300EC3240437AB0019E302 /* libv8_snapshot.a in Frameworks */,
F63BCE7D29756DAC0049F595 /* libngtcp2.a in Frameworks */,
33300EB6240437620019E302 /* libhistogram.a in Frameworks */,
F6D008C52AD14FAE00FB3D3D /* libbase64_ssse3.a in Frameworks */,
33300EB7240437620019E302 /* libllhttp.a in Frameworks */,
33300EB8240437620019E302 /* libv8_initializers.a in Frameworks */,
33300EB9240437620019E302 /* libv8_libplatform.a in Frameworks */,
Expand All @@ -106,10 +164,8 @@
F6860EE32ACD492E00070ED3 /* libbase64_neon64.a in Frameworks */,
F6860EE12ACD491900070ED3 /* libada.a in Frameworks */,
D9A761A31F7C63A8006AFE86 /* libnode.a in Frameworks */,
F6D008C32AD14FAE00FB3D3D /* libbase64_sse41.a in Frameworks */,
D9A761A41F7C63A8006AFE86 /* libopenssl.a in Frameworks */,
F6860EE52ACD493400070ED3 /* libbase64.a in Frameworks */,
F6D008C72AD14FAE00FB3D3D /* libbase64_avx2.a in Frameworks */,
D9A761A51F7C63A8006AFE86 /* libuv.a in Frameworks */,
F6860EE92ACD494B00070ED3 /* libzlib_inflate_chunk_simd.a in Frameworks */,
D9A761A61F7C63A8006AFE86 /* libzlib.a in Frameworks */,
Expand All @@ -132,6 +188,7 @@
isa = PBXGroup;
children = (
D9A761AE1F7C63A8006AFE86 /* NodeMobile.framework */,
1F0EBAB72B5B465500F27980 /* NodeMobile-x64.framework */,
);
name = Products;
sourceTree = "<group>";
Expand Down Expand Up @@ -186,6 +243,14 @@
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
1F0EBAB12B5B465500F27980 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
1F0EBAB22B5B465500F27980 /* NodeMobile.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
D9A761A71F7C63A8006AFE86 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
Expand All @@ -197,6 +262,24 @@
/* End PBXHeadersBuildPhase section */

/* Begin PBXNativeTarget section */
1F0EBA8F2B5B465500F27980 /* NodeMobile-x64 */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1F0EBAB42B5B465500F27980 /* Build configuration list for PBXNativeTarget "NodeMobile-x64" */;
buildPhases = (
1F0EBA902B5B465500F27980 /* Sources */,
1F0EBA922B5B465500F27980 /* Frameworks */,
1F0EBAB12B5B465500F27980 /* Headers */,
1F0EBAB32B5B465500F27980 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "NodeMobile-x64";
productName = nodeLib;
productReference = 1F0EBAB72B5B465500F27980 /* NodeMobile-x64.framework */;
productType = "com.apple.product-type.framework";
};
D9A7619A1F7C63A8006AFE86 /* NodeMobile */ = {
isa = PBXNativeTarget;
buildConfigurationList = D9A761AB1F7C63A8006AFE86 /* Build configuration list for PBXNativeTarget "NodeMobile" */;
Expand Down Expand Up @@ -243,11 +326,19 @@
projectRoot = "";
targets = (
D9A7619A1F7C63A8006AFE86 /* NodeMobile */,
1F0EBA8F2B5B465500F27980 /* NodeMobile-x64 */,
);
};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
1F0EBAB32B5B465500F27980 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
D9A761AA1F7C63A8006AFE86 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
Expand All @@ -258,6 +349,14 @@
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
1F0EBA902B5B465500F27980 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1F0EBA912B5B465500F27980 /* NodeMobile.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
D9A7619B1F7C63A8006AFE86 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
Expand All @@ -269,6 +368,82 @@
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
1F0EBAB52B5B465500F27980 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = YES;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = NodeMobile/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/bin",
);
ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = (
"-all_load",
"-v",
"-lstdc++",
);
PRODUCT_BUNDLE_IDENTIFIER = com.janeasystems.NodeMobile;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SEPARATE_STRIP = YES;
SKIP_INSTALL = YES;
STRIP_STYLE = "non-global";
VALID_ARCHS = "arm64 x86_64";
};
name = Debug;
};
1F0EBAB62B5B465500F27980 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = YES;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = NodeMobile/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/bin",
);
ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = (
"-all_load",
"-v",
"-lstdc++",
);
PRODUCT_BUNDLE_IDENTIFIER = com.janeasystems.NodeMobile;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SEPARATE_STRIP = YES;
SKIP_INSTALL = YES;
STRIP_STYLE = "non-global";
VALID_ARCHS = "arm64 x86_64";
};
name = Release;
};
3376C9131EC391130007AD59 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
Expand Down Expand Up @@ -460,6 +635,15 @@
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
1F0EBAB42B5B465500F27980 /* Build configuration list for PBXNativeTarget "NodeMobile-x64" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1F0EBAB52B5B465500F27980 /* Debug */,
1F0EBAB62B5B465500F27980 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
3376C9071EC391130007AD59 /* Build configuration list for PBXProject "NodeMobile" */ = {
isa = XCConfigurationList;
buildConfigurations = (
Expand Down
10 changes: 7 additions & 3 deletions tools/ios_framework_prepare.sh
Original file line number Diff line number Diff line change
Expand Up @@ -182,17 +182,21 @@ for output_file in "${outputs_x64[@]}"; do
done
xcodebuild build \
-project $NODELIB_PROJECT_PATH/NodeMobile.xcodeproj \
-target "NodeMobile" \
-target "NodeMobile-x64" \
-configuration Release \
-arch x86_64 \
-sdk "iphonesimulator" \
SYMROOT=$FRAMEWORK_TARGET_DIR/iphonesimulator-x64

# Join both simulator outputs into one
mkdir -p $FRAMEWORK_TARGET_DIR/iphonesimulator-universal/NodeMobile.framework
mkdir -p $FRAMEWORK_TARGET_DIR/iphonesimulator-universal
cp -R \
$FRAMEWORK_TARGET_DIR/iphonesimulator-arm64/Release-iphonesimulator/NodeMobile.framework \
$FRAMEWORK_TARGET_DIR/iphonesimulator-universal/NodeMobile.framework
rm -f $FRAMEWORK_TARGET_DIR/iphonesimulator-universal/NodeMobile.framework/NodeMobile
lipo -create \
$FRAMEWORK_TARGET_DIR/iphonesimulator-arm64/Release-iphonesimulator/NodeMobile.framework/NodeMobile \
$FRAMEWORK_TARGET_DIR/iphonesimulator-x64/Release-iphonesimulator/NodeMobile.framework/NodeMobile \
$FRAMEWORK_TARGET_DIR/iphonesimulator-x64/Release-iphonesimulator/NodeMobile-x64.framework/NodeMobile-x64 \
-output $FRAMEWORK_TARGET_DIR/iphonesimulator-universal/NodeMobile.framework/NodeMobile

# Create a .xcframework combining both iphoneos and iphonesimulator
Expand Down

0 comments on commit e33d19d

Please sign in to comment.