From 43604ec76fb6ed7640536d6579ef10e523f6ef12 Mon Sep 17 00:00:00 2001 From: Thomas Roehr Date: Thu, 4 Apr 2019 17:30:24 +0200 Subject: [PATCH] Make SISL truely optional --- CMakeLists.txt | 11 +++++++++++ bindings/ruby/CMakeLists.txt | 1 - src/CMakeLists.txt | 28 +++++++++++++++++++++------- src/base-lib.pc.in | 1 - src/base-types-sisl.pc.in | 8 ++++++++ test/CMakeLists.txt | 8 +++++++- viz/CMakeLists.txt | 13 +++++++++++-- 7 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 src/base-types-sisl.pc.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 290db068..97897790 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,4 +32,15 @@ if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/test) endif() endif() +# SISL as optional dependency +option(USE_SISL "set to OFF to disable the usage of SISL." ON) +if(USE_SISL) + rock_find_cmake(SISL) + if(NOT SISL_FOUND) + message(FATAL_ERROR "The usage of SISL is requested, but the library could not be found." + " Either make sure SISL is installed, or disable the usage via" + " -DUSE_SISL=OFF") + endif(NOT SISL_FOUND) +endif() + rock_standard_layout() diff --git a/bindings/ruby/CMakeLists.txt b/bindings/ruby/CMakeLists.txt index 354bf24d..12613798 100644 --- a/bindings/ruby/CMakeLists.txt +++ b/bindings/ruby/CMakeLists.txt @@ -1,6 +1,5 @@ include_directories(${CMAKE_BINARY_DIR}/include) -find_package(SISL) if(SISL_FOUND) add_definitions(-DSISL_FOUND) rock_add_ruby_package(base diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 936bf4f9..338d9264 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,15 @@ +if(SISL_FOUND) + message(STATUS "SISL found: ${SISL_LIBRARIES}") + list(APPEND OPTIONAL_HPP + Spline.hpp + Trajectory.hpp + ) + list(APPEND OPTIONAL_CPP + Spline.cpp + Trajectory.cpp + ) +endif() + rock_library( base-types Angle.cpp @@ -8,12 +20,10 @@ rock_library( JointTransform.cpp Pose.cpp Pressure.cpp - Spline.cpp Temperature.cpp Time.cpp TimeMark.cpp Timeout.cpp - Trajectory.cpp TransformWithCovariance.cpp TwistWithCovariance.cpp Waypoint.cpp @@ -31,6 +41,7 @@ rock_library( samples/SonarBeam.cpp samples/SonarScan.cpp samples/PoseWithCovariance.cpp + ${OPTIONAL_CPP} HEADERS Angle.hpp CircularBuffer.hpp @@ -54,7 +65,6 @@ rock_library( Time.hpp TimeMark.hpp Timeout.hpp - Trajectory.hpp TransformWithCovariance.hpp TwistWithCovariance.hpp Waypoint.hpp @@ -84,15 +94,19 @@ rock_library( samples/Wrench.hpp samples/Wrenches.hpp templates/TimeStamped.hpp - DEPS_CMAKE - SISL + ${OPTIONAL_HPP} DEPS_PKGCONFIG base-logging eigen3 ) -install(FILES ${CMAKE_SOURCE_DIR}/src/Spline.hpp - DESTINATION include/base/geometry) +if(SISL_FOUND) + target_link_libraries(base-types ${SISL_LIBRARIES}) + install(FILES ${CMAKE_SOURCE_DIR}/src/Spline.hpp + DESTINATION include/base/geometry) + configure_file(base-types-sisl.pc.in ${CMAKE_BINARY_DIR}/base-types-sisl.pc @ONLY) + install(FILES ${CMAKE_BINARY_DIR}/base-types-sisl.pc DESTINATION lib/pkgconfig) +endif() configure_file(base-lib.pc.in ${CMAKE_BINARY_DIR}/base-lib.pc @ONLY) install(FILES ${CMAKE_BINARY_DIR}/base-lib.pc DESTINATION lib/pkgconfig) diff --git a/src/base-lib.pc.in b/src/base-lib.pc.in index 4d046849..ac78a26b 100644 --- a/src/base-lib.pc.in +++ b/src/base-lib.pc.in @@ -6,4 +6,3 @@ Name: baseLib Version: 0.1 Description: Common types for robotics modules, part that require a library Requires: base-types - diff --git a/src/base-types-sisl.pc.in b/src/base-types-sisl.pc.in new file mode 100644 index 00000000..11cee843 --- /dev/null +++ b/src/base-types-sisl.pc.in @@ -0,0 +1,8 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +includedir=${prefix}/include + +Name: baseTypesSisl +Version: 0.1 +Description: Common types for robotics modules, including types that require the library sisl +Requires: base-types diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e6fad2b1..f5a32e60 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,10 +1,16 @@ +if(SISL_FOUND) + list(APPEND OPTIONAL_TESTS + test_Spline.cpp) +endif() + rock_testsuite(test_base_types test.cpp test_samples_Sonar.cpp test_Eigen.cpp - test_Spline.cpp test_Timeout.cpp + ${OPTIONAL_TESTS} DEPS base-types DEPS_PKGCONFIG base-logging) + rock_executable(benchmark benchmark.cpp bench_func.cpp DEPS base-types DEPS_PKGCONFIG base-logging diff --git a/viz/CMakeLists.txt b/viz/CMakeLists.txt index 17f629fb..09e2f98f 100644 --- a/viz/CMakeLists.txt +++ b/viz/CMakeLists.txt @@ -1,4 +1,13 @@ rock_find_qt4() +if(SISL_FOUND) + list(APPEND OPTIONAL_HPP + TrajectoryVisualization.hpp + ) + list(APPEND OPTIONAL_CPP + TrajectoryVisualization.cpp + ) +endif() + rock_vizkit_plugin(base-viz PluginLoader.cpp Uncertainty.cpp Vizkit3DHelper.cpp MOC @@ -7,13 +16,13 @@ rock_vizkit_plugin(base-viz MotionCommandVisualization.cpp RigidBodyStateVisualization.cpp BodyStateVisualization.cpp - TrajectoryVisualization.cpp WaypointVisualization.cpp SonarGroundDistanceVisualization.cpp SonarBeamVisualization.cpp SonarVisualization.cpp PointcloudVisualization.cpp DepthMapVisualization.cpp + ${OPTIONAL_CPP} HEADERS Uncertainty.hpp Vizkit3DHelper.hpp @@ -22,13 +31,13 @@ rock_vizkit_plugin(base-viz MotionCommandVisualization.hpp RigidBodyStateVisualization.hpp BodyStateVisualization.hpp - TrajectoryVisualization.hpp WaypointVisualization.hpp SonarGroundDistanceVisualization.hpp SonarBeamVisualization.hpp SonarVisualization.hpp PointcloudVisualization.hpp DepthMapVisualization.hpp + ${OPTIONAL_HPP} DEPS base-types LIBS ${Boost_SYSTEM_LIBRARY} DEPS_PKGCONFIG base-logging