diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml new file mode 100644 index 0000000..e8cfc85 --- /dev/null +++ b/.github/workflows/wheels.yml @@ -0,0 +1,141 @@ +name: Build + +on: [push, pull_request] + +jobs: + build_wheels: + name: Build wheel for cp${{ matrix.python }}-${{ matrix.platform_id }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + # Windows 64-bit + - os: windows-latest + python: 38 + platform_id: win_amd64 + - os: windows-latest + python: 39 + platform_id: win_amd64 + - os: windows-latest + python: 310 + platform_id: win_amd64 + - os: windows-latest + python: 311 + platform_id: win_amd64 + + # Linux 64-bit + - os: ubuntu-latest + python: 38 + platform_id: manylinux_x86_64 + - os: ubuntu-latest + python: 39 + platform_id: manylinux_x86_64 + - os: ubuntu-latest + python: 310 + platform_id: manylinux_x86_64 + - os: ubuntu-latest + python: 311 + platform_id: manylinux_x86_64 + + # macOS on Intel 64-bit + - os: macos-latest + python: 38 + arch: x86_64 + platform_id: macosx_x86_64 + - os: macos-latest + python: 39 + arch: x86_64 + platform_id: macosx_x86_64 + - os: macos-latest + python: 310 + arch: x86_64 + platform_id: macosx_x86_64 + - os: macos-latest + python: 311 + arch: x86_64 + platform_id: macosx_x86_64 + + # macOS on Apple M1 64-bit + - os: macos-latest + python: 38 + arch: arm64 + platform_id: macosx_arm64 + - os: macos-latest + python: 39 + arch: arm64 + platform_id: macosx_arm64 + - os: macos-latest + python: 310 + arch: arm64 + platform_id: macosx_arm64 + - os: macos-latest + python: 311 + arch: arm64 + platform_id: macosx_arm64 + + steps: + - uses: actions/checkout@v3 + with: + submodules: true + + - uses: actions/setup-python@v4 + name: Install Python host for cibuildwheel + with: + python-version: '3.9' + + # Visual Studio + - name: Set up MSVC x64 + if: matrix.platform_id == 'win_amd64' + uses: ilammy/msvc-dev-cmd@v1 + + - name: Installing Nasm win_amd64 + if: matrix.platform_id == 'win_amd64' + run: | + choco install --no-progress -y nasm + + - name: Installing Nasm win32 + if: matrix.platform_id == 'win32' + run: | + choco install --no-progress -y --x86 nasm + + - name: Set Path win32 + if: matrix.platform_id == 'win32' + shell: bash + run: | + echo "C:\Program Files (x86)\NASM" >> $GITHUB_PATH + + - name: Set Path win_amd64 + if: matrix.platform_id == 'win_amd64' + shell: bash + run: | + echo "C:\Program Files\NASM" >> $GITHUB_PATH + + - name: Install cibuildwheel + run: python -m pip install cibuildwheel==2.11.4 + + - name: Build wheels + # to supply options, put them in 'env', like: + env: + CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 + CIBW_MANYLINUX_I686_IMAGE: manylinux2014 + CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014 + CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.platform_id }} + CIBW_ARCHS_LINUX: auto aarch64 + + CIBW_ARCHS_MACOS: ${{ matrix.arch }} + CIBW_ENVIRONMENT_MACOS: > + CMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} + + CIBW_TEST_COMMAND: python -c "import Trekker" + + # Include latest Python beta + CIBW_PRERELEASE_PYTHONS: True + + CIBW_BEFORE_BUILD: pip install cython wheel + + run: python -m cibuildwheel --output-dir wheelhouse src/python/ + + - uses: actions/upload-artifact@v2 + with: + path: ./wheelhouse/*.whl