ci: add MSVC build on GitHub Actions #225
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches-ignore: | |
- 'ci/**' | |
- '!ci/gha**' | |
- 'dependabot/**' | |
pull_request: | |
branches: | |
- 'master' | |
concurrency: | |
group: build-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
# check-generated-files: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Regenerate files | |
# working-directory: test | |
# run: make maintainer-clean && make generate ECHO="$(which echo)" | |
# - name: Check for changes | |
# run: git diff --exit-code | |
# armclang: | |
# runs-on: ubuntu-${{ matrix.distro }} | |
# strategy: | |
# matrix: | |
# include: | |
# # https://developer.arm.com/Tools%20and%20Software/Arm%20Compiler%20for%20Linux#Software-Download | |
# - version: "24.04" | |
# distro: "22.04" | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: uraimo/run-on-arch-action@v2 | |
# name: Run commands | |
# with: | |
# arch: aarch64 | |
# distro: ubuntu${{ matrix.distro }} | |
# install: | | |
# apt-get update | |
# apt-get install -y curl python3 libc6-dev make gcc g++ | |
# mkdir /tmp/armclang-installer | |
# cd /tmp/armclang-installer | |
# curl -s "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_${{ matrix.version }}/arm-compiler-for-linux_${{ matrix.version }}_Ubuntu-${{ matrix.distro }}_aarch64.tar" | tar xv | |
# ./arm-compiler-for-linux_${{ matrix.version }}_Ubuntu-${{ matrix.distro }}/arm-compiler-for-linux_${{ matrix.version }}_Ubuntu-${{ matrix.distro }}.sh --accept | |
# env: | | |
# CC: /opt/arm/arm-linux-compiler-24.04_Ubuntu-22.04/bin/armclang | |
# CXX: /opt/arm/arm-linux-compiler-24.04_Ubuntu-22.04/bin/armclang++ | |
# run: | | |
# cd test | |
# make | |
# clang: | |
# runs-on: ubuntu-${{ matrix.distro }} | |
# strategy: | |
# matrix: | |
# include: | |
# # Previous versions will no longer run on GitHub, but can be | |
# # tested in Docker. Here are the versions which are available: | |
# # | |
# # - Ubuntu 14.04: 3.3 - 3.9 | |
# # - Ubuntu 16.04: 3.5 - 6.0 | |
# # - Ubuntu 18.04: 3.9 - 10 | |
# - version: "6.0" | |
# distro: "20.04" | |
# - version: "7" | |
# distro: "20.04" | |
# - version: "8" | |
# distro: "20.04" | |
# - version: "9" | |
# distro: "20.04" | |
# - version: "10" | |
# distro: "20.04" | |
# # - version: "11" | |
# # distro: "20.04" | |
# # - version: "12" | |
# # distro: "20.04" | |
# - version: "11" | |
# distro: "22.04" | |
# - version: "12" | |
# distro: "22.04" | |
# - version: "13" | |
# distro: "22.04" | |
# # - version: "14" | |
# # distro: "22.04" | |
# # - version: "15" | |
# # distro: "22.04" | |
# - version: "14" | |
# distro: "24.04" | |
# - version: "15" | |
# distro: "24.04" | |
# - version: "16" | |
# distro: "24.04" | |
# - version: "17" | |
# distro: "24.04" | |
# - version: "18" | |
# distro: "24.04" | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install Clang ${{ matrix.version }} | |
# run: | | |
# sudo apt-get update | |
# sudo apt-get -y install clang-${{ matrix.version }} | |
# - name: Compile | |
# env: | |
# CC: clang-${{ matrix.version }} | |
# CXX: clang++-${{ matrix.version }} | |
# run: make | |
# working-directory: test | |
# dmc: | |
# runs-on: windows-latest | |
# strategy: | |
# matrix: | |
# version: | |
# - "8.26" | |
# - "8.30" | |
# - "8.40" | |
# - "8.50" | |
# - "8.57" | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install Digital Mars C/C++ Compiler | |
# run: | | |
# $version = "${{ matrix.version }}".Replace(".", "") | |
# $url = "http://ftp.digitalmars.com/Digital_Mars_C++/Patch/dm${version}c.zip" | |
# Invoke-WebRequest -Uri "${url}" -OutFile "dmc.zip" | |
# Expand-Archive -LiteralPath "dmc.zip" -DestinationPath dmc-tmp | |
# Move-Item -Path dmc-tmp\* -Destination dmc | |
# working-directory: test | |
# - name: Compile | |
# env: | |
# CC: dmc\bin\dmc.exe | |
# CXX: dmc\bin\dmc.exe | |
# run: make -f Makefile.dmc | |
# working-directory: test | |
# emcscripten: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: mymindstorm/setup-emsdk@v14 | |
# - name: Compile | |
# env: | |
# CC: emcc | |
# CXX: emcc | |
# run: make -C test | |
# gcc: | |
# runs-on: ubuntu-${{ matrix.distro }} | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# include: | |
# # Previous versions will no longer run on GitHub, but can be | |
# # tested in Docker. Here are the versions which are available: | |
# # | |
# # - Ubuntu 14.04: 4.4 - 4.8 | |
# # - Ubuntu 16.04: 4.6 - 5 | |
# # - Ubuntu 18.04: 5 - 8 | |
# - version: "7" | |
# distro: "20.04" | |
# - version: "8" | |
# distro: "20.04" | |
# # - version: "9" | |
# # distro: "20.04" | |
# # - version: "10" | |
# # distro: "20.04" | |
# # - version: "9" | |
# # distro: "22.04" | |
# # - version: "10" | |
# # distro: "22.04" | |
# # - version: "11" | |
# # distro: "22.04" | |
# # - version: "12" | |
# # distro: "22.04" | |
# - version: "9" | |
# distro: "24.04" | |
# - version: "10" | |
# distro: "24.04" | |
# - version: "11" | |
# distro: "24.04" | |
# - version: "12" | |
# distro: "24.04" | |
# - version: "13" | |
# distro: "24.04" | |
# - version: "14" | |
# distro: "24.04" | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install GCC | |
# run: | | |
# sudo apt-get update | |
# sudo apt-get -y install gcc-${{ matrix.version }} g++-${{ matrix.version }} | |
# - name: Compile | |
# env: | |
# CC: gcc-${{ matrix.version }} | |
# CXX: g++-${{ matrix.version }} | |
# run: make | |
# working-directory: test | |
# intel: | |
# runs-on: ubuntu-20.04 | |
# strategy: | |
# matrix: | |
# include: | |
# - version: "2021.1.1" | |
# classic: true | |
# # - version: "2021.1.2" | |
# # classic: true | |
# # - version: "2021.2.0" | |
# # classic: true | |
# # - version: "2021.3.0" | |
# # classic: true | |
# # - version: "2021.4.0" | |
# # classic: true | |
# - version: "2022.0.1" | |
# classic: true | |
# # - version: "2022.0.2" | |
# # classic: true | |
# # - version: "2022.1.0" | |
# # classic: true | |
# # - version: "2022.2.0" | |
# # classic: true | |
# # - version: "2022.2.1" | |
# # classic: true | |
# - version: "2023.0.0" | |
# classic: true | |
# # - version: "2023.1.0" | |
# # classic: true | |
# # - version: "2023.2.0" | |
# # classic: true | |
# - version: "2023.2.1" | |
# classic: true | |
# - version: "2023.2.2" | |
# # - version: "2023.2.3" | |
# # - version: "2023.2.4" | |
# # - version: "2024.0" | |
# # - version: "2024.1" | |
# - version: "2024.2" | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Free some disk space | |
# run: sudo rm -rf /usr/local/lib/android /usr/local/.ghcup/ghc | |
# - name: Configure Intel OneAPI Repository | |
# run: | | |
# curl -s https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
# echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
# sudo apt-get update | |
# - name: Install Intel oneAPI DPC++/C++ Compiler | |
# run: | | |
# sudo apt-get install -y "intel-oneapi-compiler-dpcpp-cpp-${{ matrix.version }}" | |
# - name: Install Intel Classic C/C++ Compiler | |
# if: matrix.classic | |
# run: | | |
# sudo apt-get install -y "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${{ matrix.version }}" | |
# - name: Compile with Intel oneAPI DPC++/C++ Compiler | |
# env: | |
# CC: icx | |
# CXX: icpx | |
# working-directory: test | |
# run: | | |
# . /opt/intel/oneapi/setvars.sh | |
# make && make clean | |
# - name: Compile with Intel Classic C/C++ Compiler | |
# if: matrix.classic | |
# env: | |
# CC: icc | |
# CXX: icpc | |
# working-directory: test | |
# run: | | |
# . /opt/intel/oneapi/setvars.sh | |
# make && make clean | |
msvc: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ilammy/msvc-dev-cmd@v1 | |
- name: Compile | |
working-directory: test | |
run: make -f Makefile.msvc | |
# nvhpc: | |
# runs-on: ubuntu-${{ matrix.distro != '' && matrix.distro || 'latest' }} | |
# strategy: | |
# matrix: | |
# include: | |
# # For available versions, see | |
# # https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64/Packages | |
# - version: "20.11" | |
# distro: "20.04" | |
# # - version: "21.1" ## BROKEN. File size mismatch. | |
# # distro: "20.04" | |
# # - version: "21.2" | |
# # distro: "20.04" | |
# # - version: "21.3" | |
# # distro: "20.04" | |
# # - version: "21.5" | |
# # distro: "20.04" | |
# - version: "21.7" | |
# distro: "20.04" | |
# # - version: "21.9" | |
# # distro: "20.04" | |
# # - version: "21.11" | |
# # distro: "22.04" | |
# # - version: "22.1" | |
# # distro: "22.04" | |
# # - version: "22.2" | |
# # distro: "22.04" | |
# - version: "22.3" | |
# distro: "22.04" | |
# # - version: "22.5" | |
# # distro: "22.04" | |
# # - version: "22.7" | |
# # distro: "22.04" | |
# # - version: "22.9" | |
# # distro: "22.04" | |
# # - version: "22.11" | |
# # distro: "22.04" | |
# - version: "23.1" | |
# distro: "22.04" | |
# # - version: "23.3" | |
# # distro: "22.04" | |
# # - version: "23.5" | |
# # distro: "22.04" | |
# # - version: "23.7" | |
# # distro: "22.04" | |
# # - version: "23.9" | |
# # distro: "22.04" | |
# - version: "23.11" | |
# distro: "22.04" | |
# # - version: "24.1" | |
# # distro: "22.04" | |
# # - version: "24.3" | |
# # distro: "22.04" | |
# - version: "24.7" | |
# distro: "24.04" | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Free some disk space | |
# run: sudo rm -rf /usr/local/lib/android /usr/local/.ghcup/ghc | |
# - name: Install NVidia HPC SDK | |
# run: | | |
# curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg | |
# echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list | |
# sudo apt-get update -y | |
# sudo apt-get install -y nvhpc-$(echo "${{ matrix.version }}" | tr '.' '-') | |
# - name: Compile | |
# env: | |
# CC: /opt/nvidia/hpc_sdk/Linux_x86_64/"${{ matrix.version }}"/compilers/bin/nvc | |
# CXX: /opt/nvidia/hpc_sdk/Linux_x86_64/"${{ matrix.version }}"/compilers/bin/nvc++ | |
# working-directory: test | |
# run: make | |
# pelles-c: | |
# runs-on: windows-latest | |
# strategy: | |
# matrix: | |
# version: | |
# # https://community.chocolatey.org/packages/pelles-c#versionhistory | |
# - "12.0.2" | |
# - "11.0.2" | |
# - "10.0.6" | |
# - "9.00.0.0" | |
# # - "8.00.0.0" ## Installation times out. | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install Pelles-C | |
# uses: crazy-max/ghaction-chocolatey@v3 | |
# with: | |
# args: install pelles-c --version "${{ matrix.version }}" --no-progress | |
# - name: Compile | |
# env: | |
# CC: 'C:\Program Files\PellesC\bin\pocc.exe' | |
# LD: 'C:\Program Files\PellesC\bin\polink.exe' | |
# CFLAGS: '/IC:\Progra~1\PellesC\Include' | |
# LDFLAGS: '/LIBPATH:C:\Progra~1\PellesC\lib /LIBPATH:C:\Progra~1\PellesC\Lib\Win64' | |
# working-directory: test | |
# run: make -f Makefile.pelles | |
# tcc: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install Tiny C Compiler | |
# run: | | |
# sudo apt-get install -y tcc | |
# - name: Compile | |
# env: | |
# CC: tcc | |
# working-directory: test | |
# run: make | |
# ti: | |
# runs-on: ubuntu-latest | |
# strategy: | |
# matrix: | |
# include: | |
# - tool: ARM | |
# version: 20.2.7.LTS | |
# compiler: armcl | |
# - tool: MSP | |
# version: 21.6.1.LTS | |
# compiler: cl430 | |
# - tool: C2000 | |
# version: 22.6.1.LTS | |
# compiler: cl2000 | |
# - tool: C6000 | |
# version: 8.3.13 | |
# compiler: cl6x | |
# - tool: C7000 | |
# version: 4.1.0.LTS | |
# compiler: cl7x | |
# - tool: PRU | |
# version: 2.3.3 | |
# compiler: clpru | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install Compiler | |
# run: | | |
# curl -s -o installer.bin "$(curl -s "https://www.ti.com/tool/download/${{ matrix.tool }}-CGT/${{ matrix.version }}" | grep -oP 'https://[a-zA-Z0-9\._\-/]+\.bin')" | |
# chmod u+x installer.bin | |
# ./installer.bin --mode unattended --unattendedmodeui none --prefix ti-compiler | |
# mv ti-compiler/* ti-compiler/compiler | |
# - name: Compile | |
# env: | |
# CC: ../ti-compiler/compiler/bin/${{ matrix.compiler }} | |
# working-directory: test | |
# run: make | |
# xlc: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: uraimo/run-on-arch-action@v2 | |
# name: Run commands | |
# id: runcmd | |
# with: | |
# arch: ppc64le | |
# distro: ubuntu22.04 | |
# install: | | |
# apt-get update | |
# apt-get install -y curl gnupg make libncurses5 | |
# curl -s https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/public.gpg | apt-key add - | |
# echo "deb https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/ trusty main" | tee /etc/apt/sources.list.d/ibm-xl-compiler-eval.list | |
# apt-get update | |
# apt-get install -y xlc.16.1.1 | |
# /opt/ibm/xlC/16.1.1/bin/xlc_configure <<< 1 | |
# env: | | |
# CC: xlc | |
# CXX: xlc++ | |
# run: | | |
# cd test | |
# make |