Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
265 commits
Select commit Hold shift + click to select a range
e0aec9e
update copyright for 2025-2026
ahoarau Dec 16, 2025
f283373
fix jrl_print_options_summary not logging anything
ahoarau Dec 17, 2025
a9d16e1
import libraries in the DLLDirectorymanager context
ahoarau Dec 17, 2025
0e98e9a
ignore build and instal dirs
ahoarau Dec 18, 2025
72136b4
no need to include PytestAddTest, only discover like boost
ahoarau Dec 18, 2025
80bea38
update ruff(legacy) to ruff-check
ahoarau Dec 18, 2025
35c46c3
add jrl_ prefix to copy_compile_commands_in_source_dir
ahoarau Dec 18, 2025
83e2e3c
add info about where the jrl V2 are loaded
ahoarau Dec 18, 2025
7f38463
look for tsl-robin-map only if nanobind is found
ahoarau Dec 18, 2025
5a8c197
convert path to cmake path lists
ahoarau Dec 18, 2025
2492054
add more explicit message about export component beeing created
ahoarau Dec 19, 2025
b378764
fix trailing space (pre-commit)
ahoarau Dec 19, 2025
dd82c60
add jrl_cmakemodules_get_version and jrl_print_banner
ahoarau Dec 19, 2025
4267411
use jrl-cmakemodules project name and set jrl-cmakemodules_VERSION li…
ahoarau Dec 19, 2025
2ab02d4
remove intermediate cmakelists and print banner
ahoarau Dec 19, 2025
b71689f
move jrl v2 into the v2 folder only
ahoarau Dec 19, 2025
13ad263
fix comment about creating a separate export
ahoarau Dec 19, 2025
b17da51
do not bypass the install dir
ahoarau Dec 19, 2025
357f142
automatically detect the python environment to compute the installati…
ahoarau Dec 19, 2025
4db2cff
Revert "do not bypass the install dir"
ahoarau Dec 19, 2025
d7bd058
print banner when using installed version
ahoarau Dec 19, 2025
05f1d2b
install the whole jrl v2 package
ahoarau Dec 19, 2025
9983217
specify a dir name as we are technically an out of tree subdirectory
ahoarau Dec 19, 2025
53159fa
on nix compute a python install dir relative to the data dir
ahoarau Dec 19, 2025
0006aef
we only need to have a fix for conda python install dir
ahoarau Dec 19, 2025
bc58bcc
fix the os detection python script
ahoarau Dec 19, 2025
5c367d0
set min cmake version required to allow to use IN_LIST in CMake 3.22
ahoarau Dec 21, 2025
381e9bd
jrl_copy_compile_commands_in_source_dir is only useful when we don't …
ahoarau Dec 21, 2025
31426b5
add documentation for jrl_target_set_output_directory
ahoarau Dec 21, 2025
3e5e999
add jrl_get_cxx_compiler_id to handle the clang-cl and msvc exceptions
ahoarau Dec 21, 2025
948ce7e
jrl_target_generate_header: remove CMAKE_CURRENT_BINARY_DIR being req…
ahoarau Dec 21, 2025
ff2ec4a
use LIBRARY_VERSION instead of PROJECT_VERSION
ahoarau Dec 21, 2025
3feab29
improve jrl_find_package documentation
ahoarau Dec 21, 2025
588e7f1
jrl_python_compute_install_dir: refactor on handle only the conda+win…
ahoarau Dec 21, 2025
02792de
only convert path on windows
ahoarau Dec 22, 2025
86c1432
jrl_find_nanobind: add support for REQUIRED, QUIET argument and impro…
ahoarau Dec 22, 2025
39ad37d
add uninstall target
ahoarau Dec 27, 2025
16daf9e
add utility function to get the main dirs
ahoarau Dec 27, 2025
818aff3
convert path to cmake path list on windows
ahoarau Dec 27, 2025
4da67e1
add jrl_check_command_exists function
ahoarau Jan 5, 2026
4abed24
imrove some documentation
ahoarau Jan 5, 2026
078f19c
only use cmake minimum version (not range)
ahoarau Jan 5, 2026
3f0b5fd
add check for python interpreter in jrl_boostpy_add_stubs
ahoarau Jan 5, 2026
897e8b1
add jrl_python_get_interpreter to factorize some code
ahoarau Jan 5, 2026
80f2dae
use jrl_python_get_interpreter
ahoarau Jan 5, 2026
ec082f1
change comment on jrl_check_python_module_name
ahoarau Jan 5, 2026
0ec4e34
add documentation to jrl_python_generate_init_py
ahoarau Jan 5, 2026
6215ce6
add documentation to jrl_python_compile_all
ahoarau Jan 5, 2026
00342c0
_pad_string -> _jrl_pad_string
ahoarau Jan 5, 2026
c729f9e
add documentation to jrl_cmake_dependent_option
ahoarau Jan 5, 2026
69695b0
rename to cmake_uninstall.cmake to matche the cmake_install.cmake
ahoarau Jan 5, 2026
e184393
remove the legacy IMMEDIATE keyword in configure_file
ahoarau Jan 5, 2026
6c7a3da
rename jrl_setup_uninstall_target to jrl_configure_uninstall_target f…
ahoarau Jan 5, 2026
de7f716
jrl_python_get_interpreter: make sure the path is converted. into a c…
ahoarau Jan 6, 2026
c80c0a3
enable policy CMP0177: add normalization for install() DESTINATION pa…
ahoarau Jan 6, 2026
77d6b85
normalize paths when using cmake_path
ahoarau Jan 6, 2026
7a3f402
Revert "enable policy CMP0177: add normalization for install() DESTIN…
ahoarau Jan 6, 2026
c32f8be
Add function to retrieve git commit hash and display in banner
ahoarau Jan 6, 2026
c97c54a
convert user defined <pkg>_PYTHON_INSTALL_DIR to cmake_path_list and …
ahoarau Jan 6, 2026
4cb7af6
run updated gersemi formatter
ahoarau Jan 6, 2026
c717c6d
merge BoostPython.cmake into main jrl module
ahoarau Jan 6, 2026
73faedf
merge check python module name into main module
ahoarau Jan 6, 2026
90c5837
add jr_log internal functions
ahoarau Jan 6, 2026
7921c5d
remove the buildsystem target filtering
ahoarau Jan 6, 2026
2de0d08
ignore .DS_Store
ahoarau Jan 7, 2026
2287ae0
add jrl_target_generate_config_header documentation (new format)
ahoarau Jan 7, 2026
758f5da
use _jrl_log in jrl_print_dependencies_summary
ahoarau Jan 7, 2026
ebf1ca2
fix pytest on ubuntu 22.04
ahoarau Jan 8, 2026
b96e39c
remove FindScipy we now have jrl_check_python_module
ahoarau Jan 10, 2026
859a38b
jrl_check_python_module: get module version if available
ahoarau Jan 10, 2026
8a32beb
generate-dependencies.cmake.in: add comments to clarify the function …
ahoarau Jan 10, 2026
c1145dd
use jrl_check_file_exists when possible
ahoarau Jan 11, 2026
8c6076e
update jrl_find_package doc
ahoarau Jan 11, 2026
83fd688
update jrl_find_package doc on MODULE_PATH
ahoarau Jan 11, 2026
19064c3
unset variables at the end and add comments
ahoarau Jan 11, 2026
775b346
jrl_find_package: reduce verbosity of variables msg
ahoarau Jan 11, 2026
266a575
cmake_print_properties: added ref
ahoarau Jan 11, 2026
7f34229
jrl_export_dependencies: edit doc
ahoarau Jan 11, 2026
2445380
jrl_boostpy_add_stubs: rename OUTPUT to OUTPUT_PATH and compute the s…
ahoarau Jan 12, 2026
261f56c
add jrl_python_relative_site_packages (and absolute)
ahoarau Jan 12, 2026
1188ee5
add jrl_generate_ros2_package_files
ahoarau Jan 13, 2026
6a8abcd
jrl_generate_ros2_package_files: python generation on confition INSTA…
ahoarau Jan 13, 2026
dcb6c3e
jrl_generate_ros2_package_files: check DEFINED, not value
ahoarau Jan 13, 2026
058a065
jrl_generate_ros2_package_files: condition cpp files gen
ahoarau Jan 13, 2026
02130b4
use CMAKE_CXX_COMPILER_FRONTEND_VARIANT if available
ahoarau Jan 13, 2026
2c9bc0f
jrl_export_dependencies: require CMAKE_INSTALL_LIBDIR
ahoarau Jan 14, 2026
f1d8eaf
generate-dependencies: handle absolute and relative install destinations
ahoarau Jan 14, 2026
a6fdce4
jrl_target_install_headers: handle abs/rel install destination and ab…
ahoarau Jan 14, 2026
db7f2fb
reformat doc as a uniform markdown style
ahoarau Jan 15, 2026
02bd159
remove unused jrl_contains_generator_expressions
ahoarau Jan 16, 2026
c256607
make _jrl_make_valid_c_identifier internal
ahoarau Jan 16, 2026
836618a
make _jrl_export_dependencies intenal
ahoarau Jan 16, 2026
c6c1972
uniformize the variables names
ahoarau Jan 16, 2026
6ae8d15
internalize check functions
ahoarau Jan 16, 2026
fb6ec74
add _jrl_normalize_version
ahoarau Jan 16, 2026
a94b969
jrl_target_headers: remove unused check
ahoarau Jan 16, 2026
1bac27a
templates: prepend variables with JRL
ahoarau Jan 16, 2026
11b8fe1
refactor header generations functions
ahoarau Jan 17, 2026
b3e3ed2
remove unused external modules
ahoarau Jan 17, 2026
9d75d08
add include_guard(GLOBAL)
ahoarau Jan 17, 2026
cdb4dfe
update documentation format
ahoarau Jan 19, 2026
275f4d8
_jrl_top_dir: remove trailing slash if any
ahoarau Jan 19, 2026
6109bab
add _jrl_docs_dir
ahoarau Jan 19, 2026
52da985
ignore api.md
ahoarau Jan 19, 2026
752e0a3
refactor _jrl_generate_api_doc
ahoarau Jan 19, 2026
70961c0
docs: update api.md
ahoarau Jan 19, 2026
9021340
remove range on cmake min version
ahoarau Jan 20, 2026
f01c8d7
add option to build doc
ahoarau Jan 20, 2026
fa26a86
add initial README
ahoarau Jan 20, 2026
54aa3a8
make jrl_search_package_module_file private
ahoarau Jan 22, 2026
d8239a3
remove jrl_cmake_print_properties
ahoarau Jan 22, 2026
9708f88
update documentation
ahoarau Jan 22, 2026
28fdf41
filter out internal functions in doc
ahoarau Jan 22, 2026
960da7f
gitignore: ignore ruff_cache
ahoarau Jan 22, 2026
f0d327b
jrl_add_export_component: remove comment and TODO
ahoarau Jan 22, 2026
b305990
jrl_print_dependencies_summary: fix padding
ahoarau Jan 22, 2026
a2e4106
jrl_python_compute_install_dir: allow to use env var. Improve doc.
ahoarau Jan 22, 2026
567cb3a
doc: update api doc
ahoarau Jan 22, 2026
29697f1
jrl_find_nanobind: use interpreter and improve doc
ahoarau Jan 22, 2026
c586305
refactor jrl_find_package with jrl_export_dependency
ahoarau Jan 22, 2026
1a06338
_jrl_generate_api_doc: fix nested semicolons case
ahoarau Jan 22, 2026
5f20ca3
doc: update api doc
ahoarau Jan 22, 2026
a39576b
remove _jrl_make_valid_c_identifier, use built in string(MAKE_C_IDENT…
ahoarau Jan 22, 2026
392aa6b
rename the option to JRL_GENERATE_API_DOC
ahoarau Feb 5, 2026
d17d90a
refactor jrl_option, remove jrl_c;ake_dependant_option, and add jrl_l…
ahoarau Feb 5, 2026
a539e59
allow to disable export via project-based option
ahoarau Feb 5, 2026
f37cd69
uppercase the python installdir bypass option
ahoarau Feb 5, 2026
4c9c02c
update api documentation
ahoarau Feb 5, 2026
b0c9e18
add first draft of testing framework
ahoarau Feb 5, 2026
ca4b8f6
always set the option in CACHE
ahoarau Feb 5, 2026
44787fd
no need for PROJECT_NAME using options
ahoarau Feb 5, 2026
615251f
for options to be initialized to boolean type
ahoarau Feb 5, 2026
8d62af0
make FALLBACK mandatory
ahoarau Feb 5, 2026
4debff1
jrl_find_package: remove unused feature MODULE_PATH
ahoarau Feb 5, 2026
0a10d73
_jrl_check_no_unrecognized_arguments: enforce no unrecognized arguments
ahoarau Feb 5, 2026
7f4f42a
doc: update api documentation
ahoarau Feb 5, 2026
a4b73c1
add release script to check and set versions
ahoarau Feb 7, 2026
f671da3
add qol actions
ahoarau Feb 7, 2026
37c65db
add documentation
ahoarau Feb 9, 2026
6df08c2
handle case when no version files are found
ahoarau Feb 9, 2026
46e02d6
refactor: update version bump commands and improve output options
ahoarau Feb 9, 2026
2914a2c
add release.py unit tests and readme
ahoarau Feb 9, 2026
cb2a73a
add pixi support
ahoarau Feb 9, 2026
735260c
display more user friendly message
ahoarau Feb 9, 2026
a988b51
add back unit tests
ahoarau Feb 9, 2026
36bbda0
add v2 ci
ahoarau Feb 10, 2026
36c6d23
move pixi.toml to top level
ahoarau Feb 10, 2026
bc13645
install catch2 in sustem
ahoarau Feb 10, 2026
7408397
use fetchcontent source dir
ahoarau Feb 10, 2026
95b6fd1
add verbosity
ahoarau Feb 10, 2026
dea12fd
fix tests
ahoarau Feb 10, 2026
62908d5
allow to cancel ci group
ahoarau Feb 10, 2026
5a74d33
install catch2 in /usr/local
ahoarau Feb 10, 2026
a4e7ed8
try to use github cache instead of registry
ahoarau Feb 10, 2026
edae2df
update repo name in test
ahoarau Feb 10, 2026
ca391d1
use ref to vcpkg cache key
ahoarau Feb 10, 2026
12b0db8
pull and push vcpkg even if the whole ci fails
ahoarau Feb 10, 2026
8216737
add debug log level in windows ci
ahoarau Feb 10, 2026
6e6757e
use CMAKE_TOOLCHAIN_FILE as env var
ahoarau Feb 10, 2026
45625cb
disable pixi build for now (windows error on symlink)
ahoarau Feb 10, 2026
d0ee783
fix pixi build
ahoarau Feb 10, 2026
d77b189
migrate jrl to v2 api
ahoarau Feb 11, 2026
00b6c22
update ci to new jrl v2
ahoarau Feb 11, 2026
ea8564b
add ci to generate and check api
ahoarau Feb 11, 2026
aef668b
default tests and docgen to off
ahoarau Feb 11, 2026
59abc02
update the jrl v2 options
ahoarau Feb 11, 2026
85ebdd2
refactor pixi file to separate clearly the envs
ahoarau Feb 11, 2026
b126e22
_jrl_generate_api_doc: only write if content is unchanged and notify …
ahoarau Feb 11, 2026
fda3b33
add the jrl_print_banner() by default (temp)
ahoarau Feb 11, 2026
392672a
add ros2 ci
ahoarau Feb 11, 2026
8d16156
ci: disable ros2 tests (tmp)
ahoarau Feb 11, 2026
e0c62fd
jrl_python_compute_install_dir: add cmeel exception
ahoarau Feb 12, 2026
3b4fc38
do not expand the Version Changed Panel
ahoarau Feb 12, 2026
2bb4548
release.py: handle git and precommit gracefully
ahoarau Feb 12, 2026
19c7f4e
release.py: display git command and only commit the files changed by …
ahoarau Feb 12, 2026
2956408
release.py: allow to detect multiline project()
ahoarau Feb 13, 2026
36dc162
release.py: use cmake parser to parser cmakelists files
ahoarau Feb 13, 2026
89f738a
release.py: improve the version diff display
ahoarau Feb 15, 2026
d00f1fb
release.py: handle user CTRL+C
ahoarau Feb 16, 2026
4ba2159
release.py: display the type of change in the Panel
ahoarau Feb 16, 2026
7c7d3fa
release.py: improve colors
ahoarau Feb 16, 2026
1cee2bc
release.py: add support for updating pixi.lock file
ahoarau Feb 16, 2026
982a4d8
release.py: add backup and restore
ahoarau Feb 16, 2026
c5d5d9b
release.py: add custom commit and tag messages
ahoarau Feb 16, 2026
9a3c586
chore: bump version to 1.2.0
ahoarau Feb 16, 2026
d100c2b
cmake: update python and nanobind min required
ahoarau Feb 16, 2026
c8bcfea
cmake: add ros2 package support
ahoarau Feb 20, 2026
0bcde51
ci: on pixi only keep 1 ubuntu and 1 windows
ahoarau Feb 20, 2026
5765725
jrl_target_generate_config_header: use arg_UNPARSED_ARGUMENTS to be a…
ahoarau Feb 20, 2026
0b0d3d7
jrl_python_compile_all: use module directly
ahoarau Mar 10, 2026
4923846
v2: fix install fix to v2 folder
ahoarau Mar 11, 2026
c51b1ab
gitignore: ignore conda files
ahoarau Mar 11, 2026
688ef5d
tests: make sure the v2 module is present
ahoarau Mar 11, 2026
c55f04b
v2: add back the jrl-cmakemodules::jrl-cmakemodules component for bac…
ahoarau Mar 11, 2026
e4310c6
pixi: update lock file
ahoarau Mar 11, 2026
0daf014
v2: use the component template (default)
ahoarau Mar 11, 2026
cc7b83d
add project tests for find_package on v1 and v2
ahoarau Mar 11, 2026
20654bc
tests: include base before project()
ahoarau Mar 11, 2026
820639d
jrl_configure_default_install_dirs: prevent warning on pure-cmake pro…
ahoarau Mar 16, 2026
0c68171
jrl_export_package: loop over each target to install headers
ahoarau Mar 17, 2026
9d485b8
tests: refactor current testsuite and add multitargets test
ahoarau Mar 17, 2026
3ef9dec
tests: add multi component test project
ahoarau Mar 17, 2026
0598fd8
test: remove "" for cmake 3.22
ahoarau Mar 17, 2026
edf1882
pixi: add cmake322 test env
ahoarau Mar 17, 2026
ab14c69
pixi: update lock file
ahoarau Mar 17, 2026
5a90363
ci: test cmake322 env on all platforms
ahoarau Mar 17, 2026
fae2dd4
tests: add minimal project with uppercase in the name
ahoarau Mar 17, 2026
5ae5135
v2: suport UpperCase project names via Config.cmake and ConfigVersion…
ahoarau Mar 17, 2026
dff0646
doc: update docs
ahoarau Mar 17, 2026
8cb6e6c
ci: add explicit test-pixi-build env
ahoarau Mar 20, 2026
8ff0431
tests: require jrl version 1.2.0 min
ahoarau Mar 20, 2026
3be7423
pixi: update lock file
ahoarau Mar 20, 2026
0ab2808
pixi: add doc task to generate api doc
ahoarau Mar 24, 2026
2c3da77
doc: update documentation
ahoarau Mar 24, 2026
2546c8d
readme: update main readme for v2
ahoarau Mar 24, 2026
e3f4826
remove unused generated readme
ahoarau Mar 21, 2026
36eb693
pixi: integrate python tests
ahoarau Mar 21, 2026
2a51154
pixi: update lock file
ahoarau Mar 21, 2026
03823f7
release.py: remove gitpython dep and cleanup comments
ahoarau Mar 21, 2026
dbde4a3
release.py: update/shorten doc
ahoarau Mar 21, 2026
b44c49c
release.py: remove enumerate
ahoarau Mar 21, 2026
aa15855
release.py: change ChangelogVersionExtractor to inherit from VersionE…
ahoarau Mar 21, 2026
9339527
release.py: Add option to specify files to stage
ahoarau Mar 21, 2026
be21f8d
release.py: display git tag and commit in dry run
ahoarau Mar 21, 2026
95a1b7f
refactor: simplify update_pixi_lock function params
ahoarau Mar 21, 2026
dd9fafd
test: update assertion for previous_version in cli json output test
ahoarau Mar 21, 2026
e4cce36
tests: add release.py coverage
ahoarau Mar 21, 2026
b58b0fc
release.py: update dry run output message
ahoarau Mar 21, 2026
a996a85
release.py: display the output of pixi list command
ahoarau Mar 25, 2026
d203d23
release.py: uniformize the display output with the dry-run
ahoarau Mar 25, 2026
c5d89ad
rename release.py to jrl_release.py
ahoarau Mar 25, 2026
c002cf4
jrl_release.py: update sheban according to ub doc and chmod +x
ahoarau Mar 27, 2026
1bc0198
jrl_release.py: remove unused RegexVersionExtractor
ahoarau Mar 27, 2026
cc6bacb
tests: remove test on RegexVersionExtractor
ahoarau Mar 27, 2026
31454ef
jrl_target_set_default_compile_options: update doc
ahoarau Apr 7, 2026
6773ad6
jrl_target_enforce_msvc_conformance: update docs
ahoarau Apr 7, 2026
1fb2d48
ci: add boost-libs (required on boost 1.90)
ahoarau Apr 10, 2026
a6e9213
cmake: reformat with new gersemi
ahoarau Apr 10, 2026
e1d0307
jrl: update error messages
ahoarau Apr 17, 2026
7a8afcb
pre-commit: update gersemi new repo
ahoarau Apr 19, 2026
e37d49f
gitignore: merge v2 with main
ahoarau Apr 19, 2026
06eca8a
tests: add missing multicomp-consumer-all test
ahoarau Apr 19, 2026
bbe7630
tests: add multi comp + generator expression test
ahoarau Apr 19, 2026
7a69f49
_jrl_export_dependencies: export all deps to support generator expres…
ahoarau Apr 19, 2026
7bb1373
pixi: add eigen to the test deps
ahoarau Apr 20, 2026
04b0ba7
pixi: update lock file
ahoarau Apr 20, 2026
e5acabf
generate-dependencies: handle the missing json case
ahoarau Apr 20, 2026
d3f4afc
tests: add regular find_package test
ahoarau Apr 20, 2026
68418cd
ci: add eigen dep to tests
ahoarau Apr 20, 2026
cd462e5
jrl: remove unused jrl_print_full_system_and_compiler_info
ahoarau Apr 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions .github/workflows/v2-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: V2 - Linux

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
ubuntu22:
name: Ubuntu 22.04
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v6
- uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.22"
- uses: actions/setup-python@v6
with:
python-version: "3.10"
- name: Install c++ dependencies (via apt)
run: |
sudo apt-get update
sudo apt-get install -y ninja-build g++ unzip libboost-python-dev libeigen3-dev

- name: Install python dependencies (via pip)
run: |
which python3
which pip3
pip3 install nanobind pytest numpy

- name: Build Catch2 (Ubuntu 22.04 has Catch2 v2, we need v3)
run: |
cd /home/runner/work/
wget https://github.com/catchorg/Catch2/archive/refs/tags/v3.11.0.zip -O catch2.zip
unzip catch2.zip
cmake -B catch2-build -S Catch2-3.11.0 -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build catch2-build --config Release
sudo cmake --install catch2-build

- name: Configure project
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure

ubuntu24:
name: Ubuntu 24.04
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v6
- uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.28"
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install c++ dependencies (via apt)
run: |
sudo apt-get update
sudo apt-get install -y ninja-build g++ catch2 libboost-python-dev libeigen3-dev

- name: Install python dependencies (via pip)
run: |
which python3
which pip3
pip3 install nanobind pytest numpy

- name: Configure project
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure

api_doc:
name: "Generate API documentation"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Generate API documentation (direct function call)
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_GENERATE_API_DOC=ON

- name: Check API is still up to date
run: git diff --exit-code -- v2/docs

- name: Generate API documentation (cmake script mode)
run: cmake -DJRL_GENERATE_API_DOC=ON -P v2/modules/jrl.cmake

archlinux:
name: "Archlinux"
runs-on: ubuntu-latest
container:
image: docker://archlinux:latest
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: pacman -Syu --noconfirm cmake ninja gcc catch2 python-pytest nanobind python-numpy boost boost-libs eigen

- name: Configure project
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure
42 changes: 42 additions & 0 deletions .github/workflows/v2-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: V2 - macOS

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
macos:
name: ${{ matrix.name }}
runs-on: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- image: macos-26
name: macOS 26 (Apple Silicon)

- image: macos-15
name: macOS 15 (Apple Silicon)

- image: macos-15-intel
name: macOS 15 (Intel)

steps:
- uses: actions/checkout@v6
- name: Install dependencies (via brew)
run: |
brew install catch2 boost-python3 robin-map nanobind pytest numpy eigen

- name: Configure project
run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure
45 changes: 45 additions & 0 deletions .github/workflows/v2-pixi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: V2 - Pixi

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
pixi-ci:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
- os: macos-15-intel
- os: macos-26
- os: windows-2025

steps:
- uses: actions/checkout@v6

- name: Install Pixi
uses: prefix-dev/setup-pixi@v0.9.3
with:
pixi-version: latest

- name: Configure Pixi environment
run: pixi install

- name: Configure project
run: pixi run configure

- name: Build project
run: pixi run build

- name: Run tests (cmake latest)
run: pixi run -e test test

- name: Run tests (cmake 3.22)
run: pixi run -e cmake322 test

- name: Run tests (pixi build)
run: pixi run -e test-pixi-build test-packaging-pixi-build
9 changes: 9 additions & 0 deletions .github/workflows/v2-prek.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: V2 - Prek
on: [push, pull_request]

jobs:
prek:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v1
45 changes: 45 additions & 0 deletions .github/workflows/v2-ros2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: V2 - ROS2
on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
ros2:
name: ROS2 ${{ matrix.ROS_DISTRO }} - ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# ROS2 Humble Hawksbill (May 2022 - May 2027)
- ROS_DISTRO: humble
os: Ubuntu 22.04 (Jammy)

# ROS2 Jazzy Jalisco (May 2024 - May 2029)
- ROS_DISTRO: jazzy
os: Ubuntu 24.04 (Noble)

# ROS2 Kilted Kayu (May 2025 - December 2026)
- ROS_DISTRO: kilted
os: Ubuntu 24.04 (Noble)

# ROS2 Rolling Ridley
- ROS_DISTRO: rolling
os: Ubuntu 24.04 (Noble)
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ matrix.ROS_DISTRO }}-${{github.run_id}}
restore-keys: ccache-${{ matrix.ROS_DISTRO }}-
- uses: ros-industrial/industrial_ci@ba2a3d0f830f8051b356711a8df2fedfc5d256cf
env:
# CMAKE_ARGS: -DJRL_CMAKEMODULES_BUILD_TESTS=ON
VERBOSE_OUTPUT: true
VERBOSE_TESTS: true
ROS_DISTRO: ${{ matrix.ROS_DISTRO }}
78 changes: 78 additions & 0 deletions .github/workflows/v2-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: V2 - Windows

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
VCPKG_COMMAND: C:/vcpkg/vcpkg.exe --vcpkg-root=C:/vcpkg
VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg-bincache
VCPKG_BINARY_SOURCES: "clear;files,${{ github.workspace }}/vcpkg-bincache,readwrite"
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake

