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