Skip to content

Commit 7c17239

Browse files
authored
Merge pull request #725 from Pressio/simplify-cmake
#724: simplify cmake
2 parents 8f8305d + bdedc9f commit 7c17239

14 files changed

+242
-239
lines changed

.github/workflows/ci-baseline.yml

+21-23
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ jobs:
5656
env:
5757
eigen_version: 3.4.0
5858
num_cpus: 2 # $(cat /proc/cpuinfo | grep processor -c)
59-
PRESSIO_INSTALL_DIR: ${{ github.workspace }}/pressio_install
6059

6160
steps:
6261
- uses: actions/checkout@v4
@@ -88,26 +87,6 @@ jobs:
8887
&& mkdir -p /eigen \
8988
&& tar -xf eigen-${{ env.eigen_version }}.tar.gz -C /eigen
9089
91-
- name: Configure
92-
run: |
93-
cmake -B builddir \
94-
-D CMAKE_BUILD_TYPE:STRING=${{ matrix.build_type }} \
95-
-D CMAKE_C_COMPILER=$CC \
96-
-D CMAKE_CXX_COMPILER=$CXX \
97-
-D CMAKE_CXX_FLAGS='-Wall -Werror' \
98-
-D CMAKE_INSTALL_PREFIX:PATH=${PRESSIO_INSTALL_DIR} \
99-
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
100-
${{ matrix.cmake_extra_args }} \
101-
-D PRESSIO_ENABLE_TESTS:BOOL=ON \
102-
-D PRESSIO_ENABLE_TPL_EIGEN:BOOL=ON \
103-
-D EIGEN_INCLUDE_DIR=/eigen/eigen-${{ env.eigen_version }} \
104-
-D PRESSIO_LOG_INCLUDE_DIR=${GITHUB_WORKSPACE}/pressio-log/include \
105-
-D PRESSIO_OPS_INCLUDE_DIR=${GITHUB_WORKSPACE}/pressio-ops/include
106-
107-
- name: Build
108-
run: |
109-
cmake --build builddir --target install
110-
11190
- name: Example - include only
11291
working-directory: examples
11392
run: |
@@ -117,7 +96,7 @@ jobs:
11796
-I/eigen/eigen-${{ env.eigen_version }} \
11897
-I${GITHUB_WORKSPACE}/pressio-log/include \
11998
-I${GITHUB_WORKSPACE}/pressio-ops/include \
120-
-I${PRESSIO_INSTALL_DIR}/include \
99+
-I${GITHUB_WORKSPACE}/pressio/include \
121100
-c main.cpp \
122101
&& $CXX --std=c++17 -o pressio-example main.o \
123102
&& ./pressio-example
@@ -130,11 +109,30 @@ jobs:
130109
-I/eigen/eigen-${{ env.eigen_version }} \
131110
-I${GITHUB_WORKSPACE}/pressio-log/include \
132111
-I${GITHUB_WORKSPACE}/pressio-ops/include \
133-
-I${PRESSIO_INSTALL_DIR}/include \
112+
-I${GITHUB_WORKSPACE}/pressio/include \
134113
-c main_with_defines.cpp \
135114
&& $CXX --std=c++17 -o pressio-example main.o \
136115
&& ./pressio-example
137116
117+
- name: Configure Tests
118+
run: |
119+
cmake -B builddir \
120+
-D CMAKE_BUILD_TYPE:STRING=${{ matrix.build_type }} \
121+
-D CMAKE_C_COMPILER=$CC \
122+
-D CMAKE_CXX_COMPILER=$CXX \
123+
-D CMAKE_CXX_FLAGS='-Wall -Werror' \
124+
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
125+
${{ matrix.cmake_extra_args }} \
126+
-D PRESSIO_ENABLE_TESTS:BOOL=ON \
127+
-D PRESSIO_ENABLE_TPL_EIGEN:BOOL=ON \
128+
-D EIGEN_INCLUDE_DIR=/eigen/eigen-${{ env.eigen_version }} \
129+
-D PRESSIO_LOG_INCLUDE_DIR=${GITHUB_WORKSPACE}/pressio-log/include \
130+
-D PRESSIO_OPS_INCLUDE_DIR=${GITHUB_WORKSPACE}/pressio-ops/include
131+
132+
- name: Build Tests
133+
run: |
134+
cmake --build builddir
135+
138136
- name: Run small tests
139137
working-directory: builddir/tests/functional_small
140138
run: |

