https://plmlab.math.cnrs.fr/cpierre1/cumin
Tip revision: 4c687c5f43a16737698b758984c491a5a9dbe2b5 authored by Charles Pierre on 13 January 2023, 08:03:50 UTC
Add LICENSE
Add LICENSE
Tip revision: 4c687c5
CMakeLists.txt
cmake_minimum_required(VERSION 2.9)
cmake_policy(SET CMP0054 NEW)
project(cumin)
enable_language(Fortran)
enable_testing()
# fortran modules directory
set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/modules)
include_directories(${CMAKE_Fortran_MODULE_DIRECTORY})
# Display CMAKE_INSTALL_PREFIX
message(STATUS "Install prefix : ${CMAKE_INSTALL_PREFIX}")
# Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the build type" FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo" "Coverage" )
endif()
message(STATUS "Build type : ${CMAKE_BUILD_TYPE}")
# #######################################
#
# CONFIGURATION PARAMTERS
#
# DEBUG:
# Level of debug in the fortran code, default = 0
#
set(DEBUG 0 CACHE STRING "level of debug: 0 = no-debug")
if( NOT ( ${DEBUG} STREQUAL "0") )
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING
"Choose the type of build." FORCE)
get_filename_component(compilo ${CMAKE_Fortran_COMPILER} NAME)
if( ${compilo} STREQUAL "gfortran" )
if( NOT ( CMAKE_Fortran_FLAGS MATCHES "-fbounds-check" ) )
set(CMAKE_Fortran_FLAGS "-fbounds-check ${CMAKE_Fortran_FLAGS}" CACHE STRING "" FORCE)
endif()
endif()
endif()
message(STATUS "Debug level : ${DEBUG}")
#
# REAL_PRECISION:
# Precision of real numbers, default = double
#
set(REAL_PRECISION 8 CACHE STRING
"4 (SIMPLE)/ 8 (DOUBLE)/ 12 (TRIPLE)/ 16 (QUAD)")
message(STATUS "Real precision : ${REAL_PRECISION}")
#
# RUN_INTEG_TESTS:
# Run integration tests, default = off
#
option(RUN_INTEG_TESTS "Run integration tests" OFF)
message(STATUS "Run integ tests: ${RUN_INTEG_TESTS}")
#
# USER_PREFIX_PATH:
# User path to dependencies
#
set(USER_PREFIX_PATH "$ENV{HOME}" CACHE STRING "User path to dependencies")
list(FIND CMAKE_PREFIX_PATH ${USER_PREFIX_PATH} out)
if ( out EQUAL -1)
list(APPEND CMAKE_PREFIX_PATH "${USER_PREFIX_PATH}")
mark_as_advanced(CMAKE_PREFIX_PATH)
endif()
#
#
# #######################################
#
# Display Fortran flags
#
if( ${CMAKE_BUILD_TYPE} STREQUAL "Release" )
message(STATUS "Fortran flags : ${CMAKE_Fortran_FLAGS} ${CMAKE_Fortran_FLAGS_RELEASE}")
elseif( ${CMAKE_BUILD_TYPE} STREQUAL "Debug" )
message(STATUS "Fortran flags : ${CMAKE_Fortran_FLAGS} ${CMAKE_Fortran_FLAGS_DEBUG}")
endif()
# #######################################
#
# DEPENDENCIES
#
# OPENMP
include("${CMAKE_CURRENT_SOURCE_DIR}/ress/cmake/config_OMP.cmake")
#
# BLAS / LAPACK
include("${CMAKE_CURRENT_SOURCE_DIR}/ress/cmake/config_blas_lapack.cmake")
#
# ARPACK
include("${CMAKE_CURRENT_SOURCE_DIR}/ress/cmake/config_arpack.cmake")
#
# SCOTCH
include("${CMAKE_CURRENT_SOURCE_DIR}/ress/cmake/config_scotch.cmake")
#
# MUMPS
include("${CMAKE_CURRENT_SOURCE_DIR}/ress/cmake/config_mumps.cmake")
#
# MMG
include("${CMAKE_CURRENT_SOURCE_DIR}/ress/cmake/config_mmg.cmake")
#
# GMSH
include("${CMAKE_CURRENT_SOURCE_DIR}/ress/cmake/config_gmsh.cmake")
#
# Doxygen
find_package(Doxygen)
#
#
# #######################################
add_subdirectory(src)
add_subdirectory(examples)
add_subdirectory(tests)
if(Doxygen_FOUND)
add_subdirectory(doc)
endif()