Skip to content

Commit 69da2d6

Browse files
authored
Merge pull request #2 from jorisv/topic/workspace
Enable jrl-cmakemodules workspace compatiblity
2 parents d914b54 + 0928ea3 commit 69da2d6

File tree

7 files changed

+51
-30
lines changed

7 files changed

+51
-30
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
2323
- Optimize EPA: ignore useless faces in EPA's polytope; warm-start support computation for `Convex`; fix edge-cases witness points computation.
2424
- Add `Serializable` trait to transform, collision data, collision geometries, bounding volumes, bvh models, hfields. Collision problems can now be serialized from C++ and sent to python and vice versa.
2525
- CMake: allow use of installed jrl-cmakemodules ([#564](https://github.com/humanoid-path-planner/hpp-fcl/pull/564))
26+
- CMake: Add compatibility with jrl-cmakemodules workspace ([#610](https://github.com/humanoid-path-planner/hpp-fcl/pull/610))
2627

2728
### Fixed
2829

CMakeLists.txt

+13-4
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ set(PROJECT_DESCRIPTION
4141
)
4242
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
4343
SET(PROJECT_COMPATIBILITY_VERSION AnyNewerVersion)
44+
# To enable jrl-cmakemodules compatibility with workspace we must define the two
45+
# following lines
46+
set(PROJECT_AUTO_RUN_FINALIZE FALSE)
47+
set(PROJECT_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})
4448

4549
SET(PROJECT_USE_KEYWORD_LINK_LIBRARIES TRUE)
4650
SET(DOXYGEN_USE_TEMPLATE_CSS TRUE)
@@ -86,6 +90,7 @@ else()
8690
endif()
8791

8892
include("${JRL_CMAKE_MODULES}/boost.cmake")
93+
include("${JRL_CMAKE_MODULES}/python.cmake")
8994
include("${JRL_CMAKE_MODULES}/hpp.cmake")
9095
include("${JRL_CMAKE_MODULES}/apple.cmake")
9196
include("${JRL_CMAKE_MODULES}/ide.cmake")
@@ -122,7 +127,9 @@ CMAKE_DEPENDENT_OPTION(GENERATE_PYTHON_STUBS "Generate the Python stubs associat
122127
ADD_PROJECT_DEPENDENCY(Eigen3 REQUIRED PKG_CONFIG_REQUIRES "eigen3 >= 3.0.0")
123128

124129
if(BUILD_PYTHON_INTERFACE)
125-
FIND_PACKAGE(eigenpy 2.9.2 REQUIRED)
130+
SET(PYTHON_COMPONENTS Interpreter Development NumPy)
131+
FINDPYTHON(REQUIRED)
132+
ADD_PROJECT_PRIVATE_DEPENDENCY(eigenpy 2.9.2 REQUIRED)
126133
endif()
127134

128135
# Required dependencies
@@ -168,10 +175,10 @@ if(COAL_HAS_QHULL)
168175
message(STATUS "Qhullcpp not found: it will be build from sources, if Qhull_r is found")
169176
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third-parties)
170177
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
171-
${CMAKE_SOURCE_DIR}/third-parties/qhull/src/libqhullcpp
172-
${CMAKE_CURRENT_BINARY_DIR}/third-parties/libqhullcpp
178+
${PROJECT_SOURCE_DIR}/third-parties/qhull/src/libqhullcpp
179+
${PROJECT_BINARY_DIR}/third-parties/libqhullcpp
173180
)
174-
set(Qhullcpp_PREFIX ${CMAKE_BINARY_DIR}/third-parties)
181+
set(Qhullcpp_PREFIX ${PROJECT_BINARY_DIR}/third-parties)
175182
find_path(Qhull_r_INCLUDE_DIR
176183
NAMES libqhull_r/libqhull_r.h
177184
PATHS ${Qhull_PREFIX}
@@ -480,3 +487,5 @@ if(COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL)
480487
COMPATIBILITY AnyNewerVersion)
481488
install(FILES hpp-fclConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/hpp-fclConfigVersion.cmake DESTINATION lib/cmake/hpp-fcl)
482489
endif()
490+
491+
setup_project_finalize()

python/CMakeLists.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
include(${JRL_CMAKE_MODULES}/python-helpers.cmake)
3636
include(${JRL_CMAKE_MODULES}/stubs.cmake)
3737

38-
ADD_CUSTOM_TARGET(python)
39-
SET_TARGET_PROPERTIES(python PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True)
38+
ADD_CUSTOM_TARGET(${PROJECT_NAME}_python)
39+
SET_TARGET_PROPERTIES(${PROJECT_NAME}_python PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True)
4040

4141
# Name of the Python library
4242
SET(PYTHON_LIB_NAME ${PROJECT_NAME}_pywrap)
@@ -94,8 +94,8 @@ ELSE()
9494
ENDIF()
9595
IF(ENABLE_DOXYGEN_AUTODOC)
9696
ADD_CUSTOM_TARGET(generate_doxygen_cpp_doc
97-
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/doc/python/doxygen_xml_parser.py
98-
${CMAKE_BINARY_DIR}/doc/doxygen-xml/index.xml
97+
COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/doc/python/doxygen_xml_parser.py
98+
${PROJECT_BINARY_DIR}/doc/doxygen-xml/index.xml
9999
${CMAKE_CURRENT_BINARY_DIR}/doxygen_autodoc > ${CMAKE_CURRENT_BINARY_DIR}/doxygen_autodoc.log
100100
BYPRODUCTS
101101
${CMAKE_CURRENT_BINARY_DIR}/doxygen_autodoc/doxygen_xml_parser_for_cmake.hh
@@ -127,12 +127,12 @@ ENDIF(COAL_HAS_OCTOMAP)
127127

128128
ADD_LIBRARY(${PYTHON_LIB_NAME} MODULE ${${PYTHON_LIB_NAME}_SOURCES} ${${PYTHON_LIB_NAME}_HEADERS})
129129
TARGET_INCLUDE_DIRECTORIES(${PYTHON_LIB_NAME} SYSTEM PRIVATE ${PYTHON_INCLUDE_DIRS})
130-
TARGET_INCLUDE_DIRECTORIES(${PYTHON_LIB_NAME} PRIVATE "${CMAKE_SOURCE_DIR}/src" "${CMAKE_CURRENT_BINARY_DIR}")
130+
TARGET_INCLUDE_DIRECTORIES(${PYTHON_LIB_NAME} PRIVATE "${PROJECT_SOURCE_DIR}/src" "${CMAKE_CURRENT_BINARY_DIR}")
131131
IF(WIN32)
132132
TARGET_LINK_LIBRARIES(${PYTHON_LIB_NAME} PUBLIC ${PYTHON_LIBRARY})
133133
ENDIF(WIN32)
134134

135-
ADD_DEPENDENCIES(python ${PYTHON_LIB_NAME})
135+
ADD_DEPENDENCIES(${PROJECT_NAME}_python ${PYTHON_LIB_NAME})
136136
ADD_HEADER_GROUP(${PYTHON_LIB_NAME}_HEADERS)
137137
ADD_SOURCE_GROUP(${PYTHON_LIB_NAME}_SOURCES)
138138
IF(ENABLE_DOXYGEN_AUTODOC)
@@ -149,9 +149,9 @@ SET_TARGET_PROPERTIES(${PYTHON_LIB_NAME} PROPERTIES
149149
PREFIX ""
150150
SUFFIX "${PYTHON_EXT_SUFFIX}"
151151
OUTPUT_NAME "${PYTHON_LIB_NAME}"
152-
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}"
152+
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}"
153153
# On Windows, shared library are treat as binary
154-
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}"
154+
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}"
155155
)
156156

