From 56e53d291b65f1af18d136816d0ce3745cb35d9d Mon Sep 17 00:00:00 2001
From: Guilhem Saurel <guilhem.saurel@laas.fr>
Date: Fri, 19 Jul 2024 13:55:00 +0200
Subject: [PATCH] hpp-fcl compatibility (#1)

* hpp-fcl-compat: headers

* hpp-fcl-compat: python

* hpp-fcl-compat: CMake

* hpp-fcl-compat: skip serialization

* Doc: no automoc for doxygen 1.9.8 and 1.10.0

And avoid those in conda environments

Co-authored-by: Joris Vaillant <joris.vaillant@inria.fr>

---------

Co-authored-by: Joris Vaillant <joris.vaillant@inria.fr>
---
 .../conda/environment_macos_linux.yml         |   2 +-
 .../workflows/conda/environment_windows.yml   |   2 +-
 CMakeLists.txt                                | 138 ++++++++++++++++++
 hpp-fclConfig.cmake                           |   6 +
 include/coal/serialization/eigen.h            |   6 +
 include/hpp/fcl/BV/AABB.h                     |   2 +
 include/hpp/fcl/BV/BV.h                       |   2 +
 include/hpp/fcl/BV/BV_node.h                  |   2 +
 include/hpp/fcl/BV/OBB.h                      |   2 +
 include/hpp/fcl/BV/OBBRSS.h                   |   2 +
 include/hpp/fcl/BV/RSS.h                      |   2 +
 include/hpp/fcl/BV/kDOP.h                     |   2 +
 include/hpp/fcl/BV/kIOS.h                     |   2 +
 include/hpp/fcl/BVH/BVH_front.h               |   2 +
 include/hpp/fcl/BVH/BVH_internal.h            |   2 +
 include/hpp/fcl/BVH/BVH_model.h               |   2 +
 include/hpp/fcl/BVH/BVH_utility.h             |   2 +
 include/hpp/fcl/broadphase/broadphase.h       |   2 +
 include/hpp/fcl/broadphase/broadphase_SSaP.h  |   2 +
 include/hpp/fcl/broadphase/broadphase_SaP.h   |   2 +
 .../fcl/broadphase/broadphase_bruteforce.h    |   2 +
 .../hpp/fcl/broadphase/broadphase_callbacks.h |   2 +
 .../broadphase/broadphase_collision_manager.h |   2 +
 ...adphase_continuous_collision_manager-inl.h |   2 +
 .../broadphase_continuous_collision_manager.h |   2 +
 .../broadphase_dynamic_AABB_tree-inl.h        |   2 +
 .../broadphase/broadphase_dynamic_AABB_tree.h |   2 +
 .../broadphase_dynamic_AABB_tree_array-inl.h  |   2 +
 .../broadphase_dynamic_AABB_tree_array.h      |   2 +
 .../fcl/broadphase/broadphase_interval_tree.h |   2 +
 .../broadphase/broadphase_spatialhash-inl.h   |   2 +
 .../fcl/broadphase/broadphase_spatialhash.h   |   2 +
 .../broadphase/default_broadphase_callbacks.h |   2 +
 .../broadphase/detail/hierarchy_tree-inl.h    |   2 +
 .../fcl/broadphase/detail/hierarchy_tree.h    |   2 +
 .../detail/hierarchy_tree_array-inl.h         |   2 +
 .../broadphase/detail/hierarchy_tree_array.h  |   2 +
 .../hpp/fcl/broadphase/detail/interval_tree.h |   2 +
 .../broadphase/detail/interval_tree_node.h    |   2 +
 .../hpp/fcl/broadphase/detail/morton-inl.h    |   2 +
 include/hpp/fcl/broadphase/detail/morton.h    |   2 +
 .../hpp/fcl/broadphase/detail/node_base-inl.h |   2 +
 include/hpp/fcl/broadphase/detail/node_base.h |   2 +
 .../broadphase/detail/node_base_array-inl.h   |   2 +
 .../fcl/broadphase/detail/node_base_array.h   |   2 +
 .../broadphase/detail/simple_hash_table-inl.h |   2 +
 .../fcl/broadphase/detail/simple_hash_table.h |   2 +
 .../broadphase/detail/simple_interval-inl.h   |   2 +
 .../fcl/broadphase/detail/simple_interval.h   |   2 +
 .../broadphase/detail/sparse_hash_table-inl.h |   2 +
 .../fcl/broadphase/detail/sparse_hash_table.h |   2 +
 .../fcl/broadphase/detail/spatial_hash-inl.h  |   2 +
 .../hpp/fcl/broadphase/detail/spatial_hash.h  |   2 +
 include/hpp/fcl/coal.hpp                      |  15 ++
 include/hpp/fcl/collision.h                   |   2 +
 include/hpp/fcl/collision_data.h              |   2 +
 include/hpp/fcl/collision_func_matrix.h       |   2 +
 include/hpp/fcl/collision_object.h            |   2 +
 include/hpp/fcl/collision_utility.h           |   2 +
 include/hpp/fcl/config.hh                     |   2 +
 include/hpp/fcl/contact_patch.h               |   2 +
 .../fcl/contact_patch/contact_patch_solver.h  |   2 +
 .../contact_patch/contact_patch_solver.hxx    |   2 +
 include/hpp/fcl/contact_patch_func_matrix.h   |   2 +
 include/hpp/fcl/data_types.h                  |   2 +
 include/hpp/fcl/deprecated.hh                 |   2 +
 include/hpp/fcl/distance.h                    |   2 +
 include/hpp/fcl/distance_func_matrix.h        |   2 +
 include/hpp/fcl/fwd.hh                        |   2 +
 include/hpp/fcl/hfield.h                      |   2 +
 include/hpp/fcl/internal/BV_fitter.h          |   2 +
 include/hpp/fcl/internal/BV_splitter.h        |   2 +
 include/hpp/fcl/internal/intersect.h          |   2 +
 .../internal/shape_shape_contact_patch_func.h |   2 +
 include/hpp/fcl/internal/shape_shape_func.h   |   2 +
 include/hpp/fcl/internal/tools.h              |   2 +
 include/hpp/fcl/internal/traversal.h          |   2 +
 .../hpp/fcl/internal/traversal_node_base.h    |   2 +
 .../fcl/internal/traversal_node_bvh_shape.h   |   2 +
 .../hpp/fcl/internal/traversal_node_bvhs.h    |   2 +
 .../internal/traversal_node_hfield_shape.h    |   2 +
 .../hpp/fcl/internal/traversal_node_octree.h  |   2 +
 .../hpp/fcl/internal/traversal_node_setup.h   |   2 +
 .../hpp/fcl/internal/traversal_node_shapes.h  |   2 +
 include/hpp/fcl/internal/traversal_recurse.h  |   2 +
 include/hpp/fcl/logging.h                     |   2 +
 include/hpp/fcl/math/matrix_3f.h              |   2 +
 include/hpp/fcl/math/transform.h              |   2 +
 include/hpp/fcl/math/types.h                  |   2 +
 include/hpp/fcl/math/vec_3f.h                 |   2 +
 include/hpp/fcl/mesh_loader/assimp.h          |   2 +
 include/hpp/fcl/mesh_loader/loader.h          |   2 +
 include/hpp/fcl/narrowphase/gjk.h             |   2 +
 .../fcl/narrowphase/minkowski_difference.h    |   2 +
 include/hpp/fcl/narrowphase/narrowphase.h     |   2 +
 .../fcl/narrowphase/narrowphase_defaults.h    |   2 +
 .../hpp/fcl/narrowphase/support_functions.h   |   2 +
 include/hpp/fcl/octree.h                      |   2 +
 include/hpp/fcl/serialization/AABB.h          |   2 +
 include/hpp/fcl/serialization/BVH_model.h     |   2 +
 include/hpp/fcl/serialization/BV_node.h       |   2 +
 include/hpp/fcl/serialization/BV_splitter.h   |   2 +
 include/hpp/fcl/serialization/OBB.h           |   2 +
 include/hpp/fcl/serialization/OBBRSS.h        |   2 +
 include/hpp/fcl/serialization/RSS.h           |   2 +
 include/hpp/fcl/serialization/archive.h       |   2 +
 .../hpp/fcl/serialization/collision_data.h    |   2 +
 .../hpp/fcl/serialization/collision_object.h  |   2 +
 include/hpp/fcl/serialization/contact_patch.h |   2 +
 include/hpp/fcl/serialization/convex.h        |   2 +
 include/hpp/fcl/serialization/eigen.h         |   2 +
 include/hpp/fcl/serialization/fwd.h           |   2 +
 .../hpp/fcl/serialization/geometric_shapes.h  |   2 +
 include/hpp/fcl/serialization/hfield.h        |   2 +
 include/hpp/fcl/serialization/kDOP.h          |   2 +
 include/hpp/fcl/serialization/kIOS.h          |   2 +
 include/hpp/fcl/serialization/memory.h        |   2 +
 include/hpp/fcl/serialization/octree.h        |   2 +
 include/hpp/fcl/serialization/quadrilateral.h |   2 +
 include/hpp/fcl/serialization/serializer.h    |   2 +
 include/hpp/fcl/serialization/transform.h     |   2 +
 include/hpp/fcl/serialization/triangle.h      |   2 +
 include/hpp/fcl/shape/convex.h                |   2 +
 include/hpp/fcl/shape/details/convex.hxx      |   2 +
 .../fcl/shape/geometric_shape_to_BVH_model.h  |   2 +
 include/hpp/fcl/shape/geometric_shapes.h      |   2 +
 .../hpp/fcl/shape/geometric_shapes_traits.h   |   2 +
 .../hpp/fcl/shape/geometric_shapes_utility.h  |   2 +
 include/hpp/fcl/timings.h                     |   2 +
 include/hpp/fcl/warning.hh                    |   2 +
 python/CMakeLists.txt                         |  14 ++
 python/hppfcl/__init__.py                     |   9 ++
 python/hppfcl/viewer.py                       |   7 +
 133 files changed, 445 insertions(+), 2 deletions(-)
 create mode 100644 hpp-fclConfig.cmake
 create mode 100644 include/hpp/fcl/BV/AABB.h
 create mode 100644 include/hpp/fcl/BV/BV.h
 create mode 100644 include/hpp/fcl/BV/BV_node.h
 create mode 100644 include/hpp/fcl/BV/OBB.h
 create mode 100644 include/hpp/fcl/BV/OBBRSS.h
 create mode 100644 include/hpp/fcl/BV/RSS.h
 create mode 100644 include/hpp/fcl/BV/kDOP.h
 create mode 100644 include/hpp/fcl/BV/kIOS.h
 create mode 100644 include/hpp/fcl/BVH/BVH_front.h
 create mode 100644 include/hpp/fcl/BVH/BVH_internal.h
 create mode 100644 include/hpp/fcl/BVH/BVH_model.h
 create mode 100644 include/hpp/fcl/BVH/BVH_utility.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_SSaP.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_SaP.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_bruteforce.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_callbacks.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_collision_manager.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_continuous_collision_manager-inl.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_continuous_collision_manager.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_interval_tree.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_spatialhash-inl.h
 create mode 100644 include/hpp/fcl/broadphase/broadphase_spatialhash.h
 create mode 100644 include/hpp/fcl/broadphase/default_broadphase_callbacks.h
 create mode 100644 include/hpp/fcl/broadphase/detail/hierarchy_tree-inl.h
 create mode 100644 include/hpp/fcl/broadphase/detail/hierarchy_tree.h
 create mode 100644 include/hpp/fcl/broadphase/detail/hierarchy_tree_array-inl.h
 create mode 100644 include/hpp/fcl/broadphase/detail/hierarchy_tree_array.h
 create mode 100644 include/hpp/fcl/broadphase/detail/interval_tree.h
 create mode 100644 include/hpp/fcl/broadphase/detail/interval_tree_node.h
 create mode 100644 include/hpp/fcl/broadphase/detail/morton-inl.h
 create mode 100644 include/hpp/fcl/broadphase/detail/morton.h
 create mode 100644 include/hpp/fcl/broadphase/detail/node_base-inl.h
 create mode 100644 include/hpp/fcl/broadphase/detail/node_base.h
 create mode 100644 include/hpp/fcl/broadphase/detail/node_base_array-inl.h
 create mode 100644 include/hpp/fcl/broadphase/detail/node_base_array.h
 create mode 100644 include/hpp/fcl/broadphase/detail/simple_hash_table-inl.h
 create mode 100644 include/hpp/fcl/broadphase/detail/simple_hash_table.h
 create mode 100644 include/hpp/fcl/broadphase/detail/simple_interval-inl.h
 create mode 100644 include/hpp/fcl/broadphase/detail/simple_interval.h
 create mode 100644 include/hpp/fcl/broadphase/detail/sparse_hash_table-inl.h
 create mode 100644 include/hpp/fcl/broadphase/detail/sparse_hash_table.h
 create mode 100644 include/hpp/fcl/broadphase/detail/spatial_hash-inl.h
 create mode 100644 include/hpp/fcl/broadphase/detail/spatial_hash.h
 create mode 100644 include/hpp/fcl/coal.hpp
 create mode 100644 include/hpp/fcl/collision.h
 create mode 100644 include/hpp/fcl/collision_data.h
 create mode 100644 include/hpp/fcl/collision_func_matrix.h
 create mode 100644 include/hpp/fcl/collision_object.h
 create mode 100644 include/hpp/fcl/collision_utility.h
 create mode 100644 include/hpp/fcl/config.hh
 create mode 100644 include/hpp/fcl/contact_patch.h
 create mode 100644 include/hpp/fcl/contact_patch/contact_patch_solver.h
 create mode 100644 include/hpp/fcl/contact_patch/contact_patch_solver.hxx
 create mode 100644 include/hpp/fcl/contact_patch_func_matrix.h
 create mode 100644 include/hpp/fcl/data_types.h
 create mode 100644 include/hpp/fcl/deprecated.hh
 create mode 100644 include/hpp/fcl/distance.h
 create mode 100644 include/hpp/fcl/distance_func_matrix.h
 create mode 100644 include/hpp/fcl/fwd.hh
 create mode 100644 include/hpp/fcl/hfield.h
 create mode 100644 include/hpp/fcl/internal/BV_fitter.h
 create mode 100644 include/hpp/fcl/internal/BV_splitter.h
 create mode 100644 include/hpp/fcl/internal/intersect.h
 create mode 100644 include/hpp/fcl/internal/shape_shape_contact_patch_func.h
 create mode 100644 include/hpp/fcl/internal/shape_shape_func.h
 create mode 100644 include/hpp/fcl/internal/tools.h
 create mode 100644 include/hpp/fcl/internal/traversal.h
 create mode 100644 include/hpp/fcl/internal/traversal_node_base.h
 create mode 100644 include/hpp/fcl/internal/traversal_node_bvh_shape.h
 create mode 100644 include/hpp/fcl/internal/traversal_node_bvhs.h
 create mode 100644 include/hpp/fcl/internal/traversal_node_hfield_shape.h
 create mode 100644 include/hpp/fcl/internal/traversal_node_octree.h
 create mode 100644 include/hpp/fcl/internal/traversal_node_setup.h
 create mode 100644 include/hpp/fcl/internal/traversal_node_shapes.h
 create mode 100644 include/hpp/fcl/internal/traversal_recurse.h
 create mode 100644 include/hpp/fcl/logging.h
 create mode 100644 include/hpp/fcl/math/matrix_3f.h
 create mode 100644 include/hpp/fcl/math/transform.h
 create mode 100644 include/hpp/fcl/math/types.h
 create mode 100644 include/hpp/fcl/math/vec_3f.h
 create mode 100644 include/hpp/fcl/mesh_loader/assimp.h
 create mode 100644 include/hpp/fcl/mesh_loader/loader.h
 create mode 100644 include/hpp/fcl/narrowphase/gjk.h
 create mode 100644 include/hpp/fcl/narrowphase/minkowski_difference.h
 create mode 100644 include/hpp/fcl/narrowphase/narrowphase.h
 create mode 100644 include/hpp/fcl/narrowphase/narrowphase_defaults.h
 create mode 100644 include/hpp/fcl/narrowphase/support_functions.h
 create mode 100644 include/hpp/fcl/octree.h
 create mode 100644 include/hpp/fcl/serialization/AABB.h
 create mode 100644 include/hpp/fcl/serialization/BVH_model.h
 create mode 100644 include/hpp/fcl/serialization/BV_node.h
 create mode 100644 include/hpp/fcl/serialization/BV_splitter.h
 create mode 100644 include/hpp/fcl/serialization/OBB.h
 create mode 100644 include/hpp/fcl/serialization/OBBRSS.h
 create mode 100644 include/hpp/fcl/serialization/RSS.h
 create mode 100644 include/hpp/fcl/serialization/archive.h
 create mode 100644 include/hpp/fcl/serialization/collision_data.h
 create mode 100644 include/hpp/fcl/serialization/collision_object.h
 create mode 100644 include/hpp/fcl/serialization/contact_patch.h
 create mode 100644 include/hpp/fcl/serialization/convex.h
 create mode 100644 include/hpp/fcl/serialization/eigen.h
 create mode 100644 include/hpp/fcl/serialization/fwd.h
 create mode 100644 include/hpp/fcl/serialization/geometric_shapes.h
 create mode 100644 include/hpp/fcl/serialization/hfield.h
 create mode 100644 include/hpp/fcl/serialization/kDOP.h
 create mode 100644 include/hpp/fcl/serialization/kIOS.h
 create mode 100644 include/hpp/fcl/serialization/memory.h
 create mode 100644 include/hpp/fcl/serialization/octree.h
 create mode 100644 include/hpp/fcl/serialization/quadrilateral.h
 create mode 100644 include/hpp/fcl/serialization/serializer.h
 create mode 100644 include/hpp/fcl/serialization/transform.h
 create mode 100644 include/hpp/fcl/serialization/triangle.h
 create mode 100644 include/hpp/fcl/shape/convex.h
 create mode 100644 include/hpp/fcl/shape/details/convex.hxx
 create mode 100644 include/hpp/fcl/shape/geometric_shape_to_BVH_model.h
 create mode 100644 include/hpp/fcl/shape/geometric_shapes.h
 create mode 100644 include/hpp/fcl/shape/geometric_shapes_traits.h
 create mode 100644 include/hpp/fcl/shape/geometric_shapes_utility.h
 create mode 100644 include/hpp/fcl/timings.h
 create mode 100644 include/hpp/fcl/warning.hh
 create mode 100644 python/hppfcl/__init__.py
 create mode 100644 python/hppfcl/viewer.py

diff --git a/.github/workflows/conda/environment_macos_linux.yml b/.github/workflows/conda/environment_macos_linux.yml
index c716d643..34a295ba 100644
--- a/.github/workflows/conda/environment_macos_linux.yml
+++ b/.github/workflows/conda/environment_macos_linux.yml
@@ -10,7 +10,7 @@ dependencies:
   - boost
   - eigenpy
   - python
-  - doxygen
+  - doxygen<1.9.8|>=1.11
   - lxml
   - pylatexenc
   - qhull
diff --git a/.github/workflows/conda/environment_windows.yml b/.github/workflows/conda/environment_windows.yml
index 92c01c42..febe634e 100644
--- a/.github/workflows/conda/environment_windows.yml
+++ b/.github/workflows/conda/environment_windows.yml
@@ -10,7 +10,7 @@ dependencies:
   - boost
   - eigenpy
   - python
-  - doxygen
+  - doxygen<1.9.8|>=1.11
   - lxml
   - pylatexenc
   - qhull
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c6481a3f..26e9bb0e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -309,6 +309,136 @@ SET(${PROJECT_NAME}_HEADERS
   include/coal/timings.h
   )
 
+if(COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL)
+  LIST(APPEND ${PROJECT_NAME}_HEADERS
+    include/hpp/fcl/broadphase/broadphase_bruteforce.h
+    include/hpp/fcl/broadphase/broadphase_callbacks.h
+    include/hpp/fcl/broadphase/broadphase_collision_manager.h
+    include/hpp/fcl/broadphase/broadphase_continuous_collision_manager.h
+    include/hpp/fcl/broadphase/broadphase_continuous_collision_manager-inl.h
+    include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h
+    include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h
+    include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree.h
+    include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h
+    include/hpp/fcl/broadphase/broadphase.h
+    include/hpp/fcl/broadphase/broadphase_interval_tree.h
+    include/hpp/fcl/broadphase/broadphase_SaP.h
+    include/hpp/fcl/broadphase/broadphase_spatialhash.h
+    include/hpp/fcl/broadphase/broadphase_spatialhash-inl.h
+    include/hpp/fcl/broadphase/broadphase_SSaP.h
+    include/hpp/fcl/broadphase/default_broadphase_callbacks.h
+    include/hpp/fcl/broadphase/detail/hierarchy_tree_array.h
+    include/hpp/fcl/broadphase/detail/hierarchy_tree_array-inl.h
+    include/hpp/fcl/broadphase/detail/hierarchy_tree.h
+    include/hpp/fcl/broadphase/detail/hierarchy_tree-inl.h
+    include/hpp/fcl/broadphase/detail/interval_tree.h
+    include/hpp/fcl/broadphase/detail/interval_tree_node.h
+    include/hpp/fcl/broadphase/detail/morton.h
+    include/hpp/fcl/broadphase/detail/morton-inl.h
+    include/hpp/fcl/broadphase/detail/node_base_array.h
+    include/hpp/fcl/broadphase/detail/node_base_array-inl.h
+    include/hpp/fcl/broadphase/detail/node_base.h
+    include/hpp/fcl/broadphase/detail/node_base-inl.h
+    include/hpp/fcl/broadphase/detail/simple_hash_table.h
+    include/hpp/fcl/broadphase/detail/simple_hash_table-inl.h
+    include/hpp/fcl/broadphase/detail/simple_interval.h
+    include/hpp/fcl/broadphase/detail/simple_interval-inl.h
+    include/hpp/fcl/broadphase/detail/sparse_hash_table.h
+    include/hpp/fcl/broadphase/detail/sparse_hash_table-inl.h
+    include/hpp/fcl/broadphase/detail/spatial_hash.h
+    include/hpp/fcl/broadphase/detail/spatial_hash-inl.h
+    include/hpp/fcl/BV/AABB.h
+    include/hpp/fcl/BV/BV.h
+    include/hpp/fcl/BV/BV_node.h
+    include/hpp/fcl/BVH/BVH_front.h
+    include/hpp/fcl/BVH/BVH_internal.h
+    include/hpp/fcl/BVH/BVH_model.h
+    include/hpp/fcl/BVH/BVH_utility.h
+    include/hpp/fcl/BV/kDOP.h
+    include/hpp/fcl/BV/kIOS.h
+    include/hpp/fcl/BV/OBB.h
+    include/hpp/fcl/BV/OBBRSS.h
+    include/hpp/fcl/BV/RSS.h
+    include/hpp/fcl/coal.hpp
+    include/hpp/fcl/collision_data.h
+    include/hpp/fcl/collision_func_matrix.h
+    include/hpp/fcl/collision.h
+    include/hpp/fcl/collision_object.h
+    include/hpp/fcl/collision_utility.h
+    include/hpp/fcl/config.hh
+    include/hpp/fcl/contact_patch/contact_patch_solver.h
+    include/hpp/fcl/contact_patch/contact_patch_solver.hxx
+    include/hpp/fcl/contact_patch_func_matrix.h
+    include/hpp/fcl/contact_patch.h
+    include/hpp/fcl/data_types.h
+    include/hpp/fcl/deprecated.hh
+    include/hpp/fcl/distance_func_matrix.h
+    include/hpp/fcl/distance.h
+    include/hpp/fcl/fwd.hh
+    include/hpp/fcl/hfield.h
+    include/hpp/fcl/internal/BV_fitter.h
+    include/hpp/fcl/internal/BV_splitter.h
+    include/hpp/fcl/internal/intersect.h
+    include/hpp/fcl/internal/shape_shape_contact_patch_func.h
+    include/hpp/fcl/internal/shape_shape_func.h
+    include/hpp/fcl/internal/tools.h
+    include/hpp/fcl/internal/traversal.h
+    include/hpp/fcl/internal/traversal_node_base.h
+    include/hpp/fcl/internal/traversal_node_bvhs.h
+    include/hpp/fcl/internal/traversal_node_bvh_shape.h
+    include/hpp/fcl/internal/traversal_node_hfield_shape.h
+    include/hpp/fcl/internal/traversal_node_setup.h
+    include/hpp/fcl/internal/traversal_node_shapes.h
+    include/hpp/fcl/internal/traversal_recurse.h
+    include/hpp/fcl/internal/traversal_node_octree.h
+    include/hpp/fcl/logging.h
+    include/hpp/fcl/math/matrix_3f.h
+    include/hpp/fcl/math/transform.h
+    include/hpp/fcl/math/types.h
+    include/hpp/fcl/math/vec_3f.h
+    include/hpp/fcl/mesh_loader/assimp.h
+    include/hpp/fcl/mesh_loader/loader.h
+    include/hpp/fcl/narrowphase/gjk.h
+    include/hpp/fcl/narrowphase/minkowski_difference.h
+    include/hpp/fcl/narrowphase/narrowphase_defaults.h
+    include/hpp/fcl/narrowphase/narrowphase.h
+    include/hpp/fcl/narrowphase/support_functions.h
+    include/hpp/fcl/octree.h
+    include/hpp/fcl/serialization/AABB.h
+    include/hpp/fcl/serialization/archive.h
+    include/hpp/fcl/serialization/BVH_model.h
+    include/hpp/fcl/serialization/BV_node.h
+    include/hpp/fcl/serialization/BV_splitter.h
+    include/hpp/fcl/serialization/collision_data.h
+    include/hpp/fcl/serialization/collision_object.h
+    include/hpp/fcl/serialization/contact_patch.h
+    include/hpp/fcl/serialization/convex.h
+    include/hpp/fcl/serialization/eigen.h
+    include/hpp/fcl/serialization/fwd.h
+    include/hpp/fcl/serialization/geometric_shapes.h
+    include/hpp/fcl/serialization/hfield.h
+    include/hpp/fcl/serialization/kDOP.h
+    include/hpp/fcl/serialization/kIOS.h
+    include/hpp/fcl/serialization/memory.h
+    include/hpp/fcl/serialization/OBB.h
+    include/hpp/fcl/serialization/OBBRSS.h
+    include/hpp/fcl/serialization/octree.h
+    include/hpp/fcl/serialization/quadrilateral.h
+    include/hpp/fcl/serialization/RSS.h
+    include/hpp/fcl/serialization/serializer.h
+    include/hpp/fcl/serialization/transform.h
+    include/hpp/fcl/serialization/triangle.h
+    include/hpp/fcl/shape/convex.h
+    include/hpp/fcl/shape/details/convex.hxx
+    include/hpp/fcl/shape/geometric_shapes.h
+    include/hpp/fcl/shape/geometric_shapes_traits.h
+    include/hpp/fcl/shape/geometric_shapes_utility.h
+    include/hpp/fcl/shape/geometric_shape_to_BVH_model.h
+    include/hpp/fcl/timings.h
+    include/hpp/fcl/warning.hh
+    )
+endif()
+
 IF(COAL_HAS_OCTOMAP)
   LIST(APPEND ${PROJECT_NAME}_HEADERS
     include/coal/octree.h
@@ -342,3 +472,11 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/ament_prefix_p
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/ament_prefix_path.dsv DESTINATION share/${PROJECT_NAME}/hook)
 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/python_path.dsv "prepend-non-duplicate;PYTHONPATH;${PYTHON_SITELIB}")
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/python_path.dsv DESTINATION share/${PROJECT_NAME}/hook)
+
+if(COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL)
+  include(CMakePackageConfigHelpers)
+  write_basic_package_version_file(hpp-fclConfigVersion.cmake
+      VERSION 3.0.0
+      COMPATIBILITY AnyNewerVersion)
+  install(FILES hpp-fclConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/hpp-fclConfigVersion.cmake DESTINATION lib/cmake/hpp-fcl)
+endif()
diff --git a/hpp-fclConfig.cmake b/hpp-fclConfig.cmake
new file mode 100644
index 00000000..3c30e484
--- /dev/null
+++ b/hpp-fclConfig.cmake
@@ -0,0 +1,6 @@
+# This file provide bacward compatiblity for `find_package(hpp-fcl)`.
+
+message(WARNING "Please update your CMake from 'hpp-fcl' to 'coal'")
+
+find_package(coal REQUIRED)
+add_library(hpp-fcl::hpp-fcl ALIAS coal::coal)
diff --git a/include/coal/serialization/eigen.h b/include/coal/serialization/eigen.h
index e2defdc6..24430cf0 100644
--- a/include/coal/serialization/eigen.h
+++ b/include/coal/serialization/eigen.h
@@ -11,6 +11,12 @@
 #ifndef COAL_SERIALIZATION_EIGEN_H
 #define COAL_SERIALIZATION_EIGEN_H
 
