Files
IFEM/Apps/FiniteDefElasticity/CMakeLists.txt

114 lines
3.1 KiB
CMake

PROJECT(FiniteDefElasticity)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
# Required defines
SET(CMAKE_CXX_FLAGS "-Dreal=double -DUSE_FTNMAT")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DINDEX_CHECK=2")
IF(VERBOSE_DEBUG GREATER 0)
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DINT_DEBUG=${VERBOSE_DEBUG}")
ENDIF(VERBOSE_DEBUG GREATER 0)
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release)
ENDIF(NOT CMAKE_BUILD_TYPE)
SET(IFEM_BUILD_TYPE ${CMAKE_BUILD_TYPE})
IF(${CMAKE_BUILD_TYPE} MATCHES "Nopt")
SET(CMAKE_BUILD_TYPE Debug)
ENDIF(${CMAKE_BUILD_TYPE} MATCHES "Nopt")
# Add local modules
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
${PROJECT_SOURCE_DIR}/../../cmake/Modules
$ENV{HOME}/cmake/Modules)
ENABLE_LANGUAGE(Fortran)
IF(CMAKE_Fortran_COMPILER MATCHES ifort)
SET(LANGUAGE_LIBS -lifcore)
ENDIF(CMAKE_Fortran_COMPILER MATCHES ifort)
ENABLE_LANGUAGE(CXX)
IF(CMAKE_CXX_COMPILER MATCHES icpc)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_MKL")
ELSE(CMAKE_CXX_COMPILER MATCHES icpc)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_CBLAS")
ENDIF(CMAKE_CXX_COMPILER MATCHES icpc)
# Required packages
FIND_PACKAGE(Boost REQUIRED)
FIND_PACKAGE(GoTools REQUIRED)
FIND_PACKAGE(GoTrivariate REQUIRED)
FIND_PACKAGE(LAPACK REQUIRED)
FIND_PACKAGE(ARPACK REQUIRED)
FIND_PACKAGE(IFEM REQUIRED)
# Optional packages
IF(${ENABLE_PETSC})
FIND_PACKAGE(Petsc)
ENDIF(${ENABLE_PETSC})
IF(NOT "${DISABLE_SUPERLU}")
FIND_PACKAGE(SuperLU)
ENDIF(NOT "${DISABLE_SUPERLU}")
IF(${ENABLE_SAMG})
FIND_PACKAGE(SAMG)
ENDIF(${ENABLE_SAMG})
FIND_PACKAGE(VTFWriter)
# Required libraries
SET(DEPLIBS ${IFEM_LIBRARIES}
${GoTrivariate_LIBRARIES} ${GoTools_LIBRARIES}
${ARPACK_LIBRARIES} ${LAPACK_LIBRARIES}
${Boost_LIBRARIES} ${LANGUAGE_LIBS}
)
# Optional libraries
IF(SuperLU_MT_LIBRARIES AND "${ENABLE_SUPERLU_MT}")
FIND_PACKAGE(Threads REQUIRED)
SET(DEPLIBS ${DEPLIBS} ${SuperLU_MT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
ELSEIF(SuperLU_LIBRARIES)
SET(DEPLIBS ${DEPLIBS} ${SuperLU_LIBRARIES})
ENDIF(SuperLU_MT_LIBRARIES AND "${ENABLE_SUPERLU_MT}")
IF(PETSC_LIBRARIES)
FIND_PACKAGE(SLEPc)
FIND_PACKAGE(MPI REQUIRED)
IF(SLEPC_LIBRARIES)
SET(DEPLIBS ${DEPLIBS} ${SLEPC_LIBRARIES})
ENDIF(SLEPC_LIBRARIES)
SET(DEPLIBS ${DEPLIBS} ${PETSC_LIBRARIES} ${MPI_LIBRARIES})
ENDIF(PETSC_LIBRARIES)
IF(SAMG_LIBRARIES)
SET(DEPLIBS ${DEPLIBS} ${SAMG_LIBRARIES})
ENDIF(SAMG_LIBRARIES)
IF(VTFWRITER_LIBRARIES)
SET(DEPLIBS ${DEPLIBS} ${VTFWRITER_LIBRARIES})
ENDIF(VTFWRITER_LIBRARIES)
INCLUDE_DIRECTORIES(${IFEM_INCLUDES} ${PROJECT_SOURCE_DIR}/../LinearElasticity)
SET(EXECUTABLE_OUTPUT_PATH bin)
IF(NOT WIN32)
# Emit position-independent code, suitable for dynamic linking
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
# Enable all warnings
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
ENDIF(NOT WIN32)
FILE(GLOB_RECURSE NonLinEl_SRCS
${PROJECT_SOURCE_DIR}/../LinearElasticity/SIMLinEl*.C
${PROJECT_SOURCE_DIR}/*.[Cf])
ADD_EXECUTABLE(NonLinEl ${NonLinEl_SRCS})
TARGET_LINK_LIBRARIES(NonLinEl ${DEPLIBS})
# 'install' target
IF(WIN32)
# TODO
ELSE(WIN32)
# TODO
ENDIF(WIN32)