157157
IF(IS_ABSOLUTE ${PYTHON_SITELIB})

src/CMakeLists.txt

+8
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,12 @@ add_library(${LIBRARY_NAME}
187187
${PROJECT_HEADERS_FULL_PATH}
188188
${${LIBRARY_NAME}_SOURCES}
189189
)
190+
add_library(${LIBRARY_NAME}::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME})
191+
192+
if(COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL)
193+
add_library(hpp-fcl ALIAS ${LIBRARY_NAME})
194+
add_library(hpp-fcl::hpp-fcl ALIAS ${LIBRARY_NAME})
195+
endif()
190196

191197
if(UNIX)
192198
get_relative_rpath(${CMAKE_INSTALL_LIBDIR} ${PROJECT_NAME}_INSTALL_RPATH)
@@ -256,6 +262,8 @@ MODERNIZE_TARGET_LINK_LIBRARIES(${PROJECT_NAME} SCOPE PUBLIC
256262
target_include_directories(${LIBRARY_NAME}
257263
PUBLIC
258264
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
265+
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
266+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
259267
)
260268

261269
IF(octomap_FOUND)

test/CMakeLists.txt

+18-15
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,28 @@ FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework filesystem)
33

44
config_files(fcl_resources/config.h)
55

6-
macro(add_coal_test test_name source)
7-
ADD_UNIT_TEST(${test_name} ${source})
8-
target_link_libraries(${test_name}
6+
function(add_coal_test test_name source)
7+
set(target_name ${PROJECT_NAME}-${test_name})
8+
ADD_UNIT_TEST(${target_name} ${source})
9+
target_link_libraries(${target_name}
910
PUBLIC
1011
${LIBRARY_NAME}
1112
Boost::filesystem
12-
utility
13+
${utility_target}
1314
)
1415
IF(NOT WIN32)
15-
target_compile_options(${test_name} PRIVATE "-Wno-c99-extensions")
16-
ENDIF(NOT WIN32)
16+
target_compile_options(${target_name} PRIVATE "-Wno-c99-extensions")
17+
ENDIF()
1718
if(COAL_HAS_QHULL)
18-
target_compile_options(${test_name} PRIVATE -DCOAL_HAS_QHULL)
19+
target_compile_options(${target_name} PRIVATE -DCOAL_HAS_QHULL)
1920
endif()
20-
endmacro(add_coal_test)
21+
endfunction()
2122

2223
include_directories(${CMAKE_CURRENT_BINARY_DIR})
2324

24-
add_library(utility STATIC utility.cpp)
25-
target_link_libraries(utility PUBLIC ${PROJECT_NAME})
25+
set(utility_target ${PROJECT_NAME}-utility)
26+
add_library(${utility_target} STATIC utility.cpp)
27+
target_link_libraries(${utility_target} PUBLIC ${PROJECT_NAME})
2628

2729
add_coal_test(math math.cpp)
2830

@@ -38,7 +40,7 @@ add_coal_test(shape_inflation shape_inflation.cpp)
3840
#add_coal_test(shape_mesh_consistency shape_mesh_consistency.cpp)
3941
add_coal_test(gjk_asserts gjk_asserts.cpp)
4042
add_coal_test(frontlist frontlist.cpp)
41-
SET_TESTS_PROPERTIES(frontlist PROPERTIES TIMEOUT 7200)
43+
SET_TESTS_PROPERTIES(${PROJECT_NAME}-frontlist PROPERTIES TIMEOUT 7200)
4244

4345
# add_coal_test(sphere_capsule sphere_capsule.cpp)
4446
add_coal_test(capsule_capsule capsule_capsule.cpp)
@@ -67,16 +69,17 @@ add_coal_test(serialization serialization.cpp)
6769

6870
# Broadphase
6971
add_coal_test(broadphase broadphase.cpp)
70-
set_tests_properties(broadphase PROPERTIES WILL_FAIL TRUE)
72+
set_tests_properties(${PROJECT_NAME}-broadphase PROPERTIES WILL_FAIL TRUE)
7173
add_coal_test(broadphase_dynamic_AABB_tree broadphase_dynamic_AABB_tree.cpp)
7274
add_coal_test(broadphase_collision_1 broadphase_collision_1.cpp)
7375
add_coal_test(broadphase_collision_2 broadphase_collision_2.cpp)
7476

7577
## Benchmark
76-
add_executable(test-benchmark benchmark.cpp)
77-
target_link_libraries(test-benchmark
78+
set(test_benchmark_target ${PROJECT_NAME}-test-benchmark)
79+
add_executable(${test_benchmark_target} benchmark.cpp)
80+
target_link_libraries(${test_benchmark_target}
7881
PUBLIC
79-
utility
82+
${utility_target}
8083
Boost::filesystem
8184
${PROJECT_NAME}
8285
)

test/python_unit/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ SET(${PROJECT_NAME}_PYTHON_TESTS
88

99
ADD_DEPENDENCIES(build_tests ${PROJECT_NAME}_pywrap)
1010
FOREACH(TEST ${${PROJECT_NAME}_PYTHON_TESTS})
11-
ADD_PYTHON_UNIT_TEST("py-${TEST}" "test/python_unit/${TEST}.py" "python")
12-
ENDFOREACH(TEST ${${PROJECT_NAME}_PYTHON_TESTS})
11+
ADD_PYTHON_UNIT_TEST("${PROJECT_NAME}-py-${TEST}" "test/python_unit/${TEST}.py" "python")
12+
ENDFOREACH()

0 commit comments

Comments
 (0)