diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f4fd04f175..3b2754b88b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,133 +8,161 @@ on: workflow_dispatch: jobs: - cpp_python: - name: ${{ matrix.name }} - runs-on: ${{ matrix.os }} + # cpp_python: + # name: ${{ matrix.name }} + # runs-on: ${{ matrix.os }} + # strategy: + # fail-fast: false + # matrix: + # include: + # - name: 'Windows static (BPT)' + # os: windows-latest + # bindings_python: ON + # build_shared: OFF + # unit_tests: ON + # set_path: $env:Path="C:\libxml2\bin;C:\zlib\bin;"+$env:Path + # additional_cmake_options: -DLIBXML2_INCLUDE_DIR="C:\libxml2\include\libxml2" -DLIBXML2_LIBRARY="C:\libxml2\lib\libxml2.lib" -DZLIB_INCLUDE_DIR="C:\zlib\include" -DZLIB_LIBRARY="C:\zlib\lib\z_dll.lib" + # - name: 'Windows shared (BPT)' + # os: windows-latest + # bindings_python: ON + # build_shared: ON + # unit_tests: ON + # set_path: $env:Path="C:\libxml2\bin;C:\zlib\bin;"+$env:Path + # additional_cmake_options: -DLIBXML2_INCLUDE_DIR="C:\libxml2\include\libxml2" -DLIBXML2_LIBRARY="C:\libxml2\lib\libxml2.lib" -DZLIB_INCLUDE_DIR="C:\zlib\include" -DZLIB_LIBRARY="C:\zlib\lib\z_dll.lib" + # - name: 'Linux static (B)' + # os: ubuntu-latest + # bindings_python: OFF + # build_shared: OFF + # unit_tests: OFF + # - name: 'Linux shared (BPT)' + # os: ubuntu-latest + # bindings_python: ON + # build_shared: ON + # unit_tests: ON + # - name: 'macOS static (Intel) (BT)' + # os: macos-13 + # bindings_python: OFF + # build_shared: OFF + # unit_tests: ON + # - name: 'macOS shared (Intel) (BPT)' + # os: macos-13 + # bindings_python: ON + # build_shared: ON + # unit_tests: ON + # - name: 'macOS static (ARM) (BT)' + # os: macos-latest + # bindings_python: OFF + # build_shared: OFF + # unit_tests: ON + # - name: 'macOS shared (ARM) (BPT)' + # os: macos-latest + # bindings_python: ON + # build_shared: ON + # unit_tests: ON + # env: + # BUILDCACHE_ACCURACY: STRICT + # BUILDCACHE_COMPRESS_FORMAT: ZSTD + # BUILDCACHE_DEBUG: -1 + # BUILDCACHE_LOG_FILE: "" + # steps: + # - name: Check out libCellML + # uses: actions/checkout@v4 + # - name: Install Python (if needed) + # if: ${{ matrix.bindings_python == 'ON' }} + # uses: actions/setup-python@v5 + # with: + # python-version: '3.13' + # - name: Install CMake and Ninja + # uses: lukka/get-cmake@latest + # - name: Install buildcache + # uses: mikehardy/buildcache-action@v2 + # with: + # cache_key: ${{ matrix.os }}-${{ matrix.build_shared }} + # - name: Configure MSVC (Windows only) + # if: ${{ runner.os == 'Windows' }} + # uses: ilammy/msvc-dev-cmd@v1 + # - name: Install libxml2 (Windows only) + # if: ${{ runner.os == 'Windows' }} + # run: | + # Invoke-WebRequest -UseBasicParsing https://github.com/cellml/gha/releases/download/gha/libxml2.zip -OutFile libxml2.zip + # Expand-Archive -LiteralPath libxml2.zip -DestinationPath C:\ + # - name: Install SWIG (macOS only and if needed) + # if: ${{ runner.os == 'macOS' && matrix.bindings_python == 'ON' }} + # run: | + # brew install swig + # - name: Install zlib (Windows only) + # if: ${{ runner.os == 'Windows' }} + # run: | + # Invoke-WebRequest -UseBasicParsing https://github.com/cellml/gha/releases/download/gha/zlib.zip -OutFile zlib.zip + # Expand-Archive -LiteralPath zlib.zip -DestinationPath C:\ + # - name: Configure libCellML + # run: | + # mkdir build + # cd build + # ${{ matrix.set_path }} + # cmake -G Ninja -DBINDINGS_PYTHON=${{ matrix.bindings_python }} -DBUILD_SHARED=${{ matrix.build_shared }} -DCOVERAGE=OFF -DLLVM_COVERAGE=OFF -DMEMCHECK=OFF -DUNIT_TESTS=${{ matrix.unit_tests }} ${{ matrix.additional_cmake_options }} .. + # - name: Build libCellML + # run: | + # cd build + # ninja + # - name: Run python_test_annotator (macOS only) + # if: ${{ runner.os == 'macOS' }} + # run: | + # cd build + # ctest -V -R python_test_annotator + # - name: Unit testing + # if: ${{ matrix.unit_tests == 'ON' }} + # run: | + # cd build + # ninja test + # code_formatting: + # name: Code formatting + # runs-on: ubuntu-latest + # strategy: + # fail-fast: false + # steps: + # - name: Check out libCellML + # uses: actions/checkout@v4 + # - name: Install ClangFormat + # run: | + # sudo apt update + # sudo apt install clang-format + # - name: Install CMake and Ninja + # uses: lukka/get-cmake@latest + # - name: Configure libCellML + # run: | + # mkdir build + # cd build + # cmake -G Ninja .. + # - name: Code formatting + # run: | + # cd build + # ninja test_clang_format + documentation: + name: Documentation + runs-on: ubuntu-latest strategy: fail-fast: false - matrix: - include: - - name: 'Windows static (BPT)' - os: windows-latest - bindings_python: ON - build_shared: OFF - unit_tests: ON - set_path: $env:Path="C:\libxml2\bin;C:\zlib\bin;"+$env:Path - additional_cmake_options: -DLIBXML2_INCLUDE_DIR="C:\libxml2\include\libxml2" -DLIBXML2_LIBRARY="C:\libxml2\lib\libxml2.lib" -DZLIB_INCLUDE_DIR="C:\zlib\include" -DZLIB_LIBRARY="C:\zlib\lib\z_dll.lib" - - name: 'Windows shared (BPT)' - os: windows-latest - bindings_python: ON - build_shared: ON - unit_tests: ON - set_path: $env:Path="C:\libxml2\bin;C:\zlib\bin;"+$env:Path - additional_cmake_options: -DLIBXML2_INCLUDE_DIR="C:\libxml2\include\libxml2" -DLIBXML2_LIBRARY="C:\libxml2\lib\libxml2.lib" -DZLIB_INCLUDE_DIR="C:\zlib\include" -DZLIB_LIBRARY="C:\zlib\lib\z_dll.lib" - - name: 'Linux static (B)' - os: ubuntu-latest - bindings_python: OFF - build_shared: OFF - unit_tests: OFF - - name: 'Linux shared (BPT)' - os: ubuntu-latest - bindings_python: ON - build_shared: ON - unit_tests: ON - - name: 'macOS static (Intel) (BT)' - os: macos-13 - bindings_python: OFF - build_shared: OFF - unit_tests: ON - - name: 'macOS shared (Intel) (BPT)' - os: macos-13 - bindings_python: ON - build_shared: ON - unit_tests: ON - - name: 'macOS static (ARM) (BT)' - os: macos-latest - bindings_python: OFF - build_shared: OFF - unit_tests: ON - - name: 'macOS shared (ARM) (BPT)' - os: macos-latest - bindings_python: ON - build_shared: ON - unit_tests: ON - env: - BUILDCACHE_ACCURACY: STRICT - BUILDCACHE_COMPRESS_FORMAT: ZSTD - BUILDCACHE_DEBUG: -1 - BUILDCACHE_LOG_FILE: "" steps: - name: Check out libCellML uses: actions/checkout@v4 - - name: Install Python (if needed) - if: ${{ matrix.bindings_python == 'ON' }} - uses: actions/setup-python@v5 - with: - python-version: '3.13' - name: Install CMake and Ninja uses: lukka/get-cmake@latest - name: Install buildcache uses: mikehardy/buildcache-action@v2 - with: - cache_key: ${{ matrix.os }}-${{ matrix.build_shared }} - - name: Configure MSVC (Windows only) - if: ${{ runner.os == 'Windows' }} - uses: ilammy/msvc-dev-cmd@v1 - - name: Install libxml2 (Windows only) - if: ${{ runner.os == 'Windows' }} - run: | - Invoke-WebRequest -UseBasicParsing https://github.com/cellml/gha/releases/download/gha/libxml2.zip -OutFile libxml2.zip - Expand-Archive -LiteralPath libxml2.zip -DestinationPath C:\ - - name: Install SWIG (macOS only and if needed) - if: ${{ runner.os == 'macOS' && matrix.bindings_python == 'ON' }} - run: | - brew install swig - - name: Install zlib (Windows only) - if: ${{ runner.os == 'Windows' }} - run: | - Invoke-WebRequest -UseBasicParsing https://github.com/cellml/gha/releases/download/gha/zlib.zip -OutFile zlib.zip - Expand-Archive -LiteralPath zlib.zip -DestinationPath C:\ - - name: Configure libCellML - run: | - mkdir build - cd build - ${{ matrix.set_path }} - cmake -G Ninja -DBINDINGS_PYTHON=${{ matrix.bindings_python }} -DBUILD_SHARED=${{ matrix.build_shared }} -DCOVERAGE=OFF -DLLVM_COVERAGE=OFF -DMEMCHECK=OFF -DUNIT_TESTS=${{ matrix.unit_tests }} ${{ matrix.additional_cmake_options }} .. - - name: Build libCellML - run: | - cd build - ninja - - name: Run python_test_annotator (macOS only) - if: ${{ runner.os == 'macOS' }} - run: | - cd build - ctest -V -R python_test_annotator - - name: Unit testing - if: ${{ matrix.unit_tests == 'ON' }} - run: | - cd build - ninja test - code_formatting: - name: Code formatting - runs-on: ubuntu-latest - strategy: - fail-fast: false - steps: - - name: Check out libCellML - uses: actions/checkout@v4 - - name: Install ClangFormat + - name: Install Doxygen run: | sudo apt update - sudo apt install clang-format - - name: Install CMake and Ninja - uses: lukka/get-cmake@latest + sudo apt install doxygen + - name: Install Sphinx + run: | + pip3 install sphinx - name: Configure libCellML run: | mkdir build cd build cmake -G Ninja .. - - name: Code formatting + - name: Documentation run: | cd build - ninja test_clang_format + ninja docs diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 6795596e50..21a4f9adfc 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -75,8 +75,11 @@ if(LIBCELLML_COVERAGE) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Running coverage tests with html output") endif() +message(">>> SPHINX_FOUND: ${SPHINX_FOUND}") +message(">>> DOXYGEN_FOUND: ${DOXYGEN_FOUND}") +message(">>> LIBCELLML_COVERAGE: ${LIBCELLML_COVERAGE}") -if(SPHINX_FOUND OR DOXYGEN_FOUND OR LIBCELLML_COVERAGE) +if(SPHINX_FOUND AND DOXYGEN_FOUND AND LIBCELLML_COVERAGE) add_custom_target(docs DEPENDS ${SPHINX_DOCS_TARGET} ${DOXYGEN_DOCS_TARGET} ${COVERAGE_DOCS_TARGET} ${DOXYGEN_API_XML_DOCS_TARGET} COMMENT "Generating documentation") @@ -86,4 +89,3 @@ if(SPHINX_FOUND OR DOXYGEN_FOUND OR LIBCELLML_COVERAGE) COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/_doctrees COMMENT "Cleaning documentation") endif() -