diff --git a/CMakeLists.txt b/CMakeLists.txt index d6bb9a102..de664f502 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ project( LANGUAGES Fortran ) +option(BUILD_SHARED_LIBS "Build shared libraries" OFF) option(BUILD_TESTING "Build tests" OFF) option(RTE_ENABLE_SP "Enable single-precision floating-point model" OFF) diff --git a/rrtmgp-frontend/CMakeLists.txt b/rrtmgp-frontend/CMakeLists.txt index 386a8756b..03d2f30bf 100644 --- a/rrtmgp-frontend/CMakeLists.txt +++ b/rrtmgp-frontend/CMakeLists.txt @@ -1,7 +1,7 @@ set(gas_optics_source_dir ${PROJECT_SOURCE_DIR}/gas-optics) add_library( - rrtmgp STATIC # cmake-format: sort + rrtmgp # cmake-format: sort $ ${gas_optics_source_dir}/mo_gas_concentrations.F90 ${gas_optics_source_dir}/mo_gas_optics.F90 @@ -14,7 +14,13 @@ add_library( add_library(rte-rrtmgp::rrtmgp ALIAS rrtmgp) -set_target_properties(rrtmgp PROPERTIES EXPORT_NAME rte-rrtmgp::rrtmgp) +set_target_properties( + rrtmgp + PROPERTIES EXPORT_NAME rte-rrtmgp::rrtmgp + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}" +) target_include_directories( rrtmgp diff --git a/rrtmgp-kernels/CMakeLists.txt b/rrtmgp-kernels/CMakeLists.txt index 2c50a17c9..7e31901e1 100644 --- a/rrtmgp-kernels/CMakeLists.txt +++ b/rrtmgp-kernels/CMakeLists.txt @@ -29,6 +29,10 @@ else() endif() endif() +if(BUILD_SHARED_LIBS) + set_target_properties(rrtmgpkernels PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() + target_include_directories( rrtmgpkernels PRIVATE ${CMAKE_Fortran_MODULE_DIRECTORY} ) diff --git a/rte-frontend/CMakeLists.txt b/rte-frontend/CMakeLists.txt index 9a84452a0..ea0c2581d 100644 --- a/rte-frontend/CMakeLists.txt +++ b/rte-frontend/CMakeLists.txt @@ -1,5 +1,5 @@ add_library( - rte STATIC # cmake-format: sort + rte # cmake-format: sort $ mo_fluxes.F90 mo_optical_props.F90 @@ -12,7 +12,12 @@ add_library( add_library(rte-rrtmgp::rte ALIAS rte) -set_target_properties(rte PROPERTIES EXPORT_NAME rte-rrtmgp::rte) +set_target_properties( + rte + PROPERTIES EXPORT_NAME rte-rrtmgp::rte + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} +) target_include_directories( rte diff --git a/rte-kernels/CMakeLists.txt b/rte-kernels/CMakeLists.txt index ba36d6718..13bb88de7 100644 --- a/rte-kernels/CMakeLists.txt +++ b/rte-kernels/CMakeLists.txt @@ -35,6 +35,10 @@ else() endif() endif() +if(BUILD_SHARED_LIBS) + set_target_properties(rtekernels PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() + target_compile_definitions( rtekernels PRIVATE $<$:RTE_USE_SP> )