https://plmlab.math.cnrs.fr/cpierre1/cumin
Raw File
Tip revision: 4c687c5f43a16737698b758984c491a5a9dbe2b5 authored by Charles Pierre on 13 January 2023, 08:03:50 UTC
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()

back to top