diff --git a/.github/workflows/conda/environment_all.yml b/.github/workflows/conda/environment_all.yml index 5d8e21c5e962eedcb51514929baa082b84efb592..eac1ec0fa45488a12327dd4ea6f1c793e95f3291 100644 --- a/.github/workflows/conda/environment_all.yml +++ b/.github/workflows/conda/environment_all.yml @@ -4,7 +4,7 @@ channels: dependencies: - eigen - cmake - - numpy + - numpy<2.0 - pkg-config - boost - ccache diff --git a/CHANGELOG.md b/CHANGELOG.md index b3f2415e91a0e5a599fb03776c4ace2630762528..800d2097b9077de6e53a73b3438ea1f561e5f498 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] +### Added +- Add compatibility with jrl-cmakemodules workspace ([#485](https://github.com/stack-of-tasks/eigenpy/pull/485)) + ## [3.7.0] - 2024-06-11 ### Added diff --git a/CMakeLists.txt b/CMakeLists.txt index fa9e1e7b1e1e8bdf2fa169aa4276f5865fe69589..423fa71344eef97ab150ecac8126c8c0e4fb5a1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,10 @@ set(PROJECT_USE_CMAKE_EXPORT TRUE) set(PROJECT_USE_KEYWORD_LINK_LIBRARIES TRUE) set(PROJECT_CUSTOM_HEADER_EXTENSION "hpp") set(PROJECT_COMPATIBILITY_VERSION AnyNewerVersion) +# To enable jrl-cmakemodules compatibility with workspace we must define the two +# following lines +set(PROJECT_AUTO_RUN_FINALIZE FALSE) +set(PROJECT_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}) # Check if the submodule cmake have been initialized set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake") @@ -344,10 +348,12 @@ set(${PROJECT_NAME}_SOURCES add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) set_standard_output_directory(${PROJECT_NAME}) target_include_directories( ${PROJECT_NAME} SYSTEM PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) modernize_target_link_libraries( @@ -450,3 +456,5 @@ pkg_config_append_libs(${PROJECT_NAME}) pkg_config_append_cflags("-I${PYTHON_INCLUDE_DIRS}") pkg_config_append_cflags("-I${NUMPY_INCLUDE_DIRS}") pkg_config_append_boost_libs(${BOOST_COMPONENTS}) + +setup_project_finalize() diff --git a/cmake b/cmake index dd3e4127f2b223496859fe05be02726e9d1a071b..91b8f5f2168b123a198da079b8e6c09fd1f60285 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit dd3e4127f2b223496859fe05be02726e9d1a071b +Subproject commit 91b8f5f2168b123a198da079b8e6c09fd1f60285 diff --git a/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in index 733ef2e24209ec5b24b9b6d59a4de4106805ccbf..d3290a4f13ce4c1eb0aefa1e3b0f01eeb8685559 100644 --- a/doc/Doxyfile.extra.in +++ b/doc/Doxyfile.extra.in @@ -1,6 +1,6 @@ -INPUT = @CMAKE_SOURCE_DIR@/src \ - @CMAKE_SOURCE_DIR@/doc/additionalDoc -IMAGE_PATH = @CMAKE_SOURCE_DIR@/doc/pictures +INPUT = @PROJECT_SOURCE_DIR@/src \ + @PROJECT_SOURCE_DIR@/doc/additionalDoc +IMAGE_PATH = @PROJECT_SOURCE_DIR@/doc/pictures FILE_PATTERNS = *.cc *.cpp *.h *.hpp *.hxx diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 4781e42f35a6d08e6b0e0f00960c61a162ed42b5..221a5c294eba23ae4b83e9414c1e95d061c64579 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -12,11 +12,12 @@ make_directory("${${PROJECT_NAME}_BINARY_DIR}/python/${PROJECT_NAME}") include(${JRL_CMAKE_MODULES}/python-helpers.cmake) include("${JRL_CMAKE_MODULES}/stubs.cmake") -add_custom_target(python) -set_target_properties(python PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True) +add_custom_target(${PROJECT_NAME}_python) +set_target_properties(${PROJECT_NAME}_python + PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True) add_library(${PYWRAP} MODULE main.cpp) -add_dependencies(python ${PYWRAP}) +add_dependencies(${PROJECT_NAME}_python ${PYWRAP}) target_link_libraries(${PYWRAP} PUBLIC ${PROJECT_NAME}) python_build_get_target(python_build_target) @@ -40,13 +41,13 @@ set_target_properties( PROPERTIES PREFIX "" SUFFIX ${PYTHON_EXT_SUFFIX} LIBRARY_OUTPUT_DIRECTORY - "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}" + "${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}" LIBRARY_OUTPUT_DIRECTORY_<CONFIG> - "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}" + "${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}" RUNTIME_OUTPUT_DIRECTORY - "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}" + "${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}" RUNTIME_OUTPUT_DIRECTORY_<CONFIG> - "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}") + "${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}") if(UNIX) get_relative_rpath(${${PYWRAP}_INSTALL_DIR} ${PYWRAP}_INSTALL_RPATH) diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 8d6571d1bade3aec7eced4e65c7feaeb02185771..a65ac2e0287aec6c051f07e046c959a37ee3729a 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -2,31 +2,36 @@ # Copyright (c) 2014-2019 CNRS Copyright (c) 2018-2024 INRIA # -macro(ADD_LIB_UNIT_TEST test) +function(ADD_LIB_UNIT_TEST test) create_ctest_build_tests_target() + set(test_target ${PROJECT_NAME}-${test}) if(BUILD_TESTING) - add_library(${test} SHARED "${test}.cpp") - else(BUILD_TESTING) - add_library(${test} SHARED EXCLUDE_FROM_ALL "${test}.cpp") - endif(BUILD_TESTING) - set_standard_output_directory(${test}) + add_library(${test_target} SHARED "${test}.cpp") + else() + add_library(${test_target} SHARED EXCLUDE_FROM_ALL "${test}.cpp") + endif() + set_standard_output_directory(${test_target}) - target_link_libraries(${test} PUBLIC ${PROJECT_NAME}) - set_target_properties(${test} PROPERTIES PREFIX "") + target_link_libraries(${test_target} PUBLIC ${PROJECT_NAME}) + set_target_properties( + ${test_target} + PROPERTIES PREFIX "" + LIBRARY_OUTPUT_NAME ${test} + RUNTIME_OUTPUT_NAME ${test}) - set_target_properties(${test} PROPERTIES SUFFIX ${PYTHON_EXT_SUFFIX}) + set_target_properties(${test_target} PROPERTIES SUFFIX ${PYTHON_EXT_SUFFIX}) add_test( - NAME ${test} + NAME ${test_target} COMMAND ${PYTHON_EXECUTABLE} -c "import ${test}" - WORKING_DIRECTORY $<TARGET_FILE_DIR:${test}>) + WORKING_DIRECTORY $<TARGET_FILE_DIR:${test_target}>) - add_dependencies(build_tests ${test}) + add_dependencies(build_tests ${test_target}) if(NOT BUILD_TESTING) - set_tests_properties(${test} PROPERTIES DEPENDS ctest_build_tests) + set_tests_properties(${test_target} PROPERTIES DEPENDS ctest_build_tests) endif(NOT BUILD_TESTING) -endmacro(ADD_LIB_UNIT_TEST) +endfunction() add_dependencies(build_tests ${PYWRAP}) add_lib_unit_test(matrix) @@ -58,17 +63,20 @@ if(CMAKE_CXX_STANDARD GREATER 14 AND CMAKE_CXX_STANDARD LESS 98) endif() function(add_python_lib_unit_test name source) - add_python_unit_test(${name} ${source} "lib" "bin") + set(test_target ${PROJECT_NAME}-${name}) + add_python_unit_test(${test_target} ${source} "lib" "bin") endfunction() function(add_python_eigenpy_lib_unit_test name source) - add_python_unit_test(${name} ${source} "lib" "bin" "python") - set_tests_properties(${name} PROPERTIES DEPENDS ${PYWRAP}) + set(test_target ${PROJECT_NAME}-${name}) + add_python_unit_test(${test_target} ${source} "lib" "bin" "python") + set_tests_properties(${test_target} PROPERTIES DEPENDS ${PYWRAP}) endfunction() function(add_python_eigenpy_unit_test name source) - add_python_unit_test(${name} ${source} "python") - set_tests_properties(${name} PROPERTIES DEPENDS ${PYWRAP}) + set(test_target ${PROJECT_NAME}-${name}) + add_python_unit_test(${test_target} ${source} "python") + set_tests_properties(${test_target} PROPERTIES DEPENDS ${PYWRAP}) endfunction() function(config_test test tagname opttype) @@ -80,7 +88,7 @@ function(config_test test tagname opttype) configure_file(python/test_${test}.py.in ${CMAKE_CURRENT_BINARY_DIR}/python/${py_file}) add_lib_unit_test(${MODNAME}) - set(PYTHON_TEST_NAME "py-${test}-${tagname}") + set(PYTHON_TEST_NAME "${PROJECT_NAME}-py-${test}-${tagname}") add_test(NAME ${PYTHON_TEST_NAME} COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/python/${py_file}") diff --git a/unittest/python/test_user_type.py b/unittest/python/test_user_type.py index 76f8591f81fd3e7f9315796aabfd678bdbb74a77..cb895fc76da205e7fccc6213c070f5573ec938d0 100644 --- a/unittest/python/test_user_type.py +++ b/unittest/python/test_user_type.py @@ -67,4 +67,4 @@ test(user_type.CustomFloat) v = user_type.CustomDouble(1) a = np.array(v) -assert type(v) == a.dtype.type +assert type(v) is a.dtype.type