Newer
Older
cmake_minimum_required(VERSION 3.0)
option(INCLUDE_CUDA "GPU build in mode" OFF)
option(INCLUDE_CXX "CXX build in mode" OFF)
project(INMCM_sfx)
enable_language(Fortran)
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
srcF/FCWrapper.F90
)
if(INCLUDE_CXX)
set(SOURCES_C
srcC/SubFunctionsWrapper.c
)
set(SOURCES_CXX
set(MEMPROC_SOURCES_CXX
set(MEMPROC_HEADERS_CXX
set(MEMPROC_SOURCES_CU
srcCU/MemoryProcessing.cu
)
set(MEMPROC_HEADERS_CU
includeCU/MemoryProcessing.cuh
)
endif(INCLUDE_CUDA)
endif(INCLUDE_CXX OR INCLUDE_CUDA)
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 ")
set_property(TARGET drag PROPERTY LINKER_LANGUAGE Fortran)
#copy data on post build
add_custom_command(
TARGET drag POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/data
${CMAKE_CURRENT_BINARY_DIR}/data)