Skip to content

Commit efaa90e

Browse files
Merge pull request #5 from e-gov/feature/MVAL-140-Make-nfclib-xcframework
MVAL-140: Add a build xcframework script
2 parents 37eacbe + be23a4a commit efaa90e

13 files changed

+76
-13
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/bin/bash
2+
3+
set -e
4+
set -o pipefail
5+
6+
# Variables - Customize these based on your project
7+
PROJECT_NAME="nfclib"
8+
SCHEME_NAME="nfclib" # Replace with your scheme name
9+
OUTPUT_DIR="${PWD}/build" # Output directory
10+
CONFIGURATION="Debug" # Use `Debug` or `Release` based on your requirement
11+
PROJECT_PATH="${PWD}/${PROJECT_NAME}.xcodeproj"
12+
BUILD_DIR="${HOME}/Library/Developer/Xcode/DerivedData/${PROJECT_NAME}/Build/Products" # Add BUILD_DIR definition
13+
14+
# Define universal output folder
15+
UNIVERSAL_OUTPUTFOLDER="${OUTPUT_DIR}/${CONFIGURATION}-universal"
16+
17+
# Clean previous builds
18+
echo "Cleaning previous builds..."
19+
rm -rf "$UNIVERSAL_OUTPUTFOLDER" "$BUILD_DIR/${CONFIGURATION}-iphoneos" "$BUILD_DIR/${CONFIGURATION}-iphonesimulator"
20+
21+
# Step 1: Build for iOS devices and simulators
22+
echo "Building for iOS devices and simulators..."
23+
for destination in "generic/platform=iOS" "generic/platform=iOS Simulator"; do
24+
xcodebuild ONLY_ACTIVE_ARCH=NO \
25+
-project "${PROJECT_PATH}" \
26+
-scheme "${SCHEME_NAME}" \
27+
-configuration "${CONFIGURATION}" \
28+
-destination "${destination}" \
29+
-derivedDataPath "${HOME}/Library/Developer/Xcode/DerivedData/nfclib" \
30+
SKIP_INSTALL=NO \
31+
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
32+
OTHER_SWIFT_FLAGS="-no-verify-emitted-module-interface"
33+
done
34+
35+
# Make sure the output directory exists
36+
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
37+
38+
# Ensure the documentation directory exists before copying
39+
if [ -d "${PROJECT_DIR}/../doc" ]; then
40+
cp -R "${PROJECT_DIR}/../doc" "${UNIVERSAL_OUTPUTFOLDER}/"
41+
else
42+
echo "Documentation directory not found: ${PROJECT_DIR}/../doc"
43+
fi
44+
45+
# Step 2. Create multiplatform binary framework bundle
46+
echo "Creating .xcframework..."
47+
xcodebuild -create-xcframework \
48+
-framework "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" \
49+
-framework "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework" \
50+
-output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.xcframework"
51+
52+
# Step 3: Output the result
53+
echo "Created ${PROJECT_NAME}.xcframework at ${UNIVERSAL_OUTPUTFOLDER}"

