Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
360 changes: 292 additions & 68 deletions .github/workflows/npm_release.yml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions build_all_ios.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ rm -rf ./dist
./build_nativescript.sh --no-vision
./build_tklivesync.sh --no-vision
./prepare_dSYMs.sh
./build_spm_artifacts.sh ios
./build_npm_ios.sh
1 change: 1 addition & 0 deletions build_all_vision.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ rm -rf ./dist
./build_nativescript.sh --no-catalyst --no-iphone --no-sim
./build_tklivesync.sh --no-catalyst --no-iphone --no-sim
./prepare_dSYMs.sh
./build_spm_artifacts.sh visionos
./build_npm_vision.sh
24 changes: 12 additions & 12 deletions build_npm_ios.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,26 @@ cp ./package.json "$OUTPUT_DIR"

cp -r "./project-template-ios/" "$OUTPUT_DIR/framework"

cp -r "dist/NativeScript.xcframework" "$OUTPUT_DIR/framework/internal"
cp -r "dist/TKLiveSync.xcframework" "$OUTPUT_DIR/framework/internal"

# The NativeScript / TKLiveSync xcframeworks are NO LONGER bundled in npm. They
# are published as GitHub Release artifacts and consumed via SwiftPM
# (github.com/NativeScript/ios-spm). Stamp the runtime version into the packaged
# template's SwiftPM reference so it resolves the matching release.
NPM_VERSION=$(node -e "console.log(require('./package.json').version)")
node ./scripts/stamp-template-version.mjs \
"$OUTPUT_DIR/framework/__PROJECT_NAME__.xcodeproj/project.pbxproj" \
"$NPM_VERSION"
Comment thread
NathanWalker marked this conversation as resolved.

# Build-time metadata generator is still shipped in npm (Phase 1). See the
# distribution plan for moving this to an on-demand artifact (Phase 2).
mkdir -p "$OUTPUT_DIR/framework/internal/metadata-generator-x86_64"
cp -r "metadata-generator/dist/x86_64/." "$OUTPUT_DIR/framework/internal/metadata-generator-x86_64"

mkdir -p "$OUTPUT_DIR/framework/internal/metadata-generator-arm64"
cp -r "metadata-generator/dist/arm64/." "$OUTPUT_DIR/framework/internal/metadata-generator-arm64"

# Add xcframeworks to .zip (NPM modules do not support symlinks, unzipping is done by {N} CLI)
(
set -e
cd $OUTPUT_DIR/framework/internal
zip -qr --symlinks XCFrameworks.zip *.xcframework
rm -rf *.xcframework
)

pushd "$OUTPUT_DIR"
npm pack
mv *.tgz ../
popd

checkpoint "npm package created."
checkpoint "npm package created."
24 changes: 12 additions & 12 deletions build_npm_vision.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,26 @@ cp ./package.json "$OUTPUT_DIR"

cp -r "./project-template-vision/" "$OUTPUT_DIR/framework"

cp -r "dist/NativeScript.xcframework" "$OUTPUT_DIR/framework/internal"
cp -r "dist/TKLiveSync.xcframework" "$OUTPUT_DIR/framework/internal"

# The NativeScript / TKLiveSync xcframeworks are NO LONGER bundled in npm. They
# are published as GitHub Release artifacts and consumed via SwiftPM
# (github.com/NativeScript/ios-spm). Stamp the runtime version into the packaged
# template's SwiftPM reference so it resolves the matching release.
NPM_VERSION=$(node -e "console.log(require('./package.json').version)")
node ./scripts/stamp-template-version.mjs \
"$OUTPUT_DIR/framework/__PROJECT_NAME__.xcodeproj/project.pbxproj" \
"$NPM_VERSION"
Comment thread
NathanWalker marked this conversation as resolved.

# Build-time metadata generator is still shipped in npm (Phase 1). See the
# distribution plan for moving this to an on-demand artifact (Phase 2).
mkdir -p "$OUTPUT_DIR/framework/internal/metadata-generator-x86_64"
cp -r "metadata-generator/dist/x86_64/." "$OUTPUT_DIR/framework/internal/metadata-generator-x86_64"

mkdir -p "$OUTPUT_DIR/framework/internal/metadata-generator-arm64"
cp -r "metadata-generator/dist/arm64/." "$OUTPUT_DIR/framework/internal/metadata-generator-arm64"

