xref: /phasta/CMakeLists.txt (revision fbe6cd04a8546697dd12d672f354cf854121edd2)
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