diff --git a/.github/workflows/xcode.yml b/.github/workflows/xcode.yml new file mode 100644 index 000000000..97ea35a49 --- /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