name: C/C++ CI on: push: branches: [ master ] pull_request: jobs: build-alpine: timeout-minutes: 15 runs-on: ubuntu-22.04 strategy: matrix: config: - {arch: x86_64, branch: latest-stable} - {arch: x86, branch: latest-stable} - {arch: aarch64, branch: latest-stable} - {arch: armhf, branch: latest-stable} - {arch: armv7, branch: latest-stable} - {arch: ppc64le, branch: latest-stable} - {arch: riscv64, branch: edge} - {arch: s390x, branch: latest-stable} steps: - name: Setup Alpine Linux uses: jirutka/setup-alpine@v1 with: arch: ${{ matrix.config.arch }} branch: ${{ matrix.config.branch }} - name: Install dependencies shell: alpine.sh --root {0} run: | apk add git cmake gcc g++ make - name: Checkout repository uses: actions/checkout@v3 with: submodules: true - name: Build RandomX shell: alpine.sh {0} run: | mkdir build cd build cmake .. make -j$(nproc) - name: Run tests shell: alpine.sh {0} run: | build/randomx-tests build-ubuntu: timeout-minutes: 5 runs-on: ${{ matrix.config.os }} strategy: matrix: config: - {os: ubuntu-20.04, c: gcc-11, cpp: g++-11} - {os: ubuntu-22.04, c: gcc-12, cpp: g++-12} steps: - name: Install dependencies run: | sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install -y git build-essential cmake ${{ matrix.config.c }} ${{ matrix.config.cpp }} - name: Checkout repository uses: actions/checkout@v3 with: submodules: true - name: Build RandomX run: | mkdir build cd build cmake .. make -j$(nproc) - name: Run tests run: | build/randomx-tests build-windows-msys2: timeout-minutes: 15 runs-on: windows-latest strategy: matrix: config: - {c: "gcc", cxx: "g++"} - {c: "clang", cxx: "clang++"} defaults: run: shell: msys2 {0} steps: - name: Checkout repository uses: actions/checkout@v3 with: submodules: recursive - name: Setup MSYS2 uses: eine/setup-msys2@v2 with: update: true install: mingw-w64-x86_64-toolchain mingw-w64-x86_64-clang mingw-w64-x86_64-lld mingw-w64-x86_64-cmake make - name: Build RandomX run: | mkdir build cd build cmake .. -G "Unix Makefiles" -DCMAKE_C_COMPILER=${{ matrix.config.c }} -DCMAKE_CXX_COMPILER=${{ matrix.config.cxx }} make -j$(nproc) - name: Run tests run: | build/randomx-tests.exe build-windows-msbuild: timeout-minutes: 5 runs-on: windows-${{ matrix.config.os }} strategy: matrix: config: - {arch: x64, os: 2019, vs: Visual Studio 16 2019, msbuild: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\"} - {arch: x64, os: 2022, vs: Visual Studio 17 2022, msbuild: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\Msbuild\\Current\\Bin\\amd64\\"} - {arch: Win32, os: 2019, vs: Visual Studio 16 2019, msbuild: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\MSBuild\\Current\\Bin\\"} - {arch: Win32, os: 2022, vs: Visual Studio 17 2022, msbuild: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\Msbuild\\Current\\Bin\\"} steps: - name: Checkout repository uses: actions/checkout@v3 with: submodules: recursive - name: Setup cmake uses: lukka/get-cmake@latest - name: Build RandomX run: | mkdir build cd build cmake .. -G "${{ matrix.config.vs }}" -A ${{ matrix.config.arch }} & "${{ matrix.config.msbuild }}msbuild" -v:m /m /p:Configuration=Release randomx-tests.vcxproj - name: Run tests run: | build/Release/randomx-tests.exe build-macos: timeout-minutes: 5 runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-11, macos-12, macos-13] steps: - name: Checkout repository uses: actions/checkout@v3 with: submodules: recursive - name: Install dependencies run: HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake - name: Build RandomX run: | mkdir build cd build cmake .. make -j3 - name: Run tests run: | build/randomx-tests build-freebsd: timeout-minutes: 15 runs-on: ${{ matrix.os.host }} strategy: matrix: os: - name: freebsd architecture: x86-64 version: '13.2' host: ubuntu-22.04 - name: freebsd architecture: arm64 version: '13.2' host: ubuntu-22.04 steps: - name: Checkout repository uses: actions/checkout@v3 with: submodules: recursive - name: Build RandomX uses: cross-platform-actions/action@v0.19.0 with: operating_system: ${{ matrix.os.name }} architecture: ${{ matrix.os.architecture }} version: ${{ matrix.os.version }} shell: bash run: | sudo pkg install -y cmake mkdir build && cd build cmake .. make -j2 ./randomx-tests