Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
83cecb3
Update *.dat files for correct reading
grisuthedragon Jul 16, 2024
ff85cc0
Add CMake Building System
grisuthedragon Jul 16, 2024
993949d
Fix incorrect input files
grisuthedragon Jul 16, 2024
00b6bbc
Fix out of stack.
grisuthedragon Jul 16, 2024
1d20fc5
Add remaining CMake stuff
grisuthedragon Apr 24, 2025
a0a6f5b
Add detection for deprecated LAPACK routines
grisuthedragon May 7, 2025
9d059c2
Fix the stack overflow on mingw in the test
grisuthedragon Apr 25, 2025
a2829db
Disable shared libs in FLANG on windows for proper testing
grisuthedragon Apr 25, 2025
7cc922d
change building the test on windows with clang
grisuthedragon Apr 25, 2025
1eebb46
add known issues
grisuthedragon Apr 25, 2025
66dbfc0
Enable coverage again
grisuthedragon Apr 25, 2025
5d970fc
Update README.md
grisuthedragon Apr 25, 2025
269a61d
Update Readmes and Gitlab CI run
grisuthedragon Apr 25, 2025
ca0294c
Enable proper Integer8 building and RPM packaging
grisuthedragon May 7, 2025
3bcd99e
Add RPM building to CI
grisuthedragon May 8, 2025
f2c6096
improve tar-ball building
grisuthedragon Oct 9, 2025
8c6951a
Merge branch 'cmake_integration' of gitlab.mpi-magdeburg.mpg.de:softw…
grisuthedragon Oct 9, 2025
85bb9ae
Initial version of the Contributing Guide
grisuthedragon Oct 25, 2025
840a59f
Merge branch 'contributing-guide' into 'cmake_integration'
grisuthedragon Oct 25, 2025
aaba5c5
Add CITATION.cff file
grisuthedragon Nov 3, 2025
4d512b8
Merge branch 'citation-cff' into 'cmake_integration'
grisuthedragon Nov 3, 2025
2195bb7
Resolve "Installguide update"
grisuthedragon Nov 3, 2025
ce3cef1
Merge branch '5-installguide-update' into 'cmake_integration'
grisuthedragon Nov 3, 2025
de6ed25
Resolve "RPM Package Generation"
grisuthedragon Nov 3, 2025
c7b69ee
Merge branch '2-rpm-package-generation' into 'cmake_integration'
grisuthedragon Nov 3, 2025
151c390
Resolve "Automatic Debian packing with versioning"
grisuthedragon Nov 4, 2025
ef74eb6
Merge branch '1-automatic-debian-packing-with-versioning' into 'cmake…
grisuthedragon Nov 4, 2025
04577cf
Resolve "DOI for 5.9.1"
grisuthedragon Nov 4, 2025
137c703
Merge branch '6-doi-for-5-9-1' into 'cmake_integration'
grisuthedragon Nov 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
37 changes: 37 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
root = true

[*]
end_of_line = lf
trim_trailing_whitespace = true
charset = utf-8

[Makefile]
indent_style = tab

[*.{c,cpp,h,hpp,f,f90,F,F90}]
indent_style = space
indent_size = 4
insert_final_newline = true

[*.{f,F}]
max_line_length = 72

[*.{f90,f95,f03,F90,F95,F03}]
max_line_length = 132

[*{c,cpp,h,hpp}]
curly_bracket_next_line = true
indent_brace_style = Allman

[CMakeLists.txt]
indent_style = space
indent_size = 4

[*.cmake]
indent_style = space
indent_size = 4

[*.{yaml,yml}]
indent_style = space
indent_size = 2

106 changes: 106 additions & 0 deletions .github/workflows/build-msys2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Build on Windows with MSYS2

