159599516SKenneth E. JansenCMAKE_MINIMUM_REQUIRED(VERSION 2.8.5) 259599516SKenneth E. Jansen#SET(CMAKE_FORTRAN_COMPILER gfortran gfortran) 359599516SKenneth E. JansenPROJECT(PHASTA Fortran C CXX ) 459599516SKenneth E. Jansenenable_language(Fortran) 559599516SKenneth E. Jansenenable_language(C) 659599516SKenneth E. Jansenenable_language(CXX) 759599516SKenneth E. Jansen 8f3b67ec7SCameron Smithenable_testing() 9f3b67ec7SCameron Smithinclude(CTest) 10f3b67ec7SCameron Smithset(MPIRUN "mpirun" 11f3b67ec7SCameron Smith CACHE string 12f3b67ec7SCameron Smith "the mpirun or srun executable") 13f3b67ec7SCameron Smithset(MPIRUN_PROCFLAG "-np" 14f3b67ec7SCameron Smith CACHE string 15f3b67ec7SCameron Smith "the command line flag to give process count to MPIRUN") 16f3b67ec7SCameron Smith 1759599516SKenneth E. Jansenlist(APPEND CMAKE_MODULE_PATH ${PHASTA_SOURCE_DIR}/CMakeFiles) 1859599516SKenneth E. Jansen 1959599516SKenneth E. Jansen#Handle Fortran name mangling 2059599516SKenneth E. Janseninclude(FortranCInterface) 2159599516SKenneth E. JansenFortranCInterface_VERIFY(CXX) 2259599516SKenneth E. JansenFortranCInterface_Header(FCMangle.h SYMBOLS write_restart write_error write_displ write_field write_hessian) 2359599516SKenneth E. Janseninclude_directories("${PHASTA_BINARY_DIR}") 2459599516SKenneth E. Jansen 2559599516SKenneth E. Jansen# Force static linking 2659599516SKenneth E. JansenIF(CMAKE_SYSTEM_NAME MATCHES BlueGeneQ-static) 2759599516SKenneth E. Jansen SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") 2859599516SKenneth E. JansenENDIF(CMAKE_SYSTEM_NAME MATCHES BlueGeneQ-static) 2959599516SKenneth E. Jansen 3059599516SKenneth E. Jansen#MESSAGE(ERROR ${CMAKE_Fortran_SOURCE_FILE_EXTENSIONS}) 3159599516SKenneth E. Jansen#SET(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f90 f F90 F) 3259599516SKenneth E. Jansen# stuff for C/C++ calls to Fortran -- still needs to be done properly... 3359599516SKenneth E. JansenIF(CMAKE_Fortran_COMPILER_ID MATCHES GNU) 34504d3a3bSCameron Smith SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -ffixed-form -ffixed-line-length-132 -x f95-cpp-input" ) 3559599516SKenneth E. JansenENDIF(CMAKE_Fortran_COMPILER_ID MATCHES GNU) 3659599516SKenneth E. Jansen 3759599516SKenneth E. JansenIF(CMAKE_Fortran_COMPILER_ID MATCHES Intel) 3859599516SKenneth E. Jansen 39888ff382SCameron SmithSET(CMAKE_Fortran_FLAGS "-g -O3 -W0 -ip -80 -fpp ${CMAKE_Fortran_FLAGS}" ) 4059599516SKenneth E. Jansenmessage(STATUS "Found ifort") 4159599516SKenneth E. Jansenmessage(STATUS ${CMAKE_Fortran_FLAGS}) 4259599516SKenneth E. JansenENDIF(CMAKE_Fortran_COMPILER_ID MATCHES Intel) 4359599516SKenneth E. Jansen 4459599516SKenneth E. Jansenif(CMAKE_Fortran_COMPILER_ID MATCHES PGI) 4559599516SKenneth E. Jansen set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Mextend") 4659599516SKenneth E. Jansenendif(CMAKE_Fortran_COMPILER_ID MATCHES PGI) 4759599516SKenneth E. Jansen 4859599516SKenneth E. Jansenif(CMAKE_Fortran_COMPILER_ID MATCHES XL) 4959599516SKenneth E. Jansen #set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qstrict -qnullterm -qfixed=132") 5059599516SKenneth E. Jansen set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qnullterm -qfixed=132") 5159599516SKenneth E. Jansenendif(CMAKE_Fortran_COMPILER_ID MATCHES XL) 5259599516SKenneth E. Jansen 5359599516SKenneth E. JansenIF(${CMAKE_BUILD_TYPE} MATCHES "Debug" ) 5459599516SKenneth E. Jansen ADD_DEFINITIONS( -DDEBUG ) 5559599516SKenneth E. JansenENDIF(${CMAKE_BUILD_TYPE} MATCHES "Debug" ) 5659599516SKenneth E. Jansen 5759599516SKenneth E. Jansen# set archos "like" options for things like c calling fortran bindings 5859599516SKenneth E. Jansen# later on we may want to do it dependent on behavior (e.g. 5959599516SKenneth E. Jansen# C_FORTRAN_CALL == uppercase, underline, nochange) 6059599516SKenneth E. Jansen#OPTION(ARCHOS_OPTION "ArchOS dependent defines (e.g. -DLINUX)" ) 6159599516SKenneth E. JansenSET(ARCHOS_OPTION "-DLINUX" CACHE STRING "ArchOS dependent defines (e.g. -DLINUX)" ) 6259599516SKenneth E. JansenADD_DEFINITIONS( ${ARCHOS_OPTION} ) 6359599516SKenneth E. Jansen 6459599516SKenneth E. Jansen 6559599516SKenneth E. JansenSET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY 6659599516SKenneth E. Jansen ${PHASTA_BINARY_DIR}/lib) 6759599516SKenneth E. Jansen 6859599516SKenneth E. JansenSET(CMAKE_RUNTIME_OUTPUT_DIRECTORY 6959599516SKenneth E. Jansen ${PHASTA_BINARY_DIR}/bin) 7059599516SKenneth E. Jansen 7159599516SKenneth E. JansenOPTION(PHASTA_USE_MPI "Build MPI components" ON) 7259599516SKenneth E. JansenIF(PHASTA_USE_MPI) 73*fbe6cd04SCameron Smith ADD_DEFINITIONS( -DPARALLEL -DMPI -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX ) 7459599516SKenneth E. Jansen FIND_PACKAGE(MPI REQUIRED) 7559599516SKenneth E. Jansen# SET(CMAKE_MODULE_PATH ${PHASTA_SOURCE_DIR}/CMakeFiles) 7659599516SKenneth E. Jansen # bug in FIND_PACKAGE for Threads -- ignore for now (bug has been reported)... 7759599516SKenneth E. Jansen FIND_PACKAGE(Threads) 7859599516SKenneth E. Jansen IF(Threads_FOUND) 7959599516SKenneth E. Jansen INCLUDE(FindThreads) 8059599516SKenneth E. Jansen ENDIF(Threads_FOUND) 8159599516SKenneth E. JansenENDIF(PHASTA_USE_MPI) 8259599516SKenneth E. Jansen 8359599516SKenneth E. JansenOPTION(PHASTA_BUILD_PHASTAIO "Build PhastaIO" ON) 8459599516SKenneth E. Jansenif(PHASTA_BUILD_PHASTAIO) 8559599516SKenneth E. Jansen add_subdirectory(phastaIO) 8659599516SKenneth E. Jansen list(APPEND PHASTA_INCLUDES "${PHASTA_SOURCE_DIR}/phastaIO") 8759599516SKenneth E. Jansenendif(PHASTA_BUILD_PHASTAIO) 8859599516SKenneth E. Jansen 8959599516SKenneth E. JansenOPTION(PHASTA_BUILD_SHAPEFUNCTION "Build shapeFunction" ON) 9059599516SKenneth E. Jansenif(PHASTA_BUILD_SHAPEFUNCTION) 9159599516SKenneth E. Jansen list(APPEND PHASTA_INCLUDES "${PHASTA_SOURCE_DIR}/shapeFunction/src") 9259599516SKenneth E. Jansen add_subdirectory(shapeFunction) 9359599516SKenneth E. Jansenendif(PHASTA_BUILD_SHAPEFUNCTION) 9459599516SKenneth E. Jansen 9559599516SKenneth E. Jansenif(EXISTS ${PHASTA_SOURCE_DIR}/phShape) 9659599516SKenneth E. JansenOPTION(PHASTA_BUILD_PHSHAPE "Build phShape" OFF) 9759599516SKenneth E. Jansenif(PHASTA_BUILD_PHSHAPE) 9859599516SKenneth E. Jansen list(APPEND PHASTA_INCLUDES "${PHASTA_SOURCE_DIR}/phShape/src") 9959599516SKenneth E. Jansen add_subdirectory(phShape) 10059599516SKenneth E. Jansenendif(PHASTA_BUILD_PHSHAPE) 10159599516SKenneth E. Jansenendif(EXISTS ${PHASTA_SOURCE_DIR}/phShape) 10259599516SKenneth E. Jansen 10359599516SKenneth E. JansenOPTION(PHASTA_BUILD_SOLVERS "Build Solvers" ON) 10459599516SKenneth E. Jansenif(PHASTA_BUILD_SOLVERS) 10559599516SKenneth E. Jansen set(PHASTA_BUILD_PHASTAIO ON) 10659599516SKenneth E. Jansen if(PHASTA_USE_MPI) 10759599516SKenneth E. Jansen set(PHASTA_BUILD_METIS ON) 10859599516SKenneth E. Jansen endif(PHASTA_USE_MPI) 10959599516SKenneth E. Jansen list(APPEND PHASTA_INCLUDES "${PHASTA_SOURCE_DIR}/phSolver/common") 11059599516SKenneth E. Jansen include_directories(${PHASTA_INCLUDES}) 11159599516SKenneth E. Jansen add_subdirectory(phSolver) 11259599516SKenneth E. Jansen#TODO 11359599516SKenneth E. Jansenendif(PHASTA_BUILD_SOLVERS) 11459599516SKenneth E. Jansen 11559599516SKenneth E. JansenOPTION(PHASTA_BUILD_CONVERTERIO "Build IO converter" ON) 11659599516SKenneth E. Jansenif(PHASTA_BUILD_CONVERTERIO) 11759599516SKenneth E. Jansen add_subdirectory(converterIO) 11859599516SKenneth E. Jansenendif(PHASTA_BUILD_CONVERTERIO) 11959599516SKenneth E. Jansen 12059599516SKenneth E. JansenOPTION(PHASTA_BUILD_ACUSTAT "Build AcuStat" ON) 12159599516SKenneth E. Jansenif(PHASTA_BUILD_ACUSTAT) 12259599516SKenneth E. Jansen add_subdirectory(AcuStat) 12359599516SKenneth E. Jansenendif(PHASTA_BUILD_ACUSTAT) 12459599516SKenneth E. Jansen 12559599516SKenneth E. JansenOPTION(PHASTA_BUILD_M2N "Build M2N" ON) 12659599516SKenneth E. Jansenif(PHASTA_BUILD_M2N) 12759599516SKenneth E. Jansen add_subdirectory(M2N) 12859599516SKenneth E. Jansenendif(PHASTA_BUILD_M2N) 12959599516SKenneth E. Jansen 13059599516SKenneth E. JansenOPTION(PHASTA_BUILD_M2NFixBnd "Build M2NFixBnd" ON) 13159599516SKenneth E. Jansenif(PHASTA_BUILD_M2NFixBnd) 13259599516SKenneth E. Jansen add_subdirectory(M2NFixBnd) 13359599516SKenneth E. Jansenendif(PHASTA_BUILD_M2NFixBnd) 13459599516SKenneth E. Jansen 13559599516SKenneth E. Jansenif(EXISTS ${PHASTA_SOURCE_DIR}/phNSpre) 13659599516SKenneth E. Jansen add_subdirectory(phNSpre) 13759599516SKenneth E. Jansenendif(EXISTS ${PHASTA_SOURCE_DIR}/phNSpre) 13859599516SKenneth E. Jansen 13916223cb9SCameron Smithadd_subdirectory(checkphasta) 14016223cb9SCameron Smith 141