# defines SIMOX_CONFIGURED variable which indicates that this config file has already been included
SET(SIMOX_CONFIGURED TRUE)
# Set up for debug build
#SET(CMAKE_BUILD_TYPE Debug)
GET_FILENAME_COMPONENT (CurrentPath ${CMAKE_CURRENT_LIST_FILE} PATH)
#MESSAGE ("module path: " ${CurrentPath}/cmake-modules)
SET(CMAKE_MODULE_PATH ${CurrentPath}/cmake-modules)
# Check for Qt
FIND_PACKAGE(Qt REQUIRED)
IF ( NOT DESIRED_QT_VERSION EQUAL 3 )
# Use Qt4
SET(QT_USE_XML TRUE)
SET(QT_USE_QTXMLPATTERNS TRUE)
SET(QT_USE_QTOPENGL TRUE)
SET(QT_USE_QT3SUPPORT TRUE)
ADD_DEFINITIONS(-DQT3_SUPPORT)
INCLUDE(${QT_USE_FILE})
SET(USE_QT_4 1)
SET(USE_QT_3 0)
ELSE(NOT DESIRED_QT_VERSION EQUAL 3)
# Use Qt3
ADD_DEFINITIONS(${QT_DEFINITIONS})
SET(USE_QT_4 0)
SET(USE_QT_3 1)
ENDIF(NOT DESIRED_QT_VERSION EQUAL 3)
# Check for Coin library
# This will set the variables COIN3D_FOUND, COIN3D_INCLUDE_DIRS, COIN3D_LIBRARIES
FIND_PACKAGE(Coin3D)
ADD_DEFINITIONS(-DCOIN_DLL)
# Check for SoQt
# This will set SoQt_INCLUDE_DIRS and SoQt_LIBRARIES
FIND_PACKAGE(SoQt REQUIRED)
ADD_DEFINITIONS(-DSOQT_DLL)
if (SoQt_FOUND)
INCLUDE_DIRECTORIES(${SoQt_INCLUDE_DIRS})
SET(USE_SOQT TRUE)
endif (SoQt_FOUND)
IF(BUILD_EXTERNAL)
SET(USE_NEWMAT 1)
SET(USE_QHULL 1)
ENDIF(BUILD_EXTERNAL)
SET(SIMOX_DIR ${CurrentPath})
ADD_DEFINITIONS(-DSIMOX_BASE_DIR="${SIMOX_DIR}")
# Set OS specific options
IF(UNIX)
# We are on Linux
SET(BIN_DIR bin/linux)
SET(LIB_DIR lib/linux)
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
ADD_DEFINITIONS(-fPIC)
ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
ELSE(UNIX)
# We are on Windows
SET(BIN_DIR bin/win32)
SET(LIB_DIR lib/win32)
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -DCONFIGURED_BY_CMAKE)
# On MSVC we compile with /MP flag (use multiple threads)
IF(MSVC)
ADD_DEFINITIONS(/MP)
ENDIF(MSVC)
ENDIF(UNIX)
# Define, where to put the binaries
SET(SIMOX_LIB_DIR ${SIMOX_DIR}/${LIB_DIR})
SET(SIMOX_BIN_DIR ${SIMOX_DIR}/${BIN_DIR})
# Define, where to install the binaries
SET(SIMOX_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib)
SET(SIMOX_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/bin)
## Collision Detection
OPTION(CollisionDetectionLibrary_PQP "Build and use the PQP Collision Detection library (located in ExternalDependencies)" ON)
OPTION(CollisionDetectionLibrary_C2A "Build and use the C2A Continuous Collision Detection library (located in ExternalDependencies)" OFF)
IF(CollisionDetectionLibrary_PQP)
SET(USE_PQP 1)
SET(COLLISIONDETECTION_LIB ColCheckerPQP)
SET(COLLISIONDETECTION_DIR ${SIMOX_DIR}/ExternalDependencies/CollisionCheckerPQP)
SET(COLLISIONDETECTION_INC_DIR ${COLLISIONDETECTION_DIR})
SET(COLLISIONDETECTION_LIB_DIR ${SIMOX_LIB_DIR})
ELSEIF(CollisionDetectionLibrary_C2A)
SET(USE_C2A 1)
SET(COLLISIONDETECTION_LIB ColCheckerC2A)
SET(COLLISIONDETECTION_DIR ${SIMOX_DIR}/ExternalDependencies/C2A)
SET(COLLISIONDETECTION_INC_DIR ${COLLISIONDETECTION_DIR})
INCLUDE_DIRECTORIES(${COLLISIONDETECTION_INC_DIR}/PQP_1.3)
SET(COLLISIONDETECTION_LIB_DIR ${SIMOX_LIB_DIR})
ELSE()
# DUMMY
SET(COLLISIONDETECTION_DIR ${SIMOX_DIR}/VirtualRobot/CollisionDetection/Dummy)
SET(COLLISIONDETECTION_INC_DIR ${COLLISIONDETECTION_DIR})
SET(COLLISIONDETECTION_LIB_DIR ${SIMOX_LIB_DIR})
ENDIF()
SET(VIRTUALROBOT_LIB VirtualRobot)
SET(SABA_LIB SaBa)
SET(GRASPSTUDIO_LIB GraspStudioLib)
SET(VIRTUALROBOT_LIB VirtualRobot)
SET(ROBOT_LIB RobotLibArmarIII)
SET(NEWMAT_LIB newmat)
SET(QHULL_LIB qhull)
# Set base directory variables
SET(EXTERNALS_DIR ${SIMOX_DIR}/ExternalDependencies)
SET(NEWMAT_DIR ${EXTERNALS_DIR}/newmat)
SET(QHULL_DIR ${EXTERNALS_DIR}/qhull-2003.1)
SET(VIRTUALROBOT_DIR ${SIMOX_DIR}/VirtualRobot)
SET(SABA_DIR ${SIMOX_DIR}/SaBa)
SET(GRASPSTUDIO_DIR ${SIMOX_DIR}/GraspStudio)
# Set include directory variables
SET(NEWMAT_INC_DIR ${NEWMAT_DIR}/include)
SET(QHULL_INC_DIR ${QHULL_DIR}/include)
SET(VIRTUALROBOT_INC_DIR ${VIRTUALROBOT_DIR})
SET(SABA_INC_DIR ${SABA_DIR}/include)
SET(GRASPSTUDIO_INC_DIR ${GRASPSTUDIO_DIR}/include)
# Set link directory variables
SET(NEWMAT_LIB_DIR ${SIMOX_LIB_DIR})
SET(QHULL_LIB_DIR ${SIMOX_LIB_DIR})
SET(VIRTUALROBOT_LIB_DIR ${SIMOX_LIB_DIR})
SET(SABA_LIB_DIR ${SIMOX_LIB_DIR})
SET(GRASPSTUDIO_LIB_DIR ${SIMOX_LIB_DIR})
# The CDT Error Parser cannot handle error messages that span more than one line,
# which is the default gcc behavior. In order to force gcc to generate single line
# error messages with no line wrapping, add to your CMakeLists.txt:
IF(CMAKE_COMPILER_IS_GNUCC)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
IF(CMAKE_COMPILER_IS_GNUCXX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0")
ENDIF(CMAKE_COMPILER_IS_GNUCXX)