diff --git a/CMakeLists.txt b/CMakeLists.txt index 401cfed..34f8a04 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,189 +1,178 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(PROJECTNAME "libOncilla") SET(LIBNAME "oncilla") PROJECT(${PROJECTNAME}) SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE) SET(LIBONCILLA_CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) ENABLE_LANGUAGE(C) ENABLE_LANGUAGE(CXX) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # CMake module path and modules SET(PROJECT_CMAKE_PATH "${CMAKE_INSTALL_PREFIX}/share/cmake/Modules") SET(SYSTEM_CMAKE_PATH "/usr/share/cmake/Modules") SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${LIBONCILLA_CMAKE_MODULE_PATH}" "${PROJECT_CMAKE_PATH}" "${SYSTEM_CMAKE_PATH}") -FIND_PACKAGE(RSC) +FIND_PACKAGE(RSC REQUIRED) SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${RSC_CMAKE_MODULE_PATH}") MESSAGE(STATUS "RSC version: ${RSC_VERSION}") INCLUDE(CheckIncludeFileCXX) INCLUDE(InstallFilesRecursive) INCLUDE(EnableCoverageReport) INCLUDE(EnableSlocCount) INCLUDE(GenerateDoxygen) INCLUDE(GenerateCppcheck) INCLUDE(FindPkgConfig) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # --- user options --- OPTION(BUILD_TESTS "Decide whether unit-tests are built" ON) OPTION(BUILD_EXAMPLES "Decide whether the examples are built" ON) OPTION(BUILD_DOCS "Decide whether the docygen documentation is built" OFF) -OPTION(BUILD_HARDWARE_DRIVER "Decide whether driver for the real robot is build" OFF) -OPTION(WEBOTS_PROJECT_DIR "Specify folder to install the Webots Simulator Project to" "~/projects/oncillasim") - -# Cross-compiling -IF ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i486") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${CMAKE_SYSTEM_PROCESSOR}") - MESSAGE(STATUS "Compiling for architecture: ${CMAKE_SYSTEM_PROCESSOR}") -ENDIF () -IF ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i586") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${CMAKE_SYSTEM_PROCESSOR}") - MESSAGE(STATUS "Compiling for architecture: ${CMAKE_SYSTEM_PROCESSOR}") -ENDIF () # Dependencies FIND_PACKAGE(Threads REQUIRED) MESSAGE(STATUS "Threading library: ${CMAKE_THREAD_LIBS_INIT}") FIND_PACKAGE(NemoMath REQUIRED) MESSAGE(STATUS "NemoMath version: ${NemoMath_VERSION}") FIND_PACKAGE(RCI REQUIRED) MESSAGE(STATUS "RCI version: ${RCI_VERSION}") # --- global definitions --- SET(LIBONCILLA_NAME "${LIBNAME}") SET(DRIVER_TEST_NAME "${PROJECTNAME}Tests") SET(DTO_TEST_NAME "${DRIVER_TEST_NAME}DTO") SET(LIBONCILLA_VERSION_MAJOR 0) SET(LIBONCILLA_VERSION_MINOR 2) SET(LIBONCILLA_VERSION_PATCH 0) SET(LIBONCILLA_VERSION "${LIBONCILLA_VERSION_MAJOR}.${LIBONCILLA_VERSION_MINOR}.${LIBONCILLA_VERSION_PATCH}") SET(DRIVER_CMAKE_MODULE_PATH "${CMAKE_INSTALL_PREFIX}/share/cmake/Modules") SET(GTEST_DIR ${CMAKE_SOURCE_DIR}/3rdparty/gtest-1.5.0) SET(GTEST_INCLUDE_DIR ${GTEST_DIR}/include) SET(GMOCK_DIR ${CMAKE_SOURCE_DIR}/3rdparty/gmock-1.5.0) SET(GMOCK_INCLUDE_DIR ${GMOCK_DIR}/include) SET(GMOCK_LIBRARY_NAME "gmock") SET(OUTPUT_PATH ${CMAKE_BINARY_DIR}/build) SET(ARCHIVE_OUTPUT_PATH ${OUTPUT_PATH}) SET(LIBRARY_OUTPUT_PATH ${OUTPUT_PATH}) SET(EXECUTABLE_OUTPUT_PATH ${OUTPUT_PATH}) # --- dependency handling --- IF(BUILD_DOCS) FIND_PACKAGE(Doxygen) ENDIF() # Includes INCLUDE_DIRECTORIES(BEFORE src ${CMAKE_CURRENT_BINARY_DIR}/src) INCLUDE_DIRECTORIES(SYSTEM ${RCI_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(SYSTEM ${RSC_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(SYSTEM ${NemoMath_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(SYSTEM ${Boost_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(SYSTEM ${LIBRARIES_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(BEFORE SYSTEM ${PROTOBUF_INCLUDE_DIR} ${RST_INCLUDE_DIRS}) LINK_DIRECTORIES(${RCI_LIBRARY_DIR} ${LIBRARIES_LIBRARY_DIRS}) ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(cmake) IF(BUILD_HARDWARE_DRIVER) INCLUDE_DIRECTORIES(SYSTEM ${LIBXML2_INCLUDE_DIR}) ENDIF(BUILD_HARDWARE_DRIVER) IF(BUILD_TESTS) ADD_SUBDIRECTORY(test) #ADD_SUBDIRECTORY(3rdparty) ENDIF() #IF(BUILD_EXAMPLES) # ADD_SUBDIRECTORY(examples) #ENDIF() # --- cmake config file --- SET(LIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}) IF(CMAKE_LINK_LIBRARY_SUFFIX) SET(LIB_SUFFIX ${CMAKE_LINK_LIBRARY_SUFFIX}) ENDIF() # --- pkgconfig file --- CONFIGURE_FILE(${LIBONCILLA_NAME}.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${LIBONCILLA_NAME}.pc @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LIBONCILLA_NAME}.pc DESTINATION lib/pkgconfig) # --- cmake config file --- SET(LIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}) IF(CMAKE_LINK_LIBRARY_SUFFIX) SET(LIB_SUFFIX ${CMAKE_LINK_LIBRARY_SUFFIX}) ENDIF() CONFIGURE_FILE(${PROJECTNAME}Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECTNAME}Config.cmake @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECTNAME}Config.cmake DESTINATION share/${LIBNAME}) # --- documentation generation --- IF(BUILD_DOCS) IF(DOXYGEN_FOUND) SET(API_DIR "${CMAKE_BINARY_DIR}/doc") SET(SOURCE_DIR "${CMAKE_SOURCE_DIR}/src") SET(DOXYFILE "${CMAKE_BINARY_DIR}/Doxyfile") SET(WARNFILE "${CMAKE_BINARY_DIR}/doxygen-warn.log") CONFIGURE_FILE(Doxyfile.in ${DOXYFILE}) ADD_CUSTOM_COMMAND(OUTPUT ${API_DIR} DEPENDS ${DOXYFILE} COMMAND ${DOXYGEN_EXECUTABLE} ARGS ${DOXYFILE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) ADD_CUSTOM_TARGET(doc DEPENDS ${API_DIR}) INSTALL(CODE "execute_process(COMMAND ${CMAKE_BUILD_TOOL} doc)") INSTALL(DIRECTORY ${API_DIR} DESTINATION share/${LIBNAME}) ENDIF() ENDIF(BUILD_DOCS) # --- coverage --- IF(BUILD_TESTS) ENABLE_COVERAGE_REPORT(TARGETS ${LIBONCILLA_NAME} TESTS ${DTO_TEST_NAME} ${INTEGRATED_TEST_NAME} FILTER "*3rdparty*" "*test/*") ENDIF(BUILD_TESTS) # --- sloccount --- ENABLE_SLOCCOUNT(FOLDERS src test examples) # --- cppcheck --- GENERATE_CPPCHECK(SOURCES src test examples "${CMAKE_CURRENT_BINARY_DIR}/src" "${CMAKE_CURRENT_BINARY_DIR}/test" "${CMAKE_CURRENT_BINARY_DIR}/examples" ENABLE_IDS style) # --- package --- INCLUDE(CheckLSBTypes) SET(CPACK_PACKAGE_VERSION_MAJOR ${LIBONCILLA_VERSION_MAJOR}) SET(CPACK_PACKAGE_VERSION_MINOR ${LIBONCILLA_VERSION_MINOR}) SET(CPACK_PACKAGE_VERSION_PATCH ${LIBONCILLA_VERSION_PATCH}) SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") SET(CPACK_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}_${LSB_CODENAME}_${LSB_PROCESSOR_ARCH}) SET(CPACK_GENERATOR "TGZ") SET(CPACK_PACKAGE_VENDOR "CoR-Lab Bielefeld University") IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") SET(CPACK_GENERATOR "${CPACK_GENERATOR};DEB") SET(CPACK_DEBIAN_PACKAGE_NAME "amarsi-liboncilla") SET(CPACK_DEBIAN_PACKAGE_VERSION ${LIBONCILLA_VERSION_MAJOR}.${LIBONCILLA_VERSION_MINOR}.${LIBONCILLA_VERSION_PATCH}) SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Arne Nordmann (anordman@cor-lab.uni-bielefeld.de)") SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION "AMARSi RCI representations of the AMARSi quadruped robot 'Oncilla'.") SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") SET(CPACK_DEBIAN_PACKAGE_SECTION "devel") SET(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR}) SET(CPACK_DEBIAN_PACKAGE_DEPENDS "amarsi-rci-all") SET(CPACK_DEBIAN_PACKAGE_SUGGESTS "cmake, cmake-data, doxygen, lcov, cppcheck, sloccount") ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux") INCLUDE(CPack) diff --git a/oncilla.pc.in b/oncilla.pc.in index a0c6560..5dd780a 100644 --- a/oncilla.pc.in +++ b/oncilla.pc.in @@ -1,6 +1,6 @@ Name: @LIBONCILLA_NAME@ Description: AMARSi RCI representations of the AMARSi Quadruped Robot 'Oncilla' Version: @LIBONCILLA_VERSION@ -Requires: rci +Requires: rci rsc Libs: -L@CMAKE_INSTALL_PREFIX@/lib -l@LIBONCILLA_NAME@ Cflags: -I@CMAKE_INSTALL_PREFIX@/include