diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index ba9a1ed36..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,183 +0,0 @@ -name: CI - -on: - workflow_dispatch: - pull_request: - push: - branches: [master] - -jobs: - - linux: - - strategy: - fail-fast: false - matrix: - runs-on: [ubuntu-latest] - sys: - - {compiler: gcc, version: '11', name: c++17, flags: -DCPP17=ON} - - {compiler: clang, version: '15', name: assert, flags: -DXTENSOR_ENABLE_ASSERT=ON} - - {compiler: clang, version: '16', name: column-major, flags: -DDEFAULT_COLUMN_MAJOR=ON} - - {compiler: default, version: '', name: tbb, flags: -DXTENSOR_USE_TBB=ON -DTBB_INCLUDE_DIR=$CONDA_PREFIX/include -DTBB_LIBRARY=$CONDA_PREFIX/lib} - - {compiler: default, version: '', name: openmp, flags: -DXTENSOR_USE_OPENMP=ON} - - {compiler: default, version: '', name: noexcept, flags: -DXTENSOR_DISABLE_EXCEPTIONS=ON} - - {compiler: default, version: '', name: xsimd, flags: -DXTENSOR_USE_XSIMD=ON} - - {compiler: default, version: '', name: xsimd-tbb, flags: -DXTENSOR_USE_XSIMD=ON -DXTENSOR_USE_TBB=ON} - - defaults: - run: - shell: bash -e -l {0} - - name: ${{ matrix.runs-on }} • ${{ matrix.sys.compiler }}${{ matrix.sys.version }} - ${{ matrix.sys.name }} - runs-on: ${{ matrix.runs-on }} - steps: - - - name: Setup GCC - if: ${{ matrix.sys.compiler == 'gcc' }} - run: | - echo "CC=gcc-${{ matrix.sys.version }}" >> $GITHUB_ENV - echo "CXX=g++-${{ matrix.sys.version }}" >> $GITHUB_ENV - - - name: Setup clang - if: ${{ matrix.sys.compiler == 'clang' }} - run: | - LLVM_VERSION=${{ matrix.sys.version }} - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - || exit 1 - if [[ $LLVM_VERSION -ge 13 ]]; then - sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-$LLVM_VERSION main" || exit 1 - else - sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main" || exit 1 - fi || exit 1 - sudo apt-get update || exit 1 - sudo apt-get --no-install-suggests --no-install-recommends install clang-$LLVM_VERSION || exit 1 - sudo apt-get --no-install-suggests --no-install-recommends install g++-9 g++-9-multilib || exit 1 - sudo ln -s /usr/include/asm-generic /usr/include/asm - CC=clang-$LLVM_VERSION - echo "CC=$CC" >> $GITHUB_ENV - CXX=clang++-$LLVM_VERSION - echo "CXX=$CXX" >> $GITHUB_ENV - - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set conda environment - uses: mamba-org/setup-micromamba@main - with: - environment-name: myenv - environment-file: environment-dev.yml - init-shell: bash - cache-downloads: true - create-args: | - ${{ (matrix.sys.name == 'tbb' || matrix.sys.name == 'xsimd-tbb' ) && 'tbb-devel' || '' }} - - - name: Configure using CMake - run: cmake -Bbuild -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DBUILD_TESTS=ON ${{ matrix.sys.flags }} - - - name: Install - working-directory: build - run: cmake --install . - - - name: Build - working-directory: build - run: cmake --build . --target test_xtensor_lib --parallel 8 - - - name: Run tests - working-directory: build - run: ctest -R ^xtest$ --output-on-failure - - macos: - - strategy: - fail-fast: false - matrix: - runs-on: [macos-latest] - - defaults: - run: - shell: bash -e -l {0} - - name: ${{ matrix.runs-on }} • default - default - runs-on: ${{ matrix.runs-on }} - steps: - - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set conda environment - uses: mamba-org/setup-micromamba@main - with: - environment-name: myenv - environment-file: environment-dev.yml - init-shell: bash - cache-downloads: true - - - name: Configure using CMake - run: cmake -Bbuild -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DBUILD_TESTS=ON - - - name: Install - working-directory: build - run: cmake --install . - - - name: Build - working-directory: build - run: cmake --build . --target test_xtensor_lib --parallel 8 - - - name: Run tests - working-directory: build - run: ctest -R ^xtest$ --output-on-failure - - windows: - - strategy: - fail-fast: false - matrix: - runs-on: [windows-latest] - sys: - - {compiler: default} - - {compiler: clang} - - defaults: - run: - shell: bash -e -l {0} - - name: ${{ matrix.runs-on }} • ${{ matrix.sys.compiler }} - default - runs-on: ${{ matrix.runs-on }} - steps: - - - name: Setup MSVC - if: matrix.sys.compiler == 'default' - uses: ilammy/msvc-dev-cmd@v1 - - - name: Setup clang - if: matrix.sys.compiler == 'clang' - run: | - echo "CC=clang" >> $GITHUB_ENV - echo "CXX=clang++" >> $GITHUB_ENV - - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set conda environment - uses: mamba-org/setup-micromamba@main - with: - environment-name: myenv - environment-file: environment-dev.yml - init-shell: bash - cache-downloads: true - create-args: | - ninja - - - name: Configure using CMake - run: cmake -Bbuild -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DBUILD_TESTS=ON -G Ninja - - - name: Install - working-directory: build - run: cmake --install . - - - name: Build - working-directory: build - run: cmake --build . --target test_xtensor_lib --parallel 8 - - - name: Run tests - working-directory: build - run: ctest -R ^xtest$ --output-on-failure diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 000000000..97d8cb094 --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,91 @@ +name: Linux +on: + workflow_dispatch: + pull_request: + push: + branches: [master] +concurrency: + group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }} + cancel-in-progress: true +defaults: + run: + shell: bash -e -l {0} +jobs: + build: + runs-on: ubuntu-20.04 + name: ${{ matrix.sys.compiler }} ${{ matrix.sys.version }} - ${{ matrix.sys.name }} + strategy: + fail-fast: false + matrix: + sys: + - {compiler: clang, version: '15', name: assert, flags: -DXTENSOR_ENABLE_ASSERT=ON} + - {compiler: clang, version: '16', name: column-major, flags: -DDEFAULT_COLUMN_MAJOR=ON} + - {compiler: gcc, version: '8', name: openmp, flags: -DXTENSOR_USE_OPENMP=ON} + - {compiler: gcc, version: '9', name: noexcept, flags: -DXTENSOR_DISABLE_EXCEPTIONS=ON} + - {compiler: gcc, version: '10', name: xsimd, flags: -DXTENSOR_USE_XSIMD=ON} + - {compiler: gcc, version: '11', name: c++17, flags: -DCPP17=ON} + - {compiler: gcc, version: '11', name: xsimd-tbb, flags: -DXTENSOR_USE_XSIMD=ON -DXTENSOR_USE_TBB=ON} + - {compiler: gcc, version: '11', name: tbb, flags: -DXTENSOR_USE_TBB=ON -DTBB_INCLUDE_DIR=$CONDA_PREFIX/include -DTBB_LIBRARY=$CONDA_PREFIX/lib} + + steps: + + - name: Setup GCC + if: ${{ matrix.sys.compiler == 'gcc' }} + run: | + GCC_VERSION=${{ matrix.sys.version }} + sudo apt-get update + sudo apt-get --no-install-suggests --no-install-recommends install g++-$GCC_VERSION + CC=gcc-$GCC_VERSION + echo "CC=$CC" >> $GITHUB_ENV + CXX=g++-$GCC_VERSION + echo "CXX=$CXX" >> $GITHUB_ENV + + - name: Setup clang + if: ${{ matrix.sys.compiler == 'clang' }} + run: | + LLVM_VERSION=${{ matrix.sys.version }} + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - || exit 1 + if [[ $LLVM_VERSION -ge 13 ]]; then + sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-$LLVM_VERSION main" || exit 1 + else + sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main" || exit 1 + fi || exit 1 + sudo apt-get update || exit 1 + sudo apt-get --no-install-suggests --no-install-recommends install clang-$LLVM_VERSION || exit 1 + sudo apt-get --no-install-suggests --no-install-recommends install g++-9 g++-9-multilib || exit 1 + sudo ln -s /usr/include/asm-generic /usr/include/asm + CC=clang-$LLVM_VERSION + echo "CC=$CC" >> $GITHUB_ENV + CXX=clang++-$LLVM_VERSION + echo "CXX=$CXX" >> $GITHUB_ENV + + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set conda environment + uses: mamba-org/setup-micromamba@main + with: + environment-name: myenv + environment-file: environment-dev.yml + init-shell: bash + cache-downloads: true + create-args: | + ${{ (matrix.sys.name == 'tbb' || matrix.sys.name == 'xsimd-tbb' ) && 'tbb-devel' || '' }} + + - name: Configure using CMake + # env: + # CC: ${{ env.CC }} + # CXX: ${{ env.CXX }} + run: cmake -G Ninja -Bbuild -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DBUILD_TESTS=ON ${{ matrix.sys.flags }} + + - name: Install + working-directory: build + run: cmake --install . + + - name: Build + working-directory: build + run: cmake --build . --target test_xtensor_lib --parallel 8 + + - name: Run tests + working-directory: build + run: ctest -R ^xtest$ --output-on-failure diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml new file mode 100644 index 000000000..55b3f816c --- /dev/null +++ b/.github/workflows/osx.yml @@ -0,0 +1,50 @@ +name: OSX +on: + workflow_dispatch: + pull_request: + push: + branches: [master] +concurrency: + group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }} + cancel-in-progress: true +defaults: + run: + shell: bash -e -l {0} +jobs: + build: + runs-on: macos-${{ matrix.os }} + name: macos-${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - 11 + - 12 + + steps: + + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set conda environment + uses: mamba-org/setup-micromamba@main + with: + environment-name: myenv + environment-file: environment-dev.yml + init-shell: bash + cache-downloads: true + + - name: Configure using CMake + run: cmake -Bbuild -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DBUILD_TESTS=ON + + - name: Install + working-directory: build + run: cmake --install . + + - name: Build + working-directory: build + run: cmake --build . --target test_xtensor_lib --parallel 8 + + - name: Run tests + working-directory: build + run: ctest -R ^xtest$ --output-on-failure diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 000000000..133e6c7c5 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,63 @@ +name: Windows +on: + workflow_dispatch: + pull_request: + push: + branches: [master] +concurrency: + group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }} + cancel-in-progress: true +defaults: + run: + shell: bash -e -l {0} +jobs: + build: + runs-on: ${{ matrix.runs-on }} + name: ${{ matrix.sys.compiler }} + strategy: + fail-fast: false + matrix: + runs-on: [windows-latest] + sys: + - {compiler: default} + - {compiler: clang} + + steps: + + - name: Setup MSVC + if: matrix.sys.compiler == 'default' + uses: ilammy/msvc-dev-cmd@v1 + + - name: Setup clang + if: matrix.sys.compiler == 'clang' + run: | + echo "CC=clang" >> $GITHUB_ENV + echo "CXX=clang++" >> $GITHUB_ENV + + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set conda environment + uses: mamba-org/setup-micromamba@main + with: + environment-name: myenv + environment-file: environment-dev.yml + init-shell: bash + cache-downloads: true + create-args: | + ninja + + - name: Configure using CMake + run: cmake -Bbuild -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DBUILD_TESTS=ON -G Ninja + + - name: Install + working-directory: build + run: cmake --install . + + - name: Build + working-directory: build + run: cmake --build . --target test_xtensor_lib --parallel 8 + + - name: Run tests + working-directory: build + run: ctest -R ^xtest$ --output-on-failure diff --git a/environment-dev.yml b/environment-dev.yml index 81dd49ab0..acfeaa22d 100644 --- a/environment-dev.yml +++ b/environment-dev.yml @@ -8,3 +8,4 @@ dependencies: - nlohmann_json - doctest=2.4.7 - pre-commit +- ninja