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