jobs:
windows-with-vcpkg:
name: ${{ matrix.name }}
runs-on: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- image: windows-2022
name: Windows Server 2022
arch: x64

- image: windows-2025
name: Windows Server 2025
arch: x64

- image: windows-11-arm
name: Windows 11 ARM64
arch: arm64

steps:
- uses: actions/checkout@v6
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}

- name: Create vcpkg binary cache directory
run: mkdir -p ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}

- name: Restore vcpkg binary cache
id: cache-vcpkg-restore
uses: actions/cache/restore@v4
with:
path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
key: vcpkg-${{ matrix.image }}-${{ matrix.arch }}-${{ github.ref }}
restore-keys: vcpkg-${{ matrix.image }}-${{ matrix.arch }}-

- name: Install C++ dependencies (via vcpkg)
run: |
${{ env.VCPKG_COMMAND }} install catch2 boost-python eigen3

- name: Save vcpkg binary cache
if: always()
uses: actions/cache/save@v4
with:
path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
key: ${{ steps.cache-vcpkg-restore.outputs.cache-primary-key }}

- name: Install Python dependencies (via pip)
run: |
C:/vcpkg/installed/${{ matrix.arch }}-windows/tools/python3/python.exe -m ensurepip --upgrade
C:/vcpkg/installed/${{ matrix.arch }}-windows/tools/python3/python.exe -m pip install nanobind pytest numpy