.github/workflows/ci-kokkos.yml

+20-22
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ jobs:
4747
password: ${{ secrets.github_token }}
4848
env:
4949
num_cpus: 4
50-
PRESSIO_INSTALL_DIR: ${{ github.workspace }}/pressio_install
5150

5251
steps:
5352
- uses: actions/checkout@v4
@@ -73,25 +72,6 @@ jobs:
7372
path: pressio-ops
7473
ref: develop
7574

76-
- name: Configure
77-
run: |
78-
cmake -B builddir \
79-
-D CMAKE_BUILD_TYPE:STRING=${{ matrix.build_type }} \
80-
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
81-
-D CMAKE_C_COMPILER:FILEPATH=$CC \
82-
-D CMAKE_CXX_COMPILER:FILEPATH=$CXX \
83-
-D PRESSIO_ENABLE_TESTS:BOOL=ON \
84-
-D PRESSIO_ENABLE_TPL_EIGEN:BOOL=OFF \
85-
-D PRESSIO_ENABLE_TPL_MPI:BOOL=OFF \
86-
-D PRESSIO_ENABLE_TPL_KOKKOS:BOOL=ON \
87-
-D Kokkos_ROOT=/kokkos/install \
88-
-D KokkosKernels_ROOT=/kokkos-kernels/install \
89-
-D CMAKE_INSTALL_PREFIX:PATH=${PRESSIO_INSTALL_DIR} \
90-
-D CMAKE_CXX_FLAGS='-Wall -Werror'
91-
92-
- name: Build
93-
run: cmake --build builddir -j $num_cpus --target install
94-
9575
- name: Example - include only
9676
working-directory: examples
9777
run: |
@@ -102,7 +82,7 @@ jobs:
10282
-I/kokkos-kernels/install/include \
10383
-I${GITHUB_WORKSPACE}/pressio-log/include \
10484
-I${GITHUB_WORKSPACE}/pressio-ops/include \
105-
-I${PRESSIO_INSTALL_DIR}/include \
85+
-I${GITHUB_WORKSPACE}/pressio/include \
10686
-c main.cpp
10787
10888
- name: Example - include only with embedded definitions
@@ -115,9 +95,27 @@ jobs:
11595
-I/kokkos-kernels/install/include \
11696
-I${GITHUB_WORKSPACE}/pressio-log/include \
11797
-I${GITHUB_WORKSPACE}/pressio-ops/include \
118-
-I${PRESSIO_INSTALL_DIR}/include \
98+
-I${GITHUB_WORKSPACE}/pressio/include \
11999
-c main_with_defines.cpp
120100
101+
- name: Configure Tests
102+
run: |
103+
cmake -B builddir \
104+
-D CMAKE_BUILD_TYPE:STRING=${{ matrix.build_type }} \
105+
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
106+
-D CMAKE_C_COMPILER:FILEPATH=$CC \
107+
-D CMAKE_CXX_COMPILER:FILEPATH=$CXX \
108+
-D PRESSIO_ENABLE_TESTS:BOOL=ON \
109+
-D PRESSIO_ENABLE_TPL_EIGEN:BOOL=OFF \
110+
-D PRESSIO_ENABLE_TPL_MPI:BOOL=OFF \
111+
-D PRESSIO_ENABLE_TPL_KOKKOS:BOOL=ON \
112+
-D Kokkos_ROOT=/kokkos/install \
113+
-D KokkosKernels_ROOT=/kokkos-kernels/install \
114+
-D CMAKE_CXX_FLAGS='-Wall -Werror'
115+
116+
- name: Build Tests
117+
run: cmake --build builddir -j $num_cpus
118+
121119
- name: Test
122120
working-directory: builddir
123121
run: |

