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