Newer
Older
cmake_minimum_required(VERSION 3.0)
option(INCLUDE_CUDA "GPU build in mode" OFF)
option(INCLUDE_CXX "CXX build in mode" OFF)
find_package(Doxygen)
if (DOXYGEN_FOUND)
set(DOXYGEN_IN ../doxygen/config) # doxygen config file
# option ALL allows to build the docs together with the code
add_custom_target( doc_doxygen ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_IN}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) # WORKING_DIRECTORY: Execute the command with the given current working directory. If it is a relative path it will be interpreted relative to the build tree directory corresponding to the current source directory.
else()
message("Doxygen need to be installed to generate the doxygen documentation")
endif (DOXYGEN_FOUND)
endif(BUILD_DOC)
if (SFX_CHECK_NAN)
add_definitions(-DSFX_CHECK_NAN)
endif ()
if(INCLUDE_CXX)
set(RUN_MACRO -DINCLUDE_CXX)
endif(INCLUDE_CXX)
if(INCLUDE_CUDA)
enable_language(CUDA)
find_package(CUDA REQUIRED)
include_directories(${CUDA_INCLUDE_DIRS})
set(RUN_MACRO -DINCLUDE_CUDA)
set(INCLUDE_CXX ON)
endif(INCLUDE_CUDA)
if(INCLUDE_CXX)
enable_language(C)
enable_language(CXX)
set(CMAKE_CXX_STANDARD 11)
endif(INCLUDE_CXX)
set(SOURCES_F
srcF/sfx_data.f90
srcF/sfx_common.f90
srcF/sfx_esm.f90
srcF/sfx_esm_param.f90
srcF/sfx_log.f90
srcF/sfx_log_param.f90
srcF/sfx_main.f90
srcF/sfx_phys_const.f90
srcF/sfx_surface.f90
srcCXX/sfx_flux.cpp
srcCXX/sfx_flux_compute_func.cpp
srcCXX/sfx_call_class_func.cpp
includeCXX/sfx_flux.h
includeCXX/sfx_flux_compute_func.h
includeCXX/sfx_call_class_func.h
set(SOURCES ${MEMPROC_HEADERS_CU} ${MEMPROC_SOURCES_CU} ${MEMPROC_HEADERS_CXX} ${MEMPROC_SOURCES_CXX} ${HEADERS_CU} ${SOURCES_CU} ${HEADERS_CXX} ${SOURCES_CXX} ${SOURCES_C} ${HEADERS_F} ${SOURCES_F})
set(CMAKE_Fortran_FLAGS " -cpp ")