.github/workflows/ci-trilinos.yml

+26-27
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ jobs:
4545
eigen_version: 3.4.0
4646
num_cpus: 4
4747
trilinos_dir: /home/pressio_builds/trilinos/install
48-
PRESSIO_INSTALL_DIR: ${{ github.workspace }}/pressio_install
4948

5049
steps:
5150
- uses: actions/checkout@v4
@@ -78,56 +77,56 @@ jobs:
7877
&& mkdir -p /eigen \
7978
&& tar -xf eigen-${{ env.eigen_version }}.tar.gz -C /eigen
8079
81-
- name: Configure
82-
run: |
83-
cmake -B builddir \
84-
-D CMAKE_BUILD_TYPE:STRING=${{ matrix.build_type }} \
85-
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
86-
-D CMAKE_C_COMPILER:FILEPATH=/usr/bin/mpicc \
87-
-D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/mpic++ \
88-
-D MPI_Fortran_COMPILER:FILEPATH=/usr/bin/mpif90 \
89-
-D PRESSIO_ENABLE_TESTS:BOOL=ON \
90-
-D PRESSIO_ENABLE_TPL_EIGEN:BOOL=ON \
91-
-D PRESSIO_ENABLE_TPL_MPI:BOOL=ON \
92-
-D PRESSIO_ENABLE_TPL_TRILINOS:BOOL=ON \
93-
-D PRESSIO_ENABLE_TPL_KOKKOS:BOOL=ON \
94-
-D PRESSIO_ENABLE_TPL_BLAS:BOOL=ON \
95-
-D PRESSIO_ENABLE_TPL_LAPACK:BOOL=ON \
96-
-D EIGEN_INCLUDE_DIR=/eigen/eigen-${{ env.eigen_version }} \
97-
-D Trilinos_DIR=${{ env.trilinos_dir }}/lib/cmake/Trilinos \
98-
-D CMAKE_INSTALL_PREFIX:PATH=${PRESSIO_INSTALL_DIR} \
99-
-D CMAKE_CXX_FLAGS='-Wall'
100-
101-
- name: Build
102-
run: cmake --build builddir -j $num_cpus --target install
10380
10481
- name: Example - include only
10582
working-directory: examples
10683
run: |
107-
$CXX \
84+
$CXX \
10885
--std=c++17 \
10986
-DPRESSIO_ENABLE_TPL_EIGEN \
11087
-DPRESSIO_ENABLE_TPL_TRILINOS \
11188
-I/eigen/eigen-${{ env.eigen_version }} \
11289
-I$trilinos_dir/include \
11390
-I${GITHUB_WORKSPACE}/pressio-log/include \
11491
-I${GITHUB_WORKSPACE}/pressio-ops/include \
115-
-I${PRESSIO_INSTALL_DIR}/include \
92+
-I${GITHUB_WORKSPACE}/pressio/include \
11693
-c main.cpp
11794
11895
- name: Example - include only with embedded definitions
11996
working-directory: examples
12097
run: |
121-
$CXX \
98+
$CXX \
12299
--std=c++17 \
123100
-DPRESSIO_ENABLE_TPL_TRILINOS \
124101
-I/eigen/eigen-${{ env.eigen_version }} \
125102
-I$trilinos_dir/include \
126103
-I${GITHUB_WORKSPACE}/pressio-log/include \
127104
-I${GITHUB_WORKSPACE}/pressio-ops/include \
128-
-I${PRESSIO_INSTALL_DIR}/include \
105+
-I${GITHUB_WORKSPACE}/pressio/include \
129106
-c main_with_defines.cpp
130107
108+
- name: Configure Tests
109+
run: |
110+
cmake -B builddir \
111+
-D CMAKE_BUILD_TYPE:STRING=${{ matrix.build_type }} \
112+
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
113+
-D CMAKE_C_COMPILER:FILEPATH=/usr/bin/mpicc \
114+
-D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/mpic++ \
115+
-D MPI_Fortran_COMPILER:FILEPATH=/usr/bin/mpif90 \
116+
-D PRESSIO_ENABLE_TESTS:BOOL=ON \
117+
-D PRESSIO_ENABLE_TPL_EIGEN:BOOL=ON \
118+
-D PRESSIO_ENABLE_TPL_MPI:BOOL=ON \
119+
-D PRESSIO_ENABLE_TPL_TRILINOS:BOOL=ON \
120+
-D PRESSIO_ENABLE_TPL_KOKKOS:BOOL=ON \
121+
-D PRESSIO_ENABLE_TPL_BLAS:BOOL=ON \
122+
-D PRESSIO_ENABLE_TPL_LAPACK:BOOL=ON \
123+
-D EIGEN_INCLUDE_DIR=/eigen/eigen-${{ env.eigen_version }} \
124+
-D Trilinos_DIR=${{ env.trilinos_dir }}/lib/cmake/Trilinos \
125+
-D CMAKE_CXX_FLAGS='-Wall'
126+
127+
- name: Build Tests
128+
run: cmake --build builddir -j $num_cpus
129+
131130
- name: Test
132131
working-directory: builddir
133132
run: |

