From 3cfc1739ee5a7019e9e5b4f4ae85ecf927e789a2 Mon Sep 17 00:00:00 2001
From: Florent Lamiraux <florent@laas.fr>
Date: Sat, 2 Aug 2014 12:39:00 +0200
Subject: [PATCH] Use jrl cmake submodule for configuration.

---
 .gitmodules                              |   3 +
 CMakeLists.txt                           | 303 +++++++++++------------
 cmake                                    |   1 +
 doc/Doxyfile.extra.in                    |   0
 include/fcl/config.h.in                  |  52 ----
 src/CMakeLists.txt                       | 115 ++++++++-
 test/CMakeLists.txt                      |  33 +--
 test/fcl_resources/config.h.in           |   2 +-
 test/test_fcl_box_box_distance.cpp       |   4 +-
 test/test_fcl_broadphase.cpp             |   2 +-
 test/test_fcl_capsule_box_1.cpp          |   2 +-
 test/test_fcl_capsule_box_2.cpp          |   2 +-
 test/test_fcl_capsule_capsule.cpp        |   2 +-
 test/test_fcl_collision.cpp              |   2 +-
 test/test_fcl_distance.cpp               |   2 +-
 test/test_fcl_frontlist.cpp              |   2 +-
 test/test_fcl_geometric_shapes.cpp       |   2 +-
 test/test_fcl_math.cpp                   |   2 +-
 test/test_fcl_octomap.cpp                |   2 +-
 test/test_fcl_shape_mesh_consistency.cpp |   2 +-
 test/test_fcl_simple.cpp                 |   2 +-
 test/test_fcl_sphere_capsule.cpp         |   2 +-
 22 files changed, 285 insertions(+), 254 deletions(-)
 create mode 100644 .gitmodules
 create mode 160000 cmake
 create mode 100644 doc/Doxyfile.extra.in
 delete mode 100644 include/fcl/config.h.in

diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..8b3eac81
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "cmake"]
+	path = cmake
+	url = git@github.com:jrl-umi3218/jrl-cmakemodules
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ec5eda94..4b94eabb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,157 +1,156 @@
-cmake_minimum_required(VERSION 2.8)
-project(fcl CXX C)
-
-# set the default build type
-if (NOT CMAKE_BUILD_TYPE)
-   set(CMAKE_BUILD_TYPE Release)
-endif()
-
-# Set build type variable
-set(FCL_BUILD_TYPE_RELEASE FALSE)
-set(FCL_BUILD_TYPE_DEBUG FALSE)
-
-string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPERCASE)
-if("${CMAKE_BUILD_TYPE_UPPERCASE}" STREQUAL "RELEASE")
-  set(FCL_BUILD_TYPE_RELEASE TRUE)
-elseif("${CMAKE_BUILD_TYPE_UPPERCASE}" STREQUAL "DEBUG")
-  set(FCL_BUILD_TYPE_DEBUG TRUE)
-else()
-  message(STATUS "CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} unknown. Valid options are: Debug Release")
-endif()
-
-# This shouldn't be necessary, but there has been trouble
-# with MSVC being set off, but MSVCXX ON.
-if(MSVC OR MSVC90 OR MSVC10)
-    set(MSVC ON)
-endif (MSVC OR MSVC90 OR MSVC10)
-
-set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
-set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
-include(CompilerSettings)
-include(FCLVersion)
+#
+# Software License Agreement (BSD License)
+#
+#  Copyright (c) 2014 CNRS-LAAS
+#  Author: Florent Lamiraux
+#  All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above
+#     copyright notice, this list of conditions and the following
+#     disclaimer in the documentation and/or other materials provided
+#     with the distribution.
+#   * Neither the name of CNRS-LAAS. nor the names of its
+#     contributors may be used to endorse or promote products derived
+#     from this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+#  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+#  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+#  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+#  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+#  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+#  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+#  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+#  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
 