# Add xcframeworks to .zip (NPM modules do not support symlinks, unzipping is done by {N} CLI)
(
set -e
cd $OUTPUT_DIR/framework/internal
zip -qr --symlinks XCFrameworks.zip *.xcframework
rm -rf *.xcframework
)

pushd "$OUTPUT_DIR"
npm pack
mv *.tgz ../
popd

checkpoint "npm package created."
checkpoint "npm package created."
83 changes: 83 additions & 0 deletions build_spm_artifacts.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#!/bin/bash
# Package the built xcframeworks as SwiftPM binary-target artifacts:
# * a .zip per xcframework (framework at the zip root, symlinks preserved)
# * a SHA-256 checksum for each (the value SwiftPM's binaryTarget(checksum:) expects)
#
# Output goes to dist/artifacts/:
# <name>.zip and a combined checksums.env (KEY=sha256 lines)
#
# Usage: ./build_spm_artifacts.sh [ios|visionos] (default: ios)
#
# These artifacts are uploaded to the GitHub Release and referenced by
# github.com/NativeScript/ios-spm (see scripts/stamp-spm-release.mjs).
set -e
source "$(dirname "$0")/build_utils.sh"

TARGET="${1:-ios}"
DIST="$(pwd)/dist"
OUT="$DIST/artifacts"

case "$TARGET" in
ios)
NS_ZIP="NativeScript.xcframework.zip"
TK_ZIP="TKLiveSync.xcframework.zip"
NS_KEY="NS_CHECKSUM_NATIVESCRIPT_IOS"
TK_KEY="NS_CHECKSUM_TKLIVESYNC_IOS"
;;
visionos|vision|xr)
TARGET="visionos"
NS_ZIP="NativeScript.visionos.xcframework.zip"
TK_ZIP="TKLiveSync.visionos.xcframework.zip"
NS_KEY="NS_CHECKSUM_NATIVESCRIPT_VISIONOS"
TK_KEY="NS_CHECKSUM_TKLIVESYNC_VISIONOS"
;;
*)
echo "Unknown target '$TARGET' (expected ios or visionos)" >&2
exit 1
;;
esac

checkpoint "Packaging SwiftPM artifacts for $TARGET..."
rm -rf "$OUT"
mkdir -p "$OUT"

# SwiftPM's binaryTarget(checksum:) is the SHA-256 of the zip. `swift package
# compute-checksum` is the canonical producer; shasum -a 256 yields the same
# value and is the portable fallback.
compute_checksum() {
local zip="$1"
if command -v swift >/dev/null 2>&1 && swift package compute-checksum "$zip" >/dev/null 2>&1; then
swift package compute-checksum "$zip"
else
shasum -a 256 "$zip" | awk '{print $1}'
fi
}

# zip_xcframework <SourceXcframeworkDir> <OutputZipName>
zip_xcframework() {
local src="$1" zipname="$2"
if [ ! -d "$DIST/$src" ]; then
echo "Missing $DIST/$src — run the runtime build first." >&2
exit 1
fi
( cd "$DIST" && zip -qr --symlinks "$OUT/$zipname" "$src" )
}

zip_xcframework "NativeScript.xcframework" "$NS_ZIP"
zip_xcframework "TKLiveSync.xcframework" "$TK_ZIP"

NS_SUM="$(compute_checksum "$OUT/$NS_ZIP")"
TK_SUM="$(compute_checksum "$OUT/$TK_ZIP")"

# Per-target filename so the iOS and visionOS env files don't collide when the
# release/stamp jobs merge both platforms' artifacts into one directory.
CHECKSUMS="$OUT/checksums-$TARGET.env"
{
echo "${NS_KEY}=${NS_SUM}"
echo "${TK_KEY}=${TK_SUM}"
} > "$CHECKSUMS"