+#ifdef COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL
+#ifdef HPP_FCL_SKIP_EIGEN_BOOST_SERIALIZATION
+#define COAL_SKIP_EIGEN_BOOST_SERIALIZATION
+#endif
+#endif
+
 #ifndef COAL_SKIP_EIGEN_BOOST_SERIALIZATION
 
 #include <Eigen/Dense>
diff --git a/include/hpp/fcl/BV/AABB.h b/include/hpp/fcl/BV/AABB.h
new file mode 100644
index 00000000..c76ec66b
--- /dev/null
+++ b/include/hpp/fcl/BV/AABB.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BV/AABB.h>
diff --git a/include/hpp/fcl/BV/BV.h b/include/hpp/fcl/BV/BV.h
new file mode 100644
index 00000000..cda871c3
--- /dev/null
+++ b/include/hpp/fcl/BV/BV.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BV/BV.h>
diff --git a/include/hpp/fcl/BV/BV_node.h b/include/hpp/fcl/BV/BV_node.h
new file mode 100644
index 00000000..50e3d7ad
--- /dev/null
+++ b/include/hpp/fcl/BV/BV_node.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BV/BV_node.h>
diff --git a/include/hpp/fcl/BV/OBB.h b/include/hpp/fcl/BV/OBB.h
new file mode 100644
index 00000000..003da175
--- /dev/null
+++ b/include/hpp/fcl/BV/OBB.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BV/OBB.h>
diff --git a/include/hpp/fcl/BV/OBBRSS.h b/include/hpp/fcl/BV/OBBRSS.h
new file mode 100644
index 00000000..16b21dbd
--- /dev/null
+++ b/include/hpp/fcl/BV/OBBRSS.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BV/OBBRSS.h>
diff --git a/include/hpp/fcl/BV/RSS.h b/include/hpp/fcl/BV/RSS.h
new file mode 100644
index 00000000..cc6089ba
--- /dev/null
+++ b/include/hpp/fcl/BV/RSS.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BV/RSS.h>
diff --git a/include/hpp/fcl/BV/kDOP.h b/include/hpp/fcl/BV/kDOP.h
new file mode 100644
index 00000000..51a7c44d
--- /dev/null
+++ b/include/hpp/fcl/BV/kDOP.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BV/kDOP.h>
diff --git a/include/hpp/fcl/BV/kIOS.h b/include/hpp/fcl/BV/kIOS.h
new file mode 100644
index 00000000..cc24725d
--- /dev/null
+++ b/include/hpp/fcl/BV/kIOS.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BV/kIOS.h>
diff --git a/include/hpp/fcl/BVH/BVH_front.h b/include/hpp/fcl/BVH/BVH_front.h
new file mode 100644
index 00000000..0d567079
--- /dev/null
+++ b/include/hpp/fcl/BVH/BVH_front.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BVH/BVH_front.h>
diff --git a/include/hpp/fcl/BVH/BVH_internal.h b/include/hpp/fcl/BVH/BVH_internal.h
new file mode 100644
index 00000000..7b24ec33
--- /dev/null
+++ b/include/hpp/fcl/BVH/BVH_internal.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BVH/BVH_internal.h>
diff --git a/include/hpp/fcl/BVH/BVH_model.h b/include/hpp/fcl/BVH/BVH_model.h
new file mode 100644
index 00000000..a069ea96
--- /dev/null
+++ b/include/hpp/fcl/BVH/BVH_model.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BVH/BVH_model.h>
diff --git a/include/hpp/fcl/BVH/BVH_utility.h b/include/hpp/fcl/BVH/BVH_utility.h
new file mode 100644
index 00000000..275a171e
--- /dev/null
+++ b/include/hpp/fcl/BVH/BVH_utility.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/BVH/BVH_utility.h>
diff --git a/include/hpp/fcl/broadphase/broadphase.h b/include/hpp/fcl/broadphase/broadphase.h
new file mode 100644
index 00000000..7834fbe4
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_SSaP.h b/include/hpp/fcl/broadphase/broadphase_SSaP.h
new file mode 100644
index 00000000..23dda8ef
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_SSaP.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_SSaP.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_SaP.h b/include/hpp/fcl/broadphase/broadphase_SaP.h
new file mode 100644
index 00000000..0cdef682
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_SaP.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_SaP.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_bruteforce.h b/include/hpp/fcl/broadphase/broadphase_bruteforce.h
new file mode 100644
index 00000000..5a4811ce
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_bruteforce.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_bruteforce.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_callbacks.h b/include/hpp/fcl/broadphase/broadphase_callbacks.h
new file mode 100644
index 00000000..40b5b0a6
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_callbacks.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_callbacks.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_collision_manager.h b/include/hpp/fcl/broadphase/broadphase_collision_manager.h
new file mode 100644
index 00000000..fe49da05
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_collision_manager.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_collision_manager.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_continuous_collision_manager-inl.h b/include/hpp/fcl/broadphase/broadphase_continuous_collision_manager-inl.h
new file mode 100644
index 00000000..5ee4f15b
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_continuous_collision_manager-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_continuous_collision_manager-inl.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_continuous_collision_manager.h b/include/hpp/fcl/broadphase/broadphase_continuous_collision_manager.h
new file mode 100644
index 00000000..a2f73c0a
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_continuous_collision_manager.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_continuous_collision_manager.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h b/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h
new file mode 100644
index 00000000..167ec3ad
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_dynamic_AABB_tree-inl.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree.h b/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree.h
new file mode 100644
index 00000000..5ce7c99f
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_dynamic_AABB_tree.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h b/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h
new file mode 100644
index 00000000..5e67f252
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_dynamic_AABB_tree_array-inl.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h b/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h
new file mode 100644
index 00000000..5923fd17
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_dynamic_AABB_tree_array.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_interval_tree.h b/include/hpp/fcl/broadphase/broadphase_interval_tree.h
new file mode 100644
index 00000000..d00b1f6d
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_interval_tree.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_interval_tree.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_spatialhash-inl.h b/include/hpp/fcl/broadphase/broadphase_spatialhash-inl.h
new file mode 100644
index 00000000..31917d0a
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_spatialhash-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_spatialhash-inl.h>
diff --git a/include/hpp/fcl/broadphase/broadphase_spatialhash.h b/include/hpp/fcl/broadphase/broadphase_spatialhash.h
new file mode 100644
index 00000000..5ad52607
--- /dev/null
+++ b/include/hpp/fcl/broadphase/broadphase_spatialhash.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/broadphase_spatialhash.h>
diff --git a/include/hpp/fcl/broadphase/default_broadphase_callbacks.h b/include/hpp/fcl/broadphase/default_broadphase_callbacks.h
new file mode 100644
index 00000000..7d78f953
--- /dev/null
+++ b/include/hpp/fcl/broadphase/default_broadphase_callbacks.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/default_broadphase_callbacks.h>
diff --git a/include/hpp/fcl/broadphase/detail/hierarchy_tree-inl.h b/include/hpp/fcl/broadphase/detail/hierarchy_tree-inl.h
new file mode 100644
index 00000000..54b709d7
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/hierarchy_tree-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/hierarchy_tree-inl.h>
diff --git a/include/hpp/fcl/broadphase/detail/hierarchy_tree.h b/include/hpp/fcl/broadphase/detail/hierarchy_tree.h
new file mode 100644
index 00000000..ebacd648
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/hierarchy_tree.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/hierarchy_tree.h>
diff --git a/include/hpp/fcl/broadphase/detail/hierarchy_tree_array-inl.h b/include/hpp/fcl/broadphase/detail/hierarchy_tree_array-inl.h
new file mode 100644
index 00000000..a6923fbb
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/hierarchy_tree_array-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/hierarchy_tree_array-inl.h>
diff --git a/include/hpp/fcl/broadphase/detail/hierarchy_tree_array.h b/include/hpp/fcl/broadphase/detail/hierarchy_tree_array.h
new file mode 100644
index 00000000..e0c9a90a
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/hierarchy_tree_array.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/hierarchy_tree_array.h>
diff --git a/include/hpp/fcl/broadphase/detail/interval_tree.h b/include/hpp/fcl/broadphase/detail/interval_tree.h
new file mode 100644
index 00000000..5480fc00
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/interval_tree.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/interval_tree.h>
diff --git a/include/hpp/fcl/broadphase/detail/interval_tree_node.h b/include/hpp/fcl/broadphase/detail/interval_tree_node.h
new file mode 100644
index 00000000..531898a4
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/interval_tree_node.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/interval_tree_node.h>
diff --git a/include/hpp/fcl/broadphase/detail/morton-inl.h b/include/hpp/fcl/broadphase/detail/morton-inl.h
new file mode 100644
index 00000000..b3ef57cb
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/morton-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/morton-inl.h>
diff --git a/include/hpp/fcl/broadphase/detail/morton.h b/include/hpp/fcl/broadphase/detail/morton.h
new file mode 100644
index 00000000..c0a89c6b
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/morton.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/morton.h>
diff --git a/include/hpp/fcl/broadphase/detail/node_base-inl.h b/include/hpp/fcl/broadphase/detail/node_base-inl.h
new file mode 100644
index 00000000..32602004
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/node_base-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/node_base-inl.h>
diff --git a/include/hpp/fcl/broadphase/detail/node_base.h b/include/hpp/fcl/broadphase/detail/node_base.h
new file mode 100644
index 00000000..b0c8206e
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/node_base.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/node_base.h>
diff --git a/include/hpp/fcl/broadphase/detail/node_base_array-inl.h b/include/hpp/fcl/broadphase/detail/node_base_array-inl.h
new file mode 100644
index 00000000..e66c59cd
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/node_base_array-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/node_base_array-inl.h>
diff --git a/include/hpp/fcl/broadphase/detail/node_base_array.h b/include/hpp/fcl/broadphase/detail/node_base_array.h
new file mode 100644
index 00000000..8ad4c1ed
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/node_base_array.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/node_base_array.h>
diff --git a/include/hpp/fcl/broadphase/detail/simple_hash_table-inl.h b/include/hpp/fcl/broadphase/detail/simple_hash_table-inl.h
new file mode 100644
index 00000000..712c72ec
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/simple_hash_table-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/simple_hash_table-inl.h>
diff --git a/include/hpp/fcl/broadphase/detail/simple_hash_table.h b/include/hpp/fcl/broadphase/detail/simple_hash_table.h
new file mode 100644
index 00000000..678cd34c
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/simple_hash_table.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/simple_hash_table.h>
diff --git a/include/hpp/fcl/broadphase/detail/simple_interval-inl.h b/include/hpp/fcl/broadphase/detail/simple_interval-inl.h
new file mode 100644
index 00000000..b6e1fbd6
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/simple_interval-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/simple_interval-inl.h>
diff --git a/include/hpp/fcl/broadphase/detail/simple_interval.h b/include/hpp/fcl/broadphase/detail/simple_interval.h
new file mode 100644
index 00000000..f0c26e03
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/simple_interval.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/simple_interval.h>
diff --git a/include/hpp/fcl/broadphase/detail/sparse_hash_table-inl.h b/include/hpp/fcl/broadphase/detail/sparse_hash_table-inl.h
new file mode 100644
index 00000000..cabe7e8f
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/sparse_hash_table-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/sparse_hash_table-inl.h>
diff --git a/include/hpp/fcl/broadphase/detail/sparse_hash_table.h b/include/hpp/fcl/broadphase/detail/sparse_hash_table.h
new file mode 100644
index 00000000..9f585fac
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/sparse_hash_table.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/sparse_hash_table.h>
diff --git a/include/hpp/fcl/broadphase/detail/spatial_hash-inl.h b/include/hpp/fcl/broadphase/detail/spatial_hash-inl.h
new file mode 100644
index 00000000..be5a1d87
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/spatial_hash-inl.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/spatial_hash-inl.h>
diff --git a/include/hpp/fcl/broadphase/detail/spatial_hash.h b/include/hpp/fcl/broadphase/detail/spatial_hash.h
new file mode 100644
index 00000000..f4f10af8
--- /dev/null
+++ b/include/hpp/fcl/broadphase/detail/spatial_hash.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/broadphase/detail/spatial_hash.h>
diff --git a/include/hpp/fcl/coal.hpp b/include/hpp/fcl/coal.hpp
new file mode 100644
index 00000000..e3c8845e
--- /dev/null
+++ b/include/hpp/fcl/coal.hpp
@@ -0,0 +1,15 @@
+#ifndef HPP_FCL_COAL_HH
+#define HPP_FCL_COAL_HH
+
+#include <coal/config.hh>
+#include <coal/deprecated.hh>
+
+#define COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL
+
+#pragma message COAL_DEPRECATED_HEADER( \
+    "Please update your includes from 'hpp/fcl' to 'coal'")
+
+#define HPP_FCL_VERSION_AT_LEAST(major, minor, patch) \
+  COAL_VERSION_AT_LEAST(major, minor, patch)
+
+#endif  // COAL_FWD_HH
diff --git a/include/hpp/fcl/collision.h b/include/hpp/fcl/collision.h
new file mode 100644
index 00000000..099670f2
--- /dev/null
+++ b/include/hpp/fcl/collision.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/collision.h>
diff --git a/include/hpp/fcl/collision_data.h b/include/hpp/fcl/collision_data.h
new file mode 100644
index 00000000..185424ac
--- /dev/null
+++ b/include/hpp/fcl/collision_data.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/collision_data.h>
diff --git a/include/hpp/fcl/collision_func_matrix.h b/include/hpp/fcl/collision_func_matrix.h
new file mode 100644
index 00000000..c17b8241
--- /dev/null
+++ b/include/hpp/fcl/collision_func_matrix.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/collision_func_matrix.h>
diff --git a/include/hpp/fcl/collision_object.h b/include/hpp/fcl/collision_object.h
new file mode 100644
index 00000000..245da1c0
--- /dev/null
+++ b/include/hpp/fcl/collision_object.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/collision_object.h>
diff --git a/include/hpp/fcl/collision_utility.h b/include/hpp/fcl/collision_utility.h
new file mode 100644
index 00000000..9043e1f8
--- /dev/null
+++ b/include/hpp/fcl/collision_utility.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/collision_utility.h>
diff --git a/include/hpp/fcl/config.hh b/include/hpp/fcl/config.hh
new file mode 100644
index 00000000..7388d608
--- /dev/null
+++ b/include/hpp/fcl/config.hh
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/config.hh>
diff --git a/include/hpp/fcl/contact_patch.h b/include/hpp/fcl/contact_patch.h
new file mode 100644
index 00000000..fef1ee0d
--- /dev/null
+++ b/include/hpp/fcl/contact_patch.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/contact_patch.h>
diff --git a/include/hpp/fcl/contact_patch/contact_patch_solver.h b/include/hpp/fcl/contact_patch/contact_patch_solver.h
new file mode 100644
index 00000000..f53a9150
--- /dev/null
+++ b/include/hpp/fcl/contact_patch/contact_patch_solver.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/contact_patch/contact_patch_solver.h>
diff --git a/include/hpp/fcl/contact_patch/contact_patch_solver.hxx b/include/hpp/fcl/contact_patch/contact_patch_solver.hxx
new file mode 100644
index 00000000..b73d4e93
--- /dev/null
+++ b/include/hpp/fcl/contact_patch/contact_patch_solver.hxx
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/contact_patch/contact_patch_solver.hxx>
diff --git a/include/hpp/fcl/contact_patch_func_matrix.h b/include/hpp/fcl/contact_patch_func_matrix.h
new file mode 100644
index 00000000..9103090d
--- /dev/null
+++ b/include/hpp/fcl/contact_patch_func_matrix.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/contact_patch_func_matrix.h>
diff --git a/include/hpp/fcl/data_types.h b/include/hpp/fcl/data_types.h
new file mode 100644
index 00000000..690f179c
--- /dev/null
+++ b/include/hpp/fcl/data_types.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/data_types.h>
diff --git a/include/hpp/fcl/deprecated.hh b/include/hpp/fcl/deprecated.hh
new file mode 100644
index 00000000..513abdf6
--- /dev/null
+++ b/include/hpp/fcl/deprecated.hh
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/deprecated.hh>
diff --git a/include/hpp/fcl/distance.h b/include/hpp/fcl/distance.h
new file mode 100644
index 00000000..a8301218
--- /dev/null
+++ b/include/hpp/fcl/distance.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/distance.h>
diff --git a/include/hpp/fcl/distance_func_matrix.h b/include/hpp/fcl/distance_func_matrix.h
new file mode 100644
index 00000000..5bc9be51
--- /dev/null
+++ b/include/hpp/fcl/distance_func_matrix.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/distance_func_matrix.h>
diff --git a/include/hpp/fcl/fwd.hh b/include/hpp/fcl/fwd.hh
new file mode 100644
index 00000000..1bf07ff6
--- /dev/null
+++ b/include/hpp/fcl/fwd.hh
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/fwd.hh>
diff --git a/include/hpp/fcl/hfield.h b/include/hpp/fcl/hfield.h
new file mode 100644
index 00000000..4d462776
--- /dev/null
+++ b/include/hpp/fcl/hfield.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/hfield.h>
diff --git a/include/hpp/fcl/internal/BV_fitter.h b/include/hpp/fcl/internal/BV_fitter.h
new file mode 100644
index 00000000..438bd599
--- /dev/null
+++ b/include/hpp/fcl/internal/BV_fitter.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/BV_fitter.h>
diff --git a/include/hpp/fcl/internal/BV_splitter.h b/include/hpp/fcl/internal/BV_splitter.h
new file mode 100644
index 00000000..85a586bd
--- /dev/null
+++ b/include/hpp/fcl/internal/BV_splitter.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/BV_splitter.h>
diff --git a/include/hpp/fcl/internal/intersect.h b/include/hpp/fcl/internal/intersect.h
new file mode 100644
index 00000000..bc4fe38c
--- /dev/null
+++ b/include/hpp/fcl/internal/intersect.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/intersect.h>
diff --git a/include/hpp/fcl/internal/shape_shape_contact_patch_func.h b/include/hpp/fcl/internal/shape_shape_contact_patch_func.h
new file mode 100644
index 00000000..cc3ecf58
--- /dev/null
+++ b/include/hpp/fcl/internal/shape_shape_contact_patch_func.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/shape_shape_contact_patch_func.h>
diff --git a/include/hpp/fcl/internal/shape_shape_func.h b/include/hpp/fcl/internal/shape_shape_func.h
new file mode 100644
index 00000000..3789fb52
--- /dev/null
+++ b/include/hpp/fcl/internal/shape_shape_func.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/shape_shape_func.h>
diff --git a/include/hpp/fcl/internal/tools.h b/include/hpp/fcl/internal/tools.h
new file mode 100644
index 00000000..aa11afec
--- /dev/null
+++ b/include/hpp/fcl/internal/tools.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/tools.h>
diff --git a/include/hpp/fcl/internal/traversal.h b/include/hpp/fcl/internal/traversal.h
new file mode 100644
index 00000000..f0cbf51f
--- /dev/null
+++ b/include/hpp/fcl/internal/traversal.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/traversal.h>
diff --git a/include/hpp/fcl/internal/traversal_node_base.h b/include/hpp/fcl/internal/traversal_node_base.h
new file mode 100644
index 00000000..b5f5d993
--- /dev/null
+++ b/include/hpp/fcl/internal/traversal_node_base.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/traversal_node_base.h>
diff --git a/include/hpp/fcl/internal/traversal_node_bvh_shape.h b/include/hpp/fcl/internal/traversal_node_bvh_shape.h
new file mode 100644
index 00000000..c99f06b1
--- /dev/null
+++ b/include/hpp/fcl/internal/traversal_node_bvh_shape.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/traversal_node_bvh_shape.h>
diff --git a/include/hpp/fcl/internal/traversal_node_bvhs.h b/include/hpp/fcl/internal/traversal_node_bvhs.h
new file mode 100644
index 00000000..83561013
--- /dev/null
+++ b/include/hpp/fcl/internal/traversal_node_bvhs.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/traversal_node_bvhs.h>
diff --git a/include/hpp/fcl/internal/traversal_node_hfield_shape.h b/include/hpp/fcl/internal/traversal_node_hfield_shape.h
new file mode 100644
index 00000000..8384a2b9
--- /dev/null
+++ b/include/hpp/fcl/internal/traversal_node_hfield_shape.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/traversal_node_hfield_shape.h>
diff --git a/include/hpp/fcl/internal/traversal_node_octree.h b/include/hpp/fcl/internal/traversal_node_octree.h
new file mode 100644
index 00000000..44f8b323
--- /dev/null
+++ b/include/hpp/fcl/internal/traversal_node_octree.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/traversal_node_octree.h>
diff --git a/include/hpp/fcl/internal/traversal_node_setup.h b/include/hpp/fcl/internal/traversal_node_setup.h
new file mode 100644
index 00000000..b94dd7a8
--- /dev/null
+++ b/include/hpp/fcl/internal/traversal_node_setup.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/traversal_node_setup.h>
diff --git a/include/hpp/fcl/internal/traversal_node_shapes.h b/include/hpp/fcl/internal/traversal_node_shapes.h
new file mode 100644
index 00000000..99673030
--- /dev/null
+++ b/include/hpp/fcl/internal/traversal_node_shapes.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/traversal_node_shapes.h>
diff --git a/include/hpp/fcl/internal/traversal_recurse.h b/include/hpp/fcl/internal/traversal_recurse.h
new file mode 100644
index 00000000..6fd2bf7a
--- /dev/null
+++ b/include/hpp/fcl/internal/traversal_recurse.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/internal/traversal_recurse.h>
diff --git a/include/hpp/fcl/logging.h b/include/hpp/fcl/logging.h
new file mode 100644
index 00000000..e9f591eb
--- /dev/null
+++ b/include/hpp/fcl/logging.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/logging.h>
diff --git a/include/hpp/fcl/math/matrix_3f.h b/include/hpp/fcl/math/matrix_3f.h
new file mode 100644
index 00000000..0b4e853e
--- /dev/null
+++ b/include/hpp/fcl/math/matrix_3f.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/math/matrix_3f.h>
diff --git a/include/hpp/fcl/math/transform.h b/include/hpp/fcl/math/transform.h
new file mode 100644
index 00000000..970a2a93
--- /dev/null
+++ b/include/hpp/fcl/math/transform.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/math/transform.h>
diff --git a/include/hpp/fcl/math/types.h b/include/hpp/fcl/math/types.h
new file mode 100644
index 00000000..932a7e59
--- /dev/null
+++ b/include/hpp/fcl/math/types.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/math/types.h>
diff --git a/include/hpp/fcl/math/vec_3f.h b/include/hpp/fcl/math/vec_3f.h
new file mode 100644
index 00000000..e6ac46c7
--- /dev/null
+++ b/include/hpp/fcl/math/vec_3f.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/math/vec_3f.h>
diff --git a/include/hpp/fcl/mesh_loader/assimp.h b/include/hpp/fcl/mesh_loader/assimp.h
new file mode 100644
index 00000000..13953892
--- /dev/null
+++ b/include/hpp/fcl/mesh_loader/assimp.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/mesh_loader/assimp.h>
diff --git a/include/hpp/fcl/mesh_loader/loader.h b/include/hpp/fcl/mesh_loader/loader.h
new file mode 100644
index 00000000..bbb43f1d
--- /dev/null
+++ b/include/hpp/fcl/mesh_loader/loader.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/mesh_loader/loader.h>
diff --git a/include/hpp/fcl/narrowphase/gjk.h b/include/hpp/fcl/narrowphase/gjk.h
new file mode 100644
index 00000000..cab294b9
--- /dev/null
+++ b/include/hpp/fcl/narrowphase/gjk.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/narrowphase/gjk.h>
diff --git a/include/hpp/fcl/narrowphase/minkowski_difference.h b/include/hpp/fcl/narrowphase/minkowski_difference.h
new file mode 100644
index 00000000..5f6ca0e0
--- /dev/null
+++ b/include/hpp/fcl/narrowphase/minkowski_difference.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/narrowphase/minkowski_difference.h>
diff --git a/include/hpp/fcl/narrowphase/narrowphase.h b/include/hpp/fcl/narrowphase/narrowphase.h
new file mode 100644
index 00000000..0a079085
--- /dev/null
+++ b/include/hpp/fcl/narrowphase/narrowphase.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/narrowphase/narrowphase.h>
diff --git a/include/hpp/fcl/narrowphase/narrowphase_defaults.h b/include/hpp/fcl/narrowphase/narrowphase_defaults.h
new file mode 100644
index 00000000..c17096f9
--- /dev/null
+++ b/include/hpp/fcl/narrowphase/narrowphase_defaults.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/narrowphase/narrowphase_defaults.h>
diff --git a/include/hpp/fcl/narrowphase/support_functions.h b/include/hpp/fcl/narrowphase/support_functions.h
new file mode 100644
index 00000000..8eb7c4b4
--- /dev/null
+++ b/include/hpp/fcl/narrowphase/support_functions.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/narrowphase/support_functions.h>
diff --git a/include/hpp/fcl/octree.h b/include/hpp/fcl/octree.h
new file mode 100644
index 00000000..b7f745e7
--- /dev/null
+++ b/include/hpp/fcl/octree.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/octree.h>
diff --git a/include/hpp/fcl/serialization/AABB.h b/include/hpp/fcl/serialization/AABB.h
new file mode 100644
index 00000000..b001c4ec
--- /dev/null
+++ b/include/hpp/fcl/serialization/AABB.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/AABB.h>
diff --git a/include/hpp/fcl/serialization/BVH_model.h b/include/hpp/fcl/serialization/BVH_model.h
new file mode 100644
index 00000000..c4f65ab5
--- /dev/null
+++ b/include/hpp/fcl/serialization/BVH_model.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/BVH_model.h>
diff --git a/include/hpp/fcl/serialization/BV_node.h b/include/hpp/fcl/serialization/BV_node.h
new file mode 100644
index 00000000..a8407a07
--- /dev/null
+++ b/include/hpp/fcl/serialization/BV_node.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/BV_node.h>
diff --git a/include/hpp/fcl/serialization/BV_splitter.h b/include/hpp/fcl/serialization/BV_splitter.h
new file mode 100644
index 00000000..7d13844e
--- /dev/null
+++ b/include/hpp/fcl/serialization/BV_splitter.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/BV_splitter.h>
diff --git a/include/hpp/fcl/serialization/OBB.h b/include/hpp/fcl/serialization/OBB.h
new file mode 100644
index 00000000..8eebfec1
--- /dev/null
+++ b/include/hpp/fcl/serialization/OBB.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/OBB.h>
diff --git a/include/hpp/fcl/serialization/OBBRSS.h b/include/hpp/fcl/serialization/OBBRSS.h
new file mode 100644
index 00000000..c9673a7f
--- /dev/null
+++ b/include/hpp/fcl/serialization/OBBRSS.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/OBBRSS.h>
diff --git a/include/hpp/fcl/serialization/RSS.h b/include/hpp/fcl/serialization/RSS.h
new file mode 100644
index 00000000..b7639aa8
--- /dev/null
+++ b/include/hpp/fcl/serialization/RSS.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/RSS.h>
diff --git a/include/hpp/fcl/serialization/archive.h b/include/hpp/fcl/serialization/archive.h
new file mode 100644
index 00000000..0a3f5c18
--- /dev/null
+++ b/include/hpp/fcl/serialization/archive.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/archive.h>
diff --git a/include/hpp/fcl/serialization/collision_data.h b/include/hpp/fcl/serialization/collision_data.h
new file mode 100644
index 00000000..9ac4f985
--- /dev/null
+++ b/include/hpp/fcl/serialization/collision_data.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/collision_data.h>
diff --git a/include/hpp/fcl/serialization/collision_object.h b/include/hpp/fcl/serialization/collision_object.h
new file mode 100644
index 00000000..78297687
--- /dev/null
+++ b/include/hpp/fcl/serialization/collision_object.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/collision_object.h>
diff --git a/include/hpp/fcl/serialization/contact_patch.h b/include/hpp/fcl/serialization/contact_patch.h
new file mode 100644
index 00000000..dca0506f
--- /dev/null
+++ b/include/hpp/fcl/serialization/contact_patch.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/contact_patch.h>
diff --git a/include/hpp/fcl/serialization/convex.h b/include/hpp/fcl/serialization/convex.h
new file mode 100644
index 00000000..7000a3e1
--- /dev/null
+++ b/include/hpp/fcl/serialization/convex.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/convex.h>
diff --git a/include/hpp/fcl/serialization/eigen.h b/include/hpp/fcl/serialization/eigen.h
new file mode 100644
index 00000000..e5c9faaa
--- /dev/null
+++ b/include/hpp/fcl/serialization/eigen.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/eigen.h>
diff --git a/include/hpp/fcl/serialization/fwd.h b/include/hpp/fcl/serialization/fwd.h
new file mode 100644
index 00000000..69e442f4
--- /dev/null
+++ b/include/hpp/fcl/serialization/fwd.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/fwd.h>
diff --git a/include/hpp/fcl/serialization/geometric_shapes.h b/include/hpp/fcl/serialization/geometric_shapes.h
new file mode 100644
index 00000000..d7679f26
--- /dev/null
+++ b/include/hpp/fcl/serialization/geometric_shapes.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/geometric_shapes.h>
diff --git a/include/hpp/fcl/serialization/hfield.h b/include/hpp/fcl/serialization/hfield.h
new file mode 100644
index 00000000..e0e862a7
--- /dev/null
+++ b/include/hpp/fcl/serialization/hfield.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/hfield.h>
diff --git a/include/hpp/fcl/serialization/kDOP.h b/include/hpp/fcl/serialization/kDOP.h
new file mode 100644
index 00000000..fe4acc15
--- /dev/null
+++ b/include/hpp/fcl/serialization/kDOP.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/kDOP.h>
diff --git a/include/hpp/fcl/serialization/kIOS.h b/include/hpp/fcl/serialization/kIOS.h
new file mode 100644
index 00000000..41fe0d7f
--- /dev/null
+++ b/include/hpp/fcl/serialization/kIOS.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/kIOS.h>
diff --git a/include/hpp/fcl/serialization/memory.h b/include/hpp/fcl/serialization/memory.h
new file mode 100644
index 00000000..b03c4026
--- /dev/null
+++ b/include/hpp/fcl/serialization/memory.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/memory.h>
diff --git a/include/hpp/fcl/serialization/octree.h b/include/hpp/fcl/serialization/octree.h
new file mode 100644
index 00000000..6d2694aa
--- /dev/null
+++ b/include/hpp/fcl/serialization/octree.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/octree.h>
diff --git a/include/hpp/fcl/serialization/quadrilateral.h b/include/hpp/fcl/serialization/quadrilateral.h
new file mode 100644
index 00000000..641f8161
--- /dev/null
+++ b/include/hpp/fcl/serialization/quadrilateral.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/quadrilateral.h>
diff --git a/include/hpp/fcl/serialization/serializer.h b/include/hpp/fcl/serialization/serializer.h
new file mode 100644
index 00000000..6b194a18
--- /dev/null
+++ b/include/hpp/fcl/serialization/serializer.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/serializer.h>
diff --git a/include/hpp/fcl/serialization/transform.h b/include/hpp/fcl/serialization/transform.h
new file mode 100644
index 00000000..a72222f7
--- /dev/null
+++ b/include/hpp/fcl/serialization/transform.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/transform.h>
diff --git a/include/hpp/fcl/serialization/triangle.h b/include/hpp/fcl/serialization/triangle.h
new file mode 100644
index 00000000..5c2b23f1
--- /dev/null
+++ b/include/hpp/fcl/serialization/triangle.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/serialization/triangle.h>
diff --git a/include/hpp/fcl/shape/convex.h b/include/hpp/fcl/shape/convex.h
new file mode 100644
index 00000000..0d5dd44a
--- /dev/null
+++ b/include/hpp/fcl/shape/convex.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/shape/convex.h>
diff --git a/include/hpp/fcl/shape/details/convex.hxx b/include/hpp/fcl/shape/details/convex.hxx
new file mode 100644
index 00000000..d7b78f4d
--- /dev/null
+++ b/include/hpp/fcl/shape/details/convex.hxx
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/shape/details/convex.hxx>
diff --git a/include/hpp/fcl/shape/geometric_shape_to_BVH_model.h b/include/hpp/fcl/shape/geometric_shape_to_BVH_model.h
new file mode 100644
index 00000000..66bb3b7e
--- /dev/null
+++ b/include/hpp/fcl/shape/geometric_shape_to_BVH_model.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/shape/geometric_shape_to_BVH_model.h>
diff --git a/include/hpp/fcl/shape/geometric_shapes.h b/include/hpp/fcl/shape/geometric_shapes.h
new file mode 100644
index 00000000..dd8f59a9
--- /dev/null
+++ b/include/hpp/fcl/shape/geometric_shapes.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/shape/geometric_shapes.h>
diff --git a/include/hpp/fcl/shape/geometric_shapes_traits.h b/include/hpp/fcl/shape/geometric_shapes_traits.h
new file mode 100644
index 00000000..3afa55f5
--- /dev/null
+++ b/include/hpp/fcl/shape/geometric_shapes_traits.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/shape/geometric_shapes_traits.h>
diff --git a/include/hpp/fcl/shape/geometric_shapes_utility.h b/include/hpp/fcl/shape/geometric_shapes_utility.h
new file mode 100644
index 00000000..65e33d53
--- /dev/null
+++ b/include/hpp/fcl/shape/geometric_shapes_utility.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/shape/geometric_shapes_utility.h>
diff --git a/include/hpp/fcl/timings.h b/include/hpp/fcl/timings.h
new file mode 100644
index 00000000..4500e9f1
--- /dev/null
+++ b/include/hpp/fcl/timings.h
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/timings.h>
diff --git a/include/hpp/fcl/warning.hh b/include/hpp/fcl/warning.hh
new file mode 100644
index 00000000..c49b8271
--- /dev/null
+++ b/include/hpp/fcl/warning.hh
@@ -0,0 +1,2 @@
+#include <hpp/fcl/coal.hpp>
+#include <coal/warning.hh>
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index bbdf917b..8133d617 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -61,6 +61,14 @@ IF(    NOT ENABLE_PYTHON_DOXYGEN_AUTODOC
 ELSE()
   SET(ENABLE_DOXYGEN_AUTODOC TRUE)
 
+  IF(DOXYGEN_VERSION VERSION_GREATER_EQUAL 1.9.8 AND DOXYGEN_VERSION VERSION_LESS 1.11.0)
+    # deactivate python doxygen automoc for doxygen 1.9.8 and 1.10.0,
+    # as it incorrectly parse "const" keyword,
+    # generating wrong links in C++ doc, and fail generating python doc
+    # ref. https://github.com/doxygen/doxygen/issues/10797
+    SET(ENABLE_DOXYGEN_AUTODOC FALSE)
+    MESSAGE(AUTHOR_WARNING "automoc deactivated because of doxygen 1.10. Please use <1.10 or >=1.11.")
+  ENDIF()
   EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import lxml"
     RESULT_VARIABLE _pypkg_found
     OUTPUT_QUIET
@@ -180,3 +188,9 @@ FOREACH(python ${PYTHON_FILES})
     "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${python}"
     DESTINATION ${${PYTHON_LIB_NAME}_INSTALL_DIR})
 ENDFOREACH(python)
+
+
+if(COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL)
+  python_install_on_site(hppfcl __init__.py)
+  python_install_on_site(hppfcl viewer.py)
+endif()
diff --git a/python/hppfcl/__init__.py b/python/hppfcl/__init__.py
new file mode 100644
index 00000000..1948a587
--- /dev/null
+++ b/python/hppfcl/__init__.py
@@ -0,0 +1,9 @@
+import warnings
+
+warnings.warn(
+    "Please update your 'hppfcl' imports to 'coal'", category=DeprecationWarning
+)
+
+from coal import Transform3s as Transform3f  # noqa
+from coal import *  # noqa
+from coal import __raw_version__, __version__  # noqa
diff --git a/python/hppfcl/viewer.py b/python/hppfcl/viewer.py
new file mode 100644
index 00000000..13353dce
--- /dev/null
+++ b/python/hppfcl/viewer.py
@@ -0,0 +1,7 @@
+import warnings
+
+warnings.warn(
+    "Please update your 'hppfcl' imports to 'coal'", category=DeprecationWarning
+)
+
+from coal.viewer import *  # noqa
-- 
GitLab