1*59599516SKenneth E. JansenCMAKE_MINIMUM_REQUIRED(VERSION 2.8.5) 2*59599516SKenneth E. Jansen#SET(CMAKE_FORTRAN_COMPILER gfortran gfortran) 3*59599516SKenneth E. JansenPROJECT(PHASTA Fortran C CXX ) 4*59599516SKenneth E. Jansenenable_language(Fortran) 5*59599516SKenneth E. Jansenenable_language(C) 6*59599516SKenneth E. Jansenenable_language(CXX) 7*59599516SKenneth E. Jansen 8*59599516SKenneth E. Jansenlist(APPEND CMAKE_MODULE_PATH ${PHASTA_SOURCE_DIR}/CMakeFiles) 9*59599516SKenneth E. Jansen 10*59599516SKenneth E. Jansen#Handle Fortran name mangling 11*59599516SKenneth E. Janseninclude(FortranCInterface) 12*59599516SKenneth E. JansenFortranCInterface_VERIFY(CXX) 13*59599516SKenneth E. JansenFortranCInterface_Header(FCMangle.h SYMBOLS write_restart write_error write_displ write_field write_hessian) 14*59599516SKenneth E. Janseninclude_directories("${PHASTA_BINARY_DIR}") 15*59599516SKenneth E. Jansen 16*59599516SKenneth E. Jansen# Force static linking 17*59599516SKenneth E. JansenIF(CMAKE_SYSTEM_NAME MATCHES BlueGeneQ-static) 18*59599516SKenneth E. Jansen SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") 19*59599516SKenneth E. JansenENDIF(CMAKE_SYSTEM_NAME MATCHES BlueGeneQ-static) 20*59599516SKenneth E. Jansen 21*59599516SKenneth E. Jansen#MESSAGE(ERROR ${CMAKE_Fortran_SOURCE_FILE_EXTENSIONS}) 22*59599516SKenneth E. Jansen#SET(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f90 f F90 F) 23*59599516SKenneth E. Jansen# stuff for C/C++ calls to Fortran -- still needs to be done properly... 24*59599516SKenneth E. JansenIF(CMAKE_Fortran_COMPILER_ID MATCHES GNU) 25*59599516SKenneth E. Jansen SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffixed-form -ffixed-line-length-132 -x f95-cpp-input" ) 26*59599516SKenneth E. JansenENDIF(CMAKE_Fortran_COMPILER_ID MATCHES GNU) 27*59599516SKenneth E. Jansen 28*59599516SKenneth E. JansenIF(CMAKE_Fortran_COMPILER_ID MATCHES Intel) 29*59599516SKenneth E. Jansen 30*59599516SKenneth E. JansenSET(CMAKE_Fortran_FLAGS "-g -O3 -W0 -xW -ip -cm -w95 -80 -fpp" ) 31*59599516SKenneth E. Jansenmessage(STATUS "Found ifort") 32*59599516SKenneth E. Jansenmessage(STATUS ${CMAKE_Fortran_FLAGS}) 33*59599516SKenneth E. JansenENDIF(CMAKE_Fortran_COMPILER_ID MATCHES Intel) 34*59599516SKenneth E. Jansen 35*59599516SKenneth E. Jansenif(CMAKE_Fortran_COMPILER_ID MATCHES PGI) 36*59599516SKenneth E. Jansen set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Mextend") 37*59599516SKenneth E. Jansenendif(CMAKE_Fortran_COMPILER_ID MATCHES PGI) 38*59599516SKenneth E. Jansen 39*59599516SKenneth E. Jansenif(CMAKE_Fortran_COMPILER_ID MATCHES XL) 40*59599516SKenneth E. Jansen #set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qstrict -qnullterm -qfixed=132") 41*59599516SKenneth E. Jansen set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qnullterm -qfixed=132") 42*59599516SKenneth E. Jansenendif(CMAKE_Fortran_COMPILER_ID MATCHES XL) 43*59599516SKenneth E. Jansen 44*59599516SKenneth E. JansenIF(${CMAKE_BUILD_TYPE} MATCHES "Debug" ) 45*59599516SKenneth E. Jansen ADD_DEFINITIONS( -DDEBUG ) 46*59599516SKenneth E. JansenENDIF(${CMAKE_BUILD_TYPE} MATCHES "Debug" ) 47*59599516SKenneth E. Jansen 48*59599516SKenneth E. Jansen# set archos "like" options for things like c calling fortran bindings 49*59599516SKenneth E. Jansen# later on we may want to do it dependent on behavior (e.g. 50*59599516SKenneth E. Jansen# C_FORTRAN_CALL == uppercase, underline, nochange) 51*59599516SKenneth E. Jansen#OPTION(ARCHOS_OPTION "ArchOS dependent defines (e.g. -DLINUX)" ) 52*59599516SKenneth E. JansenSET(ARCHOS_OPTION "-DLINUX" CACHE STRING "ArchOS dependent defines (e.g. -DLINUX)" ) 53*59599516SKenneth E. JansenADD_DEFINITIONS( ${ARCHOS_OPTION} ) 54*59599516SKenneth E. Jansen 55*59599516SKenneth E. Jansen 56*59599516SKenneth E. JansenSET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY 57*59599516SKenneth E. Jansen ${PHASTA_BINARY_DIR}/lib) 58*59599516SKenneth E. Jansen 59*59599516SKenneth E. JansenSET(CMAKE_RUNTIME_OUTPUT_DIRECTORY 60*59599516SKenneth E. Jansen ${PHASTA_BINARY_DIR}/bin) 61*59599516SKenneth E. Jansen 62*59599516SKenneth E. JansenOPTION(PHASTA_USE_MPI "Build MPI components" ON) 63*59599516SKenneth E. JansenIF(PHASTA_USE_MPI) 64*59599516SKenneth E. Jansen ADD_DEFINITIONS( -DPARALLEL -DMPI -DMPICH_SKIP_MPICXX ) 65*59599516SKenneth E. Jansen FIND_PACKAGE(MPI REQUIRED) 66*59599516SKenneth E. Jansen# SET(CMAKE_MODULE_PATH ${PHASTA_SOURCE_DIR}/CMakeFiles) 67*59599516SKenneth E. Jansen # bug in FIND_PACKAGE for Threads -- ignore for now (bug has been reported)... 68*59599516SKenneth E. Jansen FIND_PACKAGE(Threads) 69*59599516SKenneth E. Jansen IF(Threads_FOUND) 70*59599516SKenneth E. Jansen INCLUDE(FindThreads) 71*59599516SKenneth E. Jansen ENDIF(Threads_FOUND) 72*59599516SKenneth E. JansenENDIF(PHASTA_USE_MPI) 73*59599516SKenneth E. Jansen 74*59599516SKenneth E. JansenOPTION(PHASTA_BUILD_PHASTAIO "Build PhastaIO" ON) 75*59599516SKenneth E. Jansenif(PHASTA_BUILD_PHASTAIO) 76*59599516SKenneth E. Jansen add_subdirectory(phastaIO) 77*59599516SKenneth E. Jansen list(APPEND PHASTA_INCLUDES "${PHASTA_SOURCE_DIR}/phastaIO") 78*59599516SKenneth E. Jansenendif(PHASTA_BUILD_PHASTAIO) 79*59599516SKenneth E. Jansen 80*59599516SKenneth E. JansenOPTION(PHASTA_BUILD_METIS "Build phMetis" ON) 81*59599516SKenneth E. Jansenif(PHASTA_BUILD_METIS) 82*59599516SKenneth E. Jansen add_subdirectory(phMetis) 83*59599516SKenneth E. Jansen add_dependencies(phMetis common) #only for XLF? 84*59599516SKenneth E. Jansenendif(PHASTA_BUILD_METIS) 85*59599516SKenneth E. Jansen 86*59599516SKenneth E. JansenOPTION(PHASTA_BUILD_SHAPEFUNCTION "Build shapeFunction" ON) 87*59599516SKenneth E. Jansenif(PHASTA_BUILD_SHAPEFUNCTION) 88*59599516SKenneth E. Jansen list(APPEND PHASTA_INCLUDES "${PHASTA_SOURCE_DIR}/shapeFunction/src") 89*59599516SKenneth E. Jansen add_subdirectory(shapeFunction) 90*59599516SKenneth E. Jansenendif(PHASTA_BUILD_SHAPEFUNCTION) 91*59599516SKenneth E. Jansen 92*59599516SKenneth E. Jansenif(EXISTS ${PHASTA_SOURCE_DIR}/phShape) 93*59599516SKenneth E. JansenOPTION(PHASTA_BUILD_PHSHAPE "Build phShape" OFF) 94*59599516SKenneth E. Jansenif(PHASTA_BUILD_PHSHAPE) 95*59599516SKenneth E. Jansen list(APPEND PHASTA_INCLUDES "${PHASTA_SOURCE_DIR}/phShape/src") 96*59599516SKenneth E. Jansen add_subdirectory(phShape) 97*59599516SKenneth E. Jansenendif(PHASTA_BUILD_PHSHAPE) 98*59599516SKenneth E. Jansenendif(EXISTS ${PHASTA_SOURCE_DIR}/phShape) 99*59599516SKenneth E. Jansen 100*59599516SKenneth E. JansenOPTION(PHASTA_BUILD_SOLVERS "Build Solvers" ON) 101*59599516SKenneth E. Jansenif(PHASTA_BUILD_SOLVERS) 102*59599516SKenneth E. Jansen set(PHASTA_BUILD_PHASTAIO ON) 103*59599516SKenneth E. Jansen if(PHASTA_USE_MPI) 104*59599516SKenneth E. Jansen set(PHASTA_BUILD_METIS ON) 105*59599516SKenneth E. Jansen endif(PHASTA_USE_MPI) 106*59599516SKenneth E. Jansen list(APPEND PHASTA_INCLUDES "${PHASTA_SOURCE_DIR}/phSolver/common") 107*59599516SKenneth E. Jansen include_directories(${PHASTA_INCLUDES}) 108*59599516SKenneth E. Jansen add_subdirectory(phSolver) 109*59599516SKenneth E. Jansen#TODO 110*59599516SKenneth E. Jansenendif(PHASTA_BUILD_SOLVERS) 111*59599516SKenneth E. Jansen 112*59599516SKenneth E. JansenOPTION(PHASTA_BUILD_CONVERTERIO "Build IO converter" ON) 113*59599516SKenneth E. Jansenif(PHASTA_BUILD_CONVERTERIO) 114*59599516SKenneth E. Jansen add_subdirectory(converterIO) 115*59599516SKenneth E. Jansenendif(PHASTA_BUILD_CONVERTERIO) 116*59599516SKenneth E. Jansen 117*59599516SKenneth E. JansenOPTION(PHASTA_BUILD_ACUSTAT "Build AcuStat" ON) 118*59599516SKenneth E. Jansenif(PHASTA_BUILD_ACUSTAT) 119*59599516SKenneth E. Jansen add_subdirectory(AcuStat) 120*59599516SKenneth E. Jansenendif(PHASTA_BUILD_ACUSTAT) 121*59599516SKenneth E. Jansen 122*59599516SKenneth E. JansenOPTION(PHASTA_BUILD_M2N "Build M2N" ON) 123*59599516SKenneth E. Jansenif(PHASTA_BUILD_M2N) 124*59599516SKenneth E. Jansen add_subdirectory(M2N) 125*59599516SKenneth E. Jansenendif(PHASTA_BUILD_M2N) 126*59599516SKenneth E. Jansen 127*59599516SKenneth E. JansenOPTION(PHASTA_BUILD_M2NFixBnd "Build M2NFixBnd" ON) 128*59599516SKenneth E. Jansenif(PHASTA_BUILD_M2NFixBnd) 129*59599516SKenneth E. Jansen add_subdirectory(M2NFixBnd) 130*59599516SKenneth E. Jansenendif(PHASTA_BUILD_M2NFixBnd) 131*59599516SKenneth E. Jansen 132*59599516SKenneth E. Jansenif(EXISTS ${PHASTA_SOURCE_DIR}/phNSpre) 133*59599516SKenneth E. Jansen add_subdirectory(phNSpre) 134*59599516SKenneth E. Jansenendif(EXISTS ${PHASTA_SOURCE_DIR}/phNSpre) 135*59599516SKenneth E. Jansen 136