Skip to content

Conversation

@ahoarau
Copy link
Contributor

@ahoarau ahoarau commented Dec 11, 2025

This PR is a full rewrite of the CMake files with the JRL CMake Modules v2.

  • Full rewrite of the CMake Files in modern CMake
  • Remove submodules: archives can now be used
  • Remove external libraries
  • c++17 minimum required
  • Add pixi support
  • Fix Documentation links
  • Support for find_package components
find_package(proxsuite 0.7.1 CONFIG REQUIRED COMPONENTS proxsuite vectorized)

@ahoarau ahoarau marked this pull request as draft December 11, 2025 16:39
@ahoarau ahoarau force-pushed the jrl-next branch 2 times, most recently from bd8de6d to c36d61e Compare December 22, 2025 14:54
Copy link
Contributor

@jorisv jorisv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be removed. Pixi CI replace the conda-ci.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be removed. The Pixi CI will replace this workflow.

Comment on lines +11 to +16
import os

os.environ["KMP_DUPLICATE_LIB_OK"] = (
"True" # to avoid issues with OpenMP in some environments
)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you show me how to reproduce this issue ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is simply ported from upstream https://github.com/Simple-Robotics/proxsuite/blob/devel/bindings/python/CMakeLists.txt#L254-L258

I have no way to verify if this is still useful/relevant.
Much better to put it here than the complicated code inside cmake with conditions. It should not hurt of not used.

"${PROJECT_NAME}-example-py-${EXAMPLE_NAME}"
"${EXAMPLE_FILE}"
"bindings/python"
function(proxsuite_add_python_example name)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be added as a test

Comment on lines +3 to +7
function(proxsuite_add_example name)
add_executable(proxsuite-example-${name} ${name}.cpp)
target_link_libraries(proxsuite-example-${name} PRIVATE proxsuite)
add_dependencies(proxsuite-examples-cpp proxsuite-example-${name})
endfunction()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be added as a test

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We must generate ament file before merging this PR

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We must prefix all option with PROXSUITE_ when jrl_option support back compatibility option.

Comment on lines 59 to 84
include(FetchContent)
FetchContent_Declare(
"jrl-cmakemodules"
GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git"
catch2
URL https://github.com/catchorg/Catch2/archive/refs/tags/v3.11.0.zip
URL_HASH MD5=ce96600812f04d19694f488ed2de75c5
EXCLUDE_FROM_ALL
)
FetchContent_MakeAvailable("jrl-cmakemodules")
FetchContent_GetProperties("jrl-cmakemodules" SOURCE_DIR JRL_CMAKE_MODULES)
FetchContent_MakeAvailable(catch2)
include(${catch2_SOURCE_DIR}/extras/Catch.cmake)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a comment to know when we can remove this part (on the next Ubuntu LTS ?)

Comment on lines 74 to 108
if(NOT cereal_FOUND)
message(
WARNING
"[proxsuite] cereal library not found. Falling back to FetchContent to get cereal v1.3.2"
)
include(FetchContent)
FetchContent_Declare(
cereal
URL https://github.com/USCiLab/cereal/archive/refs/tags/v1.3.2.zip
URL_HASH MD5=953a872cd3d78abf2e29212987a0ba71
SOURCE_SUBDIR
download_only
EXCLUDE_FROM_ALL
)
FetchContent_MakeAvailable(cereal)
add_library(cereal::cereal INTERFACE IMPORTED)
target_include_directories(cereal::cereal SYSTEM INTERFACE ${cereal_SOURCE_DIR}/include)
endif()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a comment to know when we can remove this part (on the next Ubuntu LTS ?)

Comment on lines +98 to +128
if(NOT nanobind_FOUND)
message(
WARNING
"[proxsuite] nanobind library not found. Falling back to FetchContent to get nanobind v2.9.2"
)
include(FetchContent)
FetchContent_Declare(
nanobind
GIT_REPOSITORY https://github.com/wjakob/nanobind.git
GIT_TAG v2.9.2
EXCLUDE_FROM_ALL
)
FetchContent_MakeAvailable(nanobind)
endif()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a comment to know when we can remove this part (on the next Ubuntu LTS ?)

@ahoarau ahoarau force-pushed the jrl-next branch 2 times, most recently from 3c9d458 to 6ed7b91 Compare January 6, 2026 12:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants