diff --git a/.github/workflows/carthage.yml b/.github/workflows/carthage.yml new file mode 100644 index 0000000..574a6a0 --- /dev/null +++ b/.github/workflows/carthage.yml @@ -0,0 +1,27 @@ +name: Carthage +on: [push, workflow_dispatch] + +jobs: + build: + name: Build + runs-on: macOS-latest + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Install Carthage + run: | + brew update + brew install carthage + + - name: Create Cartfile + run: | + # Delete all of the old tags (if any) and create a new tag for building + git tag | xargs git tag -d + git tag 1.0 + + echo "git \"file://$(pwd)\"" > ./Cartfile + + - name: Build + run: | + ./scripts/carthage.sh update diff --git a/.github/workflows/cocoapods.yml b/.github/workflows/cocoapods.yml new file mode 100644 index 0000000..b761b55 --- /dev/null +++ b/.github/workflows/cocoapods.yml @@ -0,0 +1,23 @@ +name: Cocoapods +on: [push, workflow_dispatch] + +jobs: + lint: + name: Lint + runs-on: macOS-11 + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Setup Cocoapods + uses: maxim-lobanov/setup-cocoapods@v1 + with: + version: latest + + - name: Lint (Dynamic Library) + run: | + pod lib lint + + - name: Lint (Static Library) + run: | + pod lib lint --use-libraries diff --git a/.github/workflows/swift-pacakge.yml b/.github/workflows/swift-pacakge.yml new file mode 100644 index 0000000..afcf663 --- /dev/null +++ b/.github/workflows/swift-pacakge.yml @@ -0,0 +1,50 @@ +name: Swift Package +on: [push, workflow_dispatch] + +jobs: + build: + strategy: + matrix: + os: [macOS-latest, ubuntu-latest] + + name: Build + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + swift --version + swift build -v + + test: + strategy: + matrix: + os: [macOS-latest, ubuntu-latest] + + name: Test + runs-on: ${{ matrix.os }} + needs: build + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Test + run: | + swift test -v --enable-code-coverage + + - name: Generate Code Coverage File + if: ${{ runner.os == 'macOS' && github.event_name == 'push' && github.ref == 'refs/heads/main' }} + run: | + xcrun llvm-cov export --instr-profile=.build/x86_64-apple-macosx/debug/codecov/default.profdata .build/x86_64-apple-macosx/debug/HalfPackageTests.xctest/Contents/MacOS/HalfPackageTests > ./info.lcov + + - name: Upload Code Coverage + if: ${{ runner.os == 'macOS' && github.event_name == 'push' && github.ref == 'refs/heads/main' }} + uses: codecov/codecov-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: ./info.lcov + verbose: true diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml deleted file mode 100644 index 01ee3ed..0000000 --- a/.github/workflows/swift.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Test - -on: [push, pull_request] - -jobs: - build: - strategy: - matrix: - os: [macOS-latest, ubuntu-latest] - swift: ["5.1"] - runs-on: ${{ matrix.os }} - env: - SWIFT_VERSION: ${{ matrix.swift }} - SWIFT_EXEC: .swiftenv/shims/swift - steps: - - uses: actions/checkout@v2 - - name: Install Swift - run: | - git clone https://github.com/kylef/swiftenv.git ~/.swiftenv - ~/.swiftenv/bin/swiftenv install $SWIFT_VERSION --skip-existing - ~/.swiftenv/bin/swiftenv rehash - - name: Build - run: | - ~/$SWIFT_EXEC --version - ~/$SWIFT_EXEC build -v - - name: Test - run: | - ~/$SWIFT_EXEC test -v diff --git a/.github/workflows/upload-assets.yml b/.github/workflows/upload-assets.yml new file mode 100644 index 0000000..c59f188 --- /dev/null +++ b/.github/workflows/upload-assets.yml @@ -0,0 +1,49 @@ +name: Upload Assets +on: + release: + types: [published] + +jobs: + build: + name: Upload Assets + runs-on: macOS-latest + env: + TMPDIR: /tmp/.half.xcframework.build + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + ./scripts/xcframework.sh -output ${TMPDIR}/Half.xcframework + + - name: Create Zip + run: | + cd ${TMPDIR} + zip -rX Half.xcframework.zip Half.xcframework + + - name: Upload Zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ${{ env.TMPDIR }}/Half.xcframework.zip + asset_name: Half.xcframework.zip + asset_content_type: application/zip + + - name: Create Tar + run: | + cd ${TMPDIR} + tar -zcvf Half.xcframework.tar.gz Half.xcframework + + - name: Upload Tar + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ${{ env.TMPDIR }}/Half.xcframework.tar.gz + asset_name: Half.xcframework.tar.gz + asset_content_type: application/gzip diff --git a/.github/workflows/xcframework.yml b/.github/workflows/xcframework.yml new file mode 100644 index 0000000..f159213 --- /dev/null +++ b/.github/workflows/xcframework.yml @@ -0,0 +1,17 @@ +name: XCFramework +on: [push, workflow_dispatch] + +jobs: + build: + name: Build + runs-on: macOS-latest + env: + TMPDIR: /tmp/.half.xcframework.build + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + ./scripts/xcframework.sh -output ${TMPDIR}/Half.xcframework diff --git a/.github/workflows/xcodebuild.yml b/.github/workflows/xcodebuild.yml new file mode 100644 index 0000000..a39f2c5 --- /dev/null +++ b/.github/workflows/xcodebuild.yml @@ -0,0 +1,110 @@ +name: Xcode Project +on: [push, workflow_dispatch] + +jobs: + ios: + name: iOS + runs-on: macOS-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build iOS + run: | + xcodebuild -project Half.xcodeproj -scheme "Half" -destination "generic/platform=iOS" -configuration Debug + + - name: Build iOS Simulator + run: | + xcodebuild -project Half.xcodeproj -scheme "Half" -destination "generic/platform=iOS Simulator" -configuration Debug + + - name: Test + run: | + IOS_SIM="$(xcrun simctl list devices available | grep "iPhone [0-9]" | sort -rV | head -n 1 | sed -E 's/(.+)[ ]*\([^)]*\)[ ]*\([^)]*\)/\1/' | awk '{$1=$1};1')" + if [ "${#IOS_SIM}" == "0" ]; then + IOS_SIM = "iPhone 12 Pro" # Fallback Simulator + fi + + xcodebuild -project Half.xcodeproj -scheme "Half" -testPlan "HalfTests" -destination "platform=iOS Simulator,name=$IOS_SIM" -configuration Debug ONLY_ACTIVE_ARCH=YES test + + maccatalyst: + name: Mac Catalyst + runs-on: macOS-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + xcodebuild -project Half.xcodeproj -scheme "Half" -destination "generic/platform=macOS,variant=Mac Catalyst" -configuration Debug + + - name: Test + run: | + xcodebuild -project Half.xcodeproj -scheme "Half" -testPlan "HalfTests" -destination "platform=macOS,variant=Mac Catalyst" -configuration Debug ONLY_ACTIVE_ARCH=YES test + + macos: + name: macOS + runs-on: macOS-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + xcodebuild -project Half.xcodeproj -scheme "Half macOS" -destination "generic/platform=macOS" -configuration Debug + + - name: Test + run: | + xcodebuild -project Half.xcodeproj -scheme "Half macOS" -testPlan "Half macOS Tests" -configuration Debug ONLY_ACTIVE_ARCH=YES test + + tvos: + name: tvOS + runs-on: macOS-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build tvOS + run: | + xcodebuild -project Half.xcodeproj -scheme "Half tvOS" -destination "generic/platform=tvOS" -configuration Debug + + - name: Build tvOS Simulator + run: | + xcodebuild -project Half.xcodeproj -scheme "Half tvOS" -destination "generic/platform=tvOS Simulator" -configuration Debug + + - name: Test + run: | + TVOS_SIM="$(xcrun simctl list devices available | grep "Apple TV" | sort -V | head -n 1 | sed -E 's/(.+)[ ]*\([^)]*\)[ ]*\([^)]*\)/\1/' | awk '{$1=$1};1')" + if [ "${#TVOS_SIM}" == "0" ]; then + TVOS_SIM = "Apple TV" # Fallback Simulator + fi + + xcodebuild -project Half.xcodeproj -scheme "Half tvOS" -testPlan "Half tvOS Tests" -destination "platform=tvOS Simulator,name=$TVOS_SIM" -configuration Debug ONLY_ACTIVE_ARCH=YES test + + watchos: + name: watchOS + runs-on: macOS-11 + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build watchOS + run: | + xcodebuild -project Half.xcodeproj -scheme "Half watchOS" -destination "generic/platform=watchOS" -configuration Debug + + - name: Build watchOS Simulator + run: | + xcodebuild -project Half.xcodeproj -scheme "Half watchOS" -destination "generic/platform=watchOS Simulator" -configuration Debug + + - name: Test + run: | + WATCHOS_SIM="$(xcrun simctl list devices available | grep "Apple Watch" | sort -rV | head -n 1 | sed -E 's/(.+)[ ]*\([^)]*\)[ ]*\([^)]*\)/\1/' | awk '{$1=$1};1')" + if [ "${#WATCHOS_SIM}" == "0" ]; then + WATCHOS_SIM = "Apple Watch Series 6 - 44mm" # Fallback Simulator + fi + + xcodebuild -project Half.xcodeproj -scheme "Half watchOS" -testPlan "Half watchOS Tests" -destination "platform=watchOS Simulator,name=$WATCHOS_SIM" -configuration Debug ONLY_ACTIVE_ARCH=YES test diff --git a/.gitignore b/.gitignore index 3f97df6..85c6533 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ Half.xcodeproj/project.xcworkspace Half.xcodeproj/xcuserdata -.swiftpm + .build +.swiftpm +scripts/build gyb.pyc diff --git a/.swiftlint.yml b/.swiftlint.yml index 80ae263..c69815d 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,8 +1,9 @@ disabled_rules: - file_length - line_length + - cyclomatic_complexity - type_body_length - - function_body_length + - type_name opt_in_rules: - anyobject_protocol @@ -62,6 +63,9 @@ excluded: - Tests/HalfTests/XCTestManifests.swift - Tests/CHalfTests/XCTestManifests.swift +function_body_length: + - 60 #warning + identifier_name: excluded: - pi diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b44d2d0..0000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -os: osx -language: swift -osx_image: xcode11.3 -xcode_project: Half.xcodeproj - -script: - - set -o pipefail && travis_retry xcodebuild -scheme "Half" -destination "platform=iOS Simulator,name=iPhone 11 Pro Max" -configuration Debug ONLY_ACTIVE_ARCH=YES -enableCodeCoverage YES test - - set -o pipefail && travis_retry xcodebuild -scheme "Half macOS" -destination "platform=macOS" -configuration Debug ONLY_ACTIVE_ARCH=YES -enableCodeCoverage YES test - - set -o pipefail && travis_retry xcodebuild -scheme "Half tvOS" -destination "platform=tvOS Simulator,name=Apple TV 4K" -configuration Debug ONLY_ACTIVE_ARCH=YES -enableCodeCoverage YES test - - set -o pipefail && travis_retry xcodebuild -scheme "Half watchOS" -destination "platform=watchOS Simulator,name=Apple Watch Series 5 - 44mm" -configuration Debug ONLY_ACTIVE_ARCH=YES - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/Half.podspec b/Half.podspec index e709a13..a86f47d 100644 --- a/Half.podspec +++ b/Half.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "Half" - s.version = "1.2.0" + s.version = "1.2.1" s.summary = "Swift Half-Precision Floating Point" s.description = <<-DESC A lightweight framework containing a Swift implementation for a half-precision floating point type for iOS, macOS, tvOS, and watchOS. @@ -9,26 +9,26 @@ Pod::Spec.new do |s| s.homepage = "https://github.com/SomeRandomiOSDev/Half" s.license = "MIT" - s.author = { "Joseph Newton" => "somerandomiosdev@gmail.com" } + s.author = { "Joe Newton" => "somerandomiosdev@gmail.com" } + s.source = { :git => "https://github.com/SomeRandomiOSDev/Half.git", :tag => s.version.to_s } - s.ios.deployment_target = '8.0' + s.ios.deployment_target = '9.0' s.macos.deployment_target = '10.10' s.tvos.deployment_target = '9.0' s.watchos.deployment_target = '2.0' - s.source = { :git => "https://github.com/SomeRandomiOSDev/Half.git", :tag => s.version.to_s } s.source_files = 'Sources/**/*.{swift,h,c}' - s.frameworks = 'Foundation' s.swift_versions = ['4.0', '4.2', '5.0'] s.cocoapods_version = '>= 1.7.3' s.test_spec 'Tests' do |ts| - ts.ios.deployment_target = '8.0' - ts.macos.deployment_target = '10.10' - ts.tvos.deployment_target = '9.0' + ts.ios.deployment_target = '9.0' + ts.macos.deployment_target = '10.10' + ts.tvos.deployment_target = '9.0' + ts.watchos.deployment_target = '2.0' - ts.source_files = 'Tests/CHalfTests/*Tests.swift', - 'Tests/HalfTests/*Tests.swift' + ts.source_files = 'Tests/CHalfTests/*Tests.swift', + 'Tests/HalfTests/*Tests.swift' end end diff --git a/Half.xcodeproj/project.pbxproj b/Half.xcodeproj/project.pbxproj index cf6883f..1b4015c 100644 --- a/Half.xcodeproj/project.pbxproj +++ b/Half.xcodeproj/project.pbxproj @@ -7,242 +7,287 @@ objects = { /* Begin PBXAggregateTarget section */ - DDB1DF77240B7F4700C20FED /* Generate Sources */ = { + DD2FBC27258BE8BB00DB3211 /* XCFramework */ = { isa = PBXAggregateTarget; - buildConfigurationList = DDB1DF78240B7F4700C20FED /* Build configuration list for PBXAggregateTarget "Generate Sources" */; + buildConfigurationList = DD2FBC2A258BE8BB00DB3211 /* Build configuration list for PBXAggregateTarget "XCFramework" */; buildPhases = ( - DDB1DF7B240B7F5000C20FED /* Generate Sources */, + DD2FBC33258BE8C600DB3211 /* Build XCFramework */, ); dependencies = ( ); - name = "Generate Sources"; - productName = "Generate Sources"; + name = XCFramework; + productName = XCFramework; }; - DDFEECA423F1BA0B0096015C /* Run SwiftLint */ = { + DD86D56423D11C4B0046E63E /* Run SwiftLint */ = { isa = PBXAggregateTarget; - buildConfigurationList = DDFEECA523F1BA0B0096015C /* Build configuration list for PBXAggregateTarget "Run SwiftLint" */; + buildConfigurationList = DD86D56523D11C4B0046E63E /* Build configuration list for PBXAggregateTarget "Run SwiftLint" */; buildPhases = ( - DDFEECA923F1BA160096015C /* Run SwiftLint */, + DD86D56823D11C550046E63E /* Run SwiftLint */, ); dependencies = ( ); name = "Run SwiftLint"; productName = "Run SwiftLint"; }; + DD9E302F271DBFF500C6D170 /* Generate Sources */ = { + isa = PBXAggregateTarget; + buildConfigurationList = DD9E3030271DBFF500C6D170 /* Build configuration list for PBXAggregateTarget "Generate Sources" */; + buildPhases = ( + DD9E3033271DC00700C6D170 /* Generate Sources */, + ); + dependencies = ( + ); + name = "Generate Sources"; + productName = "Generate Sources"; + }; /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - DD94FBF823F3C5BB0041D4EC /* half.h in Headers */ = {isa = PBXBuildFile; fileRef = DDFEEC8423F0B6FF0096015C /* half.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD94FBF923F3C5BB0041D4EC /* half.h in Headers */ = {isa = PBXBuildFile; fileRef = DDFEEC8423F0B6FF0096015C /* half.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD94FBFA23F3C5BC0041D4EC /* half.h in Headers */ = {isa = PBXBuildFile; fileRef = DDFEEC8423F0B6FF0096015C /* half.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD94FBFB23F3C5BD0041D4EC /* half.h in Headers */ = {isa = PBXBuildFile; fileRef = DDFEEC8423F0B6FF0096015C /* half.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDB1DF9A240CCA5A00C20FED /* Half@swift-4.2.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB1DF98240CCA5900C20FED /* Half@swift-4.2.swift */; }; - DDB1DF9B240CCA5A00C20FED /* Half@swift-4.2.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB1DF98240CCA5900C20FED /* Half@swift-4.2.swift */; }; - DDB1DF9C240CCA5A00C20FED /* Half@swift-4.2.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB1DF98240CCA5900C20FED /* Half@swift-4.2.swift */; }; - DDB1DF9D240CCA5A00C20FED /* Half@swift-4.2.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB1DF98240CCA5900C20FED /* Half@swift-4.2.swift */; }; - DDB1DF9E240CCA5A00C20FED /* Half@swift-4.0.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB1DF99240CCA5900C20FED /* Half@swift-4.0.swift */; }; - DDB1DF9F240CCA5A00C20FED /* Half@swift-4.0.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB1DF99240CCA5900C20FED /* Half@swift-4.0.swift */; }; - DDB1DFA0240CCA5A00C20FED /* Half@swift-4.0.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB1DF99240CCA5900C20FED /* Half@swift-4.0.swift */; }; - DDB1DFA1240CCA5A00C20FED /* Half@swift-4.0.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB1DF99240CCA5900C20FED /* Half@swift-4.0.swift */; }; - DDB8120323F587890079FEB5 /* CHalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB8120223F587890079FEB5 /* CHalfTests.swift */; }; - DDB8120423F587890079FEB5 /* CHalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB8120223F587890079FEB5 /* CHalfTests.swift */; }; - DDB8120523F587890079FEB5 /* CHalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB8120223F587890079FEB5 /* CHalfTests.swift */; }; - DDFEEC3D23EF13910096015C /* Half.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDFEEC3323EF13900096015C /* Half.framework */; }; - DDFEEC4223EF13910096015C /* HalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEC4123EF13910096015C /* HalfTests.swift */; }; - DDFEECC723F2001A0096015C /* Half.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDFEECBE23F2001A0096015C /* Half.framework */; }; - DDFEECE323F2003E0096015C /* Half.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDFEECDA23F2003E0096015C /* Half.framework */; }; - DDFEED0A23F200FE0096015C /* HalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEC4123EF13910096015C /* HalfTests.swift */; }; - DDFEED0B23F200FF0096015C /* HalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEC4123EF13910096015C /* HalfTests.swift */; }; - DDFEED4E23F26F170096015C /* Half+CodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED4D23F26F170096015C /* Half+CodingTests.swift */; }; - DDFEED4F23F26F170096015C /* Half+CodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED4D23F26F170096015C /* Half+CodingTests.swift */; }; - DDFEED5023F26F170096015C /* Half+CodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED4D23F26F170096015C /* Half+CodingTests.swift */; }; - DDFEED5223F2737B0096015C /* FunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED5123F2737B0096015C /* FunctionsTests.swift */; }; - DDFEED5323F2737B0096015C /* FunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED5123F2737B0096015C /* FunctionsTests.swift */; }; - DDFEED5423F2737B0096015C /* FunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED5123F2737B0096015C /* FunctionsTests.swift */; }; - DDFEED8323F345690096015C /* half.c in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED8223F345690096015C /* half.c */; }; - DDFEED8423F345690096015C /* half.c in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED8223F345690096015C /* half.c */; }; - DDFEED8523F345690096015C /* half.c in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED8223F345690096015C /* half.c */; }; - DDFEED8623F345690096015C /* half.c in Sources */ = {isa = PBXBuildFile; fileRef = DDFEED8223F345690096015C /* half.c */; }; - DDFEEDAB23F3593B0096015C /* Half+Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDA823F3593B0096015C /* Half+Coding.swift */; }; - DDFEEDAC23F3593B0096015C /* Half+Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDA823F3593B0096015C /* Half+Coding.swift */; }; - DDFEEDAD23F3593B0096015C /* Half+Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDA823F3593B0096015C /* Half+Coding.swift */; }; - DDFEEDAE23F3593B0096015C /* Half+Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDA823F3593B0096015C /* Half+Coding.swift */; }; - DDFEEDAF23F3593B0096015C /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDA923F3593B0096015C /* Functions.swift */; }; - DDFEEDB023F3593B0096015C /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDA923F3593B0096015C /* Functions.swift */; }; - DDFEEDB123F3593B0096015C /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDA923F3593B0096015C /* Functions.swift */; }; - DDFEEDB223F3593B0096015C /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDA923F3593B0096015C /* Functions.swift */; }; - DDFEEDB323F3593B0096015C /* Half.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDAA23F3593B0096015C /* Half.swift */; }; - DDFEEDB423F3593B0096015C /* Half.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDAA23F3593B0096015C /* Half.swift */; }; - DDFEEDB523F3593B0096015C /* Half.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDAA23F3593B0096015C /* Half.swift */; }; - DDFEEDB623F3593B0096015C /* Half.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDFEEDAA23F3593B0096015C /* Half.swift */; }; + DD48BC98270E0DE800D842BC /* Half.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD86D5C423D11D140046E63E /* Half.framework */; }; + DD86D54723D11B3E0046E63E /* Half.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD86D53D23D11B3E0046E63E /* Half.framework */; }; + DD86D57923D11C860046E63E /* Half.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD86D57023D11C860046E63E /* Half.framework */; }; + DD86D59523D11CA00046E63E /* Half.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD86D58C23D11CA00046E63E /* Half.framework */; }; + DD9E2FC3271DBEE700C6D170 /* HalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC0271DBEE700C6D170 /* HalfTests.swift */; }; + DD9E2FC4271DBEE700C6D170 /* HalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC0271DBEE700C6D170 /* HalfTests.swift */; }; + DD9E2FC5271DBEE700C6D170 /* HalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC0271DBEE700C6D170 /* HalfTests.swift */; }; + DD9E2FC6271DBEE700C6D170 /* HalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC0271DBEE700C6D170 /* HalfTests.swift */; }; + DD9E2FC7271DBEE800C6D170 /* FunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC1271DBEE700C6D170 /* FunctionsTests.swift */; }; + DD9E2FC8271DBEE800C6D170 /* FunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC1271DBEE700C6D170 /* FunctionsTests.swift */; }; + DD9E2FC9271DBEE800C6D170 /* FunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC1271DBEE700C6D170 /* FunctionsTests.swift */; }; + DD9E2FCA271DBEE800C6D170 /* FunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC1271DBEE700C6D170 /* FunctionsTests.swift */; }; + DD9E2FCB271DBEE800C6D170 /* Half+CodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC2271DBEE700C6D170 /* Half+CodingTests.swift */; }; + DD9E2FCC271DBEE800C6D170 /* Half+CodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC2271DBEE700C6D170 /* Half+CodingTests.swift */; }; + DD9E2FCD271DBEE800C6D170 /* Half+CodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC2271DBEE700C6D170 /* Half+CodingTests.swift */; }; + DD9E2FCE271DBEE800C6D170 /* Half+CodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FC2271DBEE700C6D170 /* Half+CodingTests.swift */; }; + DD9E2FD6271DBEF900C6D170 /* CHalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FD1271DBEF900C6D170 /* CHalfTests.swift */; }; + DD9E2FD7271DBEF900C6D170 /* CHalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FD1271DBEF900C6D170 /* CHalfTests.swift */; }; + DD9E2FD8271DBEF900C6D170 /* CHalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FD1271DBEF900C6D170 /* CHalfTests.swift */; }; + DD9E2FD9271DBEF900C6D170 /* CHalfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FD1271DBEF900C6D170 /* CHalfTests.swift */; }; + DD9E2FFF271DBF5100C6D170 /* Half@swift-4.0.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FF9271DBF5100C6D170 /* Half@swift-4.0.swift */; }; + DD9E3000271DBF5100C6D170 /* Half@swift-4.0.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FF9271DBF5100C6D170 /* Half@swift-4.0.swift */; }; + DD9E3001271DBF5100C6D170 /* Half@swift-4.0.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FF9271DBF5100C6D170 /* Half@swift-4.0.swift */; }; + DD9E3002271DBF5100C6D170 /* Half@swift-4.0.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FF9271DBF5100C6D170 /* Half@swift-4.0.swift */; }; + DD9E3003271DBF5100C6D170 /* Half@swift-4.2.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFA271DBF5100C6D170 /* Half@swift-4.2.swift */; }; + DD9E3004271DBF5100C6D170 /* Half@swift-4.2.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFA271DBF5100C6D170 /* Half@swift-4.2.swift */; }; + DD9E3005271DBF5100C6D170 /* Half@swift-4.2.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFA271DBF5100C6D170 /* Half@swift-4.2.swift */; }; + DD9E3006271DBF5100C6D170 /* Half@swift-4.2.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFA271DBF5100C6D170 /* Half@swift-4.2.swift */; }; + DD9E3007271DBF5100C6D170 /* Half.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFB271DBF5100C6D170 /* Half.swift */; }; + DD9E3008271DBF5100C6D170 /* Half.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFB271DBF5100C6D170 /* Half.swift */; }; + DD9E3009271DBF5100C6D170 /* Half.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFB271DBF5100C6D170 /* Half.swift */; }; + DD9E300A271DBF5100C6D170 /* Half.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFB271DBF5100C6D170 /* Half.swift */; }; + DD9E300B271DBF5100C6D170 /* Half+Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFC271DBF5100C6D170 /* Half+Coding.swift */; }; + DD9E300C271DBF5100C6D170 /* Half+Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFC271DBF5100C6D170 /* Half+Coding.swift */; }; + DD9E300D271DBF5100C6D170 /* Half+Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFC271DBF5100C6D170 /* Half+Coding.swift */; }; + DD9E300E271DBF5100C6D170 /* Half+Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFC271DBF5100C6D170 /* Half+Coding.swift */; }; + DD9E300F271DBF5100C6D170 /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFD271DBF5100C6D170 /* Functions.swift */; }; + DD9E3010271DBF5100C6D170 /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFD271DBF5100C6D170 /* Functions.swift */; }; + DD9E3011271DBF5100C6D170 /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFD271DBF5100C6D170 /* Functions.swift */; }; + DD9E3012271DBF5100C6D170 /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9E2FFD271DBF5100C6D170 /* Functions.swift */; }; + DD9E301F271DBF7200C6D170 /* half.h in Headers */ = {isa = PBXBuildFile; fileRef = DD9E3019271DBF7200C6D170 /* half.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD9E3020271DBF7200C6D170 /* half.h in Headers */ = {isa = PBXBuildFile; fileRef = DD9E3019271DBF7200C6D170 /* half.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD9E3021271DBF7200C6D170 /* half.h in Headers */ = {isa = PBXBuildFile; fileRef = DD9E3019271DBF7200C6D170 /* half.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD9E3022271DBF7200C6D170 /* half.h in Headers */ = {isa = PBXBuildFile; fileRef = DD9E3019271DBF7200C6D170 /* half.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD9E3023271DBF7200C6D170 /* fp_extend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301C271DBF7200C6D170 /* fp_extend.cpp */; }; + DD9E3024271DBF7200C6D170 /* fp_extend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301C271DBF7200C6D170 /* fp_extend.cpp */; }; + DD9E3025271DBF7200C6D170 /* fp_extend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301C271DBF7200C6D170 /* fp_extend.cpp */; }; + DD9E3026271DBF7200C6D170 /* fp_extend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301C271DBF7200C6D170 /* fp_extend.cpp */; }; + DD9E3027271DBF7200C6D170 /* fp_trunc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301D271DBF7200C6D170 /* fp_trunc.cpp */; }; + DD9E3028271DBF7200C6D170 /* fp_trunc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301D271DBF7200C6D170 /* fp_trunc.cpp */; }; + DD9E3029271DBF7200C6D170 /* fp_trunc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301D271DBF7200C6D170 /* fp_trunc.cpp */; }; + DD9E302A271DBF7200C6D170 /* fp_trunc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301D271DBF7200C6D170 /* fp_trunc.cpp */; }; + DD9E302B271DBF7200C6D170 /* half.c in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301E271DBF7200C6D170 /* half.c */; }; + DD9E302C271DBF7200C6D170 /* half.c in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301E271DBF7200C6D170 /* half.c */; }; + DD9E302D271DBF7200C6D170 /* half.c in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301E271DBF7200C6D170 /* half.c */; }; + DD9E302E271DBF7200C6D170 /* half.c in Sources */ = {isa = PBXBuildFile; fileRef = DD9E301E271DBF7200C6D170 /* half.c */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - DDB1DF7C240B7FA000C20FED /* PBXContainerItemProxy */ = { + DD48BC99270E0DE800D842BC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDB1DF77240B7F4700C20FED; - remoteInfo = "Generate Sources"; + remoteGlobalIDString = DD86D5C323D11D140046E63E; + remoteInfo = "Half watchOS"; }; - DDB1DF7E240B7FA400C20FED /* PBXContainerItemProxy */ = { + DD86D54823D11B3E0046E63E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDB1DF77240B7F4700C20FED; - remoteInfo = "Generate Sources"; + remoteGlobalIDString = DD86D53C23D11B3E0046E63E; + remoteInfo = Half; }; - DDB1DF80240B7FB100C20FED /* PBXContainerItemProxy */ = { + DD86D56923D11C6C0046E63E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDFEECA423F1BA0B0096015C; + remoteGlobalIDString = DD86D56423D11C4B0046E63E; remoteInfo = "Run SwiftLint"; }; - DDB1DF82240B7FB900C20FED /* PBXContainerItemProxy */ = { + DD86D57A23D11C860046E63E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDB1DF77240B7F4700C20FED; - remoteInfo = "Generate Sources"; + remoteGlobalIDString = DD86D56F23D11C860046E63E; + remoteInfo = "Half macOS"; + }; + DD86D59623D11CA00046E63E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; + proxyType = 1; + remoteGlobalIDString = DD86D58B23D11CA00046E63E; + remoteInfo = "Half tvOS"; }; - DDB1DF84240B7FB900C20FED /* PBXContainerItemProxy */ = { + DD86D5D823D11DC60046E63E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDFEECA423F1BA0B0096015C; + remoteGlobalIDString = DD86D56423D11C4B0046E63E; remoteInfo = "Run SwiftLint"; }; - DDB1DF86240B7FBF00C20FED /* PBXContainerItemProxy */ = { + DD86D5DA23D11DC90046E63E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDB1DF77240B7F4700C20FED; - remoteInfo = "Generate Sources"; + remoteGlobalIDString = DD86D56423D11C4B0046E63E; + remoteInfo = "Run SwiftLint"; }; - DDB1DF88240B7FBF00C20FED /* PBXContainerItemProxy */ = { + DD86D5DC23D11DCC0046E63E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDFEECA423F1BA0B0096015C; + remoteGlobalIDString = DD86D56423D11C4B0046E63E; remoteInfo = "Run SwiftLint"; }; - DDFEEC3E23EF13910096015C /* PBXContainerItemProxy */ = { + DD9E3036271DC32200C6D170 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDFEEC3223EF13900096015C; - remoteInfo = Half; + remoteGlobalIDString = DD9E302F271DBFF500C6D170; + remoteInfo = "Generate Sources"; }; - DDFEECB223F1BB5B0096015C /* PBXContainerItemProxy */ = { + DD9E3038271DC32800C6D170 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDFEECA423F1BA0B0096015C; - remoteInfo = "Run SwiftLint"; + remoteGlobalIDString = DD9E302F271DBFF500C6D170; + remoteInfo = "Generate Sources"; }; - DDFEECC823F2001A0096015C /* PBXContainerItemProxy */ = { + DD9E303A271DC32C00C6D170 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDFEECBD23F2001A0096015C; - remoteInfo = "Half macOS"; + remoteGlobalIDString = DD9E302F271DBFF500C6D170; + remoteInfo = "Generate Sources"; }; - DDFEECE423F2003E0096015C /* PBXContainerItemProxy */ = { + DD9E303C271DC32F00C6D170 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDFEEC2A23EF13900096015C /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDFEECD923F2003E0096015C; - remoteInfo = "Half tvOS"; + remoteGlobalIDString = DD9E302F271DBFF500C6D170; + remoteInfo = "Generate Sources"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - DD6F08D124008A7400749359 /* codecov.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = codecov.yml; sourceTree = ""; }; - DDB1DF3F240A25D900C20FED /* fp_extend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fp_extend.cpp; sourceTree = ""; }; - DDB1DF40240A25D900C20FED /* fp_trunc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fp_trunc.cpp; sourceTree = ""; }; - DDB1DF76240B7EFD00C20FED /* Half.swift.gyb */ = {isa = PBXFileReference; explicitFileType = text.script.python; path = Half.swift.gyb; sourceTree = ""; }; - DDB1DF94240CC4DC00C20FED /* gyb.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = gyb.py; sourceTree = ""; }; - DDB1DF95240CC4DC00C20FED /* gyb */ = {isa = PBXFileReference; lastKnownFileType = text; path = gyb; sourceTree = ""; }; - DDB1DF96240CC5A200C20FED /* Package@swift-4.2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Package@swift-4.2.swift"; sourceTree = ""; }; - DDB1DF97240CC5A200C20FED /* Package@swift-4.0.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Package@swift-4.0.swift"; sourceTree = ""; }; - DDB1DF98240CCA5900C20FED /* Half@swift-4.2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Half@swift-4.2.swift"; sourceTree = ""; }; - DDB1DF99240CCA5900C20FED /* Half@swift-4.0.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Half@swift-4.0.swift"; sourceTree = ""; }; - DDB8120223F587890079FEB5 /* CHalfTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CHalfTests.swift; sourceTree = ""; }; - DDFEEC3323EF13900096015C /* Half.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Half.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDFEEC3723EF13900096015C /* Half-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Half-Info.plist"; path = "Plists/Half-Info.plist"; sourceTree = ""; }; - DDFEEC3C23EF13910096015C /* HalfTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HalfTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - DDFEEC4123EF13910096015C /* HalfTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HalfTests.swift; sourceTree = ""; }; - DDFEEC4323EF13910096015C /* HalfTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "HalfTests-Info.plist"; path = "Plists/HalfTests-Info.plist"; sourceTree = ""; }; - DDFEEC8423F0B6FF0096015C /* half.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = half.h; sourceTree = ""; }; - DDFEECAB23F1BA550096015C /* Half.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = Half.podspec; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - DDFEECAC23F1BA550096015C /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = SOURCE_ROOT; }; - DDFEECAD23F1BA5E0096015C /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = SOURCE_ROOT; }; - DDFEECAE23F1BA5E0096015C /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = SOURCE_ROOT; }; - DDFEECAF23F1BA680096015C /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = SOURCE_ROOT; }; - DDFEECB023F1BA6E0096015C /* ATTRIBUTIONS */ = {isa = PBXFileReference; lastKnownFileType = text; path = ATTRIBUTIONS; sourceTree = SOURCE_ROOT; }; - DDFEECB123F1BA730096015C /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = SOURCE_ROOT; }; - DDFEECBE23F2001A0096015C /* Half.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Half.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDFEECC623F2001A0096015C /* HalfTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HalfTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - DDFEECDA23F2003E0096015C /* Half.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Half.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDFEECE223F2003E0096015C /* HalfTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HalfTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - DDFEECF623F2004D0096015C /* Half.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Half.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDFEED4D23F26F170096015C /* Half+CodingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Half+CodingTests.swift"; sourceTree = ""; }; - DDFEED5123F2737B0096015C /* FunctionsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FunctionsTests.swift; sourceTree = ""; }; - DDFEED8223F345690096015C /* half.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = half.c; sourceTree = ""; }; - DDFEEDA823F3593B0096015C /* Half+Coding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Half+Coding.swift"; sourceTree = ""; }; - DDFEEDA923F3593B0096015C /* Functions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Functions.swift; sourceTree = ""; }; - DDFEEDAA23F3593B0096015C /* Half.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Half.swift; sourceTree = ""; }; - DDFEEDC623F35F110096015C /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; + DD17A9F9257744BC00D30599 /* scripts */ = {isa = PBXFileReference; lastKnownFileType = folder; path = scripts; sourceTree = ""; }; + DD48BC94270E0DE800D842BC /* HalfTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HalfTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DD48BC9F270E0F4500D842BC /* HalfTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = HalfTests.xctestplan; sourceTree = ""; }; + DD48BCA0270E0F9A00D842BC /* Half macOS Tests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Half macOS Tests.xctestplan"; sourceTree = ""; }; + DD48BCA1270E0FE200D842BC /* Half tvOS Tests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Half tvOS Tests.xctestplan"; sourceTree = ""; }; + DD48BCA2270E101D00D842BC /* Half watchOS Tests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Half watchOS Tests.xctestplan"; sourceTree = ""; }; + DD5D044A261FA56400BA0FC2 /* HalfTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "HalfTests-Info.plist"; path = "Plists/HalfTests-Info.plist"; sourceTree = ""; }; + DD86D53D23D11B3E0046E63E /* Half.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Half.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D54123D11B3E0046E63E /* Half-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Half-Info.plist"; path = "Plists/Half-Info.plist"; sourceTree = ""; }; + DD86D54623D11B3E0046E63E /* HalfTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HalfTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D57023D11C860046E63E /* Half.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Half.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D57823D11C860046E63E /* HalfTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HalfTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D58C23D11CA00046E63E /* Half.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Half.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D59423D11CA00046E63E /* HalfTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HalfTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D5C423D11D140046E63E /* Half.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Half.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D5DE23D22DB90046E63E /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = SOURCE_ROOT; }; + DD86D5DF23D22DB90046E63E /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = SOURCE_ROOT; }; + DD86D5E023D22DB90046E63E /* Half.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; path = Half.podspec; sourceTree = SOURCE_ROOT; }; + DD86D5E123D22DB90046E63E /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = SOURCE_ROOT; }; + DD86D5E323D22DC30046E63E /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = SOURCE_ROOT; }; + DD9E2FBD271DBE8600C6D170 /* gyb.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = gyb.py; sourceTree = ""; }; + DD9E2FBE271DBE8600C6D170 /* gyb */ = {isa = PBXFileReference; lastKnownFileType = text; path = gyb; sourceTree = ""; }; + DD9E2FC0271DBEE700C6D170 /* HalfTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HalfTests.swift; sourceTree = ""; }; + DD9E2FC1271DBEE700C6D170 /* FunctionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FunctionsTests.swift; sourceTree = ""; }; + DD9E2FC2271DBEE700C6D170 /* Half+CodingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Half+CodingTests.swift"; sourceTree = ""; }; + DD9E2FD1271DBEF900C6D170 /* CHalfTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CHalfTests.swift; sourceTree = ""; }; + DD9E2FF9271DBF5100C6D170 /* Half@swift-4.0.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Half@swift-4.0.swift"; sourceTree = ""; }; + DD9E2FFA271DBF5100C6D170 /* Half@swift-4.2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Half@swift-4.2.swift"; sourceTree = ""; }; + DD9E2FFB271DBF5100C6D170 /* Half.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Half.swift; sourceTree = ""; }; + DD9E2FFC271DBF5100C6D170 /* Half+Coding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Half+Coding.swift"; sourceTree = ""; }; + DD9E2FFD271DBF5100C6D170 /* Functions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Functions.swift; sourceTree = ""; }; + DD9E2FFE271DBF5100C6D170 /* Half.swift.gyb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Half.swift.gyb; sourceTree = ""; }; + DD9E3019271DBF7200C6D170 /* half.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = half.h; sourceTree = ""; }; + DD9E301A271DBF7200C6D170 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; + DD9E301C271DBF7200C6D170 /* fp_extend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fp_extend.cpp; sourceTree = ""; }; + DD9E301D271DBF7200C6D170 /* fp_trunc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fp_trunc.cpp; sourceTree = ""; }; + DD9E301E271DBF7200C6D170 /* half.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = half.c; sourceTree = ""; }; + DD9E3034271DC0FF00C6D170 /* Package@swift-4.0.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Package@swift-4.0.swift"; sourceTree = ""; }; + DD9E3035271DC0FF00C6D170 /* Package@swift-4.2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Package@swift-4.2.swift"; sourceTree = ""; }; + DD9E303E271DCF9900C6D170 /* ATTRIBUTIONS */ = {isa = PBXFileReference; lastKnownFileType = text; path = ATTRIBUTIONS; sourceTree = ""; }; + DDA26DBD256EA4D700E1C6D7 /* workflows */ = {isa = PBXFileReference; lastKnownFileType = folder; name = workflows; path = .github/workflows; sourceTree = ""; }; + DDB1DE5C2405EEE300C20FED /* codecov.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = codecov.yml; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - DDFEEC3023EF13900096015C /* Frameworks */ = { + DD48BC91270E0DE800D842BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DD48BC98270E0DE800D842BC /* Half.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D53A23D11B3E0046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEEC3923EF13910096015C /* Frameworks */ = { + DD86D54323D11B3E0046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DDFEEC3D23EF13910096015C /* Half.framework in Frameworks */, + DD86D54723D11B3E0046E63E /* Half.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECBB23F2001A0096015C /* Frameworks */ = { + DD86D56D23D11C860046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECC323F2001A0096015C /* Frameworks */ = { + DD86D57523D11C860046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DDFEECC723F2001A0096015C /* Half.framework in Frameworks */, + DD86D57923D11C860046E63E /* Half.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECD723F2003E0096015C /* Frameworks */ = { + DD86D58923D11CA00046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECDF23F2003E0096015C /* Frameworks */ = { + DD86D59123D11CA00046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DDFEECE323F2003E0096015C /* Half.framework in Frameworks */, + DD86D59523D11CA00046E63E /* Half.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECF323F2004D0096015C /* Frameworks */ = { + DD86D5C123D11D140046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -252,361 +297,404 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - DD94FBF723F3C50E0041D4EC /* Tests */ = { + DD48BC9E270E0F1300D842BC /* Test Plans */ = { isa = PBXGroup; children = ( - DDB1DF43240A279300C20FED /* CHalfTests */, - DDFEEC4023EF13910096015C /* HalfTests */, + DD48BC9F270E0F4500D842BC /* HalfTests.xctestplan */, + DD48BCA0270E0F9A00D842BC /* Half macOS Tests.xctestplan */, + DD48BCA1270E0FE200D842BC /* Half tvOS Tests.xctestplan */, + DD48BCA2270E101D00D842BC /* Half watchOS Tests.xctestplan */, ); - path = Tests; + path = "Test Plans"; sourceTree = ""; }; - DDB1DF43240A279300C20FED /* CHalfTests */ = { + DD5D04E52621361600BA0FC2 /* Half */ = { isa = PBXGroup; children = ( - DDB8120223F587890079FEB5 /* CHalfTests.swift */, + DD9E2FFD271DBF5100C6D170 /* Functions.swift */, + DD9E2FFB271DBF5100C6D170 /* Half.swift */, + DD9E2FF9271DBF5100C6D170 /* Half@swift-4.0.swift */, + DD9E2FFA271DBF5100C6D170 /* Half@swift-4.2.swift */, + DD9E2FFE271DBF5100C6D170 /* Half.swift.gyb */, + DD9E2FFC271DBF5100C6D170 /* Half+Coding.swift */, ); - path = CHalfTests; + path = Half; sourceTree = ""; }; - DDB1DF93240CC4DC00C20FED /* Utils */ = { + DD5D04F22621362400BA0FC2 /* HalfTests */ = { isa = PBXGroup; children = ( - DDB1DF94240CC4DC00C20FED /* gyb.py */, - DDB1DF95240CC4DC00C20FED /* gyb */, + DD9E2FC1271DBEE700C6D170 /* FunctionsTests.swift */, + DD9E2FC2271DBEE700C6D170 /* Half+CodingTests.swift */, + DD9E2FC0271DBEE700C6D170 /* HalfTests.swift */, ); - path = Utils; + path = HalfTests; sourceTree = ""; }; - DDFEEC2923EF13900096015C = { + DD86D53323D11B3E0046E63E = { isa = PBXGroup; children = ( - DDFEEC3523EF13900096015C /* Half */, - DDFEEC3423EF13900096015C /* Products */, + DD86D53F23D11B3E0046E63E /* Half */, + DD86D53E23D11B3E0046E63E /* Products */, ); sourceTree = ""; }; - DDFEEC3423EF13900096015C /* Products */ = { + DD86D53E23D11B3E0046E63E /* Products */ = { isa = PBXGroup; children = ( - DDFEEC3323EF13900096015C /* Half.framework */, - DDFEEC3C23EF13910096015C /* HalfTests.xctest */, - DDFEECBE23F2001A0096015C /* Half.framework */, - DDFEECC623F2001A0096015C /* HalfTests.xctest */, - DDFEECDA23F2003E0096015C /* Half.framework */, - DDFEECE223F2003E0096015C /* HalfTests.xctest */, - DDFEECF623F2004D0096015C /* Half.framework */, + DD86D53D23D11B3E0046E63E /* Half.framework */, + DD86D54623D11B3E0046E63E /* HalfTests.xctest */, + DD86D57023D11C860046E63E /* Half.framework */, + DD86D57823D11C860046E63E /* HalfTests.xctest */, + DD86D58C23D11CA00046E63E /* Half.framework */, + DD86D59423D11CA00046E63E /* HalfTests.xctest */, + DD86D5C423D11D140046E63E /* Half.framework */, + DD48BC94270E0DE800D842BC /* HalfTests.xctest */, ); name = Products; sourceTree = ""; }; - DDFEEC3523EF13900096015C /* Half */ = { + DD86D53F23D11B3E0046E63E /* Half */ = { isa = PBXGroup; children = ( - DDFEEC8E23F0B9F90096015C /* Sources */, - DDFEECAA23F1BA280096015C /* Supporting Files */, - DD94FBF723F3C50E0041D4EC /* Tests */, - DDB1DF93240CC4DC00C20FED /* Utils */, + DDB1DE252405EE5F00C20FED /* Sources */, + DDB1DE502405EE9900C20FED /* Tests */, + DD9E2FBC271DBE8600C6D170 /* Utils */, + DD86D55B23D11BA80046E63E /* Supporting Files */, ); name = Half; sourceTree = ""; }; - DDFEEC4023EF13910096015C /* HalfTests */ = { + DD86D55B23D11BA80046E63E /* Supporting Files */ = { isa = PBXGroup; children = ( - DDFEEC4123EF13910096015C /* HalfTests.swift */, - DDFEED4D23F26F170096015C /* Half+CodingTests.swift */, - DDFEED5123F2737B0096015C /* FunctionsTests.swift */, + DD17A9F9257744BC00D30599 /* scripts */, + DDA26DBD256EA4D700E1C6D7 /* workflows */, + DD86D5E023D22DB90046E63E /* Half.podspec */, + DD86D5DF23D22DB90046E63E /* Package.swift */, + DD9E3035271DC0FF00C6D170 /* Package@swift-4.2.swift */, + DD9E3034271DC0FF00C6D170 /* Package@swift-4.0.swift */, + DDB1DE5C2405EEE300C20FED /* codecov.yml */, + DD86D5E323D22DC30046E63E /* .swiftlint.yml */, + DD86D5E123D22DB90046E63E /* README.md */, + DD9E303E271DCF9900C6D170 /* ATTRIBUTIONS */, + DD86D5DE23D22DB90046E63E /* LICENSE */, + DD86D54123D11B3E0046E63E /* Half-Info.plist */, + DD5D044A261FA56400BA0FC2 /* HalfTests-Info.plist */, ); - path = HalfTests; + name = "Supporting Files"; sourceTree = ""; }; - DDFEEC8E23F0B9F90096015C /* Sources */ = { + DD9E2FBC271DBE8600C6D170 /* Utils */ = { isa = PBXGroup; children = ( - DDFEEDA723F359280096015C /* Half */, - DDFEED8123F3454C0096015C /* CHalf */, + DD9E2FBD271DBE8600C6D170 /* gyb.py */, + DD9E2FBE271DBE8600C6D170 /* gyb */, ); - path = Sources; + path = Utils; sourceTree = ""; }; - DDFEECAA23F1BA280096015C /* Supporting Files */ = { + DD9E2FCF271DBEF900C6D170 /* CHalfTests */ = { isa = PBXGroup; children = ( - DDFEECAB23F1BA550096015C /* Half.podspec */, - DDFEECAC23F1BA550096015C /* Package.swift */, - DDB1DF97240CC5A200C20FED /* Package@swift-4.0.swift */, - DDB1DF96240CC5A200C20FED /* Package@swift-4.2.swift */, - DD6F08D124008A7400749359 /* codecov.yml */, - DDFEECAE23F1BA5E0096015C /* .swiftlint.yml */, - DDFEECAD23F1BA5E0096015C /* .travis.yml */, - DDFEECAF23F1BA680096015C /* README.md */, - DDFEECB023F1BA6E0096015C /* ATTRIBUTIONS */, - DDFEECB123F1BA730096015C /* LICENSE */, - DDFEEC3723EF13900096015C /* Half-Info.plist */, - DDFEEC4323EF13910096015C /* HalfTests-Info.plist */, + DD9E2FD1271DBEF900C6D170 /* CHalfTests.swift */, ); - name = "Supporting Files"; + path = CHalfTests; sourceTree = ""; }; - DDFEED8123F3454C0096015C /* CHalf */ = { + DD9E3017271DBF7200C6D170 /* CHalf */ = { isa = PBXGroup; children = ( - DDFEEDC423F35ED70096015C /* include */, - DDFEEDC523F35EE00096015C /* src */, + DD9E3018271DBF7200C6D170 /* include */, + DD9E301B271DBF7200C6D170 /* src */, ); path = CHalf; sourceTree = ""; }; - DDFEEDA723F359280096015C /* Half */ = { + DD9E3018271DBF7200C6D170 /* include */ = { isa = PBXGroup; children = ( - DDFEEDA923F3593B0096015C /* Functions.swift */, - DDFEEDAA23F3593B0096015C /* Half.swift */, - DDB1DF98240CCA5900C20FED /* Half@swift-4.2.swift */, - DDB1DF99240CCA5900C20FED /* Half@swift-4.0.swift */, - DDB1DF76240B7EFD00C20FED /* Half.swift.gyb */, - DDFEEDA823F3593B0096015C /* Half+Coding.swift */, + DD9E3019271DBF7200C6D170 /* half.h */, + DD9E301A271DBF7200C6D170 /* module.modulemap */, ); - path = Half; + path = include; sourceTree = ""; }; - DDFEEDC423F35ED70096015C /* include */ = { + DD9E301B271DBF7200C6D170 /* src */ = { isa = PBXGroup; children = ( - DDFEEDC623F35F110096015C /* module.modulemap */, - DDFEEC8423F0B6FF0096015C /* half.h */, + DD9E301C271DBF7200C6D170 /* fp_extend.cpp */, + DD9E301D271DBF7200C6D170 /* fp_trunc.cpp */, + DD9E301E271DBF7200C6D170 /* half.c */, ); - path = include; + path = src; sourceTree = ""; }; - DDFEEDC523F35EE00096015C /* src */ = { + DDB1DE252405EE5F00C20FED /* Sources */ = { isa = PBXGroup; children = ( - DDFEED8223F345690096015C /* half.c */, - DDB1DF3F240A25D900C20FED /* fp_extend.cpp */, - DDB1DF40240A25D900C20FED /* fp_trunc.cpp */, + DD9E3017271DBF7200C6D170 /* CHalf */, + DD5D04E52621361600BA0FC2 /* Half */, ); - path = src; + path = Sources; + sourceTree = ""; + }; + DDB1DE502405EE9900C20FED /* Tests */ = { + isa = PBXGroup; + children = ( + DD9E2FCF271DBEF900C6D170 /* CHalfTests */, + DD5D04F22621362400BA0FC2 /* HalfTests */, + DD48BC9E270E0F1300D842BC /* Test Plans */, + ); + path = Tests; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - DDFEEC2E23EF13900096015C /* Headers */ = { + DD86D53823D11B3E0046E63E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DD94FBF823F3C5BB0041D4EC /* half.h in Headers */, + DD9E301F271DBF7200C6D170 /* half.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECB923F2001A0096015C /* Headers */ = { + DD86D56B23D11C860046E63E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DD94FBF923F3C5BB0041D4EC /* half.h in Headers */, + DD9E3020271DBF7200C6D170 /* half.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECD523F2003E0096015C /* Headers */ = { + DD86D58723D11CA00046E63E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DD94FBFA23F3C5BC0041D4EC /* half.h in Headers */, + DD9E3021271DBF7200C6D170 /* half.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECF123F2004D0096015C /* Headers */ = { + DD86D5BF23D11D140046E63E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DD94FBFB23F3C5BD0041D4EC /* half.h in Headers */, + DD9E3022271DBF7200C6D170 /* half.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - DDFEEC3223EF13900096015C /* Half */ = { + DD48BC93270E0DE800D842BC /* Half watchOS Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DD48BC9D270E0DE800D842BC /* Build configuration list for PBXNativeTarget "Half watchOS Tests" */; + buildPhases = ( + DD48BC90270E0DE800D842BC /* Sources */, + DD48BC91270E0DE800D842BC /* Frameworks */, + DD48BC92270E0DE800D842BC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DD48BC9A270E0DE800D842BC /* PBXTargetDependency */, + ); + name = "Half watchOS Tests"; + productName = "Half watchOS Tests"; + productReference = DD48BC94270E0DE800D842BC /* HalfTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + DD86D53C23D11B3E0046E63E /* Half */ = { isa = PBXNativeTarget; - buildConfigurationList = DDFEEC4723EF13910096015C /* Build configuration list for PBXNativeTarget "Half" */; + buildConfigurationList = DD86D55123D11B3E0046E63E /* Build configuration list for PBXNativeTarget "Half" */; buildPhases = ( - DDFEEC2E23EF13900096015C /* Headers */, - DDFEEC2F23EF13900096015C /* Sources */, - DDFEEC3023EF13900096015C /* Frameworks */, - DDFEEC3123EF13900096015C /* Resources */, + DD86D53823D11B3E0046E63E /* Headers */, + DD86D53923D11B3E0046E63E /* Sources */, + DD86D53A23D11B3E0046E63E /* Frameworks */, + DD86D53B23D11B3E0046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDB1DF7D240B7FA000C20FED /* PBXTargetDependency */, - DDFEECB323F1BB5B0096015C /* PBXTargetDependency */, + DD9E3037271DC32200C6D170 /* PBXTargetDependency */, + DD86D56A23D11C6C0046E63E /* PBXTargetDependency */, ); name = Half; productName = Half; - productReference = DDFEEC3323EF13900096015C /* Half.framework */; + productReference = DD86D53D23D11B3E0046E63E /* Half.framework */; productType = "com.apple.product-type.framework"; }; - DDFEEC3B23EF13910096015C /* HalfTests */ = { + DD86D54523D11B3E0046E63E /* HalfTests */ = { isa = PBXNativeTarget; - buildConfigurationList = DDFEEC4A23EF13910096015C /* Build configuration list for PBXNativeTarget "HalfTests" */; + buildConfigurationList = DD86D55423D11B3E0046E63E /* Build configuration list for PBXNativeTarget "HalfTests" */; buildPhases = ( - DDFEEC3823EF13910096015C /* Sources */, - DDFEEC3923EF13910096015C /* Frameworks */, - DDFEEC3A23EF13910096015C /* Resources */, + DD86D54223D11B3E0046E63E /* Sources */, + DD86D54323D11B3E0046E63E /* Frameworks */, + DD86D54423D11B3E0046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDFEEC3F23EF13910096015C /* PBXTargetDependency */, + DD86D54923D11B3E0046E63E /* PBXTargetDependency */, ); name = HalfTests; productName = HalfTests; - productReference = DDFEEC3C23EF13910096015C /* HalfTests.xctest */; + productReference = DD86D54623D11B3E0046E63E /* HalfTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - DDFEECBD23F2001A0096015C /* Half macOS */ = { + DD86D56F23D11C860046E63E /* Half macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = DDFEECCF23F2001A0096015C /* Build configuration list for PBXNativeTarget "Half macOS" */; + buildConfigurationList = DD86D58123D11C870046E63E /* Build configuration list for PBXNativeTarget "Half macOS" */; buildPhases = ( - DDFEECB923F2001A0096015C /* Headers */, - DDFEECBA23F2001A0096015C /* Sources */, - DDFEECBB23F2001A0096015C /* Frameworks */, - DDFEECBC23F2001A0096015C /* Resources */, + DD86D56B23D11C860046E63E /* Headers */, + DD86D56C23D11C860046E63E /* Sources */, + DD86D56D23D11C860046E63E /* Frameworks */, + DD86D56E23D11C860046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDB1DF7F240B7FA400C20FED /* PBXTargetDependency */, - DDB1DF81240B7FB100C20FED /* PBXTargetDependency */, + DD9E3039271DC32800C6D170 /* PBXTargetDependency */, + DD86D5D923D11DC60046E63E /* PBXTargetDependency */, ); name = "Half macOS"; productName = "Half macOS"; - productReference = DDFEECBE23F2001A0096015C /* Half.framework */; + productReference = DD86D57023D11C860046E63E /* Half.framework */; productType = "com.apple.product-type.framework"; }; - DDFEECC523F2001A0096015C /* Half macOS Tests */ = { + DD86D57723D11C860046E63E /* Half macOS Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = DDFEECD223F2001A0096015C /* Build configuration list for PBXNativeTarget "Half macOS Tests" */; + buildConfigurationList = DD86D58423D11C870046E63E /* Build configuration list for PBXNativeTarget "Half macOS Tests" */; buildPhases = ( - DDFEECC223F2001A0096015C /* Sources */, - DDFEECC323F2001A0096015C /* Frameworks */, - DDFEECC423F2001A0096015C /* Resources */, + DD86D57423D11C860046E63E /* Sources */, + DD86D57523D11C860046E63E /* Frameworks */, + DD86D57623D11C860046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDFEECC923F2001A0096015C /* PBXTargetDependency */, + DD86D57B23D11C860046E63E /* PBXTargetDependency */, ); name = "Half macOS Tests"; productName = "Half macOSTests"; - productReference = DDFEECC623F2001A0096015C /* HalfTests.xctest */; + productReference = DD86D57823D11C860046E63E /* HalfTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - DDFEECD923F2003E0096015C /* Half tvOS */ = { + DD86D58B23D11CA00046E63E /* Half tvOS */ = { isa = PBXNativeTarget; - buildConfigurationList = DDFEECEB23F2003E0096015C /* Build configuration list for PBXNativeTarget "Half tvOS" */; + buildConfigurationList = DD86D59D23D11CA00046E63E /* Build configuration list for PBXNativeTarget "Half tvOS" */; buildPhases = ( - DDFEECD523F2003E0096015C /* Headers */, - DDFEECD623F2003E0096015C /* Sources */, - DDFEECD723F2003E0096015C /* Frameworks */, - DDFEECD823F2003E0096015C /* Resources */, + DD86D58723D11CA00046E63E /* Headers */, + DD86D58823D11CA00046E63E /* Sources */, + DD86D58923D11CA00046E63E /* Frameworks */, + DD86D58A23D11CA00046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDB1DF83240B7FB900C20FED /* PBXTargetDependency */, - DDB1DF85240B7FB900C20FED /* PBXTargetDependency */, + DD9E303B271DC32C00C6D170 /* PBXTargetDependency */, + DD86D5DB23D11DC90046E63E /* PBXTargetDependency */, ); name = "Half tvOS"; productName = "Half tvOS"; - productReference = DDFEECDA23F2003E0096015C /* Half.framework */; + productReference = DD86D58C23D11CA00046E63E /* Half.framework */; productType = "com.apple.product-type.framework"; }; - DDFEECE123F2003E0096015C /* Half tvOS Tests */ = { + DD86D59323D11CA00046E63E /* Half tvOS Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = DDFEECEE23F2003E0096015C /* Build configuration list for PBXNativeTarget "Half tvOS Tests" */; + buildConfigurationList = DD86D5A023D11CA00046E63E /* Build configuration list for PBXNativeTarget "Half tvOS Tests" */; buildPhases = ( - DDFEECDE23F2003E0096015C /* Sources */, - DDFEECDF23F2003E0096015C /* Frameworks */, - DDFEECE023F2003E0096015C /* Resources */, + DD86D59023D11CA00046E63E /* Sources */, + DD86D59123D11CA00046E63E /* Frameworks */, + DD86D59223D11CA00046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDFEECE523F2003E0096015C /* PBXTargetDependency */, + DD86D59723D11CA00046E63E /* PBXTargetDependency */, ); name = "Half tvOS Tests"; productName = "Half tvOSTests"; - productReference = DDFEECE223F2003E0096015C /* HalfTests.xctest */; + productReference = DD86D59423D11CA00046E63E /* HalfTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - DDFEECF523F2004D0096015C /* Half watchOS */ = { + DD86D5C323D11D140046E63E /* Half watchOS */ = { isa = PBXNativeTarget; - buildConfigurationList = DDFEECFB23F2004D0096015C /* Build configuration list for PBXNativeTarget "Half watchOS" */; + buildConfigurationList = DD86D5C923D11D140046E63E /* Build configuration list for PBXNativeTarget "Half watchOS" */; buildPhases = ( - DDFEECF123F2004D0096015C /* Headers */, - DDFEECF223F2004D0096015C /* Sources */, - DDFEECF323F2004D0096015C /* Frameworks */, - DDFEECF423F2004D0096015C /* Resources */, + DD86D5BF23D11D140046E63E /* Headers */, + DD86D5C023D11D140046E63E /* Sources */, + DD86D5C123D11D140046E63E /* Frameworks */, + DD86D5C223D11D140046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDB1DF87240B7FBF00C20FED /* PBXTargetDependency */, - DDB1DF89240B7FBF00C20FED /* PBXTargetDependency */, + DD9E303D271DC32F00C6D170 /* PBXTargetDependency */, + DD86D5DD23D11DCC0046E63E /* PBXTargetDependency */, ); name = "Half watchOS"; productName = "Half watchOS"; - productReference = DDFEECF623F2004D0096015C /* Half.framework */; + productReference = DD86D5C423D11D140046E63E /* Half.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - DDFEEC2A23EF13900096015C /* Project object */ = { + DD86D53423D11B3E0046E63E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1130; - LastUpgradeCheck = 1130; + LastSwiftUpdateCheck = 1300; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = SomeRandomiOSDev; TargetAttributes = { - DDB1DF77240B7F4700C20FED = { - CreatedOnToolsVersion = 11.3.1; + DD2FBC27258BE8BB00DB3211 = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; + }; + DD48BC93270E0DE800D842BC = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDFEEC3223EF13900096015C = { - CreatedOnToolsVersion = 11.3.1; - LastSwiftMigration = 1130; + DD86D53C23D11B3E0046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDFEEC3B23EF13910096015C = { - CreatedOnToolsVersion = 11.3.1; - LastSwiftMigration = 1130; + DD86D54523D11B3E0046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDFEECA423F1BA0B0096015C = { - CreatedOnToolsVersion = 11.3.1; + DD86D56423D11C4B0046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDFEECBD23F2001A0096015C = { - CreatedOnToolsVersion = 11.3.1; - LastSwiftMigration = 1130; + DD86D56F23D11C860046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDFEECC523F2001A0096015C = { - CreatedOnToolsVersion = 11.3.1; + DD86D57723D11C860046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDFEECD923F2003E0096015C = { - CreatedOnToolsVersion = 11.3.1; - LastSwiftMigration = 1130; + DD86D58B23D11CA00046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDFEECE123F2003E0096015C = { - CreatedOnToolsVersion = 11.3.1; + DD86D59323D11CA00046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDFEECF523F2004D0096015C = { - CreatedOnToolsVersion = 11.3.1; - LastSwiftMigration = 1130; + DD86D5C323D11D140046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; + }; + DD9E302F271DBFF500C6D170 = { + CreatedOnToolsVersion = 13.0; }; }; }; - buildConfigurationList = DDFEEC2D23EF13900096015C /* Build configuration list for PBXProject "Half" */; + buildConfigurationList = DD86D53723D11B3E0046E63E /* Build configuration list for PBXProject "Half" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; @@ -614,68 +702,77 @@ en, Base, ); - mainGroup = DDFEEC2923EF13900096015C; - productRefGroup = DDFEEC3423EF13900096015C /* Products */; + mainGroup = DD86D53323D11B3E0046E63E; + productRefGroup = DD86D53E23D11B3E0046E63E /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - DDFEEC3223EF13900096015C /* Half */, - DDFEEC3B23EF13910096015C /* HalfTests */, - DDFEECBD23F2001A0096015C /* Half macOS */, - DDFEECC523F2001A0096015C /* Half macOS Tests */, - DDFEECD923F2003E0096015C /* Half tvOS */, - DDFEECE123F2003E0096015C /* Half tvOS Tests */, - DDFEECF523F2004D0096015C /* Half watchOS */, - DDB1DF77240B7F4700C20FED /* Generate Sources */, - DDFEECA423F1BA0B0096015C /* Run SwiftLint */, + DD86D53C23D11B3E0046E63E /* Half */, + DD86D54523D11B3E0046E63E /* HalfTests */, + DD86D56F23D11C860046E63E /* Half macOS */, + DD86D57723D11C860046E63E /* Half macOS Tests */, + DD86D58B23D11CA00046E63E /* Half tvOS */, + DD86D59323D11CA00046E63E /* Half tvOS Tests */, + DD86D5C323D11D140046E63E /* Half watchOS */, + DD48BC93270E0DE800D842BC /* Half watchOS Tests */, + DD9E302F271DBFF500C6D170 /* Generate Sources */, + DD86D56423D11C4B0046E63E /* Run SwiftLint */, + DD2FBC27258BE8BB00DB3211 /* XCFramework */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - DDFEEC3123EF13900096015C /* Resources */ = { + DD48BC92270E0DE800D842BC /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEEC3A23EF13910096015C /* Resources */ = { + DD86D53B23D11B3E0046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECBC23F2001A0096015C /* Resources */ = { + DD86D54423D11B3E0046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECC423F2001A0096015C /* Resources */ = { + DD86D56E23D11C860046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECD823F2003E0096015C /* Resources */ = { + DD86D57623D11C860046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECE023F2003E0096015C /* Resources */ = { + DD86D58A23D11CA00046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECF423F2004D0096015C /* Resources */ = { + DD86D59223D11CA00046E63E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D5C223D11D140046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -685,7 +782,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - DDB1DF7B240B7F5000C20FED /* Generate Sources */ = { + DD2FBC33258BE8C600DB3211 /* Build XCFramework */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -693,19 +790,17 @@ inputFileListPaths = ( ); inputPaths = ( - "$(SRCROOT)/Sources/Half/Half.swift.gyb", ); - name = "Generate Sources"; + name = "Build XCFramework"; outputFileListPaths = ( ); outputPaths = ( - "$(SRCROOT)/Sources/Half/Half.swift", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "./utils/gyb --line-directive '' -Dswift_version='5.0' -o ./Sources/Half/Half.swift ./Sources/Half/Half.swift.gyb\n./utils/gyb --line-directive '' -Dswift_version='4.2' -o ./Sources/Half/Half@swift-4.2.swift ./Sources/Half/Half.swift.gyb\n./utils/gyb --line-directive '' -Dswift_version='4.0' -o ./Sources/Half/Half@swift-4.0.swift ./Sources/Half/Half.swift.gyb\n"; + shellScript = "${PROJECT_DIR}/scripts/xcframework.sh -configuration ${CONFIGURATION} -output \"${BUILD_DIR}/${CONFIGURATION}-universal/Half.xcframework\" \n"; }; - DDFEECA923F1BA160096015C /* Run SwiftLint */ = { + DD86D56823D11C550046E63E /* Run SwiftLint */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -723,156 +818,199 @@ shellPath = /bin/sh; shellScript = "if which swiftlint >/dev/null; then\n swiftlint\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n"; }; + DD9E3033271DC00700C6D170 /* Generate Sources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "$(SRCROOT)/Sources/Half/Half.swift.gyb", + ); + name = "Generate Sources"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "./utils/gyb --line-directive '' -Dswift_version='5.0' -o ./Sources/Half/Half.swift ./Sources/Half/Half.swift.gyb\n./utils/gyb --line-directive '' -Dswift_version='4.2' -o ./Sources/Half/Half@swift-4.2.swift ./Sources/Half/Half.swift.gyb\n./utils/gyb --line-directive '' -Dswift_version='4.0' -o ./Sources/Half/Half@swift-4.0.swift ./Sources/Half/Half.swift.gyb\n"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - DDFEEC2F23EF13900096015C /* Sources */ = { + DD48BC90270E0DE800D842BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DD9E2FD9271DBEF900C6D170 /* CHalfTests.swift in Sources */, + DD9E2FCE271DBEE800C6D170 /* Half+CodingTests.swift in Sources */, + DD9E2FC6271DBEE700C6D170 /* HalfTests.swift in Sources */, + DD9E2FCA271DBEE800C6D170 /* FunctionsTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D53923D11B3E0046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDB1DF9A240CCA5A00C20FED /* Half@swift-4.2.swift in Sources */, - DDFEEDB323F3593B0096015C /* Half.swift in Sources */, - DDB1DF9E240CCA5A00C20FED /* Half@swift-4.0.swift in Sources */, - DDFEED8323F345690096015C /* half.c in Sources */, - DDFEEDAB23F3593B0096015C /* Half+Coding.swift in Sources */, - DDFEEDAF23F3593B0096015C /* Functions.swift in Sources */, + DD9E3003271DBF5100C6D170 /* Half@swift-4.2.swift in Sources */, + DD9E3023271DBF7200C6D170 /* fp_extend.cpp in Sources */, + DD9E302B271DBF7200C6D170 /* half.c in Sources */, + DD9E2FFF271DBF5100C6D170 /* Half@swift-4.0.swift in Sources */, + DD9E300B271DBF5100C6D170 /* Half+Coding.swift in Sources */, + DD9E300F271DBF5100C6D170 /* Functions.swift in Sources */, + DD9E3007271DBF5100C6D170 /* Half.swift in Sources */, + DD9E3027271DBF7200C6D170 /* fp_trunc.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEEC3823EF13910096015C /* Sources */ = { + DD86D54223D11B3E0046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDB8120323F587890079FEB5 /* CHalfTests.swift in Sources */, - DDFEED4E23F26F170096015C /* Half+CodingTests.swift in Sources */, - DDFEED5223F2737B0096015C /* FunctionsTests.swift in Sources */, - DDFEEC4223EF13910096015C /* HalfTests.swift in Sources */, + DD9E2FD6271DBEF900C6D170 /* CHalfTests.swift in Sources */, + DD9E2FCB271DBEE800C6D170 /* Half+CodingTests.swift in Sources */, + DD9E2FC3271DBEE700C6D170 /* HalfTests.swift in Sources */, + DD9E2FC7271DBEE800C6D170 /* FunctionsTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECBA23F2001A0096015C /* Sources */ = { + DD86D56C23D11C860046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDB1DF9B240CCA5A00C20FED /* Half@swift-4.2.swift in Sources */, - DDFEEDB423F3593B0096015C /* Half.swift in Sources */, - DDB1DF9F240CCA5A00C20FED /* Half@swift-4.0.swift in Sources */, - DDFEED8423F345690096015C /* half.c in Sources */, - DDFEEDAC23F3593B0096015C /* Half+Coding.swift in Sources */, - DDFEEDB023F3593B0096015C /* Functions.swift in Sources */, + DD9E3004271DBF5100C6D170 /* Half@swift-4.2.swift in Sources */, + DD9E3024271DBF7200C6D170 /* fp_extend.cpp in Sources */, + DD9E302C271DBF7200C6D170 /* half.c in Sources */, + DD9E3000271DBF5100C6D170 /* Half@swift-4.0.swift in Sources */, + DD9E300C271DBF5100C6D170 /* Half+Coding.swift in Sources */, + DD9E3010271DBF5100C6D170 /* Functions.swift in Sources */, + DD9E3008271DBF5100C6D170 /* Half.swift in Sources */, + DD9E3028271DBF7200C6D170 /* fp_trunc.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECC223F2001A0096015C /* Sources */ = { + DD86D57423D11C860046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDB8120423F587890079FEB5 /* CHalfTests.swift in Sources */, - DDFEED4F23F26F170096015C /* Half+CodingTests.swift in Sources */, - DDFEED5323F2737B0096015C /* FunctionsTests.swift in Sources */, - DDFEED0A23F200FE0096015C /* HalfTests.swift in Sources */, + DD9E2FD7271DBEF900C6D170 /* CHalfTests.swift in Sources */, + DD9E2FCC271DBEE800C6D170 /* Half+CodingTests.swift in Sources */, + DD9E2FC4271DBEE700C6D170 /* HalfTests.swift in Sources */, + DD9E2FC8271DBEE800C6D170 /* FunctionsTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECD623F2003E0096015C /* Sources */ = { + DD86D58823D11CA00046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDB1DF9C240CCA5A00C20FED /* Half@swift-4.2.swift in Sources */, - DDFEEDB523F3593B0096015C /* Half.swift in Sources */, - DDB1DFA0240CCA5A00C20FED /* Half@swift-4.0.swift in Sources */, - DDFEED8523F345690096015C /* half.c in Sources */, - DDFEEDAD23F3593B0096015C /* Half+Coding.swift in Sources */, - DDFEEDB123F3593B0096015C /* Functions.swift in Sources */, + DD9E3005271DBF5100C6D170 /* Half@swift-4.2.swift in Sources */, + DD9E3025271DBF7200C6D170 /* fp_extend.cpp in Sources */, + DD9E302D271DBF7200C6D170 /* half.c in Sources */, + DD9E3001271DBF5100C6D170 /* Half@swift-4.0.swift in Sources */, + DD9E300D271DBF5100C6D170 /* Half+Coding.swift in Sources */, + DD9E3011271DBF5100C6D170 /* Functions.swift in Sources */, + DD9E3009271DBF5100C6D170 /* Half.swift in Sources */, + DD9E3029271DBF7200C6D170 /* fp_trunc.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECDE23F2003E0096015C /* Sources */ = { + DD86D59023D11CA00046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDB8120523F587890079FEB5 /* CHalfTests.swift in Sources */, - DDFEED5023F26F170096015C /* Half+CodingTests.swift in Sources */, - DDFEED5423F2737B0096015C /* FunctionsTests.swift in Sources */, - DDFEED0B23F200FF0096015C /* HalfTests.swift in Sources */, + DD9E2FD8271DBEF900C6D170 /* CHalfTests.swift in Sources */, + DD9E2FCD271DBEE800C6D170 /* Half+CodingTests.swift in Sources */, + DD9E2FC5271DBEE700C6D170 /* HalfTests.swift in Sources */, + DD9E2FC9271DBEE800C6D170 /* FunctionsTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDFEECF223F2004D0096015C /* Sources */ = { + DD86D5C023D11D140046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDB1DF9D240CCA5A00C20FED /* Half@swift-4.2.swift in Sources */, - DDFEEDB623F3593B0096015C /* Half.swift in Sources */, - DDB1DFA1240CCA5A00C20FED /* Half@swift-4.0.swift in Sources */, - DDFEED8623F345690096015C /* half.c in Sources */, - DDFEEDAE23F3593B0096015C /* Half+Coding.swift in Sources */, - DDFEEDB223F3593B0096015C /* Functions.swift in Sources */, + DD9E3006271DBF5100C6D170 /* Half@swift-4.2.swift in Sources */, + DD9E3026271DBF7200C6D170 /* fp_extend.cpp in Sources */, + DD9E302E271DBF7200C6D170 /* half.c in Sources */, + DD9E3002271DBF5100C6D170 /* Half@swift-4.0.swift in Sources */, + DD9E300E271DBF5100C6D170 /* Half+Coding.swift in Sources */, + DD9E3012271DBF5100C6D170 /* Functions.swift in Sources */, + DD9E300A271DBF5100C6D170 /* Half.swift in Sources */, + DD9E302A271DBF7200C6D170 /* fp_trunc.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - DDB1DF7D240B7FA000C20FED /* PBXTargetDependency */ = { + DD48BC9A270E0DE800D842BC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DD86D5C323D11D140046E63E /* Half watchOS */; + targetProxy = DD48BC99270E0DE800D842BC /* PBXContainerItemProxy */; + }; + DD86D54923D11B3E0046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDB1DF77240B7F4700C20FED /* Generate Sources */; - targetProxy = DDB1DF7C240B7FA000C20FED /* PBXContainerItemProxy */; + target = DD86D53C23D11B3E0046E63E /* Half */; + targetProxy = DD86D54823D11B3E0046E63E /* PBXContainerItemProxy */; }; - DDB1DF7F240B7FA400C20FED /* PBXTargetDependency */ = { + DD86D56A23D11C6C0046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDB1DF77240B7F4700C20FED /* Generate Sources */; - targetProxy = DDB1DF7E240B7FA400C20FED /* PBXContainerItemProxy */; + target = DD86D56423D11C4B0046E63E /* Run SwiftLint */; + targetProxy = DD86D56923D11C6C0046E63E /* PBXContainerItemProxy */; }; - DDB1DF81240B7FB100C20FED /* PBXTargetDependency */ = { + DD86D57B23D11C860046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDFEECA423F1BA0B0096015C /* Run SwiftLint */; - targetProxy = DDB1DF80240B7FB100C20FED /* PBXContainerItemProxy */; + target = DD86D56F23D11C860046E63E /* Half macOS */; + targetProxy = DD86D57A23D11C860046E63E /* PBXContainerItemProxy */; }; - DDB1DF83240B7FB900C20FED /* PBXTargetDependency */ = { + DD86D59723D11CA00046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDB1DF77240B7F4700C20FED /* Generate Sources */; - targetProxy = DDB1DF82240B7FB900C20FED /* PBXContainerItemProxy */; + target = DD86D58B23D11CA00046E63E /* Half tvOS */; + targetProxy = DD86D59623D11CA00046E63E /* PBXContainerItemProxy */; }; - DDB1DF85240B7FB900C20FED /* PBXTargetDependency */ = { + DD86D5D923D11DC60046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDFEECA423F1BA0B0096015C /* Run SwiftLint */; - targetProxy = DDB1DF84240B7FB900C20FED /* PBXContainerItemProxy */; + target = DD86D56423D11C4B0046E63E /* Run SwiftLint */; + targetProxy = DD86D5D823D11DC60046E63E /* PBXContainerItemProxy */; }; - DDB1DF87240B7FBF00C20FED /* PBXTargetDependency */ = { + DD86D5DB23D11DC90046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDB1DF77240B7F4700C20FED /* Generate Sources */; - targetProxy = DDB1DF86240B7FBF00C20FED /* PBXContainerItemProxy */; + target = DD86D56423D11C4B0046E63E /* Run SwiftLint */; + targetProxy = DD86D5DA23D11DC90046E63E /* PBXContainerItemProxy */; }; - DDB1DF89240B7FBF00C20FED /* PBXTargetDependency */ = { + DD86D5DD23D11DCC0046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDFEECA423F1BA0B0096015C /* Run SwiftLint */; - targetProxy = DDB1DF88240B7FBF00C20FED /* PBXContainerItemProxy */; + target = DD86D56423D11C4B0046E63E /* Run SwiftLint */; + targetProxy = DD86D5DC23D11DCC0046E63E /* PBXContainerItemProxy */; }; - DDFEEC3F23EF13910096015C /* PBXTargetDependency */ = { + DD9E3037271DC32200C6D170 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDFEEC3223EF13900096015C /* Half */; - targetProxy = DDFEEC3E23EF13910096015C /* PBXContainerItemProxy */; + target = DD9E302F271DBFF500C6D170 /* Generate Sources */; + targetProxy = DD9E3036271DC32200C6D170 /* PBXContainerItemProxy */; }; - DDFEECB323F1BB5B0096015C /* PBXTargetDependency */ = { + DD9E3039271DC32800C6D170 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDFEECA423F1BA0B0096015C /* Run SwiftLint */; - targetProxy = DDFEECB223F1BB5B0096015C /* PBXContainerItemProxy */; + target = DD9E302F271DBFF500C6D170 /* Generate Sources */; + targetProxy = DD9E3038271DC32800C6D170 /* PBXContainerItemProxy */; }; - DDFEECC923F2001A0096015C /* PBXTargetDependency */ = { + DD9E303B271DC32C00C6D170 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDFEECBD23F2001A0096015C /* Half macOS */; - targetProxy = DDFEECC823F2001A0096015C /* PBXContainerItemProxy */; + target = DD9E302F271DBFF500C6D170 /* Generate Sources */; + targetProxy = DD9E303A271DC32C00C6D170 /* PBXContainerItemProxy */; }; - DDFEECE523F2003E0096015C /* PBXTargetDependency */ = { + DD9E303D271DC32F00C6D170 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDFEECD923F2003E0096015C /* Half tvOS */; - targetProxy = DDFEECE423F2003E0096015C /* PBXContainerItemProxy */; + target = DD9E302F271DBFF500C6D170 /* Generate Sources */; + targetProxy = DD9E303C271DC32F00C6D170 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - DDB1DF79240B7F4700C20FED /* Debug */ = { + DD2FBC28258BE8BB00DB3211 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; @@ -880,7 +1018,7 @@ }; name = Debug; }; - DDB1DF7A240B7F4700C20FED /* Release */ = { + DD2FBC29258BE8BB00DB3211 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; @@ -888,7 +1026,54 @@ }; name = Release; }; - DDFEEC4523EF13910096015C /* Debug */ = { + DD48BC9B270E0DE800D842BC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Plists/HalfTests-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.halftests; + PRODUCT_NAME = HalfTests; + SDKROOT = watchos; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + }; + name = Debug; + }; + DD48BC9C270E0DE800D842BC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Plists/TestProjectTests-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.testprojecttests; + PRODUCT_NAME = TestProjectTests; + SDKROOT = watchos; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + }; + name = Release; + }; + DD86D54F23D11B3E0046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -914,12 +1099,14 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; @@ -930,9 +1117,8 @@ GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", "DEBUG=1", - "SUPPRESS_HALF_NATIVE_HEADER_ERROR=1", + "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -940,7 +1126,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -949,14 +1135,14 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; WATCHOS_DEPLOYMENT_TARGET = 2.0; }; name = Debug; }; - DDFEEC4623EF13910096015C /* Release */ = { + DD86D55023D11B3E0046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -982,12 +1168,14 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -995,14 +1183,13 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = "SUPPRESS_HALF_NATIVE_HEADER_ERROR=1"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -1010,7 +1197,7 @@ SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1018,10 +1205,11 @@ }; name = Release; }; - DDFEEC4823EF13910096015C /* Debug */ = { + DD86D55223D11B3E0046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1034,19 +1222,20 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = mh_dylib; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half; PRODUCT_NAME = Half; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; }; - DDFEEC4923EF13910096015C /* Release */ = { + DD86D55323D11B3E0046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1059,19 +1248,20 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = mh_dylib; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half; PRODUCT_NAME = Half; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Release; }; - DDFEEC4B23EF13910096015C /* Debug */ = { + DD86D55523D11B3E0046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "Plists/HalfTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1079,18 +1269,20 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half.tests; + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.halftests; PRODUCT_NAME = HalfTests; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; }; - DDFEEC4C23EF13910096015C /* Release */ = { + DD86D55623D11B3E0046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "Plists/HalfTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1098,13 +1290,14 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half.tests; + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.halftests; PRODUCT_NAME = HalfTests; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Release; }; - DDFEECA623F1BA0B0096015C /* Debug */ = { + DD86D56623D11C4B0046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; @@ -1112,7 +1305,7 @@ }; name = Debug; }; - DDFEECA723F1BA0B0096015C /* Release */ = { + DD86D56723D11C4B0046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; @@ -1120,10 +1313,11 @@ }; name = Release; }; - DDFEECD023F2001A0096015C /* Debug */ = { + DD86D58223D11C870046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -1137,19 +1331,20 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = mh_dylib; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half; PRODUCT_NAME = Half; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; }; name = Debug; }; - DDFEECD123F2001A0096015C /* Release */ = { + DD86D58323D11C870046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -1163,18 +1358,20 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = mh_dylib; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half; PRODUCT_NAME = Half; SDKROOT = macosx; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; }; name = Release; }; - DDFEECD323F2001A0096015C /* Debug */ = { + DD86D58523D11C870046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = "Plists/HalfTests-Info.plist"; @@ -1183,16 +1380,20 @@ "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half.tests; + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.halftests; PRODUCT_NAME = HalfTests; SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; }; name = Debug; }; - DDFEECD423F2001A0096015C /* Release */ = { + DD86D58623D11C870046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = "Plists/HalfTests-Info.plist"; @@ -1201,16 +1402,18 @@ "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half.tests; + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.halftests; PRODUCT_NAME = HalfTests; SDKROOT = macosx; + SWIFT_VERSION = 5.0; }; name = Release; }; - DDFEECEC23F2003E0096015C /* Debug */ = { + DD86D59E23D11CA00046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1223,20 +1426,21 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = mh_dylib; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half; PRODUCT_NAME = Half; SDKROOT = appletvos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; - DDFEECED23F2003E0096015C /* Release */ = { + DD86D59F23D11CA00046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1249,19 +1453,21 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = mh_dylib; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half; PRODUCT_NAME = Half; SDKROOT = appletvos; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; }; name = Release; }; - DDFEECEF23F2003E0096015C /* Debug */ = { + DD86D5A123D11CA00046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "Plists/HalfTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1269,17 +1475,21 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half.tests; + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.halftests; PRODUCT_NAME = HalfTests; SDKROOT = appletvos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; - DDFEECF023F2003E0096015C /* Release */ = { + DD86D5A223D11CA00046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "Plists/HalfTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1287,18 +1497,20 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half.tests; + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.halftests; PRODUCT_NAME = HalfTests; SDKROOT = appletvos; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; }; name = Release; }; - DDFEECFC23F2004D0096015C /* Debug */ = { + DD86D5CA23D11D140046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1311,21 +1523,22 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = mh_dylib; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half; PRODUCT_NAME = Half; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; }; name = Debug; }; - DDFEECFD23F2004D0096015C /* Release */ = { + DD86D5CB23D11D140046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1338,109 +1551,145 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = mh_dylib; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.half; PRODUCT_NAME = Half; SDKROOT = watchos; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; }; name = Release; }; + DD9E3031271DBFF500C6D170 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = PH26G7KHX9; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + DD9E3032271DBFF500C6D170 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = PH26G7KHX9; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - DDB1DF78240B7F4700C20FED /* Build configuration list for PBXAggregateTarget "Generate Sources" */ = { + DD2FBC2A258BE8BB00DB3211 /* Build configuration list for PBXAggregateTarget "XCFramework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD2FBC28258BE8BB00DB3211 /* Debug */, + DD2FBC29258BE8BB00DB3211 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DD48BC9D270E0DE800D842BC /* Build configuration list for PBXNativeTarget "Half watchOS Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD48BC9B270E0DE800D842BC /* Debug */, + DD48BC9C270E0DE800D842BC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DD86D53723D11B3E0046E63E /* Build configuration list for PBXProject "Half" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDB1DF79240B7F4700C20FED /* Debug */, - DDB1DF7A240B7F4700C20FED /* Release */, + DD86D54F23D11B3E0046E63E /* Debug */, + DD86D55023D11B3E0046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFEEC2D23EF13900096015C /* Build configuration list for PBXProject "Half" */ = { + DD86D55123D11B3E0046E63E /* Build configuration list for PBXNativeTarget "Half" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDFEEC4523EF13910096015C /* Debug */, - DDFEEC4623EF13910096015C /* Release */, + DD86D55223D11B3E0046E63E /* Debug */, + DD86D55323D11B3E0046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFEEC4723EF13910096015C /* Build configuration list for PBXNativeTarget "Half" */ = { + DD86D55423D11B3E0046E63E /* Build configuration list for PBXNativeTarget "HalfTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDFEEC4823EF13910096015C /* Debug */, - DDFEEC4923EF13910096015C /* Release */, + DD86D55523D11B3E0046E63E /* Debug */, + DD86D55623D11B3E0046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFEEC4A23EF13910096015C /* Build configuration list for PBXNativeTarget "HalfTests" */ = { + DD86D56523D11C4B0046E63E /* Build configuration list for PBXAggregateTarget "Run SwiftLint" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDFEEC4B23EF13910096015C /* Debug */, - DDFEEC4C23EF13910096015C /* Release */, + DD86D56623D11C4B0046E63E /* Debug */, + DD86D56723D11C4B0046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFEECA523F1BA0B0096015C /* Build configuration list for PBXAggregateTarget "Run SwiftLint" */ = { + DD86D58123D11C870046E63E /* Build configuration list for PBXNativeTarget "Half macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDFEECA623F1BA0B0096015C /* Debug */, - DDFEECA723F1BA0B0096015C /* Release */, + DD86D58223D11C870046E63E /* Debug */, + DD86D58323D11C870046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFEECCF23F2001A0096015C /* Build configuration list for PBXNativeTarget "Half macOS" */ = { + DD86D58423D11C870046E63E /* Build configuration list for PBXNativeTarget "Half macOS Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDFEECD023F2001A0096015C /* Debug */, - DDFEECD123F2001A0096015C /* Release */, + DD86D58523D11C870046E63E /* Debug */, + DD86D58623D11C870046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFEECD223F2001A0096015C /* Build configuration list for PBXNativeTarget "Half macOS Tests" */ = { + DD86D59D23D11CA00046E63E /* Build configuration list for PBXNativeTarget "Half tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDFEECD323F2001A0096015C /* Debug */, - DDFEECD423F2001A0096015C /* Release */, + DD86D59E23D11CA00046E63E /* Debug */, + DD86D59F23D11CA00046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFEECEB23F2003E0096015C /* Build configuration list for PBXNativeTarget "Half tvOS" */ = { + DD86D5A023D11CA00046E63E /* Build configuration list for PBXNativeTarget "Half tvOS Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDFEECEC23F2003E0096015C /* Debug */, - DDFEECED23F2003E0096015C /* Release */, + DD86D5A123D11CA00046E63E /* Debug */, + DD86D5A223D11CA00046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFEECEE23F2003E0096015C /* Build configuration list for PBXNativeTarget "Half tvOS Tests" */ = { + DD86D5C923D11D140046E63E /* Build configuration list for PBXNativeTarget "Half watchOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDFEECEF23F2003E0096015C /* Debug */, - DDFEECF023F2003E0096015C /* Release */, + DD86D5CA23D11D140046E63E /* Debug */, + DD86D5CB23D11D140046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFEECFB23F2004D0096015C /* Build configuration list for PBXNativeTarget "Half watchOS" */ = { + DD9E3030271DBFF500C6D170 /* Build configuration list for PBXAggregateTarget "Generate Sources" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDFEECFC23F2004D0096015C /* Debug */, - DDFEECFD23F2004D0096015C /* Release */, + DD9E3031271DBFF500C6D170 /* Debug */, + DD9E3032271DBFF500C6D170 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = DDFEEC2A23EF13900096015C /* Project object */; + rootObject = DD86D53423D11B3E0046E63E /* Project object */; } diff --git a/Half.xcodeproj/xcshareddata/xcschemes/Half macOS Tests.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/Half macOS Tests.xcscheme index a99f952..f7547fd 100644 --- a/Half.xcodeproj/xcshareddata/xcschemes/Half macOS Tests.xcscheme +++ b/Half.xcodeproj/xcshareddata/xcschemes/Half macOS Tests.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -16,18 +16,24 @@ + + + + diff --git a/Half.xcodeproj/xcshareddata/xcschemes/Half macOS.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/Half macOS.xcscheme index ed5ffee..ff97eed 100644 --- a/Half.xcodeproj/xcshareddata/xcschemes/Half macOS.xcscheme +++ b/Half.xcodeproj/xcshareddata/xcschemes/Half macOS.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -26,29 +26,13 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - onlyGenerateCoverageForSpecifiedTargets = "YES"> - - - - - - - - - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + diff --git a/Half.xcodeproj/xcshareddata/xcschemes/Half tvOS Tests.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/Half tvOS Tests.xcscheme index 20da32c..f4b1c5d 100644 --- a/Half.xcodeproj/xcshareddata/xcschemes/Half tvOS Tests.xcscheme +++ b/Half.xcodeproj/xcshareddata/xcschemes/Half tvOS Tests.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -16,18 +16,24 @@ + + + + diff --git a/Half.xcodeproj/xcshareddata/xcschemes/Half tvOS.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/Half tvOS.xcscheme index 85896ea..0d77981 100644 --- a/Half.xcodeproj/xcshareddata/xcschemes/Half tvOS.xcscheme +++ b/Half.xcodeproj/xcshareddata/xcschemes/Half tvOS.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -26,29 +26,13 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - onlyGenerateCoverageForSpecifiedTargets = "YES"> - - - - - - - - - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + diff --git a/Half.xcodeproj/xcshareddata/xcschemes/Half watchOS Tests.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/Half watchOS Tests.xcscheme new file mode 100644 index 0000000..0cd888e --- /dev/null +++ b/Half.xcodeproj/xcshareddata/xcschemes/Half watchOS Tests.xcscheme @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Half.xcodeproj/xcshareddata/xcschemes/Half watchOS.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/Half watchOS.xcscheme index 621b3a0..f6b73de 100644 --- a/Half.xcodeproj/xcshareddata/xcschemes/Half watchOS.xcscheme +++ b/Half.xcodeproj/xcshareddata/xcschemes/Half watchOS.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -27,8 +27,12 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - - + + + + diff --git a/Half.xcodeproj/xcshareddata/xcschemes/Half.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/Half.xcscheme index 7aa0df1..90124d8 100644 --- a/Half.xcodeproj/xcshareddata/xcschemes/Half.xcscheme +++ b/Half.xcodeproj/xcshareddata/xcschemes/Half.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -26,29 +26,13 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - onlyGenerateCoverageForSpecifiedTargets = "YES"> - - - - - - - - - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + diff --git a/Half.xcodeproj/xcshareddata/xcschemes/HalfTests.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/HalfTests.xcscheme index ef63be8..43e13f4 100644 --- a/Half.xcodeproj/xcshareddata/xcschemes/HalfTests.xcscheme +++ b/Half.xcodeproj/xcshareddata/xcschemes/HalfTests.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -16,18 +16,24 @@ + + + + diff --git a/Half.xcodeproj/xcshareddata/xcschemes/Run SwiftLint.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/Run SwiftLint.xcscheme index 3d3acb1..9efe26a 100644 --- a/Half.xcodeproj/xcshareddata/xcschemes/Run SwiftLint.xcscheme +++ b/Half.xcodeproj/xcshareddata/xcschemes/Run SwiftLint.xcscheme @@ -1,6 +1,6 @@ @@ -50,7 +50,7 @@ diff --git a/Half.xcodeproj/xcshareddata/xcschemes/XCFramework.xcscheme b/Half.xcodeproj/xcshareddata/xcschemes/XCFramework.xcscheme new file mode 100644 index 0000000..32525d3 --- /dev/null +++ b/Half.xcodeproj/xcshareddata/xcschemes/XCFramework.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LICENSE b/LICENSE index 2d96682..5e01e5d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2020 Joseph Newton +Copyright (c) 2021 Joe Newton Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Package.swift b/Package.swift index 2b1a1ad..200d995 100644 --- a/Package.swift +++ b/Package.swift @@ -5,7 +5,7 @@ let package = Package( name: "Half", platforms: [ - .iOS("8.0"), + .iOS("9.0"), .macOS("10.10"), .tvOS("9.0"), .watchOS("2.0") diff --git a/README.md b/README.md index 0b22cda..0291bfd 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ Half ======== +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d30d31c29f17449481b97a04610ff5b9)](https://app.codacy.com/app/SomeRandomiOSDev/Half?utm_source=github.com&utm_medium=referral&utm_content=SomeRandomiOSDev/Half&utm_campaign=Badge_Grade_Dashboard) [![License MIT](https://img.shields.io/cocoapods/l/Half.svg)](https://cocoapods.org/pods/Half) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/Half.svg)](https://cocoapods.org/pods/Half) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Platform](https://img.shields.io/cocoapods/p/Half.svg)](https://cocoapods.org/pods/Half) -![Linux](https://img.shields.io/badge/platform-linux-lightgrey) -[![Build](https://travis-ci.com/SomeRandomiOSDev/Half.svg?branch=master)](https://travis-ci.com/SomeRandomiOSDev/Half) [![Code Coverage](https://codecov.io/gh/SomeRandomiOSDev/Half/branch/master/graph/badge.svg)](https://codecov.io/gh/SomeRandomiOSDev/Half) -[![Codacy](https://api.codacy.com/project/badge/Grade/8ad52c117e4a46d9aa4699d22fc0bf49)](https://app.codacy.com/app/SomeRandomiOSDev/Half?utm_source=github.com&utm_medium=referral&utm_content=SomeRandomiOSDev/Half&utm_campaign=Badge_Grade_Dashboard) -![Test](https://github.com/SomeRandomiOSDev/Half/workflows/Test/badge.svg) + +![Swift Package](https://github.com/SomeRandomiOSDev/Half/workflows/Swift%20Package/badge.svg) +![Xcode Project](https://github.com/SomeRandomiOSDev/Half/workflows/Xcode%20Project/badge.svg) +![Cocoapods](https://github.com/SomeRandomiOSDev/Half/workflows/Cocoapods/badge.svg) +![Carthage](https://github.com/SomeRandomiOSDev/Half/workflows/Carthage/badge.svg) **Half** is a lightweight framework containing a Swift implementation for a half-precision floating point type for iOS, macOS, tvOS, and watchOS. @@ -59,15 +61,10 @@ NOTE * [[SE-0277]](https://github.com/apple/swift-evolution/blob/master/proposals/0277-float16.md) added support for a native `Float16` type starting with Swift 5.3, therefore, this library is no longer recommended for projects using Swift 5.3 or later. -Contributing --------- - -If you have need for a specific feature or you encounter a bug, please open an issue. If you extend the functionality of **Half** yourself or you feel like fixing a bug yourself, please submit a pull request. - Author -------- -Joseph Newton, somerandomiosdev@gmail.com +Joe Newton, somerandomiosdev@gmail.com Credits -------- diff --git a/Sources/Half/Functions.swift b/Sources/Half/Functions.swift index c34bdd5..ff88ef0 100644 --- a/Sources/Half/Functions.swift +++ b/Sources/Half/Functions.swift @@ -5,7 +5,11 @@ // Copyright © 2020 SomeRandomiOSDev. All rights reserved. // -import Foundation +#if os(Linux) +import Glibc +#else +import Darwin +#endif // Implmentation of public functions found in swift/stdlib/public/Platform for Half precision. // diff --git a/Sources/Half/Half+Coding.swift b/Sources/Half/Half+Coding.swift index 6c0a3fa..2838ea1 100644 --- a/Sources/Half/Half+Coding.swift +++ b/Sources/Half/Half+Coding.swift @@ -5,8 +5,6 @@ // Copyright © 2020 SomeRandomiOSDev. All rights reserved. // -import Foundation - // MARK: - Codable Protocol Conformance extension Half: Codable { diff --git a/Sources/Half/Half.swift b/Sources/Half/Half.swift index f4d346d..5f558b9 100644 --- a/Sources/Half/Half.swift +++ b/Sources/Half/Half.swift @@ -8,7 +8,6 @@ #if SWIFT_PACKAGE import CHalf #endif -import Foundation #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS) import CoreGraphics.CGBase @@ -235,8 +234,17 @@ extension Half: BinaryFloatingPoint { public init(_ value: Source) where Source: BinaryFloatingPoint { if let half = value as? Half { self.init(half._value) + } else if value.isInfinite { + let infinity = Half.infinity + self = Half(sign: value.sign, exponentBitPattern: infinity.exponentBitPattern, significandBitPattern: infinity.significandBitPattern) + } else if value.isNaN { + if value.isSignalingNaN { + self = .signalingNaN + } else { + self = .nan + } } else { - self.init(Float(value)) + self.init(_half_from(Float(value))) } } diff --git a/Sources/Half/Half.swift.gyb b/Sources/Half/Half.swift.gyb index 5f497f0..b9da422 100644 --- a/Sources/Half/Half.swift.gyb +++ b/Sources/Half/Half.swift.gyb @@ -8,7 +8,6 @@ #if SWIFT_PACKAGE import CHalf #endif -import Foundation #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS) import CoreGraphics.CGBase @@ -245,8 +244,8 @@ extension Half: BinaryFloatingPoint { ${inline_always}public init(_ value: Source) where Source: BinaryFloatingPoint { if let half = value as? Half { self.init(half._value) - } else { % if swift_version == '4.0': + } else { let shift = (Source.significandBitCount - Half.significandBitCount) let significandBitPattern = UInt16(shift < 0 ? (UInt(value.significandBitPattern) &<< shift) : (UInt(value.significandBitPattern) &>> shift)) @@ -255,7 +254,17 @@ extension Half: BinaryFloatingPoint { self.init(sign: value.sign, exponentBitPattern: exponentBitPattern, significandBitPattern: significandBitPattern) % else: - self.init(Float(value)) + } else if value.isInfinite { + let infinity = Half.infinity + self = Half(sign: value.sign, exponentBitPattern: infinity.exponentBitPattern, significandBitPattern: infinity.significandBitPattern) + } else if value.isNaN { + if value.isSignalingNaN { + self = .signalingNaN + } else { + self = .nan + } + } else { + self.init(_half_from(Float(value))) % end } } diff --git a/Sources/Half/Half@swift-4.0.swift b/Sources/Half/Half@swift-4.0.swift index 2a4c89b..93ce91d 100644 --- a/Sources/Half/Half@swift-4.0.swift +++ b/Sources/Half/Half@swift-4.0.swift @@ -8,7 +8,6 @@ #if SWIFT_PACKAGE import CHalf #endif -import Foundation #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS) import CoreGraphics.CGBase diff --git a/Sources/Half/Half@swift-4.2.swift b/Sources/Half/Half@swift-4.2.swift index 5e84d9a..ad86ec8 100644 --- a/Sources/Half/Half@swift-4.2.swift +++ b/Sources/Half/Half@swift-4.2.swift @@ -8,7 +8,6 @@ #if SWIFT_PACKAGE import CHalf #endif -import Foundation #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS) import CoreGraphics.CGBase @@ -206,8 +205,17 @@ extension Half: BinaryFloatingPoint { public init(_ value: Source) where Source: BinaryFloatingPoint { if let half = value as? Half { self.init(half._value) + } else if value.isInfinite { + let infinity = Half.infinity + self = Half(sign: value.sign, exponentBitPattern: infinity.exponentBitPattern, significandBitPattern: infinity.significandBitPattern) + } else if value.isNaN { + if value.isSignalingNaN { + self = .signalingNaN + } else { + self = .nan + } } else { - self.init(Float(value)) + self.init(_half_from(Float(value))) } } diff --git a/Tests/CHalfTests/XCTestManifests.swift b/Tests/CHalfTests/XCTestManifests.swift index 7cc1be4..ad1a8bb 100644 --- a/Tests/CHalfTests/XCTestManifests.swift +++ b/Tests/CHalfTests/XCTestManifests.swift @@ -20,4 +20,4 @@ public func __allTests() -> [XCTestCaseEntry] { testCase(TestCHalf.__allTests__TestCHalf), ] } -#endif +#endif // #if !canImport(ObjectiveC) diff --git a/Tests/HalfTests/Half+CodingTests.swift b/Tests/HalfTests/Half+CodingTests.swift index b91b416..c52ea70 100644 --- a/Tests/HalfTests/Half+CodingTests.swift +++ b/Tests/HalfTests/Half+CodingTests.swift @@ -8,7 +8,7 @@ @testable import Half import XCTest -//swiftlint:disable nesting +//swiftlint:disable nesting function_body_length class HalfCodingTests: XCTestCase { diff --git a/Tests/HalfTests/HalfTests.swift b/Tests/HalfTests/HalfTests.swift index a14bade..74f1980 100644 --- a/Tests/HalfTests/HalfTests.swift +++ b/Tests/HalfTests/HalfTests.swift @@ -12,6 +12,8 @@ import XCTest import CoreGraphics.CGBase #endif // #if canImport(CoreGraphics) +//swiftlint:disable function_body_length + class HalfTests: XCTestCase { // MARK: Test Methods @@ -452,7 +454,20 @@ class HalfTests: XCTestCase { private func binaryFloatingPoint(_ float: BFP, compare: (BFP, BFP) -> Void) where BFP: BinaryFloatingPoint { let half = Half(float) - compare(float, BFP(half)) + let testFloat: BFP + + if half.isInfinite { + let infinity = BFP.infinity + testFloat = BFP(sign: half.sign, exponentBitPattern: infinity.exponentBitPattern, significandBitPattern: infinity.significandBitPattern) + } else if half.isSignalingNaN { + testFloat = .signalingNaN + } else if half.isNaN { + testFloat = .nan + } else { + testFloat = BFP(half) + } + + compare(float, testFloat) } private func exactBinaryFloatingPoint(_ float: BFP, shouldFail: Bool, file: StaticString = #file, line: UInt = #line, compare: (BFP, BFP) -> Void) where BFP: BinaryFloatingPoint { @@ -462,7 +477,19 @@ class HalfTests: XCTestCase { if shouldFail { XCTFail("Expected Half initializer to fail", file: file, line: line) } else { - compare(float, BFP(half)) + let testFloat: BFP + if half.isInfinite { + let infinity = BFP.infinity + testFloat = BFP(sign: half.sign, exponentBitPattern: infinity.exponentBitPattern, significandBitPattern: infinity.significandBitPattern) + } else if half.isSignalingNaN { + testFloat = .signalingNaN + } else if half.isNaN { + testFloat = .nan + } else { + testFloat = BFP(half) + } + + compare(float, testFloat) } } else if !shouldFail { XCTFail("Unexpected failure of Half initializer", file: file, line: line) diff --git a/Tests/HalfTests/XCTestManifests.swift b/Tests/HalfTests/XCTestManifests.swift index 43693f6..e23ff5a 100644 --- a/Tests/HalfTests/XCTestManifests.swift +++ b/Tests/HalfTests/XCTestManifests.swift @@ -62,4 +62,4 @@ public func __allTests() -> [XCTestCaseEntry] { testCase(TestFunctions.__allTests__TestFunctions), ] } -#endif +#endif // #if !canImport(ObjectiveC) diff --git a/Tests/Test Plans/Half macOS Tests.xctestplan b/Tests/Test Plans/Half macOS Tests.xctestplan new file mode 100644 index 0000000..ede8969 --- /dev/null +++ b/Tests/Test Plans/Half macOS Tests.xctestplan @@ -0,0 +1,32 @@ +{ + "configurations" : [ + { + "id" : "E83DAAAA-7E95-423A-B5C0-11038E54B4FC", + "name" : "Default", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : { + "targets" : [ + { + "containerPath" : "container:Half.xcodeproj", + "identifier" : "DD86D56F23D11C860046E63E", + "name" : "Half macOS" + } + ] + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:Half.xcodeproj", + "identifier" : "DD86D57723D11C860046E63E", + "name" : "Half macOS Tests" + } + } + ], + "version" : 1 +} diff --git a/Tests/Test Plans/Half tvOS Tests.xctestplan b/Tests/Test Plans/Half tvOS Tests.xctestplan new file mode 100644 index 0000000..5d3d8fc --- /dev/null +++ b/Tests/Test Plans/Half tvOS Tests.xctestplan @@ -0,0 +1,32 @@ +{ + "configurations" : [ + { + "id" : "A045C1A3-FB6D-4C3E-9102-7A44F742221D", + "name" : "Default", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : { + "targets" : [ + { + "containerPath" : "container:Half.xcodeproj", + "identifier" : "DD86D58B23D11CA00046E63E", + "name" : "Half tvOS" + } + ] + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:Half.xcodeproj", + "identifier" : "DD86D59323D11CA00046E63E", + "name" : "Half tvOS Tests" + } + } + ], + "version" : 1 +} diff --git a/Tests/Test Plans/Half watchOS Tests.xctestplan b/Tests/Test Plans/Half watchOS Tests.xctestplan new file mode 100644 index 0000000..6d06d5a --- /dev/null +++ b/Tests/Test Plans/Half watchOS Tests.xctestplan @@ -0,0 +1,32 @@ +{ + "configurations" : [ + { + "id" : "DEA19715-A3B6-4505-B81C-B0DC1C1C2C40", + "name" : "Default", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : { + "targets" : [ + { + "containerPath" : "container:Half.xcodeproj", + "identifier" : "DD86D5C323D11D140046E63E", + "name" : "Half watchOS" + } + ] + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:Half.xcodeproj", + "identifier" : "DD48BC93270E0DE800D842BC", + "name" : "Half watchOS Tests" + } + } + ], + "version" : 1 +} diff --git a/Tests/Test Plans/HalfTests.xctestplan b/Tests/Test Plans/HalfTests.xctestplan new file mode 100644 index 0000000..11a5b32 --- /dev/null +++ b/Tests/Test Plans/HalfTests.xctestplan @@ -0,0 +1,32 @@ +{ + "configurations" : [ + { + "id" : "EDFB1169-07E4-464B-85CC-6F011C5D5E19", + "name" : "Default", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : { + "targets" : [ + { + "containerPath" : "container:Half.xcodeproj", + "identifier" : "DD86D53C23D11B3E0046E63E", + "name" : "Half" + } + ] + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:Half.xcodeproj", + "identifier" : "DD86D54523D11B3E0046E63E", + "name" : "HalfTests" + } + } + ], + "version" : 1 +} diff --git a/scripts/carthage.sh b/scripts/carthage.sh new file mode 100755 index 0000000..7dc0b7f --- /dev/null +++ b/scripts/carthage.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# Needed to circumvent an issue with Carthage version < 0.37.0: https://github.com/Carthage/Carthage/issues/3019 +# +# carthage.sh +# Usage example: ./carthage.sh build --platform iOS + +VERSION="$(carthage version)" +"$(dirname "$0")/versions.sh" "$VERSION" "0.37.0" + +if [ $? -ge 0 ]; then + # Carthage version is greater than or equal to 0.37.0 meaning we can use the --use-xcframeworks flag + carthage "$@" --use-xcframeworks +else + # Workaround for Xcode 12 issue for Carthage versions prior to 0.37.0 + set -euo pipefail + + xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX) + trap 'rm -f "$xcconfig"' INT TERM HUP EXIT + + # For Xcode 12 make sure EXCLUDED_ARCHS is set to arm architectures otherwise + # the build will fail on lipo due to duplicate architectures. + for simulator in iphonesimulator appletvsimulator; do + echo "EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_${simulator}__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = arm64 arm64e armv7 armv7s armv6 armv8" >> $xcconfig + done + echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(PLATFORM_NAME)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig + + export XCODE_XCCONFIG_FILE="$xcconfig" + cat $XCODE_XCCONFIG_FILE + carthage "$@" +fi diff --git a/scripts/resolvepath.sh b/scripts/resolvepath.sh new file mode 100755 index 0000000..0ef7168 --- /dev/null +++ b/scripts/resolvepath.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# resolvepath.sh +# Usage example: ./resolvepath.sh "./some/random/path/../../" + +cd "$(dirname "$1")" &>/dev/null && echo "$PWD/${1##*/}" diff --git a/scripts/versions.sh b/scripts/versions.sh new file mode 100755 index 0000000..5d7ceaf --- /dev/null +++ b/scripts/versions.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# +# versions.sh +# Usage example: ./versions.sh "1.4.15" "1.7.0" + +# Copied & adapted from: https://stackoverflow.com/questions/4023830/how-to-compare-two-strings-in-dot-separated-version-format-in-bash#answer-4025065 +function compare_versions() { + if [ $1 = $2 ]; then + return 0 + fi + + local IFS=. + local i LHS=($1) RHS=($2) + + for ((i=${#LHS[@]}; i<${#RHS[@]}; i++)); do + LHS[i]=0 + done + + for ((i=0; i<${#LHS[@]}; i++)); do + if [ -z ${RHS[i]} ]; then + RHS[i]=0 + fi + + if ((10#${LHS[i]} > 10#${RHS[i]})); then + return 1 + elif ((10#${LHS[i]} < 10#${RHS[i]})); then + return -1 + fi + done + + return 0 +} + +exit $(compare_versions $1 $2) diff --git a/scripts/xcframework.sh b/scripts/xcframework.sh new file mode 100755 index 0000000..7a29fd1 --- /dev/null +++ b/scripts/xcframework.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +# xcframework.sh +# Usage example: ./xcframework.sh -output /Half.xcframework + +# Parse Arguments + +while [[ $# -gt 0 ]]; do + case "$1" in + -output) + OUTPUT_DIR="$2" + shift # -output + shift # + ;; + + -configuration) + CONFIGURATION="$2" + shift # -configuration + shift # + ;; + + *) + echo "Unknown argument: $1" + echo "./xcframework.sh [-output ]"] + exit 1 + esac +done + +if [ -z ${OUTPUT_DIR+x} ]; then + OUTPUT_DIR="$(dirname "$0")/build/Half.xcframework" +fi + +if [ -z ${CONFIGURATION+x} ]; then + CONFIGURATION="Release" +fi + +# Create Temporary Directory + +TMPDIR=`mktemp -d /tmp/.half.xcframework.build.XXXXXX` +cd "$(dirname "$(dirname "$0")")" + +check_result() { + if [ $1 -ne 0 ]; then + rm -rf "${TMPDIR}" + exit $1 + fi +} + +# Build iOS +xcodebuild -project "Half.xcodeproj" -scheme "Half" -destination "generic/platform=iOS" -archivePath "${TMPDIR}/iphoneos.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="armv7 armv7s arm64 arm64e" archive +check_result $? + +# Build iOS Simulator +xcodebuild -project "Half.xcodeproj" -scheme "Half" -destination "generic/platform=iOS Simulator" -archivePath "${TMPDIR}/iphonesimulator.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="i386 x86_64 arm64" archive +check_result $? + +# Build Mac Catalyst +xcodebuild -project "Half.xcodeproj" -scheme "Half" -destination "generic/platform=macOS,variant=Mac Catalyst" -archivePath "${TMPDIR}/maccatalyst.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="x86_64 arm64 arm64e" archive +check_result $? + +# Build Mac +xcodebuild -project "Half.xcodeproj" -scheme "Half macOS" -destination "generic/platform=macOS" -archivePath "${TMPDIR}/macos.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="x86_64 arm64 arm64e" archive +check_result $? + +# Build tvOS +xcodebuild -project "Half.xcodeproj" -scheme "Half tvOS" -destination "generic/platform=tvOS" -archivePath "${TMPDIR}/appletvos.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="arm64 arm64e" archive +check_result $? + +# Build tvOS Simulator +xcodebuild -project "Half.xcodeproj" -scheme "Half tvOS" -destination "generic/platform=tvOS Simulator" -archivePath "${TMPDIR}/appletvsimulator.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="x86_64 arm64" archive +check_result $? + +# Build watchOS +xcodebuild -project "Half.xcodeproj" -scheme "Half watchOS" -destination "generic/platform=watchOS" -archivePath "${TMPDIR}/watchos.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="arm64_32 armv7k" archive +check_result $? + +# Build watchOS Simulator +xcodebuild -project "Half.xcodeproj" -scheme "Half watchOS" -destination "generic/platform=watchOS Simulator" -archivePath "${TMPDIR}/watchsimulator.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="i386 x86_64 arm64" archive +check_result $? + +# Make XCFramework + +if [[ -d "${OUTPUT_DIR}" ]]; then + rm -rf "${OUTPUT_DIR}" +fi + +ARGUMENTS=(-create-xcframework -output "${OUTPUT_DIR}") + +for ARCHIVE in ${TMPDIR}/*.xcarchive; do + ARGUMENTS=(${ARGUMENTS[@]} -framework "${ARCHIVE}/Products/Library/Frameworks/Half.framework") + + if [[ -d "${ARCHIVE}/dSYMs/Half.framework.dSYM" ]]; then + ARGUMENTS=(${ARGUMENTS[@]} -debug-symbols "${ARCHIVE}/dSYMs/Half.framework.dSYM") + fi + + if [[ -d "${ARCHIVE}/BCSymbolMaps" ]]; then + for SYMBOLMAP in ${ARCHIVE}/BCSymbolMaps/*.bcsymbolmap; do + ARGUMENTS=(${ARGUMENTS[@]} -debug-symbols "${SYMBOLMAP}") + done + fi +done + +xcodebuild "${ARGUMENTS[@]}" +check_result $? + +# Cleanup + +rm -rf "${TMPDIR}" +exit 0