nfc-lib/nfc-lib/nfclib.xcodeproj/project.pbxproj

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@
269269
buildSettings = {
270270
ALWAYS_SEARCH_USER_PATHS = NO;
271271
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
272+
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
272273
CLANG_ANALYZER_NONNULL = YES;
273274
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
274275
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -322,6 +323,7 @@
322323
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
323324
MTL_FAST_MATH = YES;
324325
ONLY_ACTIVE_ARCH = YES;
326+
OTHER_SWIFT_FLAGS = "-no-verify-emitted-module-interface";
325327
SDKROOT = iphoneos;
326328
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
327329
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -335,6 +337,7 @@
335337
buildSettings = {
336338
ALWAYS_SEARCH_USER_PATHS = NO;
337339
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
340+
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
338341
CLANG_ANALYZER_NONNULL = YES;
339342
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
340343
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -381,6 +384,7 @@
381384
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
382385
MTL_ENABLE_DEBUG_INFO = NO;
383386
MTL_FAST_MATH = YES;
387+
OTHER_SWIFT_FLAGS = "-no-verify-emitted-module-interface";
384388
SDKROOT = iphoneos;
385389
SWIFT_COMPILATION_MODE = wholemodule;
386390
VALIDATE_PRODUCT = YES;
@@ -392,6 +396,7 @@
392396
137957BC2B0329890065716E /* Debug */ = {
393397
isa = XCBuildConfiguration;
394398
buildSettings = {
399+
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
395400
CLANG_ENABLE_MODULES = YES;
396401
CODE_SIGN_IDENTITY = "Apple Development";
397402
CODE_SIGN_STYLE = Automatic;
@@ -401,7 +406,7 @@
401406
DYLIB_COMPATIBILITY_VERSION = 1;
402407
DYLIB_CURRENT_VERSION = 1;
403408
DYLIB_INSTALL_NAME_BASE = "@rpath";
404-
ENABLE_MODULE_VERIFIER = YES;
409+
ENABLE_MODULE_VERIFIER = NO;
405410
GENERATE_INFOPLIST_FILE = YES;
406411
INFOPLIST_KEY_NSHumanReadableCopyright = "";
407412
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -414,6 +419,8 @@
414419
MARKETING_VERSION = 1.0;
415420
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
416421
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
422+
ONLY_ACTIVE_ARCH = NO;
423+
OTHER_SWIFT_FLAGS = "-no-verify-emitted-module-interface";
417424
PRODUCT_BUNDLE_IDENTIFIER = "ee.eesti.rvt.mvoting.nfc-lib";
418425
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
419426
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -428,6 +435,7 @@
428435
137957BD2B0329890065716E /* Release */ = {
429436
isa = XCBuildConfiguration;
430437
buildSettings = {
438+
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
431439
CLANG_ENABLE_MODULES = YES;
432440
CODE_SIGN_IDENTITY = "Apple Development";
433441
CODE_SIGN_STYLE = Automatic;
@@ -437,7 +445,7 @@
437445
DYLIB_COMPATIBILITY_VERSION = 1;
438446
DYLIB_CURRENT_VERSION = 1;
439447
DYLIB_INSTALL_NAME_BASE = "@rpath";
440-
ENABLE_MODULE_VERIFIER = YES;
448+
ENABLE_MODULE_VERIFIER = NO;
441449
GENERATE_INFOPLIST_FILE = YES;
442450
INFOPLIST_KEY_NSHumanReadableCopyright = "";
443451
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -450,6 +458,8 @@
450458
MARKETING_VERSION = 1.0;
451459
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
452460
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
461+
ONLY_ACTIVE_ARCH = NO;
462+
OTHER_SWIFT_FLAGS = "-no-verify-emitted-module-interface";
453463
PRODUCT_BUNDLE_IDENTIFIER = "ee.eesti.rvt.mvoting.nfc-lib";
454464
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
455465
PROVISIONING_PROFILE_SPECIFIER = "";

nfc-lib/nfc-lib/nfclib/Extensions/DataProtocol+Extension.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// Created by Timo Kallaste on 30.11.2023.
66
//
77

8-
import SwiftECC
8+
@_implementationOnly import SwiftECC
99

1010
extension DataProtocol where Self.Index == Int {
1111
var toHex: String {

nfc-lib/nfc-lib/nfclib/Extensions/ECpublicKey+Extensions.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import CommonCrypto
99
import CryptoTokenKit
10-
import SwiftECC
10+
@_implementationOnly import SwiftECC
1111

1212
extension ECPublicKey {
1313
convenience init?(domain: Domain, tlv: TKTLVRecord) throws {

nfc-lib/nfc-lib/nfclib/Extensions/TKBERTLVRecord+Extensions.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//
77

88
import CryptoTokenKit
9-
import SwiftECC
9+
@_implementationOnly import SwiftECC
1010

1111
extension TKBERTLVRecord {
1212
convenience init(tag: TKTLVTag, bytes: Bytes) {

nfc-lib/nfc-lib/nfclib/NFCIdCard.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Foundation
99
import CoreNFC
1010
import CommonCrypto
1111
import CryptoTokenKit
12-
import SwiftECC
12+
@_implementationOnly import SwiftECC
1313
import BigInt
1414

1515
public enum IdCardError: Error {

nfc-lib/nfc-lib/nfclib/Operations/OperationAuthenticate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//
77

88
import Foundation
9-
import SwiftECC
9+
@_implementationOnly import SwiftECC
1010
import CoreNFC
1111
import CryptoTokenKit
1212
import BigInt

nfc-lib/nfc-lib/nfclib/Operations/OperationReadCertificate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Foundation
99
import CoreNFC
1010
import CommonCrypto
1111
import CryptoTokenKit
12-
import SwiftECC
12+
@_implementationOnly import SwiftECC
1313
import BigInt
1414
import Security
1515

nfc-lib/nfc-lib/nfclib/Operations/OperationReadPublicData.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Foundation
99
import CoreNFC
1010
import CommonCrypto
1111
import CryptoTokenKit
12-
import SwiftECC
12+
@_implementationOnly import SwiftECC
1313
import BigInt
1414

1515
enum ReadPublicDataError: Error {

nfc-lib/nfc-lib/nfclib/Operations/OperationSignHash.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Foundation
99
import CoreNFC
1010
import CommonCrypto
1111
import CryptoTokenKit
12-
import SwiftECC
12+
@_implementationOnly import SwiftECC
1313
import BigInt
1414
import CryptoKit
1515

0 commit comments

Comments
 (0)