-if(MSVC OR IS_ICPC)
-  option(FCL_STATIC_LIBRARY "Whether the FCL library should be static rather than shared" ON)
-else()
-  option(FCL_STATIC_LIBRARY "Whether the FCL library should be static rather than shared" OFF)
-endif()
-
-# Whether to enable SSE
-option(FCL_USE_SSE "Whether FCL should SSE instructions" OFF)
-set(FCL_HAVE_SSE 0)
-if(FCL_USE_SSE)
-  if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-    set(FCL_HAVE_SSE 0) #always disable, for now
-    add_definitions(-march=native)
-  endif()
-  # TODO: do something similar for other compilers
-endif()
-
-# Find Octomap (optional)
-find_package(PkgConfig QUIET)
-set(FCL_HAVE_OCTOMAP 0)
-if(PKG_CONFIG_FOUND)
-    pkg_check_modules(OCTOMAP QUIET octomap)
-endif()
-if(NOT OCTOMAP_FOUND)
-    # if pkfconfig is not installed, then fall back on more fragile detection
-    # of octomap
-    find_path(OCTOMAP_INCLUDE_DIRS octomap.h
-        PATH_SUFFIXES octomap)
-    find_path(OCTOMAP_LIBRARY_DIRS
-        ${CMAKE_SHARED_LIBRARY_PREFIX}octomap${CMAKE_SHARED_LIBRARY_SUFFIX})
-    if(OCTOMAP_INCLUDE_DIRS AND OCTOMAP_LIBRARY_DIRS)
-        set(OCTOMAP_LIBRARIES "octomap;octomath")
-    endif()
-endif()
-if (OCTOMAP_INCLUDE_DIRS AND OCTOMAP_LIBRARY_DIRS)
-  include_directories(${OCTOMAP_INCLUDE_DIRS})
-  link_directories(${OCTOMAP_LIBRARY_DIRS})
-  set(FCL_HAVE_OCTOMAP 1)
-  message(STATUS "FCL uses Octomap")
-else()
-  message(STATUS "FCL does not use Octomap")
-endif()
-
-# Find FLANN (optional)
-find_package(flann QUIET)
-if (FLANN_FOUND)
-  set(FCL_HAVE_FLANN 1)
-  include_directories(${FLANN_INCLUDE_DIRS})
-  message(STATUS "FCL uses Flann")
-else()
-  message(STATUS "FCL does not use Flann")
-endif()
-
-
-# find_package(tinyxml QUIET)
-# if (TINYXML_FOUND)
-#   set(FCL_HAVE_TINYXML 1)
-#   include_directories(${TINYXML_INCLUDE_DIRS})
-#   link_directories(${TINYXML_LIBRARY_DIRS})
-#   message(STATUS "FCL uses tinyxml")
-# else()
-#   message(STATUS "FCL does not use tinyxml")
+cmake_minimum_required(VERSION 2.8)
+set(CXX_DISABLE_WERROR TRUE)
+include(cmake/base.cmake)
+include(cmake/boost.cmake)
+
+set(PROJECT_NAME fcl)
+set(PROJECT_DESCRIPTION
+  "FCL -- The Flexible Collision Library"
+  )
+set(PROJECT_URL "http://github.com/humanoid-path-planner/fcl")
+
+setup_project()
+
+# Required dependencies
+add_required_dependency("ccd >= 1.4")
+set(BOOST_COMPONENTS
+  thread date_time filesystem system unit_test_framework REQUIRED
+  )
+search_for_boost()
+# Optional dependencies
+add_optional_dependency("octomap >= 1.6")
+# flann package ill defined: comment.
+# add_optional_dependency("flann >= 1.7")
+# if (${FLANN_FOUND})
+#   add_definitions(-DFCL_HAVE_FLANN=1)
 # endif()
 
