Newer
Older
#
# Copyright
#
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
SET(PROJECT_NAME sot-core)
project(${PROJECT_NAME})
SET(PROJECT_VERSION 1.0.0)
SET(CMAKE_VERBOSE_MAKEFILE true)
IF(WIN32)
SET(LIBDIR_KW "/LIBPATH:")
SET(LIBINCL_KW "")
SET(LIB_EXT ".lib")
ENDIF(WIN32)
IF(UNIX)
SET(LIBDIR_KW "-L")
SET(LIBINCL_KW "-l")
SET(LIB_EXT "")
ENDIF(UNIX)
# Languages
# Fortran has, sadly, to be used for LAPACK libraries
# Visual Studio uses precompiled libs so there is no
# need to enable the Fortran language.
enable_language(CXX)
IF(
(NOT "${CMAKE_GENERATOR}" MATCHES "Visual Studio.*") )
enable_language(Fortran)
ENDIF(
(NOT "${CMAKE_GENERATOR}" MATCHES "Visual Studio.*")
)
#
# Look for dependencies
#
# Load Pkgconfig macros
INCLUDE(FindPkgConfig)
SET(PACKAGE_REQUIREMENTS "")
#enable_language(Fortran)
# --- LAPACK --------------------------------------------------
FIND_PACKAGE(LAPACK)
IF(LAPACK_FOUND)
foreach(lapack_lib ${LAPACK_LIBRARIES})
LIST(APPEND ${PROJECT_NAME}_LINK_SRC_FLAGS ${lapack_lib})
LIST(APPEND ${PROJECT_NAME}_LINK_FLAGS ${lapack_lib})
endforeach(lapack_lib)
IF (WIN32)
LIST(APPEND ${PROJECT_NAME}_CXX_FLAGS "-DBOOST_NUMERIC_BINDINGS_USE_CLAPACK" )
ENDIF (WIN32)
ENDIF(LAPACK_FOUND)
#
# Dependency to package MatrixAbstractLayer
#
SET(MATRIXABSTRACTLAYER_FOUND 0)
SET(MATRIXABSTRACTLAYER_REQUIRED "MatrixAbstractLayer >= 1.8.0")
PKG_CHECK_MODULES(MATRIXABSTRACTLAYER REQUIRED ${MATRIXABSTRACTLAYER_REQUIRED})
EXEC_PROGRAM(${PKG_CONFIG_EXECUTABLE} ARGS --variable=docdir MatrixAbstractLayer
OUTPUT_VARIABLE MATRIXABSTRACTLAYER_DOCDIR)
MESSAGE(STATUS "pkg-config: ${PKG_CONFIG_EXECUTABLE}")
MESSAGE(STATUS "MATRIXABSTRACTLAYER_DOCDIR=${MATRIXABSTRACTLAYER_DOCDIR}")
SET(MATRIXABSTRACTLAYER_FOUND 1)
IF(NOT ${MATRIXABSTRACTLAYER_FOUND})
MESSAGE(FATAL_ERROR "Check that package MatrixAbstractLayer is installed in a directory pointed out by PKG_CONFIG_PATH.")
ENDIF(NOT ${MATRIXABSTRACTLAYER_FOUND})
IF(PACKAGE_REQUIREMENTS STREQUAL "")
SET(PACKAGE_REQUIREMENTS ${MATRIXABSTRACTLAYER_REQUIRED})
ELSE(PACKAGE_REQUIREMENTS STREQUAL "")
SET(PACKAGE_REQUIREMENTS "${PACKAGE_REQUIREMENTS}, ${MATRIXABSTRACTLAYER_REQUIRED}")
ENDIF(PACKAGE_REQUIREMENTS STREQUAL "")
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
# --- BOOST NUMERIC BINDINGS-------------------------------------
IF ("${Boost_VERSION}" STRLESS "104000")
INCLUDE(${CMAKE_MODULE_PATH}/FindBoostNumericBindings.cmake)
MESSAGE(STATUS "BoostNumericBindings_INCLUDE_DIR=${BoostNumericBindings_INCLUDE_DIR}")
INCLUDE_DIRECTORIES(${BoostNumericBindings_INCLUDE_DIR})
LIST(APPEND ${PROJECT_NAME}_CFLAGS -I${BoostNumericBindings_INCLUDE_DIR})
ENDIF("${Boost_VERSION}" STRLESS "104000")
#
# Dependency to package dynamic-graph
#
SET(DYNAMIC_GRAPH_FOUND 0)
SET(DYNAMIC_GRAPH_REQUIRED "dynamic-graph >= 1.0.0")
PKG_CHECK_MODULES(DYNAMIC_GRAPH REQUIRED ${DYNAMIC_GRAPH_REQUIRED})
EXEC_PROGRAM(${PKG_CONFIG_EXECUTABLE} ARGS --variable=docdir dynamic-graph
OUTPUT_VARIABLE DYNAMIC_GRAPH_DOCDIR)
MESSAGE(STATUS "pkg-config: ${PKG_CONFIG_EXECUTABLE}")
MESSAGE(STATUS "DYNAMIC_GRAPH_DOCDIR=${DYNAMIC_GRAPH_DOCDIR}")
SET(DYNAMIC_GRAPH_FOUND 1)
IF(NOT ${DYNAMIC_GRAPH_FOUND})
MESSAGE(FATAL_ERROR "Check that package dynamic-graph is installed in a directory pointed out by PKG_CONFIG_PATH.")
ENDIF(NOT ${DYNAMIC_GRAPH_FOUND})
IF(PACKAGE_REQUIREMENTS STREQUAL "")
SET(PACKAGE_REQUIREMENTS ${DYNAMIC_GRAPH_REQUIRED})
ELSE(PACKAGE_REQUIREMENTS STREQUAL "")
SET(PACKAGE_REQUIREMENTS "${PACKAGE_REQUIREMENTS}, ${DYNAMIC_GRAPH_REQUIRED}")
ENDIF(PACKAGE_REQUIREMENTS STREQUAL "")
#
# Boost
#
FIND_PACKAGE(Boost REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
set(LIBS ${LIBS} ${Boost_LIBRARIES})
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#
# pkg-config file
#
SET(install_pkg_prefix "\${prefix}")
SET(install_pkg_exec_prefix "\${exec_prefix}")
SET(install_pkg_libdir "\${libdir}")
SET(install_pkg_datarootdir "\${datarootdir}")
SET(install_pkg_include_dir "\${includedir}")
IF(UNIX)
SET (${PROJECT_NAME}_LDFLAGS "-Wl,-R${install_pkg_libdir} ${LIBINCL_KW}${PROJECT_NAME}${LIB_EXT} ${${PROJECT_NAME}_LDFLAGS}")
ENDIF(UNIX)
IF(WIN32)
SET (${PROJECT_NAME}_LDFLAGS "${LIBINCL_KW}${PROJECT_NAME}${LIB_EXT} ${${PROJECT_NAME}_LDFLAGS}")
ENDIF(WIN32)
# Install the file in the appropriate place.
SET(install_libdir_pkgconfig ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
DESTINATION ${install_libdir_pkgconfig}
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE)
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(include)
ADD_SUBDIRECTORY(unitTesting)
#
# Documentation produced by doxygen
#
IF(GENERATE_DOC)
INCLUDE(FindDoxygen)
IF(DOXYGEN_FOUND)
MESSAGE(STATUS "Doxygen found")
add_subdirectory(doc)
ENDIF(DOXYGEN_FOUND)
ENDIF(GENERATE_DOC)