From eab7eed3e77f0ff0e6fcc6e360bfbe6ec4d77c93 Mon Sep 17 00:00:00 2001 From: Joris Vaillant Date: Wed, 10 Jul 2024 17:38:21 +0200 Subject: [PATCH 1/9] cmake: Apply change to be compatible with workspace --- CMakeLists.txt | 5 +++++ doc/Doxyfile.extra.in | 6 +++--- python/CMakeLists.txt | 14 +++++++------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa9e1e7b1..7d2af5a66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,7 @@ set(PROJECT_USE_CMAKE_EXPORT TRUE) set(PROJECT_USE_KEYWORD_LINK_LIBRARIES TRUE) set(PROJECT_CUSTOM_HEADER_EXTENSION "hpp") set(PROJECT_COMPATIBILITY_VERSION AnyNewerVersion) +set(PROJECT_AUTO_RUN_FINALIZE FALSE) # Check if the submodule cmake have been initialized set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake") @@ -344,10 +345,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 $ + $ $) modernize_target_link_libraries( @@ -450,3 +453,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/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in index 733ef2e24..d3290a4f1 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 4781e42f3..44719c1a0 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -12,11 +12,11 @@ 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 +40,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_ - "${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_ - "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}") + "${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}") if(UNIX) get_relative_rpath(${${PYWRAP}_INSTALL_DIR} ${PYWRAP}_INSTALL_RPATH) From 20226319d30e292958627953b10736ba250668ce Mon Sep 17 00:00:00 2001 From: Joris Vaillant Date: Fri, 12 Jul 2024 17:09:20 +0200 Subject: [PATCH 2/9] cmake: Prefix all test target by eigenpy- --- unittest/CMakeLists.txt | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 8d6571d1b..586c1302d 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -2,31 +2,32 @@ # 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") + add_library(${test_target} SHARED "${test}.cpp") else(BUILD_TESTING) - add_library(${test} SHARED EXCLUDE_FROM_ALL "${test}.cpp") + add_library(${test_target} SHARED EXCLUDE_FROM_ALL "${test}.cpp") endif(BUILD_TESTING) - set_standard_output_directory(${test}) + 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 "") - 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 $) + WORKING_DIRECTORY $) - 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 +59,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 +84,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}") From 07deea2359eaad584f17f884afd82c6d50897810 Mon Sep 17 00:00:00 2001 From: Joris Vaillant Date: Tue, 16 Jul 2024 11:43:43 +0200 Subject: [PATCH 3/9] cmake: Fix test name --- unittest/CMakeLists.txt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 586c1302d..a65ac2e02 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -8,13 +8,17 @@ function(ADD_LIB_UNIT_TEST test) if(BUILD_TESTING) add_library(${test_target} SHARED "${test}.cpp") - else(BUILD_TESTING) + else() add_library(${test_target} SHARED EXCLUDE_FROM_ALL "${test}.cpp") - endif(BUILD_TESTING) + endif() set_standard_output_directory(${test_target}) target_link_libraries(${test_target} PUBLIC ${PROJECT_NAME}) - set_target_properties(${test_target} PROPERTIES PREFIX "") + set_target_properties( + ${test_target} + PROPERTIES PREFIX "" + LIBRARY_OUTPUT_NAME ${test} + RUNTIME_OUTPUT_NAME ${test}) set_target_properties(${test_target} PROPERTIES SUFFIX ${PYTHON_EXT_SUFFIX}) From 12fd7e2ada84676a51a2c4d6c50673cd583f41e9 Mon Sep 17 00:00:00 2001 From: Joris Vaillant Date: Tue, 16 Jul 2024 15:05:07 +0200 Subject: [PATCH 4/9] cmake: Configure PROJECT_SOURCE_DIR --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d2af5a66..423fa7134 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +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") From 5f3e3d39f4202bae1967b9526e35ca7670d443b9 Mon Sep 17 00:00:00 2001 From: Joris Vaillant Date: Tue, 16 Jul 2024 15:08:22 +0200 Subject: [PATCH 5/9] cmake: Use topic/workspace jrl-cmakemodules --- .gitmodules | 2 +- cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 2b7a4fe10..ffcab6acb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "cmake"] path = cmake - url = https://github.com/jrl-umi3218/jrl-cmakemodules.git + url = https://github.com/jorisv/jrl-cmakemodules.git diff --git a/cmake b/cmake index dd3e4127f..b03972c2a 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit dd3e4127f2b223496859fe05be02726e9d1a071b +Subproject commit b03972c2aab5d4ed63bc7cc596d29328f388ef83 From b63bae6b5290b5dab486606d89f11a2bd582fdeb Mon Sep 17 00:00:00 2001 From: Joris Vaillant Date: Tue, 16 Jul 2024 15:10:31 +0200 Subject: [PATCH 6/9] changelog: Add changelog entry --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3f2415e9..800d2097b 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 From d6f239dd9183bedad9e8e11d9f0ea376f9b06566 Mon Sep 17 00:00:00 2001 From: Joris Vaillant Date: Tue, 16 Jul 2024 15:14:07 +0200 Subject: [PATCH 7/9] pre-commit: Apply pre-commit --- python/CMakeLists.txt | 3 ++- unittest/python/test_user_type.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 44719c1a0..221a5c294 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -13,7 +13,8 @@ include(${JRL_CMAKE_MODULES}/python-helpers.cmake) include("${JRL_CMAKE_MODULES}/stubs.cmake") add_custom_target(${PROJECT_NAME}_python) -set_target_properties(${PROJECT_NAME}_python PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True) +set_target_properties(${PROJECT_NAME}_python + PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True) add_library(${PYWRAP} MODULE main.cpp) add_dependencies(${PROJECT_NAME}_python ${PYWRAP}) diff --git a/unittest/python/test_user_type.py b/unittest/python/test_user_type.py index 76f8591f8..cb895fc76 100644 --- a/unittest/python/test_user_type.py +++ b/unittest/python/test_user_type.py @@ -67,4 +67,4 @@ def test_cast(from_dtype, to_dtype): v = user_type.CustomDouble(1) a = np.array(v) -assert type(v) == a.dtype.type +assert type(v) is a.dtype.type From 410d422cf3b1daa685a78eaab0679d651b40fec8 Mon Sep 17 00:00:00 2001 From: Joris Vaillant Date: Tue, 16 Jul 2024 16:18:40 +0200 Subject: [PATCH 8/9] ci: Don't build against numpy 2 --- .github/workflows/conda/environment_all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/conda/environment_all.yml b/.github/workflows/conda/environment_all.yml index 5d8e21c5e..eac1ec0fa 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 From c66ee14202577c949133a278dae194d6d2835d7f Mon Sep 17 00:00:00 2001 From: Joris Vaillant Date: Wed, 24 Jul 2024 10:25:31 +0200 Subject: [PATCH 9/9] cmake: Switch to upstream jrl-cmakemodules --- .gitmodules | 2 +- cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index ffcab6acb..2b7a4fe10 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "cmake"] path = cmake - url = https://github.com/jorisv/jrl-cmakemodules.git + url = https://github.com/jrl-umi3218/jrl-cmakemodules.git diff --git a/cmake b/cmake index b03972c2a..91b8f5f21 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit b03972c2aab5d4ed63bc7cc596d29328f388ef83 +Subproject commit 91b8f5f2168b123a198da079b8e6c09fd1f60285