-
-find_package(Boost COMPONENTS thread date_time filesystem system unit_test_framework REQUIRED)
-include_directories(${Boost_INCLUDE_DIR})
-
-if(MSVC)
-    add_definitions(-DBOOST_ALL_NO_LIB)
-endif()
-add_definitions(-DBOOST_TEST_DYN_LINK)
-
-# FCL's own include dir should be at the front of the include path
-include_directories(BEFORE "include")
-include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
-
-if(PKG_CONFIG_FOUND)
-  pkg_check_modules(CCD ccd)
-  # check to see if the pkg is installed under the libccd name
-  if(NOT CCD_FOUND)
-    pkg_check_modules(CCD libccd)
-  endif()
-endif()
-
-if(NOT CCD_FOUND)
-    # if pkfconfig is not installed, then fall back on more fragile detection
-    # of ccd
-    find_path(CCD_INCLUDE_DIRS ccd.h
-        PATH_SUFFIXES ccd)
-    find_path(CCD_LIBRARY_DIRS
-        ${CMAKE_SHARED_LIBRARY_PREFIX}ccd${CMAKE_SHARED_LIBRARY_SUFFIX})
-    if(CCD_INCLUDE_DIRS AND CCD_LIBRARY_DIRS)
-        set(CCD_LIBRARIES "ccd")
-    else()
-        message(FATAL_ERROR "Libccd is required by FCL")
-    endif()
-endif()
-include_directories(${CCD_INCLUDE_DIRS})
-link_directories(${CCD_LIBRARY_DIRS})
-
-add_subdirectory(include/fcl)
+SET(${PROJECT_NAME}_HEADERS
+  include/fcl/collision_data.h
+  include/fcl/profile.h
+  include/fcl/exception.h
+  include/fcl/ccd/taylor_vector.h
+  include/fcl/ccd/interval_vector.h
+  include/fcl/ccd/simplex.h
+  include/fcl/ccd/support.h
+  include/fcl/ccd/interval_matrix.h
+  include/fcl/ccd/interval.h
+  include/fcl/ccd/interpolation/interpolation_factory.h
+  include/fcl/ccd/interpolation/interpolation_linear.h
+  include/fcl/ccd/interpolation/interpolation.h
+  include/fcl/ccd/conservative_advancement.h
+  include/fcl/ccd/taylor_model.h
+  include/fcl/ccd/taylor_matrix.h
+  include/fcl/ccd/motion_base.h
+  include/fcl/ccd/motion.h
+  include/fcl/deprecated.h
+  include/fcl/BV/kIOS.h
+  include/fcl/BV/BV.h
+  include/fcl/BV/RSS.h
+  include/fcl/BV/OBBRSS.h
+  include/fcl/BV/BV_node.h
+  include/fcl/BV/AABB.h
+  include/fcl/BV/OBB.h
+  include/fcl/BV/kDOP.h
+  include/fcl/narrowphase/narrowphase.h
+  include/fcl/narrowphase/gjk.h
+  include/fcl/narrowphase/gjk_libccd.h
+  include/fcl/broadphase/interval_tree.h
+  include/fcl/broadphase/broadphase_spatialhash.h
+  include/fcl/broadphase/broadphase_dynamic_AABB_tree.h
+  include/fcl/broadphase/broadphase_SSaP.h
+  include/fcl/broadphase/broadphase_interval_tree.h
+  include/fcl/broadphase/broadphase.h
+  include/fcl/broadphase/hierarchy_tree.h
+  include/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h
+  include/fcl/broadphase/broadphase_SaP.h
+  include/fcl/broadphase/broadphase_bruteforce.h
+  include/fcl/broadphase/morton.h
+  include/fcl/broadphase/hash.h
+  include/fcl/learning/classifier.h
+  include/fcl/shape/geometric_shapes_utility.h
+  include/fcl/shape/geometric_shape_to_BVH_model.h
+  include/fcl/shape/geometric_shapes.h
+  include/fcl/simd/simd_intersect.h
+  include/fcl/simd/math_simd_details.h
+  include/fcl/distance_func_matrix.h
+  include/fcl/collision.h
+  include/fcl/collision_node.h
+  include/fcl/collision_func_matrix.h
+  include/fcl/distance.h
+  include/fcl/knn/greedy_kcenters.h
+  include/fcl/knn/nearest_neighbors_GNAT.h
+  include/fcl/knn/nearest_neighbors_flann.h
+  include/fcl/knn/nearest_neighbors_sqrtapprox.h
+  include/fcl/knn/nearest_neighbors_linear.h
+  include/fcl/knn/nearest_neighbors.h
+  include/fcl/continuous_collision.h
+  include/fcl/math/vec_nf.h
+  include/fcl/math/matrix_3f.h
+  include/fcl/math/vec_3f.h
+  include/fcl/math/sampling.h
+  include/fcl/math/math_details.h
+  include/fcl/math/transform.h
+  include/fcl/traversal/traversal_node_shapes.h
+  include/fcl/traversal/traversal_node_setup.h
+  include/fcl/traversal/traversal_recurse.h
+  include/fcl/traversal/traversal_node_octree.h
+  include/fcl/traversal/traversal_node_bvhs.h
+  include/fcl/traversal/traversal_node_bvh_shape.h
+  include/fcl/traversal/traversal_node_base.h
+  include/fcl/data_types.h
+  include/fcl/articulated_model/model.h
+  include/fcl/articulated_model/joint_config.h
+  include/fcl/articulated_model/model_config.h
+  include/fcl/articulated_model/joint.h
+  include/fcl/articulated_model/link.h
+  include/fcl/BVH/BV_splitter.h
+  include/fcl/BVH/BVH_internal.h
+  include/fcl/BVH/BVH_model.h
+  include/fcl/BVH/BV_fitter.h
+  include/fcl/BVH/BVH_front.h
+  include/fcl/BVH/BVH_utility.h
+  include/fcl/intersect.h
+  include/fcl/collision_object.h
+  include/fcl/octree.h
+  )
+
+pkg_config_append_libs("fcl")
 add_subdirectory(src)
