diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 326746eae..96e488de2 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -27,10 +27,11 @@ jobs: # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: [macos-14] - architecture: [x64, arm64] - compiler: [gcc] + architecture: [arm64] + compiler: [clang] steps: - name: Checkout repository @@ -39,40 +40,27 @@ jobs: - name: Download dependencies shell: bash run: | - VERSION_BQPD="1.0.0" - VERSION_MUMPS="5.8.0" + VERSION_HIGHS="1.11.0" if [[ "${{matrix.architecture}}" == "x64" ]]; then PLATFORM="x86_64-apple-darwin" else PLATFORM="aarch64-apple-darwin" fi - wget https://github.com/leyffer/BQPD_jll.jl/releases/download/BQPD-v${VERSION_BQPD}%2B0/BQPD.v${VERSION_BQPD}.$PLATFORM-libgfortran5.tar.gz - wget https://github.com/amontoison/MUMPS_static_jll.jl/releases/download/MUMPS_static-v${VERSION_MUMPS}%2B0/MUMPS_static.v${VERSION_MUMPS}.$PLATFORM-libgfortran5.tar.gz + wget https://github.com/amontoison/HiGHS_static_jll.jl/releases/download/HiGHS_static-v${VERSION_HIGHS}%2B0/HiGHS_static.v${VERSION_HIGHS}.$PLATFORM-libgfortran5.tar.gz mkdir deps - tar -xzvf BQPD.v${VERSION_BQPD}.$PLATFORM-libgfortran5.tar.gz -C deps - tar -xzvf MUMPS_static.v${VERSION_MUMPS}.$PLATFORM-libgfortran5.tar.gz -C deps - - - name: Install Fortran compiler - uses: fortran-lang/setup-fortran@main - with: - compiler: 'gcc' - version: '13' + mkdir deps/highs + tar -xzvf HiGHS_static.v${VERSION_HIGHS}.$PLATFORM-libgfortran5.tar.gz -C deps/highs - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type run: | cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ - -DMUMPS_INCLUDE_DIR=${{github.workspace}}/deps/include \ - -DMETIS_INCLUDE_DIR=${{github.workspace}}/deps/include \ - -DBQPD=${{github.workspace}}/deps/lib/libbqpd.a \ - -DMETIS_LIBRARY=${{github.workspace}}/deps/lib/libmetis.a \ - -DMUMPS_LIBRARY=${{github.workspace}}/deps/lib/libdmumps.a \ - -DMUMPS_COMMON_LIBRARY=${{github.workspace}}/deps/lib/libmumps_common.a \ - -DMUMPS_PORD_LIBRARY=${{github.workspace}}/deps/lib/libpord.a \ - -DMUMPS_MPISEQ_LIBRARY=${{github.workspace}}/deps/lib/libmpiseq.a \ - -DBLAS_LIBRARIES=${{github.workspace}}/deps/lib/libblas.a \ - -DLAPACK_LIBRARIES=${{github.workspace}}/deps/lib/liblapack.a + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DHIGHS_DIR=${{github.workspace}}/deps/highs/lib/cmake/highs \ + -DBUILD_STATIC_LIBS=ON \ + -DBUILD_SHARED_LIBS=ON . - name: Build # Build your program with the given configuration diff --git a/.github/workflows/build-msvc.yml b/.github/workflows/build-msvc.yml index e5d9a0b08..73681f669 100644 --- a/.github/workflows/build-msvc.yml +++ b/.github/workflows/build-msvc.yml @@ -43,6 +43,7 @@ jobs: run: | VERSION_BQPD="1.0.0" VERSION_MUMPS="5.8.0" + VERSION_HIGHS="1.11.0" if [[ "${{matrix.architecture}}" == "x64" ]]; then PLATFORM="x86_64-w64-mingw32" else @@ -51,9 +52,11 @@ jobs: choco install wget wget https://github.com/leyffer/BQPD_jll.jl/releases/download/BQPD-v${VERSION_BQPD}%2B0/BQPD.v${VERSION_BQPD}.$PLATFORM-libgfortran5.tar.gz wget https://github.com/amontoison/MUMPS_static_jll.jl/releases/download/MUMPS_static-v${VERSION_MUMPS}%2B0/MUMPS_static.v${VERSION_MUMPS}.$PLATFORM-libgfortran5.tar.gz + wget https://github.com/amontoison/HiGHS_static_jll.jl/releases/download/HiGHS_static-v${VERSION_HIGHS}%2B0/HiGHS_static.v${VERSION_HIGHS}.$PLATFORM-libgfortran5.tar.gz mkdir deps tar -xzvf BQPD.v${VERSION_BQPD}.$PLATFORM-libgfortran5.tar.gz -C deps tar -xzvf MUMPS_static.v${VERSION_MUMPS}.$PLATFORM-libgfortran5.tar.gz -C deps + tar -xzvf HiGHS_static.v${VERSION_HIGHS}.$PLATFORM-libgfortran5.tar.gz -C deps - name: Install Fortran compiler uses: fortran-lang/setup-fortran@main @@ -70,16 +73,17 @@ jobs: -DCMAKE_C_COMPILER=cl ^ -DCMAKE_CXX_COMPILER=cl ^ -DCMAKE_Fortran_COMPILER=ifx ^ - -DMUMPS_INCLUDE_DIR=${{github.workspace}}\deps\include ^ - -DMETIS_INCLUDE_DIR=${{github.workspace}}\deps\include ^ - -DBQPD=${{github.workspace}}\deps\lib\libbqpd.a ^ - -DMETIS_LIBRARY=${{github.workspace}}\deps\lib\libmetis.a ^ - -DMUMPS_LIBRARY=${{github.workspace}}\deps\lib\libdmumps.a ^ - -DMUMPS_COMMON_LIBRARY=${{github.workspace}}\deps\lib\libmumps_common.a ^ - -DMUMPS_PORD_LIBRARY=${{github.workspace}}\deps\lib\libpord.a ^ - -DMUMPS_MPISEQ_LIBRARY=${{github.workspace}}\deps\lib\libmpiseq.a ^ - -DBLAS_LIBRARIES=${{github.workspace}}\deps\lib\libblas.a ^ - -DLAPACK_LIBRARIES=${{github.workspace}}\deps\lib\liblapack.a ^ + -DMUMPS_INCLUDE_DIR="${{github.workspace}}\deps\include" ^ + -DMETIS_INCLUDE_DIR="${{github.workspace}}\deps\include" ^ + -DBQPD="${{github.workspace}}\deps\lib\libbqpd.a" ^ + -DMETIS_LIBRARY="${{github.workspace}}\deps\lib\libmetis.a" ^ + -DMUMPS_LIBRARY="${{github.workspace}}\deps\lib\libdmumps.a" ^ + -DMUMPS_COMMON_LIBRARY="${{github.workspace}}\deps\lib\libmumps_common.a" ^ + -DMUMPS_PORD_LIBRARY="${{github.workspace}}\deps\lib\libpord.a" ^ + -DMUMPS_MPISEQ_LIBRARY="${{github.workspace}}\deps\lib\libmpiseq.a" ^ + -DBLAS_LIBRARIES="${{github.workspace}}\deps\lib\libblas.a" ^ + -DLAPACK_LIBRARIES="${{github.workspace}}\deps\lib\liblapack.a" ^ + -DHIGHS_DIR="${{github.workspace}}\deps" ^ -DBUILD_STATIC_LIBS=ON ^ -DBUILD_SHARED_LIBS=OFF . ) else ( diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 0dee53e60..8e3f8903f 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -27,6 +27,7 @@ jobs: # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: [windows-latest] architecture: [x64] @@ -40,13 +41,21 @@ jobs: run: | VERSION_BQPD="1.0.0" VERSION_MUMPS="5.8.0" - PLATFORM="x86_64-w64-mingw32" + VERSION_HIGHS="1.11.0" + if [[ "${{matrix.architecture}}" == "x64" ]]; then + PLATFORM="x86_64-w64-mingw32" + else + PLATFORM="i686-w64-mingw32" + fi choco install wget wget https://github.com/leyffer/BQPD_jll.jl/releases/download/BQPD-v${VERSION_BQPD}%2B0/BQPD.v${VERSION_BQPD}.$PLATFORM-libgfortran5.tar.gz wget https://github.com/amontoison/MUMPS_static_jll.jl/releases/download/MUMPS_static-v${VERSION_MUMPS}%2B0/MUMPS_static.v${VERSION_MUMPS}.$PLATFORM-libgfortran5.tar.gz + wget https://github.com/amontoison/HiGHS_static_jll.jl/releases/download/HiGHS_static-v${VERSION_HIGHS}%2B0/HiGHS_static.v${VERSION_HIGHS}.$PLATFORM-libgfortran5.tar.gz mkdir deps + mkdir deps/highs tar -xzvf BQPD.v${VERSION_BQPD}.$PLATFORM-libgfortran5.tar.gz -C deps tar -xzvf MUMPS_static.v${VERSION_MUMPS}.$PLATFORM-libgfortran5.tar.gz -C deps + tar -xzvf HiGHS_static.v${VERSION_HIGHS}.$PLATFORM-libgfortran5.tar.gz -C deps/highs - name: add MinGW64 directory to path run: echo "C:\tools\msys64\mingw64\bin" >> "$GITHUB_PATH" @@ -65,9 +74,12 @@ jobs: -DMUMPS_COMMON_LIBRARY=${{github.workspace}}\deps\lib\libmumps_common.a ^ -DMUMPS_PORD_LIBRARY=${{github.workspace}}\deps\lib\libpord.a ^ -DMUMPS_MPISEQ_LIBRARY=${{github.workspace}}\deps\lib\libmpiseq.a ^ + -DHIGHS_DIR=${{github.workspace}}\deps\highs\lib\cmake\highs ^ -DBLAS_LIBRARIES=${{github.workspace}}\deps\lib\libblas.a ^ - -DLAPACK_LIBRARIES=${{github.workspace}}\deps\lib\liblapack.a . + -DLAPACK_LIBRARIES=${{github.workspace}}\deps\lib\liblapack.a ^ + -DBUILD_STATIC_LIBS=ON ^ + -DBUILD_SHARED_LIBS=ON . - name: Build # Build your program with the given configuration - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j4 diff --git a/.github/workflows/unit-tests-linux.yml b/.github/workflows/unit-tests-linux.yml index f5c774961..f0b32c4bf 100644 --- a/.github/workflows/unit-tests-linux.yml +++ b/.github/workflows/unit-tests-linux.yml @@ -1,6 +1,6 @@ # This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage. # See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml -name: Unit tests on Linux +name: Unit tests on Ubuntu on: push: @@ -33,21 +33,36 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: Bacondish2023/setup-googletest@v1 - with: - tag: v1.14.0 + + - name: Install googletest + run: | + sudo apt-get install -y libgtest-dev cmake + mkdir -p $HOME/build + cd $HOME/build + sudo cmake /usr/src/googletest/googletest + sudo make + sudo cp lib/libgtest* /usr/lib/ + cd .. + sudo rm -rf build + sudo mkdir /usr/local/lib/googletest + sudo ln -s /usr/lib/libgtest.a /usr/local/lib/googletest/libgtest.a + sudo ln -s /usr/lib/libgtest_main.a /usr/local/lib/googletest/libgtest_main.a - name: Download dependencies (BQPD and MUMPS_static) shell: bash run: | VERSION_BQPD="1.0.0" VERSION_MUMPS="5.8.0" + VERSION_HIGHS="1.11.0" PLATFORM="x86_64-linux-gnu" wget https://github.com/leyffer/BQPD_jll.jl/releases/download/BQPD-v${VERSION_BQPD}%2B0/BQPD.v${VERSION_BQPD}.$PLATFORM-libgfortran5.tar.gz wget https://github.com/amontoison/MUMPS_static_jll.jl/releases/download/MUMPS_static-v${VERSION_MUMPS}%2B0/MUMPS_static.v${VERSION_MUMPS}.$PLATFORM-libgfortran5.tar.gz + wget https://github.com/amontoison/HiGHS_static_jll.jl/releases/download/HiGHS_static-v${VERSION_HIGHS}%2B0/HiGHS_static.v${VERSION_HIGHS}.$PLATFORM-libgfortran5.tar.gz mkdir deps + mkdir deps/highs tar -xzvf BQPD.v${VERSION_BQPD}.$PLATFORM-libgfortran5.tar.gz -C deps tar -xzvf MUMPS_static.v${VERSION_MUMPS}.$PLATFORM-libgfortran5.tar.gz -C deps + tar -xzvf HiGHS_static.v${VERSION_HIGHS}.$PLATFORM-libgfortran5.tar.gz -C deps/highs - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. @@ -64,14 +79,15 @@ jobs: -DMUMPS_MPISEQ_LIBRARY=${{github.workspace}}/deps/lib/libmpiseq.a \ -DBLAS_LIBRARIES=${{github.workspace}}/deps/lib/libblas.a \ -DLAPACK_LIBRARIES=${{github.workspace}}/deps/lib/liblapack.a \ + -DHIGHS_DIR=${{github.workspace}}/deps/highs/lib/cmake/highs \ -DBUILD_STATIC_LIBS=ON \ - -DBUILD_SHARED_LIBS=OFF . + -DBUILD_SHARED_LIBS=ON . - name: Build # Build your program with the given configuration - run: cmake --build ${{github.workspace}}/build --target run_unotest --config ${{env.BUILD_TYPE}} + run: cmake --build ${{github.workspace}}/build --target run_unotest --config ${{env.BUILD_TYPE}} -j4 - name: Test working-directory: ${{github.workspace}}/build # Execute unit tests - run: ./run_unotest + run: ./run_unotest \ No newline at end of file