checkpoint "SwiftPM artifacts ready in $OUT:"
( cd "$OUT" && ls -lh *.zip )
echo "Checksums ($CHECKSUMS):"
cat "$CHECKSUMS"
35 changes: 27 additions & 8 deletions project-template-ios/__PROJECT_NAME__.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
objects = {

/* Begin PBXBuildFile section */
39940D9122C4EF600050DDE1 /* NativeScript.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 39940D8C22C4EAAA0050DDE1 /* NativeScript.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
39940E1C22C5DFFF0050DDE1 /* TKLiveSync.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 39940E1B22C5DFFF0050DDE1 /* TKLiveSync.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
AA10000000000000000000C1 /* NativeScript in Frameworks */ = {isa = PBXBuildFile; productRef = AA10000000000000000000B1 /* NativeScript */; };
858B842D18CA22B800AB12DE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 858B833A18CA111C00AB12DE /* InfoPlist.strings */; };
AAA0AADB2A54B96B00EE55A4 /* NativeScriptStart.m in Sources */ = {isa = PBXBuildFile; fileRef = AAA0AADA2A54B96B00EE55A4 /* NativeScriptStart.m */; };
CD45EE7C18DC2D5800FB50C0 /* app in Resources */ = {isa = PBXBuildFile; fileRef = CD45EE7A18DC2D5800FB50C0 /* app */; };
Expand All @@ -22,8 +21,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
39940D9122C4EF600050DDE1 /* NativeScript.xcframework in Embed Frameworks */,
39940E1C22C5DFFF0050DDE1 /* TKLiveSync.xcframework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
Expand All @@ -35,8 +32,6 @@
391174B721F1D99900BA2583 /* plugins-release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "plugins-release.xcconfig"; sourceTree = SOURCE_ROOT; };
391174B821F1D99900BA2583 /* plugins-debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "plugins-debug.xcconfig"; sourceTree = SOURCE_ROOT; };
39940D8122C4E84C0050DDE1 /* __PROJECT_NAME__.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = __PROJECT_NAME__.entitlements; sourceTree = "<group>"; };
39940D8C22C4EAAA0050DDE1 /* NativeScript.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = NativeScript.xcframework; path = internal/NativeScript.xcframework; sourceTree = "<group>"; };
39940E1B22C5DFFF0050DDE1 /* TKLiveSync.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = TKLiveSync.xcframework; path = internal/TKLiveSync.xcframework; sourceTree = "<group>"; };
42C751E2232B769100186695 /* nativescript-pre-link */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "nativescript-pre-link"; path = "internal/nativescript-pre-link"; sourceTree = SOURCE_ROOT; };
42C751E3232B769100186695 /* strip-dynamic-framework-architectures.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "strip-dynamic-framework-architectures.sh"; path = "internal/strip-dynamic-framework-architectures.sh"; sourceTree = SOURCE_ROOT; };
42C751E4232B769100186695 /* nsld.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = nsld.sh; path = internal/nsld.sh; sourceTree = SOURCE_ROOT; };
Expand All @@ -63,6 +58,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
AA10000000000000000000C1 /* NativeScript in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -115,8 +111,6 @@
858B833018CA111C00AB12DE /* Frameworks */ = {
isa = PBXGroup;
children = (
39940E1B22C5DFFF0050DDE1 /* TKLiveSync.xcframework */,
39940D8C22C4EAAA0050DDE1 /* NativeScript.xcframework */,
);
name = Frameworks;
sourceTree = "<group>";
Expand Down Expand Up @@ -176,6 +170,9 @@
dependencies = (
);
name = __PROJECT_NAME__;
packageProductDependencies = (
AA10000000000000000000B1 /* NativeScript */,
);
productName = JDBridgeApp;
productReference = 858B843318CA22B800AB12DE /* __PROJECT_NAME__.app */;
productType = "com.apple.product-type.application";
Expand Down Expand Up @@ -206,6 +203,9 @@
Base,
);
mainGroup = 858B832518CA111C00AB12DE;
packageReferences = (
AA10000000000000000000A1 /* XCRemoteSwiftPackageReference "ios-spm" */,
);
productRefGroup = 858B832F18CA111C00AB12DE /* Products */;
projectDirPath = "";
projectRoot = "";
Expand Down Expand Up @@ -498,6 +498,25 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */

/* Begin XCRemoteSwiftPackageReference section */
AA10000000000000000000A1 /* XCRemoteSwiftPackageReference "ios-spm" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/NativeScript/ios-spm.git";
requirement = {
kind = exactVersion;
version = "__NS_RUNTIME_VERSION__";
};
};
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
AA10000000000000000000B1 /* NativeScript */ = {
isa = XCSwiftPackageProductDependency;
package = AA10000000000000000000A1 /* XCRemoteSwiftPackageReference "ios-spm" */;
productName = NativeScript;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 858B832618CA111C00AB12DE /* Project object */;
}
7 changes: 6 additions & 1 deletion project-template-ios/internal/nativescript-build.xcconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
// * NativeScript build related flags
// * Add [sdk=*] after each one to avoid conflict with CocoaPods flags
OTHER_LDFLAGS[sdk=*] = $(inherited) -ObjC -sectcreate __DATA __TNSMetadata "$(CONFIGURATION_BUILD_DIR)/metadata-$(CURRENT_ARCH).bin" -framework NativeScript -framework TKLiveSync -F"$(SRCROOT)/internal" -licucore -lz -lc++ -framework Foundation -framework UIKit -framework CoreGraphics -framework CoreServices -framework Security
// * NativeScript + TKLiveSync are provided by the SwiftPM "NativeScript" product
// * (github.com/NativeScript/ios-spm), so SwiftPM links/embeds them automatically.
// * The explicit -framework NativeScript / -framework TKLiveSync / -F internal are
// * intentionally omitted. SwiftPM stages the resolved framework slice into
// * CONFIGURATION_BUILD_DIR (below), which is where the metadata generator finds it.
OTHER_LDFLAGS[sdk=*] = $(inherited) -ObjC -sectcreate __DATA __TNSMetadata "$(CONFIGURATION_BUILD_DIR)/metadata-$(CURRENT_ARCH).bin" -licucore -lz -lc++ -framework Foundation -framework UIKit -framework CoreGraphics -framework CoreServices -framework Security

// We need to add CONFIGURATION_BUILD_DIR here so that we can explicitly quote-escape any paths in it, because the implicitly added path by Xcode is not always escaped
FRAMEWORK_SEARCH_PATHS[sdk=*] = $(inherited) "$(SRCROOT)/internal/" "$(CONFIGURATION_BUILD_DIR)"
Expand Down
35 changes: 27 additions & 8 deletions project-template-vision/__PROJECT_NAME__.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
objects = {

/* Begin PBXBuildFile section */
39940D9122C4EF600050DDE1 /* NativeScript.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 39940D8C22C4EAAA0050DDE1 /* NativeScript.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
39940E1C22C5DFFF0050DDE1 /* TKLiveSync.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 39940E1B22C5DFFF0050DDE1 /* TKLiveSync.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
AA10000000000000000000C1 /* NativeScriptVisionOS in Frameworks */ = {isa = PBXBuildFile; productRef = AA10000000000000000000B1 /* NativeScriptVisionOS */; };
858B842D18CA22B800AB12DE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 858B833A18CA111C00AB12DE /* InfoPlist.strings */; };
AAA0AADB2A54B96B00EE55A4 /* NativeScriptStart.m in Sources */ = {isa = PBXBuildFile; fileRef = AAA0AADA2A54B96B00EE55A4 /* NativeScriptStart.m */; };
CD45EE7C18DC2D5800FB50C0 /* app in Resources */ = {isa = PBXBuildFile; fileRef = CD45EE7A18DC2D5800FB50C0 /* app */; };
Expand All @@ -21,8 +20,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
39940D9122C4EF600050DDE1 /* NativeScript.xcframework in Embed Frameworks */,
39940E1C22C5DFFF0050DDE1 /* TKLiveSync.xcframework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
Expand All @@ -34,8 +31,6 @@
391174B721F1D99900BA2583 /* plugins-release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "plugins-release.xcconfig"; sourceTree = SOURCE_ROOT; };
391174B821F1D99900BA2583 /* plugins-debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "plugins-debug.xcconfig"; sourceTree = SOURCE_ROOT; };
39940D8122C4E84C0050DDE1 /* __PROJECT_NAME__.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = __PROJECT_NAME__.entitlements; sourceTree = "<group>"; };
39940D8C22C4EAAA0050DDE1 /* NativeScript.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = NativeScript.xcframework; path = internal/NativeScript.xcframework; sourceTree = "<group>"; };
39940E1B22C5DFFF0050DDE1 /* TKLiveSync.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = TKLiveSync.xcframework; path = internal/TKLiveSync.xcframework; sourceTree = "<group>"; };
42C751E2232B769100186695 /* nativescript-pre-link */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "nativescript-pre-link"; path = "internal/nativescript-pre-link"; sourceTree = SOURCE_ROOT; };
42C751E3232B769100186695 /* strip-dynamic-framework-architectures.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "strip-dynamic-framework-architectures.sh"; path = "internal/strip-dynamic-framework-architectures.sh"; sourceTree = SOURCE_ROOT; };
42C751E4232B769100186695 /* nsld.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = nsld.sh; path = internal/nsld.sh; sourceTree = SOURCE_ROOT; };
Expand All @@ -61,6 +56,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
AA10000000000000000000C1 /* NativeScriptVisionOS in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -112,8 +108,6 @@
858B833018CA111C00AB12DE /* Frameworks */ = {
isa = PBXGroup;
children = (
39940E1B22C5DFFF0050DDE1 /* TKLiveSync.xcframework */,
39940D8C22C4EAAA0050DDE1 /* NativeScript.xcframework */,
);
name = Frameworks;
sourceTree = "<group>";
Expand Down Expand Up @@ -173,6 +167,9 @@
dependencies = (
);
name = __PROJECT_NAME__;
packageProductDependencies = (
AA10000000000000000000B1 /* NativeScriptVisionOS */,
);
productName = JDBridgeApp;
productReference = 858B843318CA22B800AB12DE /* __PROJECT_NAME__.app */;
productType = "com.apple.product-type.application";
Expand Down Expand Up @@ -203,6 +200,9 @@
Base,
);
mainGroup = 858B832518CA111C00AB12DE;
packageReferences = (
AA10000000000000000000A1 /* XCRemoteSwiftPackageReference "ios-spm" */,
);
productRefGroup = 858B832F18CA111C00AB12DE /* Products */;
projectDirPath = "";
projectRoot = "";
Expand Down Expand Up @@ -504,6 +504,25 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */

/* Begin XCRemoteSwiftPackageReference section */
AA10000000000000000000A1 /* XCRemoteSwiftPackageReference "ios-spm" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/NativeScript/ios-spm.git";
requirement = {
kind = exactVersion;
version = "__NS_RUNTIME_VERSION__";
};
};
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
AA10000000000000000000B1 /* NativeScriptVisionOS */ = {
isa = XCSwiftPackageProductDependency;
package = AA10000000000000000000A1 /* XCRemoteSwiftPackageReference "ios-spm" */;
productName = NativeScriptVisionOS;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 858B832618CA111C00AB12DE /* Project object */;
}
5 changes: 4 additions & 1 deletion project-template-vision/internal/nativescript-build.xcconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
// * NativeScript build related flags
// * Add [sdk=*] after each one to avoid conflict with CocoaPods flags
OTHER_LDFLAGS[sdk=*] = $(inherited) -ObjC -sectcreate __DATA __TNSMetadata "$(CONFIGURATION_BUILD_DIR)/metadata-$(CURRENT_ARCH).bin" -framework NativeScript -framework TKLiveSync -F"$(SRCROOT)/internal" -licucore -lz -lc++ -framework Foundation -framework UIKit -framework CoreGraphics -framework CoreServices -framework Security
// * NativeScript + TKLiveSync are provided by the SwiftPM "NativeScriptVisionOS" product
// * (github.com/NativeScript/ios-spm); SwiftPM links/embeds them automatically. The
// * explicit -framework NativeScript / -framework TKLiveSync / -F internal are omitted.
OTHER_LDFLAGS[sdk=*] = $(inherited) -ObjC -sectcreate __DATA __TNSMetadata "$(CONFIGURATION_BUILD_DIR)/metadata-$(CURRENT_ARCH).bin" -licucore -lz -lc++ -framework Foundation -framework UIKit -framework CoreGraphics -framework CoreServices -framework Security

// We need to add CONFIGURATION_BUILD_DIR here so that we can explicitly quote-escape any paths in it, because the implicitly added path by Xcode is not always escaped
FRAMEWORK_SEARCH_PATHS[sdk=*] = $(inherited) "$(SRCROOT)/internal/" "$(CONFIGURATION_BUILD_DIR)"
Expand Down
Loading
Loading