-
-set(pkg_conf_file_in "${CMAKE_CURRENT_SOURCE_DIR}/fcl.pc.in")
-set(pkg_conf_file_out "${CMAKE_CURRENT_BINARY_DIR}/fcl.pc")
-configure_file("${pkg_conf_file_in}" "${pkg_conf_file_out}" @ONLY)
-
-install(DIRECTORY include/ DESTINATION include
-  FILES_MATCHING PATTERN "*.h" PATTERN "*.hxx"
-  PATTERN ".DS_Store" EXCLUDE
-)
-
-install(FILES "${pkg_conf_file_out}" DESTINATION lib/pkgconfig/ COMPONENT pkgconfig)
-
-# Add uninstall target
-configure_file(
-  "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in"
-  "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake"
-  IMMEDIATE @ONLY)
-add_custom_target(uninstall
-  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/CMakeModules/cmake_uninstall.cmake")
-
-enable_testing()
 add_subdirectory(test)
+
+setup_project_finalize()
diff --git a/cmake b/cmake
new file mode 160000
index 00000000..bfaeb03c
--- /dev/null
+++ b/cmake
@@ -0,0 +1 @@
+Subproject commit bfaeb03c13f01b4e10c36ea13b238b283d18a7bd
diff --git a/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in
new file mode 100644
index 00000000..e69de29b
diff --git a/include/fcl/config.h.in b/include/fcl/config.h.in
deleted file mode 100644
index fc26c232..00000000
--- a/include/fcl/config.h.in
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Software License Agreement (BSD License)
- *
- *  Copyright (c) 2012-2014, Willow Garage, Inc.
- *  Copyright (c) 2014-2015, Open Source Robotics Foundation
- *  All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions
- *  are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the following
- *     disclaimer in the documentation and/or other materials provided
- *     with the distribution.
- *   * Neither the name of Open Source Robotics Foundation nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- *  POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FCL_CONFIG_
-#define FCL_CONFIG_
-
-#define FCL_VERSION "@FCL_VERSION@"
-#define FCL_MAJOR_VERSION @FCL_MAJOR_VERSION@
-#define FCL_MINOR_VERSION @FCL_MINOR_VERSION@
-#define FCL_PATCH_VERSION @FCL_PATCH_VERSION@
-
-#cmakedefine01 FCL_HAVE_SSE
-#cmakedefine01 FCL_HAVE_OCTOMAP
-#cmakedefine01 FCL_HAVE_FLANN
-#cmakedefine01 FCL_HAVE_TINYXML
-
-#cmakedefine01 FCL_BUILD_TYPE_DEBUG
-#cmakedefine01 FCL_BUILD_TYPE_RELEASE
-
-#endif
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 05a00201..b4b1eb57 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,10 +1,109 @@
-file(GLOB_RECURSE FCL_SOURCE_CODE ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
-if(FCL_STATIC_LIBRARY)
-  add_library(${PROJECT_NAME} STATIC ${FCL_HEADERS} ${FCL_SOURCE_CODE})
-else()
-  add_library(${PROJECT_NAME} SHARED ${FCL_HEADERS} ${FCL_SOURCE_CODE})
-endif()
+#
+# Software License Agreement (BSD License)
+#
+#  Copyright (c) 2014 CNRS-LAAS
+#  Author: Florent Lamiraux
+#  All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above
+#     copyright notice, this list of conditions and the following
+#     disclaimer in the documentation and/or other materials provided
+#     with the distribution.
+#   * Neither the name of CNRS-LAAS. nor the names of its
+#     contributors may be used to endorse or promote products derived
+#     from this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+#  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+#  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+#  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+#  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+#  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+#  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+#  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+#  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
 
-target_link_libraries(${PROJECT_NAME} ${CCD_LIBRARIES} ${OCTOMAP_LIBRARIES} ${Boost_LIBRARIES})
+set(LIBRARY_NAME ${PROJECT_NAME})
+set(${LIBRARY_NAME}_SOURCES
+  collision.cpp
+  distance_func_matrix.cpp
+  ccd/taylor_matrix.cpp
+  ccd/taylor_model.cpp
+  ccd/interval.cpp
+  ccd/interval_vector.cpp
+  ccd/conservative_advancement.cpp
+  ccd/taylor_vector.cpp
+  ccd/interval_matrix.cpp
+  ccd/interpolation/interpolation_linear.cpp
+  ccd/interpolation/interpolation_factory.cpp
+  ccd/interpolation/interpolation.cpp
+  ccd/motion.cpp
+  collision_data.cpp
+  collision_node.cpp
+  BV/RSS.cpp
+  BV/AABB.cpp
+  BV/kIOS.cpp
+  BV/kDOP.cpp
+  BV/OBBRSS.cpp
+  BV/OBB.cpp
+  narrowphase/gjk_libccd.cpp
+  narrowphase/narrowphase.cpp
+  narrowphase/gjk.cpp
+  broadphase/broadphase_bruteforce.cpp
+  broadphase/interval_tree.cpp
+  broadphase/broadphase_SaP.cpp
+  broadphase/broadphase_dynamic_AABB_tree.cpp
+  broadphase/broadphase_SSaP.cpp
+  broadphase/broadphase_dynamic_AABB_tree_array.cpp
+  broadphase/broadphase_interval_tree.cpp
+  broadphase/broadphase_spatialhash.cpp
+  broadphase/hierarchy_tree.cpp
+  shape/geometric_shapes.cpp
+  shape/geometric_shapes_utility.cpp
+  distance_capsule_capsule.cpp
+  intersect.cpp
+  math/transform.cpp
+  math/sampling.cpp
+  traversal/traversal_node_setup.cpp
+  traversal/traversal_node_bvhs.cpp
+  traversal/traversal_recurse.cpp
+  traversal/traversal_node_base.cpp
+  profile.cpp
+  continuous_collision.cpp
+  articulated_model/link.cpp
+  articulated_model/model.cpp
+  articulated_model/model_config.cpp
+  articulated_model/joint.cpp
+  articulated_model/joint_config.cpp
+  distance.cpp
+  BVH/BVH_utility.cpp
+  BVH/BV_fitter.cpp
+  BVH/BVH_model.cpp
+  BVH/BV_splitter.cpp
+  collision_func_matrix.cpp
+  )
 
-install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib/ LIBRARY DESTINATION lib/)
+# Declare boost include directories
+include_directories(${Boost_INCLUDE_DIRS})
+link_directories(${Boost_LIBRARY_DIRS})
+
+add_library(${LIBRARY_NAME}
+  SHARED
+  ${${LIBRARY_NAME}_SOURCES}
+  )
+TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${Boost_LIBRARIES})
+PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} ccd)
+PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} octomap)
+#PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} flann)
+
+
+install(TARGETS ${LIBRARY_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index f12ba283..9efad9f8 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,26 +1,18 @@
+config_files(fcl_resources/config.h)
+
 macro(add_fcl_test test_name)
+  MESSAGE("add_executable ${ARGV}")
   add_executable(${ARGV})
   target_link_libraries(${test_name}
     fcl
-    ${Boost_SYSTEM_LIBRARY}
-    ${Boost_THREAD_LIBRARY}
-    ${Boost_DATE_TIME_LIBRARY}
-    ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
+    ${Boost_LIBRARIES}
+    )
   add_test(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
 endmacro(add_fcl_test)
 
-# configure location of resources
-file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/fcl_resources" TEST_RESOURCES_SRC_DIR)
-file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/fcl_resources" TEST_RESOURCES_BIN_DIR)
-if(WIN32)
-    # Correct directory separator for Windows
-    string(REPLACE "\\" "\\\\" TEST_RESOURCES_SRC_DIR ${TEST_RESOURCES_SRC_DIR})
-    string(REPLACE "\\" "\\\\" TEST_RESOURCES_BIN_DIR ${TEST_RESOURCES_BIN_DIR})
-endif(WIN32)
-configure_file("${TEST_RESOURCES_SRC_DIR}/config.h.in" "${TEST_RESOURCES_BIN_DIR}/config.h")
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+include_directories(${Boost_INCLUDE_DIRS})
 
-include_directories(.)
-include_directories("${CMAKE_CURRENT_BINARY_DIR}")
 
 add_fcl_test(test_fcl_collision test_fcl_collision.cpp test_fcl_utility.cpp)
 add_fcl_test(test_fcl_distance test_fcl_distance.cpp test_fcl_utility.cpp)
@@ -43,14 +35,3 @@ if (FCL_HAVE_OCTOMAP)
   add_fcl_test(test_fcl_octomap test_fcl_octomap.cpp test_fcl_utility.cpp)
 endif()
 
-#if (FCL_HAVE_TINYXML)
-#  add_executable(test_fcl_xmldata test_fcl_xmldata.cpp test_fcl_utility.cpp libsvm/svm.cpp)
-#  target_link_libraries(test_fcl_xmldata
-#    fcl
-#    ${TINYXML_LIBRARY_DIRS}
-#    ${Boost_SYSTEM_LIBRARY}
-#    ${Boost_THREAD_LIBRARY}
-#    ${Boost_DATE_TIME_LIBRARY}
-#    ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
-#  add_test(test_fcl_xmldata ${EXECUTABLE_OUTPUT_PATH}/test_fcl_xmldata)
-#endif()
diff --git a/test/fcl_resources/config.h.in b/test/fcl_resources/config.h.in
index 848ab014..0f876877 100644
--- a/test/fcl_resources/config.h.in
+++ b/test/fcl_resources/config.h.in
@@ -37,5 +37,5 @@
 #ifndef FCL_TEST_RESOURCES_CONFIG_
 #define FCL_TEST_RESOURCES_CONFIG_
 
-#define TEST_RESOURCES_DIR "@TEST_RESOURCES_SRC_DIR@"
+#define TEST_RESOURCES_DIR "@PROJECT_SOURCE_DIR@/test/fcl_resources"
 #endif
diff --git a/test/test_fcl_box_box_distance.cpp b/test/test_fcl_box_box_distance.cpp
index 9a05b58b..67bf84dc 100644
--- a/test/test_fcl_box_box_distance.cpp
+++ b/test/test_fcl_box_box_distance.cpp
@@ -34,10 +34,10 @@
 
 /** \author Florent Lamiraux <florent@laas.fr> */
 
-#define BOOST_TEST_MODULE "FCL_BOX_BOX"
+#define BOOST_TEST_MODULE FCL_BOX_BOX
 #define CHECK_CLOSE_TO_0(x, eps) BOOST_CHECK_CLOSE ((x + 1.0), (1.0), (eps))
 
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include <cmath>
 #include <fcl/distance.h>
diff --git a/test/test_fcl_broadphase.cpp b/test/test_fcl_broadphase.cpp
index 91d24bb4..d94fbbf9 100644
--- a/test/test_fcl_broadphase.cpp
+++ b/test/test_fcl_broadphase.cpp
@@ -37,7 +37,7 @@
 
 
 #define BOOST_TEST_MODULE "FCL_BROADPHASE"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "fcl/config.h"
 #include "fcl/broadphase/broadphase.h"
diff --git a/test/test_fcl_capsule_box_1.cpp b/test/test_fcl_capsule_box_1.cpp
index fa469a6b..154409f4 100644
--- a/test/test_fcl_capsule_box_1.cpp
+++ b/test/test_fcl_capsule_box_1.cpp
@@ -37,7 +37,7 @@
 
 #define BOOST_TEST_MODULE "FCL_GEOMETRIC_SHAPES"
 #define CHECK_CLOSE_TO_0(x, eps) BOOST_CHECK_CLOSE ((x + 1.0), (1.0), (eps))
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include <cmath>
 #include <fcl/distance.h>
diff --git a/test/test_fcl_capsule_box_2.cpp b/test/test_fcl_capsule_box_2.cpp
index 64f00995..87959192 100644
--- a/test/test_fcl_capsule_box_2.cpp
+++ b/test/test_fcl_capsule_box_2.cpp
@@ -37,7 +37,7 @@
 
 #define BOOST_TEST_MODULE "FCL_GEOMETRIC_SHAPES"
 #define CHECK_CLOSE_TO_0(x, eps) BOOST_CHECK_CLOSE ((x + 1.0), (1.0), (eps))
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include <cmath>
 #include <fcl/distance.h>
diff --git a/test/test_fcl_capsule_capsule.cpp b/test/test_fcl_capsule_capsule.cpp
index 4e77a438..8de1f641 100644
--- a/test/test_fcl_capsule_capsule.cpp
+++ b/test/test_fcl_capsule_capsule.cpp
@@ -38,7 +38,7 @@
 #define BOOST_TEST_MODULE "FCL_CAPSULE_CAPSULE"
 #define CHECK_CLOSE_TO_0(x, eps) BOOST_CHECK_CLOSE ((x + 1.0), (1.0), (eps))
 
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include <cmath>
 #include <fcl/distance.h>
diff --git a/test/test_fcl_collision.cpp b/test/test_fcl_collision.cpp
index a3c5d6fa..74fdd850 100644
--- a/test/test_fcl_collision.cpp
+++ b/test/test_fcl_collision.cpp
@@ -36,7 +36,7 @@
 /** \author Jia Pan */
 
 #define BOOST_TEST_MODULE "FCL_COLLISION"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "fcl/traversal/traversal_node_bvhs.h"
 #include "fcl/traversal/traversal_node_setup.h"
diff --git a/test/test_fcl_distance.cpp b/test/test_fcl_distance.cpp
index 4bfa0156..23aecc6c 100644
--- a/test/test_fcl_distance.cpp
+++ b/test/test_fcl_distance.cpp
@@ -36,7 +36,7 @@
 /** \author Jia Pan */
 
 #define BOOST_TEST_MODULE "FCL_DISTANCE"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "fcl/traversal/traversal_node_bvhs.h"
 #include "fcl/traversal/traversal_node_setup.h"
diff --git a/test/test_fcl_frontlist.cpp b/test/test_fcl_frontlist.cpp
index 041cf632..fc4d61db 100644
--- a/test/test_fcl_frontlist.cpp
+++ b/test/test_fcl_frontlist.cpp
@@ -37,7 +37,7 @@
 
 
 #define BOOST_TEST_MODULE "FCL_FRONT_LIST"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "fcl/traversal/traversal_node_bvhs.h"
 #include "fcl/traversal/traversal_node_setup.h"
diff --git a/test/test_fcl_geometric_shapes.cpp b/test/test_fcl_geometric_shapes.cpp
index f3f0d689..92c30dc8 100644
--- a/test/test_fcl_geometric_shapes.cpp
+++ b/test/test_fcl_geometric_shapes.cpp
@@ -37,7 +37,7 @@
 
 
 #define BOOST_TEST_MODULE "FCL_GEOMETRIC_SHAPES"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "fcl/narrowphase/narrowphase.h"
 #include "fcl/collision.h"
diff --git a/test/test_fcl_math.cpp b/test/test_fcl_math.cpp
index 9270213e..f26cfb84 100644
--- a/test/test_fcl_math.cpp
+++ b/test/test_fcl_math.cpp
@@ -35,7 +35,7 @@
 
 
 #define BOOST_TEST_MODULE "FCL_MATH"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #if FCL_HAVE_SSE
   #include "fcl/simd/math_simd_details.h"
diff --git a/test/test_fcl_octomap.cpp b/test/test_fcl_octomap.cpp
index 0d4b49cc..fe826b2e 100644
--- a/test/test_fcl_octomap.cpp
+++ b/test/test_fcl_octomap.cpp
@@ -36,7 +36,7 @@
 /** \author Jia Pan */
 
 #define BOOST_TEST_MODULE "FCL_OCTOMAP"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "fcl/config.h"
 #include "fcl/octree.h"
diff --git a/test/test_fcl_shape_mesh_consistency.cpp b/test/test_fcl_shape_mesh_consistency.cpp
index 552f3fe1..1cf09511 100644
--- a/test/test_fcl_shape_mesh_consistency.cpp
+++ b/test/test_fcl_shape_mesh_consistency.cpp
@@ -36,7 +36,7 @@
 /** \author Jia Pan */
 
 #define BOOST_TEST_MODULE "FCL_SHAPE_MESH_CONSISTENCY"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "fcl/narrowphase/narrowphase.h"
 #include "fcl/shape/geometric_shape_to_BVH_model.h"
diff --git a/test/test_fcl_simple.cpp b/test/test_fcl_simple.cpp
index 37688dd5..45dc3493 100644
--- a/test/test_fcl_simple.cpp
+++ b/test/test_fcl_simple.cpp
@@ -1,5 +1,5 @@
 #define BOOST_TEST_MODULE "FCL_SIMPLE"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "fcl/intersect.h"
 #include "fcl/collision.h"
diff --git a/test/test_fcl_sphere_capsule.cpp b/test/test_fcl_sphere_capsule.cpp
index e9612b39..4c040c5d 100644
--- a/test/test_fcl_sphere_capsule.cpp
+++ b/test/test_fcl_sphere_capsule.cpp
@@ -36,7 +36,7 @@
 /** \author Martin Felis <martin.felis@iwr.uni-heidelberg.de> */
 
 #define BOOST_TEST_MODULE "FCL_SPHERE_CAPSULE"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "fcl/collision.h"
 #include "fcl/shape/geometric_shapes.h"
-- 
GitLab