diff --git a/.github/workflows/xcode.yml b/.github/workflows/xcode.yml new file mode 100644 index 000000000..4799aa41f --- /dev/null +++ b/.github/workflows/xcode.yml @@ -0,0 +1,89 @@ +name: Xcode Build Tests + +# START OF COMMON SECTION +on: + push: + branches: [ 'master', 'main', 'release/**' ] + pull_request: + branches: [ '*' ] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +# END OF COMMON SECTION + +jobs: + build: + if: github.repository_owner == 'wolfssl' + runs-on: macos-latest + # This should be a safe limit for the tests to run. + timeout-minutes: 10 + strategy: + matrix: + include: + # macOS builds + - target: wolfssl_osx + arch: arm64 + config: Release + sdk: macosx + name: macOS (ARM64, Release) + - target: wolfssl_osx + arch: x86_64 + config: Release + sdk: macosx + name: macOS (x86_64, Release) + - target: wolfssl_osx + arch: arm64 + config: Debug + sdk: macosx + name: macOS (ARM64, Debug) + - target: wolfssl_osx + arch: x86_64 + config: Debug + sdk: macosx + name: macOS (x86_64, Debug) + # Universal build (both architectures) + - target: wolfssl_osx + arch: arm64 + arch2: x86_64 + config: Release + sdk: macosx + name: macOS (Universal, Release) + universal: true + # tvOS builds + - target: wolfssl_tvos + arch: arm64 + config: Release + sdk: appletvos + name: tvOS (ARM64, Release) + - target: wolfssl_tvos + arch: arm64 + config: Release + sdk: appletvsimulator + name: tvOS Simulator (ARM64, Release) + steps: + - uses: actions/checkout@v4 + + - name: Build wolfSSL with Xcode (${{ matrix.name }}) + working-directory: ./IDE/XCODE + run: | + if [ "${{ matrix.universal }}" == "true" ]; then + xcodebuild -project wolfssl.xcodeproj \ + -target ${{ matrix.target }} \ + -configuration ${{ matrix.config }} \ + -arch ${{ matrix.arch }} \ + -arch ${{ matrix.arch2 }} \ + -sdk ${{ matrix.sdk }} \ + SYMROOT=build \ + OBJROOT=build \ + build + else + xcodebuild -project wolfssl.xcodeproj \ + -target ${{ matrix.target }} \ + -configuration ${{ matrix.config }} \ + -arch ${{ matrix.arch }} \ + -sdk ${{ matrix.sdk }} \ + SYMROOT=build \ + OBJROOT=build \ + build + fi diff --git a/IDE/XCODE/wolfssl.xcodeproj/project.pbxproj b/IDE/XCODE/wolfssl.xcodeproj/project.pbxproj index 4b00e46e5..1c5d65d1c 100644 --- a/IDE/XCODE/wolfssl.xcodeproj/project.pbxproj +++ b/IDE/XCODE/wolfssl.xcodeproj/project.pbxproj @@ -1069,11 +1069,11 @@ 700F0C892A2FBE8200755BA7 /* ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ssl.h; path = ../../wolfssl/openssl/ssl.h; sourceTree = ""; }; 700F0C8A2A2FBE8200755BA7 /* rsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rsa.h; path = ../../wolfssl/openssl/rsa.h; sourceTree = ""; }; 9D01058F291CEA4F00A854D3 /* armv8-sha512-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = "armv8-sha512-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-sha512-asm.S"; sourceTree = ""; }; - 9D010591291CEA4F00A854D3 /* armv8-sha256-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "armv8-sha256-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-sha256-asm.S"; sourceTree = ""; }; - 9D010593291CEA4F00A854D3 /* armv8-poly1305-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "armv8-poly1305-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-poly1305-asm.S"; sourceTree = ""; }; + 9D010591291CEA4F00A854D3 /* armv8-sha256-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = "armv8-sha256-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-sha256-asm.S"; sourceTree = ""; }; + 9D010593291CEA4F00A854D3 /* armv8-poly1305-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = "armv8-poly1305-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-poly1305-asm.S"; sourceTree = ""; }; 9D010595291CEA4F00A854D3 /* armv8-sha3-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = "armv8-sha3-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-sha3-asm.S"; sourceTree = ""; }; - 9D010596291CEA4F00A854D3 /* armv8-chacha-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "armv8-chacha-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-chacha-asm.S"; sourceTree = ""; }; - 9D010598291CEA4F00A854D3 /* armv8-aes-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "armv8-aes-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-aes-asm.S"; sourceTree = ""; }; + 9D010596291CEA4F00A854D3 /* armv8-chacha-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = "armv8-chacha-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-chacha-asm.S"; sourceTree = ""; }; + 9D010598291CEA4F00A854D3 /* armv8-aes-asm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = "armv8-aes-asm.S"; path = "../../wolfcrypt/src/port/arm/armv8-aes-asm.S"; sourceTree = ""; }; 9D010599291CEA4F00A854D3 /* armv8-curve25519.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = "armv8-curve25519.S"; path = "../../wolfcrypt/src/port/arm/armv8-curve25519.S"; sourceTree = ""; }; 9D2E31CA291CDF120082B941 /* quic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = quic.c; path = ../../src/quic.c; sourceTree = ""; }; 9D2E31CB291CDF120082B941 /* dtls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dtls.c; path = ../../src/dtls.c; sourceTree = ""; };