- name: Configure project
run: cmake -G Ninja -S . -B build --log-level=DEBUG -DCMAKE_BUILD_TYPE=RelWithDebInfo -DJRL_CMAKEMODULES_BUILD_TESTS=ON

- name: Build project
run: cmake --build build --verbose

- name: Install project
run: cmake --install build --prefix ./install

- name: Run tests
run: ctest --test-dir build --output-on-failure
19 changes: 19 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,22 @@ hpp/idl/*.pyc
.docs/build
_unittests/build/
_unittests/install/
build*/
install*/
.DS_Store
.ruff_cache/
*.conda
.coverage
htmlcov/
build*/
install*/
.pytest_cache/
.cache/
.pixi/
__pycache__/
Xcode*
*.pyc
*~
*.egg-info
compile_commands.json
cmake-profiling.json
8 changes: 4 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.9
hooks:
- id: ruff
- id: ruff-check
args:
- --fix
- id: ruff-format
- repo: https://github.com/BlankSpruce/gersemi
rev: 0.26.1
- repo: https://github.com/BlankSpruce/gersemi-pre-commit
rev: 0.27.2
hooks:
- id: gersemi
exclude: |
Expand Down Expand Up @@ -45,4 +45,4 @@ repos:
hooks:
- id: check-hooks-apply
- id: check-useless-excludes
exclude: (\.js$|^doxygen/MathJax/)
exclude: (\.js$|^doxygen/MathJax/|api\.md$)
Loading
Loading