on:
push:
branches:
- main
- cmake_integration
paths:
- .github/workflows/*.yml
- '**CMakeLists.txt'
- 'cmake/**'
- 'examples/**'
- 'src/**'
- '!**Makefile'
- '!**md'
pull_request:
paths:
- .github/workflows/*.yml
- '**CMakeLists.txt'
- 'cmake/**'
- 'examples/**'
- 'src/**'
- '!**Makefile'
- '!**md'

permissions:
contents: read

jobs:

test-install-release:
runs-on: ${{ matrix.os.runs-on }}
env:
BUILD_TYPE: Release
FFLAGS: ${{ matrix.fflags }}


strategy:
fail-fast: false
matrix:
fflags:
- "-fimplicit-none "
- "-fimplicit-none -fopenmp"
os:
# - { icon: '⬛', sys: mingw32, runs-on: 'windows-latest' }
- { icon: '🟦', sys: mingw64, runs-on: 'windows-latest', fortran: 'gcc-fortran' }
- { icon: '🟨', sys: ucrt64, runs-on: 'windows-latest', fortran: 'gcc-fortran' }
- { icon: '🟧', sys: clang64, runs-on: 'windows-latest', fortran: 'flang' }
- { icon: '🟩', sys: clangarm64, runs-on: 'windows-11-arm', fortran: 'flang' }
name: 🚧${{ matrix.os.icon }} ${{ matrix.os.sys }}
defaults:
run:
shell: msys2 {0}
steps:

- name: '🧰 Checkout SLICOT'
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false

- name: '${{ matrix.os.icon }} Setup MSYS2'
uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.os.sys}}
update: true
install: >-
git
make
pacboy: >-
${{ matrix.os.fortran }}
toolchain:p
cmake:p
ninja:p
lapack:p

- 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 build -G Ninja
-D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
-D CMAKE_INSTALL_PREFIX=${{github.workspace}}/lapack_install
-D SLICOT_TESTING:BOOL=ON
-D BUILD_SHARED_LIBS:BOOL=${{ matrix.os.fortran == 'flang' && 'OFF' || 'ON' }}
-D CMAKE_EXE_LINKER_FLAGS="-Wl,--stack=2097152"


- name: '🚧 Build'
run: |
cmake --build build --config ${{env.BUILD_TYPE}}

- name: Test with OpenMP
working-directory: ${{github.workspace}}/build
if: ${{ contains( matrix.fflags, 'openmp' ) }}
run: ctest -C ${{env.BUILD_TYPE}} --schedule-random -j1 --output-on-failure --timeout 100

- name: Test
working-directory: ${{github.workspace}}/build
if: ${{ !contains( matrix.fflags, 'openmp' ) }}
run: ctest -C ${{env.BUILD_TYPE}} --schedule-random -j2 --output-on-failure --timeout 100

- name: Install
run: cmake --build build --target install -j2

#
209 changes: 209 additions & 0 deletions .github/workflows/build-unix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,209 @@
name: Build on Unix

on:
push:
branches:
- main
- cmake_integration
paths:
- .github/workflows/*.yml
- '**CMakeLists.txt'
- 'cmake/**'
- 'examples/**'
- 'src/**'
- '!**Makefile'
- '!**md'
pull_request:
paths:
- .github/workflows/*.yml
- '**CMakeLists.txt'
- 'cmake/**'
- 'examples/**'
- 'src/**'
- '!**Makefile'
- '!**md'

permissions:
contents: read

#env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)

defaults:
run:
shell: bash

jobs:

test-install-release:
# Use GNU compilers

# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# 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 }}
timeout-minutes: 5

env:
BUILD_TYPE: Release
FFLAGS: ${{ matrix.fflags }}

strategy:
fail-fast: true
matrix:
os: [ macos-latest, ubuntu-latest ]
fflags: [
"-Wall -Wno-unused-dummy-argument -Wno-unused-variable -Wno-unused-label -fimplicit-none -frecursive ",
"-Wall -Wno-unused-dummy-argument -Wno-unused-variable -Wno-unused-label -fimplicit-none -frecursive -fopenmp" ]
# Better flags but not used by now:
# "-Wall -Wno-unused-dummy-argument -Wno-unused-variable -Wno-unused-label -Werror=conversion -fimplicit-none -frecursive -fcheck=all",
# "-Wall -Wno-unused-dummy-argument -Wno-unused-variable -Wno-unused-label -Werror=conversion -fimplicit-none -frecursive -fcheck=all -fopenmp" ]

steps:

- name: Checkout SLICOT
uses: actions/checkout@v4.2.2

- name: Install ninja-build tool
uses: seanmiddleditch/gha-setup-ninja@v6

- name: Install basics (Ubuntu)
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt update
sudo apt install -y cmake liblapack-dev libblas-dev
- name: Install basics (MacOS)
if: ${{ matrix.os == 'macos-latest' }}
run: |
brew install lapack

- name: Use GCC-14 on MacOS
if: ${{ matrix.os == 'macos-latest' }}
run: >
cmake -B build -G Ninja
-D CMAKE_C_COMPILER="gcc-14"
-D CMAKE_Fortran_COMPILER="gfortran-14"
-D USE_FLAT_NAMESPACE:BOOL=ON
-D CMAKE_PREFIX_PATH="/opt/homebrew/opt/lapack"
-D BLA_VENDOR=Generic

- 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 build -G Ninja
-D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
-D CMAKE_INSTALL_PREFIX=${{github.workspace}}/lapack_install
-D SLICOT_TESTING:BOOL=ON
-D BUILD_SHARED_LIBS:BOOL=ON

- name: Build
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: cmake --build build --config ${{env.BUILD_TYPE}}

- name: Test with OpenMP
working-directory: ${{github.workspace}}/build
if: ${{ contains( matrix.fflags, 'openmp' ) }}
run: ctest -C ${{env.BUILD_TYPE}} --schedule-random -j1 --output-on-failure --timeout 100

- name: Test
working-directory: ${{github.workspace}}/build
if: ${{ !contains( matrix.fflags, 'openmp' ) }}
run: ctest -C ${{env.BUILD_TYPE}} --schedule-random -j2 --output-on-failure --timeout 100

- name: Install
run: cmake --build build --target install -j2

coverage:
runs-on: ubuntu-latest
env:
BUILD_TYPE: Coverage
FFLAGS: "-fopenmp"
steps:

- name: Checkout SLICOT
uses: actions/checkout@v4.2.2

- name: Install ninja-build tool
uses: seanmiddleditch/gha-setup-ninja@v6

- name: Install basics
run: |
sudo apt update
sudo apt install -y cmake liblapack-dev libblas-dev


- 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 build -G Ninja
-D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
-D CMAKE_INSTALL_PREFIX=${{github.workspace}}/lapack_install
-D SLICOT_BUILD_TESTING:BOOL=ON
-D SLICOT_BUILD_SHARED_LIBS:BOOL=ON

- name: Build
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: cmake --build build --config ${{env.BUILD_TYPE}}

- name: Test with OpenMP
working-directory: ${{github.workspace}}/build
run: ctest -C ${{env.BUILD_TYPE}} --schedule-random -j1 --output-on-failure --timeout 100

- name: Generate HTML Report
uses: threeal/gcovr-action@v1.1.0
with:
html-out: coverage.html

# memory-check:
# runs-on: ubuntu-latest
# env:
# BUILD_TYPE: Debug
#
# steps:
#
# - name: Checkout SLICOT
# uses: actions/checkout@v4.2.2
#
# - name: Install ninja-build tool
# uses: seanmiddleditch/gha-setup-ninja@v6
#
# - name: Install APT packages
# run: |
# sudo apt update
# sudo apt install -y cmake valgrind gfortran liblapack-dev libblas-dev
#
# - name: Configure CMake
# run: >
# cmake -B build -G Ninja
# -D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
# -D SLICOT_TESTING:BOOL=ON
# -D SLICOT_BUILD_SHARED_LIBS:BOOL=ON
#
# - name: Build
# run: cmake --build build --config ${{env.BUILD_TYPE}}
#
# - name: Test
# working-directory: ${{github.workspace}}/build
# run: |
# ctest -C ${{env.BUILD_TYPE}} --schedule-random -j2 -T memcheck > memcheck.out
# cat memcheck.out
# if tail -n 1 memcheck.out | grep -q "Memory checking results:"; then
# exit 0
# else
# for f in Testing/Temporary/MemoryChecker.*.log; do
# if tail -n 1 $f | grep -q "ERROR SUMMARY: 0 errors"; then
# tail -n 1 $f
# continue
# else
# echo "Memory check failed in $f"
# cat $f
# exit 1
# fi
# done
# exit 0
# fi
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*.swp
build*/
*.obj
*.o
*.a
*.lib
Loading
Loading