'real' is a dangerous symbol to reserve in the global namespace, and this has been a ticking bomb all the time. it finally blew, if gotools is compiled against boost, it will pull the <complex> header and the define clashes with the real() member. while still a define in the global namespace, Real should be less class prone git-svn-id: http://svn.sintef.no/trondheim/IFEM/trunk@1947 e10b68d5-8a6e-419e-a041-bce267b0401d
89 lines
3.2 KiB
CMake
89 lines
3.2 KiB
CMake
IF(NOT IFEM_FORCE_SYSTEM_LIB)
|
|
FIND_PATH(IFEM_PATH
|
|
NAMES IFEM.h
|
|
PATHS ${PROJECT_SOURCE_DIR}/../../src/
|
|
${PROJECT_SOURCE_DIR}/../../../src/)
|
|
ENDIF(NOT IFEM_FORCE_SYSTEM_LIB)
|
|
|
|
IF(IFEM_PATH)
|
|
# Build is in-tree
|
|
MESSAGE(STATUS "Using in-tree libIFEM")
|
|
|
|
SET(IFEM_INCLUDES ${IFEM_PATH}
|
|
${IFEM_PATH}/ASM
|
|
${IFEM_PATH}/Eig
|
|
${IFEM_PATH}/LinAlg
|
|
${IFEM_PATH}/SIM
|
|
${IFEM_PATH}/Utility)
|
|
|
|
FIND_LIBRARY(IFEM_LIBRARIES
|
|
NAMES IFEM
|
|
PATHS ${IFEM_PATH}/../${IFEM_BUILD_TYPE}/lib
|
|
${IFEM_PATH}/../lib
|
|
NO_DEFAULT_PATH)
|
|
IF(NOT IFEM_LIBRARIES)
|
|
MESSAGE(WARNING "Could not find the in-tree libIFEM library, "
|
|
"we assume it will be built into a build-type dir")
|
|
ENDIF(NOT IFEM_LIBRARIES)
|
|
IF (NOT BUILD_SHARED_LIBS)
|
|
FIND_PACKAGE(IFEMDeps REQUIRED)
|
|
SET(IFEM_LIBRARIES ${IFEM_LIBRARIES} ${IFEM_DEPLIBS})
|
|
ENDIF(NOT BUILD_SHARED_LIBS)
|
|
|
|
IF(NOT IFEM_USE_SYSTEM_TINYXML)
|
|
SET(IFEM_INCLUDES ${IFEM_INCLUDES}
|
|
${IFEM_PATH}/../3rdparty/tinyxml)
|
|
ENDIF(NOT IFEM_USE_SYSTEM_TINYXML)
|
|
SET(IFEM_H ${IFEM_PATH}/IFEM.h)
|
|
ELSE(IFEM_PATH)
|
|
IF(NOT DEFINED FORCE_SYSTEM_IFEM OR NOT "${FORCE_SYSTEM_IFEM}")
|
|
MESSAGE(STATUS "No in-tree libIFEM found, looking for system library")
|
|
ENDIF(NOT DEFINED FORCE_SYSTEM_IFEM OR NOT "${FORCE_SYSTEM_IFEM}")
|
|
|
|
FIND_PATH(IFEM_INCLUDES
|
|
NAMES SIMbase.h
|
|
PATHS $ENV{HOME}/include
|
|
PATH_SUFFIXES IFEM)
|
|
|
|
FIND_LIBRARY(IFEM_LIBRARIES
|
|
NAMES IFEM
|
|
PATHS $ENV{HOME}/lib)
|
|
|
|
# system lib always uses system tixml
|
|
FIND_PACKAGE(TinyXML REQUIRED)
|
|
SET(IFEM_DEPLIBS ${IFEM_DEPLIBS} ${TINYXML_LIBRARIES})
|
|
SET(IFEM_H ${IFEM_INCLUDES}/IFEM/IFEM.h)
|
|
ENDIF(IFEM_PATH)
|
|
|
|
INCLUDE(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(IFEM DEFAULT_MSG
|
|
IFEM_LIBRARIES)
|
|
|
|
# Export version information
|
|
IF(IFEM_INCLUDES)
|
|
EXECUTE_PROCESS(COMMAND cat "${IFEM_H}" OUTPUT_VARIABLE IFEM_HEADER)
|
|
STRING(REGEX MATCH "IFEM_VERSION_MAJOR ([0-9]+)" IFEM_VERSION_MAJOR ${IFEM_HEADER})
|
|
STRING(REGEX REPLACE "IFEM_VERSION_MAJOR ([0-9]+)" "\\1" IFEM_VERSION_MAJOR "${IFEM_VERSION_MAJOR}")
|
|
STRING(REGEX MATCH "IFEM_VERSION_MINOR ([0-9]+)" IFEM_VERSION_MINOR ${IFEM_HEADER})
|
|
STRING(REGEX REPLACE "IFEM_VERSION_MINOR ([0-9]+)" "\\1" IFEM_VERSION_MINOR "${IFEM_VERSION_MINOR}")
|
|
STRING(REGEX MATCH "IFEM_VERSION_PATCH ([0-9]+)" IFEM_VERSION_PATCH ${IFEM_HEADER})
|
|
STRING(REGEX REPLACE "IFEM_VERSION_PATCH ([0-9]+)" "\\1" IFEM_VERSION_PATCH "${IFEM_VERSION_PATCH}")
|
|
ENDIF(IFEM_INCLUDES)
|
|
|
|
SET(IFEM_LIBRARIES ${IFEM_LIBRARIES} ${IFEM_DEPLIBS})
|
|
SET(IFEM_INCLUDES ${IFEM_INCLUDES} ${IFEM_DEPINCLUDES})
|
|
|
|
# Needed as we have templates using these flags
|
|
ENABLE_LANGUAGE(CXX)
|
|
IF(CMAKE_CXX_COMPILER MATCHES icpc)
|
|
SET(IFEM_CXX_FLAGS "${IFEM_CXX_FLAGS} -DUSE_MKL -mkl=sequential")
|
|
SET(IFEM_BUILD_CXX_FLAGS "${IFEM_BUILD_CXX_FLAGS} -DUSE_MKL -mkl=sequential")
|
|
ELSE(CMAKE_CXX_COMPILER MATCHES icpc)
|
|
SET(IFEM_CXX_FLAGS "${IFEM_CXX_FLAGS} -DUSE_CBLAS")
|
|
SET(IFEM_BUILD_CXX_FLAGS "${IFEM_BUILD_CXX_FLAGS} -DUSE_CBLAS")
|
|
FIND_PACKAGE(LAPACK REQUIRED)
|
|
SET(IFEM_LIBRARIES ${IFEM_LIBRARIES} ${LAPACK_LIBRARIES})
|
|
ENDIF(CMAKE_CXX_COMPILER MATCHES icpc)
|
|
|
|
SET(IFEM_CXX_FLAGS "${IFEM_CXX_FLAGS} -DReal=double")
|