### Initialize CMake (some internal stuff) cmake_minimum_required(VERSION 3.0) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) # Enable project project(NEO-2-NTV) enable_language(Fortran) set(EXE_NAME "neo_2.x") ### Define paths to external libraries (load external file) ### Installation directory set (CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}) ### Path to the external libraries set(PROJLIBS /proj/plasma/Libs/ CACHE STRING "Common library path") set(GSL_PATH ${PROJLIBS}GSL_gcc-6.3/gsl-2.3/LIB) set(GSL_LIB ${GSL_PATH}/lib/ CACHE STRING "GSL path") set(FGSL_PATH /proj/plasma/Libs/FGSL_gcc-6.3/fgsl-1.2.0/LIB CACHE STRING "FGSL path") set(FGSL_LIB ${FGSL_PATH}/lib/) set(FGSL_INC ${FGSL_PATH}/include/fgsl/) ### Path to the ATLAS libraries set(ATLASLIBS /usr/lib/atlas-base/) set(LAPACK_LIB ${ATLASLIBS}/atlas/) set(F77BLAS_LIB ${ATLASLIBS}) set(ATLASBLAS_LIB ${ATLASLIBS}) ### Path to OpenBLAS set(OPEN_BLAS_PATH /usr/lib/openblas-base/) set(OPEN_BLAS_LAPACK_LIB ${OPEN_BLAS_PATH}) set(OPEN_BLAS_LIB ${OPEN_BLAS_PATH}) # Print the current compiler message(STATUS "The Compiler ID is ${CMAKE_Fortran_COMPILER_ID}") # Include directories for NEO-2 include_directories(${NEO2_Inc}) set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -cpp -g -ffpe-trap=invalid,zero,overflow -fcheck=all -fbacktrace -Wall -Wno-unused-dummy-argument") set(CFLAGS "-O2 -DDOUBLE_APPEND_FORTRAN") ### Define container for *.o and *.mod files set(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR}/OBJS) ### Find libraries # GSL find_library(gsl_lib gsl ${GSL_LIB}) # FGSL find_library(fgsl_lib fgsl ${FGSL_LIB} NO_DEFAULT_PATH) include_directories(${FGSL_INC}) # LAPACK and BLAS if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU") find_library(lapack_lib lapack ${LAPACK_LIB} NO_DEFAULT_PATH) find_library(f77blas_lib f77blas ${F77BLAS_LIB} NO_DEFAULT_PATH) find_library(atlas_lib atlas ${ATLASBLAS_LIB} NO_DEFAULT_PATH) find_library(open_blas_lapack_lib lapack ${OPEN_BLAS_LAPACK_LIB} NO_DEFAULT_PATH) find_library(open_blas_lib blas ${OPEN_BLAS_LIB} NO_DEFAULT_PATH) endif () ### Source files set(NEO2_SRC_FILES ./neo2.f90 ) set_source_files_properties(${NEO2_SRC_FILES} PROPERTIES COMPILE_FLAGS "${DEBUGFLAG} ${FFLAG_DEBUG} ${FFLAGS}") ### Define executable add_executable(${EXE_NAME} ${NEO2_SRC_FILES} ) if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU") set(LINALG_LIBRARIES ${lapack_lib} ${f77blas_lib} ${atlas_lib}) endif () ### Add libraries linked with executable target_link_libraries(${EXE_NAME} ${fgsl_lib} ${gsl_lib} ${LINALG_LIBRARIES} )