CMakeLists.txt

+1-106
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,10 @@
11
cmake_minimum_required(VERSION 3.18.0 FATAL_ERROR)
22
project(pressio C CXX)
33

4-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
5-
include(colors)
6-
7-
# pull in pressio-ops and read macros
8-
#=====================================================================
9-
if(PRESSIO_OPS_INCLUDE_DIR)
10-
message("${Green}-- Using ${PRESSIO_OPS_INCLUDE_DIR}")
11-
else()
12-
include(FetchContent)
13-
message("${Green}-- PRESSIO_OPS_INCLUDE_DIR is not defined, so fetching pressio-ops...")
14-
FetchContent_Declare(
15-
pressio-ops
16-
GIT_REPOSITORY https://github.com/Pressio/pressio-ops.git
17-
GIT_TAG develop
18-
GIT_PROGRESS TRUE
19-
GIT_SHALLOW TRUE
20-
)
21-
FetchContent_MakeAvailable(pressio-ops)
22-
set(PRESSIO_OPS_INCLUDE_DIR ${pressio-ops_SOURCE_DIR}/include)
23-
endif()
24-
25-
# logging
26-
#=====================================================================
27-
option(PRESSIO_ENABLE_LOGGING "Enable logging via pressio-log" ON)
28-
if (PRESSIO_ENABLE_LOGGING)
29-
add_compile_definitions(PRESSIO_ENABLE_LOGGING=1)
30-
else()
31-
add_compile_definitions(PRESSIO_ENABLE_LOGGING=0)
32-
endif()
33-
34-
# get pressio-log (either find it or fetch it)
35-
message(STATUS "PRESSIO_ENABLE_LOGGING = ${PRESSIO_ENABLE_LOGGING}")
36-
if (PRESSIO_ENABLE_LOGGING)
37-
if(PRESSIO_LOG_INCLUDE_DIR)
38-
message("${Green}-- Using ${PRESSIO_LOG_INCLUDE_DIR}")
39-
else()
40-
include(FetchContent)
41-
message("${Green}-- PRESSIO_LOG_INCLUDE_DIR is not defined, so fetching pressio-log...")
42-
FetchContent_Declare(
43-
pressio-log
44-
GIT_REPOSITORY https://github.com/Pressio/pressio-log.git
45-
GIT_TAG main
46-
GIT_PROGRESS TRUE
47-
GIT_SHALLOW TRUE
48-
)
49-
FetchContent_MakeAvailable(pressio-log)
50-
set(PRESSIO_LOG_INCLUDE_DIR ${pressio-log_SOURCE_DIR}/include)
51-
endif()
52-
else()
53-
message(STATUS "Logging has been disabled (PRESSIO_ENABLE_LOGGING=OFF)")
54-
endif()
55-
56-
# versioning
57-
#=====================================================================
58-
# adapted from Eigen
59-
file(READ "${PRESSIO_OPS_INCLUDE_DIR}/pressio/ops_macros.hpp" _pressio_macros)
60-
61-
string(REGEX MATCH "define[ \t]+PRESSIO_MAJOR_VERSION[ \t]+([0-9]+)" _pressio_major_version_match "${_pressio_macros}")
62-
set(PRESSIO_MAJOR_VERSION "${CMAKE_MATCH_1}")
63-
string(REGEX MATCH "define[ \t]+PRESSIO_MINOR_VERSION[ \t]+([0-9]+)" _pressio_minor_version_match "${_pressio_macros}")
64-
set(PRESSIO_MINOR_VERSION "${CMAKE_MATCH_1}")
65-
string(REGEX MATCH "define[ \t]+PRESSIO_PATCH_VERSION[ \t]+([0-9]+)" _pressio_patch_version_match "${_pressio_macros}")
66-
set(PRESSIO_PATCH_VERSION "${CMAKE_MATCH_1}")
67-
set(PRESSIO_VERSION_NUMBER ${PRESSIO_MAJOR_VERSION}.${PRESSIO_MINOR_VERSION}.${PRESSIO_PATCH_VERSION})
68-
message("${Magenta}>> PRESSIO: version = ${PRESSIO_VERSION_NUMBER} ${ColourReset}")
69-
70-
# c++ standard
71-
#=====================================================================
72-
if (NOT CMAKE_CXX_STANDARD)
73-
set(CMAKE_CXX_STANDARD 17)
74-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
75-
set(CMAKE_CXX_EXTENSIONS OFF)
76-
endif()
77-
78-
message("${Magenta}>> PRESSIO: CMAKE_CXX_STANDARD is set to ${CMAKE_CXX_STANDARD} ${ColourReset}")
79-
80-
if(CMAKE_CXX_STANDARD STREQUAL "17"
81-
OR CMAKE_CXX_STANDARD STREQUAL "20")
82-
if(NOT "cxx_std_${CMAKE_CXX_STANDARD}" IN_LIST CMAKE_CXX_COMPILE_FEATURES)
83-
message(FATAL_ERROR "Compiler does not support C++${CMAKE_CXX_STANDARD}. This is required.")
84-
endif()
85-
endif()
86-
87-
88-
# install headers
89-
#=====================================================================
90-
include(GNUInstallDirs)
91-
92-
install(
93-
DIRECTORY include/pressio
94-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
95-
964
# tests
975
#=====================================================================
6+
option(PRESSIO_ENABLE_TESTS "Enable testing for pressio" OFF)
987
if(PRESSIO_ENABLE_TESTS)
99-
add_library(pressio INTERFACE)
100-
101-
target_include_directories(
102-
pressio INTERFACE
103-
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include;${PRESSIO_OPS_INCLUDE_DIR}>"
104-
)
105-
106-
if (PRESSIO_ENABLE_LOGGING)
107-
target_include_directories(
108-
pressio INTERFACE
109-
"$<BUILD_INTERFACE:${PRESSIO_LOG_INCLUDE_DIR}>"
110-
)
111-
endif()
112-
1138
enable_testing()
1149
add_subdirectory(tests)
11510
endif()

docs/source/components/ode_concepts.rst

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@ Concepts
99
System
1010
~~~~~~
1111

12-
.. literalinclude:: ../../../include/pressio/ode/concepts/ode_system_cxx20.hpp
12+
.. literalinclude:: ../../../include/pressio/ode/concepts/ode_system.hpp
1313
:language: cpp
1414
:lines: 8-101, 213
1515

1616
Real-valued system refinement
1717
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1818

19-
.. literalinclude:: ../../../include/pressio/ode/concepts/ode_system_cxx20.hpp
19+
.. literalinclude:: ../../../include/pressio/ode/concepts/ode_system.hpp
2020
:language: cpp
2121
:lines: 8-9, 105-154, 213
2222

2323
Others
2424
~~~~~~
2525

26-
.. literalinclude:: ../../../include/pressio/ode/concepts/ode_others_cxx20.hpp
26+
.. literalinclude:: ../../../include/pressio/ode/concepts/ode_others.hpp
2727
:language: cpp
2828
:lines: 7-90

0 commit comments

Comments
 (0)