diff --git a/config/FindEcos.cmake b/config/FindEcos.cmake new file mode 100644 index 000000000..f91e90194 --- /dev/null +++ b/config/FindEcos.cmake @@ -0,0 +1,25 @@ + +# This macro is a dirty hack, Orocos specific. Don't base your macros on it, look into the other +# Find*cmake files for better examples + +# This script creates the following variables: +# Ecos_FOUND: Boolean that indicates if the package was found +# Ecos_INCLUDE_DIRS: Paths to the necessary header files +# Ecos_LIBRARIES: Package libraries + + set(ECOS_INSTALL_DIR ${ECOS_INSTALL_DIR} CACHE PATH "path to ecos installation dir" FORCE) + + if (ECOS_INSTALL_DIR STREQUAL "") + set(ECOS_INSTALL_DIR "/opt/ecos/install") + endif (ECOS_INSTALL_DIR STREQUAL "") + + if(EXISTS ${ECOS_INSTALL_DIR}/include/pkgconf/system.h) + message("-- Looking for ECOS - found in ${ECOS_INSTALL_DIR}") + set(ECOS_FOUND TRUE) + set(ECOS_INCLUDE_DIRS ${ECOS_INSTALL_DIR}/include ) + set(ECOS_LIBRARIES -L${ECOS_INSTALL_DIR}/lib -ltarget ) + else() + message(FATAL_ERROR "-- Looking for ECOS - not found (tried: ${ECOS_INSTALL_DIR}/include/pkgconf/system.h)") + set(ECOS_FOUND FALSE) + ENDIF() + diff --git a/config/FindRTAI.cmake b/config/FindRTAI.cmake new file mode 100644 index 000000000..03168071b --- /dev/null +++ b/config/FindRTAI.cmake @@ -0,0 +1,53 @@ +################################################################################ +# +# CMake script for finding RTAI/LXRT. +# If the optional RTAI_ROOT_DIR environment variable exists, header files and +# libraries will be searched in the RTAI_ROOT_DIR/include and RTAI_ROOT_DIR/lib +# directories, respectively. Otherwise the default CMake search process will be +# used. +# +# This script creates the following variables: +# RTAI_FOUND: Boolean that indicates if the package was found +# RTAI_INCLUDE_DIRS: Paths to the necessary header files +# RTAI_LIBRARIES: Package libraries +# +################################################################################ + +include(LibFindMacros) + +# Get hint from environment variable (if any) +if(NOT $ENV{RTAI_ROOT_DIR} STREQUAL "") + set(RTAI_ROOT_DIR $ENV{RTAI_ROOT_DIR} CACHE PATH "RTAI base directory location (optional, used for nonstandard installation paths)" FORCE) + mark_as_advanced(RTAI_ROOT_DIR) +endif() + +# Header files to find +set(header_NAME rtai_lxrt.h) + +# Libraries to find +set(rtai_NAME lxrt) + +# Find headers and libraries +if(RTAI_ROOT_DIR) + # Use location specified by environment variable + find_path(RTAI_INCLUDE_DIR NAMES ${header_NAME} PATHS ${RTAI_ROOT_DIR}/include PATH_SUFFIXES rtai NO_DEFAULT_PATH) + find_library(RTAI_LIBRARY NAMES ${rtai_NAME} PATHS ${RTAI_ROOT_DIR}/lib NO_DEFAULT_PATH) +else() + # Use default CMake search process + find_path(RTAI_INCLUDE_DIR NAMES ${header_NAME} PATH_SUFFIXES rtai ) + find_library(RTAI_LIBRARY NAMES ${rtai_NAME}) +endif() + +# Set the include dir variables and the libraries and let libfind_process do the rest. +# NOTE: Singular variables for this library, plural for libraries this this lib depends on. +set(RTAI_PROCESS_INCLUDES RTAI_INCLUDE_DIR) +set(RTAI_PROCESS_LIBS RTAI_LIBRARY) + +# If user provides Linux source dir, check and append it as well +if( LINUX_SOURCE_DIR ) + set(linux_header_NAME linux/kernel.h) + find_path(Linux_INCLUDE_DIR NAMES ${linux_header_NAME} PATHS ${LINUX_SOURCE_DIR} NO_DEFAULT_PATH) + list(APPEND RTAI_PROCESS_INCLUDES Linux_INCLUDE_DIR) +endif() + +libfind_process(RTAI) diff --git a/config/FindXenomai.cmake b/config/FindXenomai.cmake new file mode 100644 index 000000000..627666192 --- /dev/null +++ b/config/FindXenomai.cmake @@ -0,0 +1,46 @@ +################################################################################ +# +# CMake script for finding XENOMAI. +# If the optional XENOMAI_ROOT_DIR environment variable exists, header files and +# libraries will be searched in the XENOMAI_ROOT_DIR/include and XENOMAI_ROOT_DIR/lib +# directories, respectively. Otherwise the default CMake search process will be +# used. +# +# This script creates the following variables: +# XENOMAI_FOUND: Boolean that indicates if the package was found +# XENOMAI_INCLUDE_DIRS: Paths to the necessary header files +# XENOMAI_LIBRARIES: Package libraries +# +################################################################################ + +include(LibFindMacros) + +# Get hint from environment variable (if any) +if(NOT $ENV{XENOMAI_ROOT_DIR} STREQUAL "") + set(XENOMAI_ROOT_DIR $ENV{XENOMAI_ROOT_DIR} CACHE PATH "Xenomai base directory location (optional, used for nonstandard installation paths)" FORCE) + mark_as_advanced(XENOMAI_ROOT_DIR) +endif() + +# Header files to find +set(header_NAME native/task.h) + +# Libraries to find +set(XENOMAI_NAME native) + +# Find headers and libraries +if(XENOMAI_ROOT_DIR) + # Use location specified by environment variable + find_path(XENOMAI_INCLUDE_DIR NAMES ${header_NAME} PATHS ${XENOMAI_ROOT_DIR}/include PATH_SUFFIXES xenomai NO_DEFAULT_PATH) + find_library(XENOMAI_LIBRARY NAMES ${XENOMAI_NAME} PATHS ${XENOMAI_ROOT_DIR}/lib NO_DEFAULT_PATH) +else() + # Use default CMake search process + find_path(XENOMAI_INCLUDE_DIR NAMES ${header_NAME} PATH_SUFFIXES xenomai ) + find_library(XENOMAI_LIBRARY NAMES ${XENOMAI_NAME}) +endif() + +# Set the include dir variables and the libraries and let libfind_process do the rest. +# NOTE: Singular variables for this library, plural for libraries this this lib depends on. +set(XENOMAI_PROCESS_INCLUDES XENOMAI_INCLUDE_DIR) +set(XENOMAI_PROCESS_LIBS XENOMAI_LIBRARY) + +libfind_process(XENOMAI) diff --git a/config/FindXerces.cmake b/config/FindXerces.cmake index a6db0e721..c9c48b9aa 100644 --- a/config/FindXerces.cmake +++ b/config/FindXerces.cmake @@ -1,24 +1,24 @@ ################################################################################ # # CMake script for finding Xerces. -# If the optional Xerces_ROOT_DIR environment variable exists, header files and -# libraries will be searched in the Xerces_ROOT_DIR/include and Xerces_ROOT_DIR/libs +# If the optional XERCES_ROOT_DIR environment variable exists, header files and +# libraries will be searched in the XERCES_ROOT_DIR/include and XERCES_ROOT_DIR/libs # directories, respectively. Otherwise the default CMake search process will be # used. # # This script creates the following variables: -# Xerces_FOUND: Boolean that indicates if the package was found -# Xerces_INCLUDE_DIRS: Paths to the necessary header files -# Xerces_LIBRARIES: Package libraries +# XERCES_FOUND: Boolean that indicates if the package was found +# XERCES_INCLUDE_DIRS: Paths to the necessary header files +# XERCES_LIBRARIES: Package libraries # ################################################################################ include(LibFindMacros) # Get hint from environment variable (if any) -if(NOT $ENV{Xerces_ROOT_DIR} STREQUAL "") - set(Xerces_ROOT_DIR $ENV{Xerces_ROOT_DIR} CACHE PATH "Xerces base directory location (optional, used for nonstandard installation paths)" FORCE) - mark_as_advanced(Xerces_ROOT_DIR) +if(NOT $ENV{XERCES_ROOT_DIR} STREQUAL "") + set(XERCES_ROOT_DIR $ENV{XERCES_ROOT_DIR} CACHE PATH "Xerces base directory location (optional, used for nonstandard installation paths)" FORCE) + mark_as_advanced(XERCES_ROOT_DIR) endif() # Header files to find @@ -29,21 +29,21 @@ set(xerces_c_NAME xerces-c) set(xerces_depdom_NAME xerces-depdom) # Find headers and libraries -if(Xerces_ROOT_DIR) +if(XERCES_ROOT_DIR) # Use location specified by environment variable - find_path(Xerces_INCLUDE_DIR NAMES ${header_NAME} PATHS ${Xerces_ROOT_DIR}/include NO_DEFAULT_PATH) - find_library(Xerces_c_LIBRARY NAMES ${xerces_c_NAME} PATHS ${Xerces_ROOT_DIR}/lib NO_DEFAULT_PATH) - find_library(Xerces_depdom_LIBRARY NAMES ${xerces_depdom_NAME} PATHS ${Xerces_ROOT_DIR}/lib NO_DEFAULT_PATH) + find_path(XERCES_INCLUDE_DIR NAMES ${header_NAME} PATHS ${XERCES_ROOT_DIR}/include NO_DEFAULT_PATH) + find_library(XERCES_C_LIBRARY NAMES ${xerces_c_NAME} PATHS ${XERCES_ROOT_DIR}/lib NO_DEFAULT_PATH) + find_library(XERCES_depdom_LIBRARY NAMES ${xerces_depdom_NAME} PATHS ${XERCES_ROOT_DIR}/lib NO_DEFAULT_PATH) else() # Use default CMake search process - find_path(Xerces_INCLUDE_DIR NAMES ${header_NAME}) - find_library(Xerces_c_LIBRARY NAMES ${xerces_c_NAME}) - find_library(Xerces_depdom_LIBRARY NAMES ${xerces_depdom_NAME}) + find_path(XERCES_INCLUDE_DIR NAMES ${header_NAME}) + find_library(XERCES_C_LIBRARY NAMES ${xerces_c_NAME}) + find_library(XERCES_DEPDOM_LIBRARY NAMES ${xerces_depdom_NAME}) endif() # Set the include dir variables and the libraries and let libfind_process do the rest. # NOTE: Singular variables for this library, plural for libraries this this lib depends on. -set(Xerces_PROCESS_INCLUDES Xerces_INCLUDE_DIR) -set(Xerces_PROCESS_LIBS Xerces_c_LIBRARY - Xerces_depdom_LIBRARY) -libfind_process(Xerces) +set(XERCES_PROCESS_INCLUDES XERCES_INCLUDE_DIR) +set(XERCES_PROCESS_LIBS XERCES_C_LIBRARY + XERCES_DEPDOM_LIBRARY) +libfind_process(XERCES) diff --git a/config/check_depend.cmake b/config/check_depend.cmake index 92848ef4d..b7a4f4af8 100644 --- a/config/check_depend.cmake +++ b/config/check_depend.cmake @@ -5,207 +5,116 @@ ########################################################### # Modules path (for searching FindXXX.cmake files) -LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/config") +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/config") # Look for boost -IF (NOT CMAKE_CROSS_COMPILE) # NOTE: What happens if CMAKE_CROSS_COMPILE is TRUE? - FIND_PACKAGE(Boost 1.32 REQUIRED) - IF(Boost_FOUND) - IF (NOT Boost_INCLUDE_DIRS STREQUAL "/usr/include") - SET( RTT_CFLAGS "${RTT_CFLAGS} -I${BOOST_DIR}" ) - ENDIF (NOT Boost_INCLUDE_DIRS STREQUAL "/usr/include") - SET(ORO_SUPPORT_BOOST TRUE CACHE INTERNAL "" FORCE) - ELSE(Boost_FOUND) - SET(ORO_SUPPORT_BOOST FALSE CACHE INTERNAL "" FORCE) - ENDIF(Boost_FOUND) -ENDIF (NOT CMAKE_CROSS_COMPILE) +find_package(Boost 1.32 COMPONENTS program_options REQUIRED) + +if(Boost_FOUND) + list(APPEND Orocos-rtt_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ) + list(APPEND Orocos-rtt_LIBRARIES ${Boost_LIBRARIES} ) +endif(Boost_FOUND) # Look for Xerces # If a nonstandard path is used when crosscompiling, uncomment the following lines # IF(NOT CMAKE_CROSS_COMPILE) # NOTE: There now exists a standard CMake variable named CMAKE_CROSSCOMPILING -# set(Xerces_ROOT_DIR /path/to/xerces CACHE INTERNAL "" FORCE) # you can also use set(ENV{Xerces_ROOT_DIR} /path/to/xerces) +# set(XERCES_ROOT_DIR /path/to/xerces CACHE INTERNAL "" FORCE) # you can also use set(ENV{XERCES_ROOT_DIR} /path/to/xerces) # ENDIF(NOT CMAKE_CROSS_COMPILE) -FIND_PACKAGE(Xerces) - -IF(Xerces_FOUND) - SET(OROPKG_SUPPORT_XERCES_C TRUE CACHE INTERNAL "" FORCE) - INCLUDE_DIRECTORIES(${Xerces_INCLUDE_DIRS}) - LINK_LIBRARIES(${Xerces_LIBRARIES}) # NOTE: Deprecated command - SET(ORODAT_CORELIB_PROPERTIES_MARSHALLING_INCLUDE "\"marsh/CPFMarshaller.hpp\"") - SET(OROCLS_CORELIB_PROPERTIES_MARSHALLING_DRIVER "CPFMarshaller") - SET(ORODAT_CORELIB_PROPERTIES_DEMARSHALLING_INCLUDE "\"marsh/CPFDemarshaller.hpp\"") - SET(OROCLS_CORELIB_PROPERTIES_DEMARSHALLING_DRIVER "CPFDemarshaller") -ELSE(Xerces_FOUND) - SET(OROPKG_SUPPORT_XERCES_C FALSE CACHE INTERNAL "" FORCE) - SET(ORODAT_CORELIB_PROPERTIES_MARSHALLING_INCLUDE "\"marsh/CPFMarshaller.hpp\"") - SET(OROCLS_CORELIB_PROPERTIES_MARSHALLING_DRIVER "CPFMarshaller") - SET(ORODAT_CORELIB_PROPERTIES_DEMARSHALLING_INCLUDE "\"marsh/TinyDemarshaller.hpp\"") - SET(OROCLS_CORELIB_PROPERTIES_DEMARSHALLING_DRIVER "TinyDemarshaller") -ENDIF(Xerces_FOUND) - -SET( OROCOS_TARGET gnulinux CACHE STRING "The Operating System target. One of [lxrt gnulinux xenomai macosx]") -STRING(TOUPPER ${OROCOS_TARGET} OROCOS_TARGET_CAP) - -SET(LINUX_SOURCE_DIR ${LINUX_SOURCE_DIR} CACHE PATH "path to linux source dir" FORCE) - -IF(OROCOS_TARGET STREQUAL "lxrt") - SET(OROPKG_OS_LXRT TRUE CACHE INTERNAL "" FORCE) - SET(RTAI_INSTALL_DIR ${RTAI_INSTALL_DIR} CACHE PATH "path to rtai installation dir" FORCE) - # Look for LXRT - # the recommended CMake method - IF (NOT RTAI_INCLUDE_DIR) - # use different variable than RTAI_INCLUDE_DIR, as the first SET in the - # block below resets things and breaks the CMake cache when you rerun - # cmake/ccmake. - FIND_PATH(RTAI_INCLUDE_PATH rtai/rtai_lxrt.h) - FIND_LIBRARY(RTAI_INSTALL_LIB lxrt) -# MESSAGE(STATUS "RTAI: include ${RTAI_INCLUDE_PATH}") -# MESSAGE(STATUS "RTAI: library ${RTAI_INSTALL_LIB}") - IF ( RTAI_INCLUDE_PATH AND RTAI_INSTALL_LIB ) - SET(RTAI_INCLUDE_DIR ${RTAI_INCLUDE_PATH}/rtai) - # presume RTAI_INSTALL_LIB is of form /path/to/lib/libnative.so, and - # so need to strip back to /path/to - GET_FILENAME_COMPONENT(RTAI_INSTALL_LIB2 ${RTAI_INSTALL_LIB} PATH) - GET_FILENAME_COMPONENT(RTAI_INSTALL_DIR ${RTAI_INSTALL_LIB2} PATH) - MESSAGE("-- Looking for RTAI/LXRT - found in ${RTAI_INSTALL_DIR}") - ENDIF ( RTAI_INCLUDE_PATH AND RTAI_INSTALL_LIB ) - ENDIF (NOT RTAI_INCLUDE_DIR) - - IF (RTAI_INSTALL_DIR STREQUAL "") - SET(RTAI_INSTALL_DIR "/usr/realtime") - ENDIF (RTAI_INSTALL_DIR STREQUAL "") - - IF( EXISTS ${RTAI_INSTALL_DIR}/include/rtai_lxrt.h) - MESSAGE("-- Looking for RTAI/LXRT - found in ${RTAI_INSTALL_DIR}") - SET( RTAI_INCLUDE_DIR ${RTAI_INSTALL_DIR}/include) - ENDIF( EXISTS ${RTAI_INSTALL_DIR}/include/rtai_lxrt.h) - - #If RTAI_INCLUDE_DIR has been defined, you must have defined also - # RTAI_INSTALL_DIR. - IF( RTAI_INCLUDE_DIR AND RTAI_INSTALL_DIR) - SET(OROPKG_SUPPORT_RTAI TRUE CACHE INTERNAL "" FORCE) - INCLUDE_DIRECTORIES(${RTAI_INCLUDE_DIR} ${LINUX_SOURCE_DIR}/include) - SET(RTT_CFLAGS "${RTT_CFLAGS} -I${RTAI_INCLUDE_DIR} -I${LINUX_SOURCE_DIR}/include" CACHE INTERNAL "") - SET(RTT_LINKFLAGS "${RTT_LINKFLAGS} -L${RTAI_INSTALL_DIR}/lib -llxrt -lpthread" CACHE INTERNAL "") - LINK_LIBRARIES(lxrt pthread dl) - LINK_DIRECTORIES(${RTAI_INSTALL_DIR}/lib) - ELSE( RTAI_INCLUDE_DIR AND RTAI_INSTALL_DIR ) - MESSAGE(FATAL_ERROR "-- Looking for LXRT - not found (tried: ${RTAI_INSTALL_DIR}/include/rtai_lxrt.h, ${CMAKE_INCLUDE_PATH})") - SET(OROPKG_SUPPORT_RTAI FALSE CACHE INTERNAL "" FORCE) - ENDIF( RTAI_INCLUDE_DIR AND RTAI_INSTALL_DIR ) -ELSE(OROCOS_TARGET STREQUAL "lxrt") - SET(OROPKG_OS_LXRT FALSE CACHE INTERNAL "" FORCE) -ENDIF(OROCOS_TARGET STREQUAL "lxrt") - - -IF(OROCOS_TARGET STREQUAL "xenomai") - # Look for Xenomai - SET(XENOMAI_INSTALL_DIR ${XENOMAI_INSTALL_DIR} CACHE PATH "path to xenomai installation dir" FORCE) - IF (XENOMAI_INSTALL_DIR STREQUAL "") - SET(XENOMAI_INSTALL_DIR "/usr/realtime") - ENDIF (XENOMAI_INSTALL_DIR STREQUAL "") - SET(OROPKG_OS_XENOMAI TRUE CACHE INTERNAL "" FORCE) - # Standard path of Xenomai: ( XENOMAI_INSTALL_DIR == /usr/realtime ) - IF(EXISTS ${XENOMAI_INSTALL_DIR}/include/native/task.h) - MESSAGE("-- Looking for XENOMAI - found in ${XENOMAI_INSTALL_DIR}/include") - SET( XENOMAI_INCLUDE_DIR "${XENOMAI_INSTALL_DIR}/include" ) - ENDIF(EXISTS ${XENOMAI_INSTALL_DIR}/include/native/task.h) - # Debian package of Xenomai: ( XENOMAI_INSTALL_DIR == /usr ) - IF(EXISTS ${XENOMAI_INSTALL_DIR}/include/xenomai/native/task.h) - MESSAGE("-- Looking for XENOMAI - found in ${XENOMAI_INSTALL_DIR}/include/xenomai") - SET( XENOMAI_INCLUDE_DIR "${XENOMAI_INSTALL_DIR}/include/xenomai" ) - ENDIF(EXISTS ${XENOMAI_INSTALL_DIR}/include/xenomai/native/task.h) - # Debian package of Xenomai: ( XENOMAI_INSTALL_DIR == /usr/xenomai ) - IF(EXISTS ${XENOMAI_INSTALL_DIR}/xenomai/include/native/task.h) - MESSAGE("-- Looking for XENOMAI - found in ${XENOMAI_INSTALL_DIR}/xenomai/include") - SET( XENOMAI_INCLUDE_DIR "${XENOMAI_INSTALL_DIR}/xenomai/include" ) - SET( XENOMAI_INSTALL_DIR "${XENOMAI_INSTALL_DIR}/xenomai") - ENDIF(EXISTS ${XENOMAI_INSTALL_DIR}/xenomai/include/native/task.h) - # the recommended CMake method - IF (NOT XENOMAI_INCLUDE_DIR) - # use different variable than XENOMAI_INCLUDE_DIR, as the first SET in the - # block above resets things and breaks the CMake cache when you rerun - # cmake/ccmake. - FIND_PATH(XENOMAI_INCLUDE_PATH native/task.h) - FIND_LIBRARY(XENOMAI_INSTALL_LIB native) -# MESSAGE(STATUS "Xenomai: include ${XENOMAI_INCLUDE_DIR}") -# MESSAGE(STATUS "Xenomai: library ${XENOMAI_INSTALL_LIB}") - IF ( XENOMAI_INCLUDE_PATH AND XENOMAI_INSTALL_LIB ) - SET(XENOMAI_INCLUDE_DIR ${XENOMAI_INCLUDE_PATH}) - # presume XENOMAI_INSTALL_LIB is of form /path/to/lib/libnative.so, and - # so need to strip back to /path/to - GET_FILENAME_COMPONENT(XENOMAI_INSTALL_LIB2 ${XENOMAI_INSTALL_LIB} PATH) - GET_FILENAME_COMPONENT(XENOMAI_INSTALL_DIR ${XENOMAI_INSTALL_LIB2} PATH) - MESSAGE("-- Looking for XENOMAI - found in ${XENOMAI_INSTALL_DIR}") - ENDIF ( XENOMAI_INCLUDE_PATH AND XENOMAI_INSTALL_LIB ) - ENDIF (NOT XENOMAI_INCLUDE_DIR) - - IF ( XENOMAI_INCLUDE_DIR ) - SET(XENOMAI_SUPPORT TRUE CACHE INTERNAL "" FORCE) - INCLUDE_DIRECTORIES( ${XENOMAI_INCLUDE_DIR} ) - SET(RTT_CFLAGS "${RTT_CFLAGS} -I${XENOMAI_INCLUDE_DIR}" CACHE INTERNAL "") - SET(RTT_USER_LINKFLAGS "${RTT_LINKFLAGS} -L${XENOMAI_INSTALL_DIR}/lib -lnative -lpthread" CACHE INTERNAL "") - LINK_LIBRARIES(native pthread dl) - LINK_DIRECTORIES(${XENOMAI_INSTALL_DIR}/lib) - ELSE( XENOMAI_INCLUDE_DIR ) - MESSAGE(FATAL_ERROR "-- Looking for XENOMAI - not found (tried: ${XENOMAI_INSTALL_DIR}/include/native/task.h, ${XENOMAI_INSTALL_DIR}/include/xenomai/native/task.h and CMAKE_INCLUDE_PATH environment variable)") - SET(XENOMAI_SUPPORT FALSE CACHE INTERNAL "" FORCE) - ENDIF( XENOMAI_INCLUDE_DIR ) -ELSE(OROCOS_TARGET STREQUAL "xenomai") - SET(XENOMAI_INSTALL_DIR "/usr/realtime" CACHE INTERNAL "path to xenomai installation dir") - SET(OROPKG_OS_XENOMAI FALSE CACHE INTERNAL "" FORCE) -ENDIF(OROCOS_TARGET STREQUAL "xenomai") - - -IF(OROCOS_TARGET STREQUAL "gnulinux") - SET(OROPKG_OS_GNULINUX TRUE CACHE INTERNAL "" FORCE) - SET(RTT_LINKFLAGS "${RTT_LINKFLAGS} -lrt" CACHE INTERNAL "") - SET(RTT_USER_LINKFLAGS "${RTT_USER_LINKFLAGS} -lpthread" CACHE INTERNAL "") - LINK_LIBRARIES(pthread dl rt) -ELSE(OROCOS_TARGET STREQUAL "gnulinux") - SET(OROPKG_OS_GNULINUX FALSE CACHE INTERNAL "" FORCE) -ENDIF(OROCOS_TARGET STREQUAL "gnulinux") - -IF(OROCOS_TARGET STREQUAL "macosx") - SET(OROPKG_OS_MACOSX TRUE CACHE INTERNAL "" FORCE) - SET(RTT_USER_LINKFLAGS "${RTT_USER_LINKFLAGS} -lpthread" CACHE INTERNAL "") - LINK_LIBRARIES(pthread dl) -ELSE(OROCOS_TARGET STREQUAL "macosx") - SET(OROPKG_OS_MACOSX FALSE CACHE INTERNAL "" FORCE) -ENDIF(OROCOS_TARGET STREQUAL "macosx") +find_package(Xerces) + +if(XERCES_FOUND) + set(OROPKG_SUPPORT_XERCES_C TRUE CACHE INTERNAL "" FORCE) + list(APPEND OROCOS-RTT_INCLUDE_DIRS ${XERCES_INCLUDE_DIRS} ) + list(APPEND OROCOS-RTT_LIBRARIES ${XERCES_LIBRARIES} ) + set(ORODAT_CORELIB_PROPERTIES_MARSHALLING_INCLUDE "\"marsh/CPFMarshaller.hpp\"") + set(OROCLS_CORELIB_PROPERTIES_MARSHALLING_DRIVER "CPFMarshaller") + set(ORODAT_CORELIB_PROPERTIES_DEMARSHALLING_INCLUDE "\"marsh/CPFDemarshaller.hpp\"") + set(OROCLS_CORELIB_PROPERTIES_DEMARSHALLING_DRIVER "CPFDemarshaller") +else(XERCES_FOUND) + set(OROPKG_SUPPORT_XERCES_C FALSE CACHE INTERNAL "" FORCE) + set(ORODAT_CORELIB_PROPERTIES_MARSHALLING_INCLUDE "\"marsh/CPFMarshaller.hpp\"") + set(OROCLS_CORELIB_PROPERTIES_MARSHALLING_DRIVER "CPFMarshaller") + set(ORODAT_CORELIB_PROPERTIES_DEMARSHALLING_INCLUDE "\"marsh/TinyDemarshaller.hpp\"") + set(OROCLS_CORELIB_PROPERTIES_DEMARSHALLING_DRIVER "TinyDemarshaller") +endif(XERCES_FOUND) + +# Check for OS/Target specific dependencies: +set( OROCOS_TARGET gnulinux CACHE STRING "The Operating System target. One of [lxrt gnulinux xenomai macosx]") +string(TOUPPER ${OROCOS_TARGET} OROCOS_TARGET_CAP) +message("Orocos target is ${OROCOS_TARGET}") + +# Setup flags for RTAI/LXRT +if(OROCOS_TARGET STREQUAL "lxrt") + set(OROPKG_OS_LXRT TRUE CACHE INTERNAL "This variable is exported to the rtt-config.h file to expose our target choice to the code." FORCE) + set(LINUX_SOURCE_DIR ${LINUX_SOURCE_DIR} CACHE PATH "Path to Linux source dir (required for lxrt target)" FORCE) + + find_package(RTAI REQUIRED) + + if(RTAI_FOUND) + list(APPEND OROCOS-RTT_INCLUDE_DIRS ${RTAI_INCLUDE_DIRS} ) + list(APPEND OROCOS-RTT_LIBRARIES ${RTAI_LIBRARIES} pthread dl) + endif() +else() + set(OROPKG_OS_LXRT FALSE CACHE INTERNAL "" FORCE) +endif() + +# Setup flags for Xenomai +if(OROCOS_TARGET STREQUAL "xenomai") + set(OROPKG_OS_XENOMAI TRUE CACHE INTERNAL "This variable is exported to the rtt-config.h file to expose our target choice to the code." FORCE) + + find_package(Xenomai REQUIRED) + + if(XENOMAI_FOUND) + list(APPEND OROCOS-RTT_INCLUDE_DIRS ${XENOMAI_INCLUDE_DIRS} ) + list(APPEND OROCOS-RTT_LIBRARIES ${XENOMAI_LIBRARIES} pthread dl) + endif() +else() + set(OROPKG_OS_XENOMAI FALSE CACHE INTERNAL "" FORCE) +endif() + +# Setup flags for GNU/Linux +if(OROCOS_TARGET STREQUAL "gnulinux") + set(OROPKG_OS_GNULINUX TRUE CACHE INTERNAL "This variable is exported to the rtt-config.h file to expose our target choice to the code." FORCE) + + list(APPEND OROCOS-RTT_LIBRARIES pthread dl rt) +else() + set(OROPKG_OS_GNULINUX FALSE CACHE INTERNAL "" FORCE) +endif() + +# Setup flags for Mac-OSX +if(OROCOS_TARGET STREQUAL "macosx") + set(OROPKG_OS_MACOSX TRUE CACHE INTERNAL "This variable is exported to the rtt-config.h file to expose our target choice to the code." FORCE) + + list(APPEND OROCOS-RTT_LIBRARIES pthread dl) +else() + set(OROPKG_OS_MACOSX FALSE CACHE INTERNAL "" FORCE) +endif() + + +# Setup flags for ecos +IF(OROCOS_TARGET STREQUAL "ecos") + set(OROPKG_OS_ECOS TRUE CACHE INTERNAL "This variable is exported to the rtt-config.h file to expose our target choice to the code." FORCE) + # We can't really use 'UseEcos.cmake' because we're building a library + # and not a final application + find_package(Ecos REQUIRED) -IF(OROCOS_TARGET STREQUAL "ecos") + if(Ecos_FOUND) + + set(ECOS_SUPPORT TRUE CACHE INTERNAL "" FORCE) + + list(APPEND OROCOS-RTT_INCLUDE_DIRS ${ECOS_INCLUDE_DIRS} ) + list(APPEND OROCOS-RTT_LIBRARIES ${ECOS_LIBRARIES} pthread dl) - # Look for Ecos - SET(ECOS_INSTALL_DIR ${ECOS_INSTALL_DIR} CACHE PATH "path to ecos installation dir" FORCE) - IF (ECOS_INSTALL_DIR STREQUAL "") - SET(ECOS_INSTALL_DIR "/opt/ecos/install") - ENDIF (ECOS_INSTALL_DIR STREQUAL "") - SET(OROPKG_OS_ECOS TRUE CACHE INTERNAL "" FORCE) - IF(EXISTS ${ECOS_INSTALL_DIR}/include/pkgconf/system.h) - MESSAGE("-- Looking for ECOS - found in ${ECOS_INSTALL_DIR}") - SET(ECOS_SUPPORT TRUE CACHE INTERNAL "" FORCE) - INCLUDE_DIRECTORIES(${ECOS_INSTALL_DIR}/include) - SET(RTT_CFLAGS "${RTT_CFLAGS} -I${ECOS_INSTALL_DIR}/include" CACHE INTERNAL "") - SET(RTT_LINKFLAGS "${RTT_LINKFLAGS} -L${ECOS_INSTALL_DIR}/lib -ltarget" CACHE INTERNAL "") - LINK_LIBRARIES( target ) - LINK_DIRECTORIES(${ECOS_INSTALL_DIR}/lib) - ELSE(EXISTS ${ECOS_INSTALL_DIR}/include/pkgconf/system.h) - MESSAGE(FATAL_ERROR "-- Looking for ECOS - not found (tried: ${ECOS_INSTALL_DIR}/include/pkgconf/system.h)") - SET(ECOS_SUPPORT FALSE CACHE INTERNAL "" FORCE) - ENDIF(EXISTS ${ECOS_INSTALL_DIR}/include/pkgconf/system.h) - - MESSAGE( "Turning BUILD_STATIC ON for ecos.") - SET( FORCE_BUILD_STATIC ON CACHE INTERNAL "" FORCE) - SET( BUILD_STATIC ON CACHE BOOL "Build Orocos RTT as a static library" FORCE) - -ELSE(OROCOS_TARGET STREQUAL "ecos") - SET(OROPKG_OS_ECOS FALSE CACHE INTERNAL "" FORCE) - SET(ECOS_INSTALL_DIR "/opt/ecos/install" CACHE INTERNAL "path to ecos installation dir") -ENDIF(OROCOS_TARGET STREQUAL "ecos") + message( "Turning BUILD_STATIC ON for ecos.") + set( FORCE_BUILD_STATIC ON CACHE INTERNAL "Forces to build Orocos RTT as a static library (forced to ON by Ecos)" FORCE) + set( BUILD_STATIC ON CACHE BOOL "Build Orocos RTT as a static library (forced to ON by Ecos)" FORCE) + endif() +else() + set(OROPKG_OS_ECOS FALSE CACHE INTERNAL "" FORCE) +endif() # The machine type is tested using compiler macros in rtt-config.h.in diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f632b818d..5aa605abf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,6 @@ + +#TODO: use the one from cmake 2.6 (identical code) +#include (CMakeDependentOption.cmake) INCLUDE (${PROJ_SOURCE_DIR}/config/DependentOption.cmake) ### diff --git a/src/targets/target.in b/src/targets/target.in index e409678d5..39b7f7821 100644 --- a/src/targets/target.in +++ b/src/targets/target.in @@ -57,8 +57,6 @@ #cmakedefine OROPKG_EXECUTION_ENGINE_STATEMACHINES #define ORONUM_EXECUTION_PROC_QUEUE_SIZE @ORONUM_EXECUTION_PROC_QUEUE_SIZE@ -#cmakedefine ORO_SUPPORT_BOOST - /** If marshalling is enabled, use these defines. */ #cmakedefine ENABLE_MARSHALLING #ifdef ENABLE_MARSHALLING