Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • jcarpent/eigenpy
  • gsaurel/eigenpy
  • stack-of-tasks/eigenpy
3 results
Show changes
Commits on Source (510)
Showing
with 718 additions and 313 deletions
BasedOnStyle: Google
SortIncludes: false
Standard: Cpp03
# pre-commit run -a (Guilhem Saurel, 2022-07-27) # pre-commit run -a (Guilhem Saurel, 2022-07-27)
4af05ec6781f9da65b81af8e3af8d69213f99e85 4af05ec6781f9da65b81af8e3af8d69213f99e85
# pre-commit run -a (Guilhem Saurel, 2024-02-17)
48fb48c83f0456de2fb612ef55df8ad789824d87
# pre-commit run -a (Guilhem Saurel, 2024-02-19)
0bae435330ee475f8dbb11bf5e672284d294d9b3
# GitHub syntax highlighting
pixi.lock linguist-language=YAML
name: Check-changelog name: CI - Check-changelog
on: on:
pull_request: pull_request:
types: [assigned, opened, synchronize, reopened, labeled, unlabeled, edited]
branches: branches:
- devel - devel
jobs: jobs:
......
name: eigenpy
channels:
- conda-forge
- defaults
dependencies:
- eigen
- cmake
- numpy
- pkg-config
- boost
name: JRL-cmakemodules name: CI - JRL-cmakemodules
on: [push,pull_request]
on:
push:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
pull_request:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
with-submodules: with-submodules:
...@@ -9,7 +31,7 @@ jobs: ...@@ -9,7 +31,7 @@ jobs:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
submodules: true submodules: true
- run: sudo apt install libboost-all-dev libeigen3-dev python3-numpy - run: sudo apt install libboost-all-dev libeigen3-dev python3-numpy python3-scipy
- run: cmake . - run: cmake .
...@@ -21,6 +43,6 @@ jobs: ...@@ -21,6 +43,6 @@ jobs:
with: with:
submodules: false submodules: false
path: eigenpy path: eigenpy
- run: sudo apt install libboost-all-dev libeigen3-dev python3-numpy - run: sudo apt install libboost-all-dev libeigen3-dev python3-numpy python3-scipy
- run: cmake -B build -S eigenpy - run: cmake -B build -S eigenpy
- run: grep -qvz CMAKE_PROJECT_VERSION:STATIC=0.0 build/CMakeCache.txt - run: grep -qvz CMAKE_PROJECT_VERSION:STATIC=0.0 build/CMakeCache.txt
name: Check build on linux name: CI - Linux via APT
on: ["push", "pull_request"] on:
push:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
pull_request:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
test: test:
...@@ -16,12 +37,12 @@ jobs: ...@@ -16,12 +37,12 @@ jobs:
submodules: 'true' submodules: 'true'
- run: | - run: |
sudo apt-get update sudo apt-get update
sudo apt-get install cmake libboost-all-dev libeigen3-dev python*-numpy python*-dev sudo apt-get install cmake libboost-all-dev libeigen3-dev python*-numpy python*-dev python*-scipy
echo $(sudo apt list --installed) echo $(sudo apt list --installed)
echo $(g++ --version) echo $(g++ --version)
- run: cmake -DPYTHON_EXECUTABLE=$(which python${{ matrix.python }}) . - run: cmake . -DPYTHON_EXECUTABLE=$(which python${{ matrix.python }}) -DBUILD_TESTING_SCIPY=ON
- run: make -j2 - run: make -j2
- run: make test - run: ctest --output-on-failure
check: check:
if: always() if: always()
......
name: Conda-CI
on: [push,pull_request]
jobs:
eigenpy-conda:
name: ${{ matrix.os }} - Python ${{ matrix.python-version }} ${{ matrix.build_type }} ${{ matrix.cxx_options }}
runs-on: ${{ matrix.os }}
env:
CCACHE_DIR: ${{ matrix.CCACHE_DIR }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest"]
cxx_options: ['', '-mavx2']
build_type: [Release, Debug]
python-version: ["3.10", "3.11", "3.12"]
include:
- os: ubuntu-latest
CCACHE_DIR: /home/runner/.ccache
- os: macos-latest
CCACHE_DIR: /Users/runner/.ccache
exclude:
- build_type: Debug
cxx_options: -mavx2
os: macos-latest
- build_type: Release
cxx_options: -mavx2
os: macos-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: conda-incubator/setup-miniconda@v2
with:
activate-environment: eigenpy
auto-update-conda: true
environment-file: .github/workflows/conda/environment.yml
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v3
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}
- name: Prepare cache dir
run: sudo mkdir -p ${CCACHE_DIR}/tmp && sudo chown -R $(id -un) ${CCACHE_DIR}
- name: Install cmake and update conda
shell: bash -l {0}
run: |
conda activate eigenpy
conda install cmake ccache -c conda-forge
conda list
- name: Build EigenPy
shell: bash -l {0}
run: |
conda activate eigenpy
echo $CONDA_PREFIX
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DPYTHON_EXECUTABLE=$(which python3) -DGENERATE_PYTHON_STUBS=ON -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_CXX_FLAGS=${{ matrix.cxx_options }}
make
make build_tests
export CTEST_OUTPUT_ON_FAILURE=1
make test
make install
- name: Test packaging
shell: bash -l {0}
run: |
conda activate eigenpy
cmake -B test-packaging -S unittest/packaging/cmake -DPYTHON_EXECUTABLE=$(which python3)
- name: Configure hpp-fcl
shell: bash -l {0}
run: |
conda activate eigenpy
conda install -c conda-forge octomap assimp qhull
git clone https://github.com/humanoid-path-planner/hpp-fcl.git --recursive
cd hpp-fcl
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$(which python3)
- name: Uninstall EigenPy
shell: bash -l {0}
run: |
cd build
make uninstall
check:
if: always()
name: check-macos-linux-conda
needs:
- eigenpy-conda
runs-on: Ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
name: CI - MacOS/Linux/Windows via Pixi
on:
push:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
pull_request:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
eigenpy-pixi:
name: ${{ matrix.os }} - Env ${{ matrix.environment }} ${{ matrix.build_type }} ${{ matrix.cxx_options }} ${{ matrix.compiler }}
runs-on: ${{ matrix.os }}
env:
CCACHE_BASEDIR: "${GITHUB_WORKSPACE}"
CCACHE_DIR: "${GITHUB_WORKSPACE}/.ccache"
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 6
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, macos-13]
environment: [all, all-py39]
build_type: [Release, Debug]
cxx_options: ['', '-mavx2']
exclude:
- os: macos-latest
cxx_options: '-mavx2'
- os: macos-13
cxx_options: '-mavx2'
include:
- os: windows-latest
environment: all
cxx_options: ''
build_type: Release
- os: windows-latest
environment: all-clang-cl
cxx_options: ''
build_type: Release
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/cache@v4
with:
path: .ccache
key: ccache-macos-linux-windows-pixi-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.environment }}-${{ github.sha }}
restore-keys: ccache-macos-linux-windows-pixi-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.environment }}-
- uses: prefix-dev/setup-pixi@v0.8.1
with:
cache: true
environments: ${{ matrix.environment }}
- name: Build EigenPy [MacOS/Linux/Windows]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
EIGENPY_BUILD_TYPE: ${{ matrix.build_type }}
EIGENPY_CXX_FLAGS: ${{ matrix.cxx_options }}
run: |
pixi run -e ${{ matrix.environment }} test
check:
if: always()
name: check-macos-linux-windows-pixi
needs:
- eigenpy-pixi
runs-on: Ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
name: "CI - Nix"
on:
push:
jobs:
nix:
runs-on: "${{ matrix.os }}-latest"
strategy:
matrix:
os: [ubuntu, macos]
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v27
- uses: cachix/cachix-action@v15
with:
name: gepetto
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- run: nix build -L
name: Ensure relocatable name: CI - Ensure relocatable
on: [push,pull_request] on:
push:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
pull_request:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
relocatable: relocatable:
...@@ -30,7 +51,7 @@ jobs: ...@@ -30,7 +51,7 @@ jobs:
run: git -C /RELOC/SRC clone --recursive $(pwd) run: git -C /RELOC/SRC clone --recursive $(pwd)
- name: install dependencies - name: install dependencies
run: sudo apt install libboost-all-dev libeigen3-dev python-is-python3 python3-numpy python3-pip ccache run: sudo apt install libboost-all-dev libeigen3-dev python-is-python3 python3-numpy python3-pip python3-scipy ccache
- name: update CMake - name: update CMake
run: pip install -U pip && pip install -U cmake run: pip install -U pip && pip install -U cmake
......
# This config uses industrial_ci (https://github.com/ros-industrial/industrial_ci.git). # This config uses industrial_ci (https://github.com/ros-industrial/industrial_ci.git).
# For troubleshooting, see readme (https://github.com/ros-industrial/industrial_ci/blob/master/README.rst) # For troubleshooting, see readme (https://github.com/ros-industrial/industrial_ci/blob/master/README.rst)
name: ROS-CI name: CI - Linux via ROS
# This determines when this workflow is run # This determines when this workflow is run
on: [push, pull_request] # on all pushes and PRs on:
push:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
pull_request:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '*.md'
- 'LICENSE'
- 'colcon.pkg'
- '.pre-commit-config.yaml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
CI: CI:
strategy: strategy:
matrix: matrix:
env: env:
# ROS1
- {ROS_DISTRO: noetic} - {ROS_DISTRO: noetic}
- {ROS_DISTRO: rolling} # ROS2
- {ROS_DISTRO: iron} - {ROS_DISTRO: iron}
- {ROS_DISTRO: humble}
- {ROS_DISTRO: jazzy}
- {ROS_DISTRO: rolling}
env: env:
# CCACHE_DIR: /home/runner/.ccache # Enable ccache # PRERELEASE: true # Fails due to issues in the underlying Docker image
PRERELEASE: true
BUILDER: colcon BUILDER: colcon
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
submodules: recursive submodules: recursive
# This step will fetch/store the directory used by ccache before/after the ci run
# - uses: actions/cache@v3
# with:
# path: ${{ env.CCACHE_DIR }}
# key: ccache-${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }}
# Run industrial_ci # Run industrial_ci
- uses: 'ros-industrial/industrial_ci@9f963f67ebb889792175776c5ee00134d7bb569b' - uses: 'ros-industrial/industrial_ci@875c2aebfd634eebaa84dbe5198f2fdb4c5f1b7e'
env: ${{ matrix.env }} env: ${{ matrix.env }}
check: check:
......
name: update-flake-lock
on:
workflow_dispatch:
schedule:
- cron: '0 15 3 * *'
jobs:
lockfile:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Update flake.lock
uses: DeterminateSystems/update-flake-lock@main
with:
pr-labels: "no changelog"
token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
name: CI - Update Pixi lockfile
permissions:
contents: write
pull-requests: write
on:
workflow_dispatch:
schedule:
- cron: 0 5 1 * *
jobs:
pixi-update:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v1
id: generate-token
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- uses: actions/checkout@v4
with:
token: ${{ steps.generate-token.outputs.token }}
ref: devel
# Make sure the value of GITHUB_TOKEN will not be persisted in repo's config
persist-credentials: false
- name: Set up pixi
uses: prefix-dev/setup-pixi@v0.8.1
with:
run-install: false
- name: Update lockfile
run: |
set -o pipefail
pixi update --json | pixi exec pixi-diff-to-markdown >> diff.md
- name: Create pull request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ steps.generate-token.outputs.token }}
commit-message: 'pixi: Update pixi lockfile'
title: Update pixi lockfile
body-path: diff.md
branch: topic/update-pixi
base: devel
labels: |
pixi
no changelog
delete-branch: true
add-paths: pixi.lock
name: Build Eigenpy on Windows via Conda
on: [push,pull_request]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest]
steps:
- uses: actions/checkout@v3
- name: Checkout submodules
run: |
git submodule update --init
- uses: goanpeca/setup-miniconda@v1
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
with:
activate-environment: eigenpy
environment-file: .github/workflows/conda/environment.yml
python-version: "3.10"
- name: Build Eigenpy
shell: cmd /C CALL {0}
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
run: |
:: unset extra Boost envs
set Boost_ROOT=
set BOOST_ROOT_1_69_0=
set BOOST_ROOT_1_72_0=
set PATH=%PATH:C:\hostedtoolcache\windows\Boost\1.72.0;=%
if errorlevel 1 exit 1
:: start building
call "%programfiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
if errorlevel 1 exit 1
mkdir build
pushd build
cmake ^
-G "NMake Makefiles" ^
-DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX%\Library ^
-DCMAKE_BUILD_TYPE=Release ^
-DGENERATE_PYTHON_STUBS=ON ^
-DPYTHON_SITELIB=%CONDA_PREFIX%\Lib\site-packages ^
-DPYTHON_EXECUTABLE=%CONDA_PREFIX%\python.exe ^
..
if errorlevel 1 exit 1
:: Build and Install
cmake --build . --config Release --target install
if errorlevel 1 exit 1
:: Testing
ctest --output-on-failure -C Release -V
if errorlevel 1 exit 1
:: Test Python import
cd ..
python -c "import eigenpy"
if errorlevel 1 exit 1
:: Test packaging
cmake -B test-packaging -S unittest/packaging/cmake ^
-G "NMake Makefiles" ^
-DPYTHON_EXECUTABLE=%CONDA_PREFIX%\python.exe
if errorlevel 1 exit 1
:: Configure hpp-fcl
conda install -c conda-forge octomap assimp qhull
git clone --recursive https://github.com/humanoid-path-planner/hpp-fcl.git
pushd hpp-fcl
mkdir build
pushd build
cmake ^
-G "NMake Makefiles" ^
-DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX%\Library ^
-DCMAKE_BUILD_TYPE=Release ^
-DPYTHON_EXECUTABLE=%CONDA_PREFIX%\python.exe ^
..
cd ..
if errorlevel 1 exit 1
:: Uninstall
cmake --build . --config Release --target uninstall
if errorlevel 1 exit 1
check:
if: always()
name: check-windows-conda
needs:
- build
runs-on: Ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
*~ *~
*build* *build*/
# pixi environments
.pixi
[submodule "cmake"] [submodule "cmake"]
path = cmake path = cmake
url = https://github.com/jorisv/jrl-cmakemodules.git url = https://github.com/jrl-umi3218/jrl-cmakemodules.git
ci: ci:
autoupdate_branch: 'devel' autoupdate_branch: devel
autofix_prs: false
autoupdate_schedule: quarterly
repos: repos:
- repo: https://github.com/pre-commit/mirrors-clang-format - repo: https://github.com/astral-sh/ruff-pre-commit
rev: v17.0.5 rev: v0.8.6
hooks: hooks:
- id: clang-format - id: ruff
args: ['--style={BasedOnStyle: Google, SortIncludes: false, Standard: Cpp03}'] args:
- repo: https://github.com/pre-commit/pre-commit-hooks - --fix
rev: v4.5.0 - --exit-non-zero-on-fix
hooks: - --ignore
- id: trailing-whitespace - UP036
- repo: https://github.com/psf/black - id: ruff-format
rev: 23.11.0 - repo: https://github.com/cheshirekow/cmake-format-precommit
hooks: rev: v0.6.13
- id: black hooks:
- repo: https://github.com/cheshirekow/cmake-format-precommit - id: cmake-format
rev: v0.6.13 - repo: https://github.com/pappasam/toml-sort
hooks: rev: v0.24.2
- id: cmake-format hooks:
- id: toml-sort-fix
exclude: pixi.toml
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v19.1.6
hooks:
- id: clang-format
args:
- '--style={BasedOnStyle: Google, SortIncludes: false, Standard: Cpp03}'
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
...@@ -6,6 +6,163 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ...@@ -6,6 +6,163 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased] ## [Unreleased]
## [3.10.3] - 2025-02-11
### Added
- Add `BUILDING_ROS2_PACKAGE` to generate ament specific file ([#530](https://github.com/stack-of-tasks/eigenpy/pull/530))
### Changed
- Modernize doxygen documentation ([#533](https://github.com/stack-of-tasks/eigenpy/pull/533))
## [3.10.2] - 2025-01-13
### Fixed
- Fix Python library linkage for Debug build on Windows ([#514](https://github.com/stack-of-tasks/eigenpy/pull/514))
- Fix np.ones when dtype is a custom user type ([#525](https://github.com/stack-of-tasks/eigenpy/pull/525))
## [3.10.1] - 2024-10-30
### Added
- Add Pixi support ([#444](https://github.com/stack-of-tasks/eigenpy/pull/444))
### Fixed
- Don't use C++14 feature ([#510](https://github.com/stack-of-tasks/eigenpy/pull/510))
- Add inline to `deprecationTypeToPyObj` definition to avoid linking error ([#512](https://github.com/stack-of-tasks/eigenpy/pull/512))
## [3.10.0] - 2024-09-26
### Added
- `GenericMapPythonVisitor`/`StdMapPythonVisitor` can now take an extra visitor argument in the `expose()` method, similar to `StdVectorPythonVisitor`
### Changed
- Move `GenericMapPythonVisitor` to its own header `eigenpy/map.hpp`
- Rename `overload_base_get_item_for_std_map` to `overload_base_get_item_for_map`, move out of `eigenpy::details` namespace
- Move `EmptyPythonVisitor` to new header `eigenpy/utils/empty-visitor.hpp`
## [3.9.1] - 2024-09-19
### Added
- Add test returning reference of std::pair ([#503](https://github.com/stack-of-tasks/eigenpy/pull/503))
- Add more general visitor `GenericMapPythonVisitor` for map types test `boost::unordered_map<std::string, int>` ([#504](https://github.com/stack-of-tasks/eigenpy/pull/504))
- Support for non-[default-contructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible) types in map types ([#504](https://github.com/stack-of-tasks/eigenpy/pull/504))
- Add type_info helpers ([#502](https://github.com/stack-of-tasks/eigenpy/pull/502))
- Add NumPy 2 support ([#496](https://github.com/stack-of-tasks/eigenpy/pull/496))
### Changed
- Move `StdMapPythonVisitor` out of `eigenpy::python` namespace, which was a mistake ([#504](https://github.com/stack-of-tasks/eigenpy/pull/504))
## [3.9.0] - 2024-08-31
### Changed
- The `exposeStdVectorEigenSpecificType()` template function now takes the vector allocator as a template parameter ([#500](https://github.com/stack-of-tasks/eigenpy/pull/500))
### Added
- Add bp::dist to std::map converter ([#499](https://github.com/stack-of-tasks/eigenpy/pull/499))
## [3.8.2] - 2024-08-26
### Fixed
- Fix function signature on Windows ([#494](https://github.com/stack-of-tasks/eigenpy/pull/494))
## [3.8.1] - 2024-08-25
### Fixed
- Fix compatibility issue with NumPy 2.x on Windows ([#492](https://github.com/stack-of-tasks/eigenpy/pull/492))
## [3.8.0] - 2024-08-14
### Added
- Add compatibility with jrl-cmakemodules workspace ([#485](https://github.com/stack-of-tasks/eigenpy/pull/485))
- Remove support of Python 3.7 ([#490](https://github.com/stack-of-tasks/eigenpy/pull/490))
### Fixed
- Remove CMake CMP0167 warnings ([#487](https://github.com/stack-of-tasks/eigenpy/pull/487))
- Fix compilation error on armhf ([#488](https://github.com/stack-of-tasks/eigenpy/pull/488))
## [3.7.0] - 2024-06-11
### Added
- Added id() helper to retrieve unique object identifier in Python ([#477](https://github.com/stack-of-tasks/eigenpy/pull/477))
- Expose QR solvers ([#478](https://github.com/stack-of-tasks/eigenpy/pull/478))
## [3.6.0] - 2024-06-05
### Added
- Added a deprecation call policy shortcut ([#466](https://github.com/stack-of-tasks/eigenpy/pull/466))
### Fixed
- Fix register_symbolic_link_to_registered_type() for multiple successive registrations ([#471](https://github.com/stack-of-tasks/eigenpy/pull/471))
## [3.5.1] - 2024-04-25
### Fixed
- Allow EigenToPy/EigenFromPy specialization with CL compiler ([#462](https://github.com/stack-of-tasks/eigenpy/pull/462))
- Fix missing include for boost >= 1.85 ([#464](https://github.com/stack-of-tasks/eigenpy/pull/464))
## [3.5.0] - 2024-04-14
### Added
- Allow use of installed JRL-cmakemodule ([#446](https://github.com/stack-of-tasks/eigenpy/pull/446)
- Support of Numpy 2.0.0b1 ([#448](https://github.com/stack-of-tasks/eigenpy/pull/448))
- Support new primitive type (char, int8_t, uint8_t, int16_t, uint16_t, uint32_t, uint64_t) ([#455]()https://github.com/stack-of-tasks/eigenpy/pull/455)
- Support conversion between signed <-> unsigned integers ([#455](https://github.com/stack-of-tasks/eigenpy/pull/455))
- Support conversion between complex numbers ([#455](https://github.com/stack-of-tasks/eigenpy/pull/455))
### Fixed
- Fix unit test build in C++11 ([#442](https://github.com/stack-of-tasks/eigenpy/pull/442))
- Fix unit test function signature [#443](https://github.com/stack-of-tasks/eigenpy/pull/443))
- Fix CMake export ([#446](https://github.com/stack-of-tasks/eigenpy/pull/446)
- Fix `int` management on Windows ([#455](https://github.com/stack-of-tasks/eigenpy/pull/455))
- Fix `long long` management on Mac ([#455](https://github.com/stack-of-tasks/eigenpy/pull/455))
- Allow to run test in the build directory on Windows ([#457](https://github.com/stack-of-tasks/eigenpy/pull/457))
### Removed
- Remove casting when converting from Eigen scalar to Numpy scalar.
This should not remove any functionality since Numpy array are created from the Eigen scalar type
([#455](https://github.com/stack-of-tasks/eigenpy/pull/455))
## [3.4.0] - 2024-02-26
### Added
- Support for `Eigen::SparseMatrix` types ([#426](https://github.com/stack-of-tasks/eigenpy/pull/426))
- Support for `boost::variant` types with `VariantConverter` ([#430](https://github.com/stack-of-tasks/eigenpy/pull/430))
- Support for `std::variant` types with `VariantConverter` ([#431](https://github.com/stack-of-tasks/eigenpy/pull/431))
- Support for `std::unique_ptr` as a return types with `StdUniquePtrCallPolicies` and `boost::python::default_call_policies` ([#433](https://github.com/stack-of-tasks/eigenpy/pull/433))
- Support for `std::unique_ptr` as an internal reference with `ReturnInternalStdUniquePtr` ([#433](https://github.com/stack-of-tasks/eigenpy/pull/433))
- Support for `Eigen::Simplicial{LLT,LDLT}` and `Eigen::Cholmod{Simplicial,Supernodal}{LLT,LDLT}` Cholesky de compositions ([#438](https://github.com/stack-of-tasks/eigenpy/pull/438))
- Switch to ruff for lints, format, and import sort ([#441](https://github.com/stack-of-tasks/eigenpy/pull/441))
### Fixed
- Fix the issue of missing exposition of Eigen types with __int64 scalar type ([#426](https://github.com/stack-of-tasks/eigenpy/pull/426))
- Fix namespace use in unittest/std_pair.cpp ([#429](https://github.com/stack-of-tasks/eigenpy/pull/429))
- Fix case of zero-size sparse matrices ([#437](https://github.com/stack-of-tasks/eigenpy/pull/437))
## [3.3.0] - 2024-01-23
### Fixed
- Fix potential memory leak when returning a list from an `std::vector` or an `std::array` ([423](https://github.com/stack-of-tasks/eigenpy/pull/423))
## [3.2.0] - 2023-12-12
### Added
- Support for C++11 `std::array` types ([#412](https://github.com/stack-of-tasks/pull/412))
- Support for `std::pair` types ([#417](https://github.com/stack-of-tasks/pull/417))
## [3.1.4] - 2023-11-27
### Added
- Add new helper functions to check Tensor support
### Fixed
- Fix stub generation on Windows
## [3.1.3] - 2023-11-09 ## [3.1.3] - 2023-11-09
### Fixed ### Fixed
...@@ -567,7 +724,24 @@ One can now easily expose C++ struct containing Eigen objects in Python avoiding ...@@ -567,7 +724,24 @@ One can now easily expose C++ struct containing Eigen objects in Python avoiding
## [1.0.0] - 2014-07-18 ## [1.0.0] - 2014-07-18
[Unreleased]: https://github.com/stack-of-tasks/eigenpy/compare/v3.1.3...HEAD [Unreleased]: https://github.com/stack-of-tasks/eigenpy/compare/v3.10.3...HEAD
[3.10.3]: https://github.com/stack-of-tasks/eigenpy/compare/v3.10.2...v3.10.3
[3.10.2]: https://github.com/stack-of-tasks/eigenpy/compare/v3.10.1...v3.10.2
[3.10.1]: https://github.com/stack-of-tasks/eigenpy/compare/v3.10.0...v3.10.1
[3.10.0]: https://github.com/stack-of-tasks/eigenpy/compare/v3.9.1...v3.10.0
[3.9.1]: https://github.com/stack-of-tasks/eigenpy/compare/v3.9.0...v3.9.1
[3.9.0]: https://github.com/stack-of-tasks/eigenpy/compare/v3.8.2...v3.9.0
[3.8.2]: https://github.com/stack-of-tasks/eigenpy/compare/v3.8.1...v3.8.2
[3.8.1]: https://github.com/stack-of-tasks/eigenpy/compare/v3.8.0...v3.8.1
[3.8.0]: https://github.com/stack-of-tasks/eigenpy/compare/v3.7.0...v3.8.0
[3.7.0]: https://github.com/stack-of-tasks/eigenpy/compare/v3.6.0...v3.7.0
[3.6.0]: https://github.com/stack-of-tasks/eigenpy/compare/v3.5.1...v3.6.0
[3.5.1]: https://github.com/stack-of-tasks/eigenpy/compare/v3.5.0...v3.5.1
[3.5.0]: https://github.com/stack-of-tasks/eigenpy/compare/v3.4.0...v3.5.0
[3.4.0]: https://github.com/stack-of-tasks/eigenpy/compare/v3.3.0...v3.4.0
[3.3.0]: https://github.com/stack-of-tasks/eigenpy/compare/v3.2.0...v3.3.0
[3.2.0]: https://github.com/stack-of-tasks/eigenpy/compare/v3.1.4...v3.2.0
[3.1.4]: https://github.com/stack-of-tasks/eigenpy/compare/v3.1.3...v3.1.4
[3.1.3]: https://github.com/stack-of-tasks/eigenpy/compare/v3.1.2...v3.1.3 [3.1.3]: https://github.com/stack-of-tasks/eigenpy/compare/v3.1.2...v3.1.3
[3.1.2]: https://github.com/stack-of-tasks/eigenpy/compare/v3.1.1...v3.1.2 [3.1.2]: https://github.com/stack-of-tasks/eigenpy/compare/v3.1.1...v3.1.2
[3.1.1]: https://github.com/stack-of-tasks/eigenpy/compare/v3.1.0...v3.1.1 [3.1.1]: https://github.com/stack-of-tasks/eigenpy/compare/v3.1.0...v3.1.1
......
...@@ -11,14 +11,30 @@ set(PROJECT_USE_CMAKE_EXPORT TRUE) ...@@ -11,14 +11,30 @@ set(PROJECT_USE_CMAKE_EXPORT TRUE)
set(PROJECT_USE_KEYWORD_LINK_LIBRARIES TRUE) set(PROJECT_USE_KEYWORD_LINK_LIBRARIES TRUE)
set(PROJECT_CUSTOM_HEADER_EXTENSION "hpp") set(PROJECT_CUSTOM_HEADER_EXTENSION "hpp")
set(PROJECT_COMPATIBILITY_VERSION AnyNewerVersion) 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 # Check if the submodule cmake have been initialized
set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake") set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake")
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/cmake/base.cmake") if(EXISTS "${JRL_CMAKE_MODULES}/base.cmake")
if(${CMAKE_VERSION} VERSION_LESS "3.14.0") message(STATUS "JRL cmakemodules found in 'cmake/' git submodule")
else()
find_package(jrl-cmakemodules QUIET CONFIG)
if(jrl-cmakemodules_FOUND)
get_property(
JRL_CMAKE_MODULES
TARGET jrl-cmakemodules::jrl-cmakemodules
PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
message(STATUS "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES}")
elseif(${CMAKE_VERSION} VERSION_LESS "3.14.0")
message( message(
FATAL_ERROR FATAL_ERROR
"\nPlease run the following command first:\ngit submodule update --init\n" "\nCan't find jrl-cmakemodules. Please either:\n"
" - use git submodule: 'git submodule update --init'\n"
" - or install https://github.com/jrl-umi3218/jrl-cmakemodules\n"
" - or upgrade your CMake version to >= 3.14 to allow automatic fetching\n"
) )
else() else()
message(STATUS "JRL cmakemodules not found. Let's fetch it.") message(STATUS "JRL cmakemodules not found. Let's fetch it.")
...@@ -31,6 +47,14 @@ if(NOT EXISTS "${CMAKE_SOURCE_DIR}/cmake/base.cmake") ...@@ -31,6 +47,14 @@ if(NOT EXISTS "${CMAKE_SOURCE_DIR}/cmake/base.cmake")
endif() endif()
endif() endif()
function(set_standard_output_directory target)
set_target_properties(
${target}
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin
LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib
ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
endfunction()
# Disable -Werror on Unix for now. # Disable -Werror on Unix for now.
set(CXX_DISABLE_WERROR True) set(CXX_DISABLE_WERROR True)
set(CMAKE_VERBOSE_MAKEFILE True) set(CMAKE_VERBOSE_MAKEFILE True)
...@@ -41,16 +65,30 @@ set(CMAKE_VERBOSE_MAKEFILE True) ...@@ -41,16 +65,30 @@ set(CMAKE_VERBOSE_MAKEFILE True)
# ---------------------------------------------------- # ----------------------------------------------------
option(INSTALL_DOCUMENTATION "Generate and install the documentation" OFF) option(INSTALL_DOCUMENTATION "Generate and install the documentation" OFF)
option(SUFFIX_SO_VERSION "Suffix library name with its version" OFF) option(SUFFIX_SO_VERSION "Suffix library name with its version" OFF)
option(BUILD_TESTING_SCIPY
"Build the SciPy tests (scipy should be installed on the machine)" ON)
if(DEFINED BUILD_UNIT_TESTS) # ----------------------------------------------------
message( # --- Policy -----------------------------------------
AUTHOR_WARNING # CMake Policy setup
"BUILD_UNIT_TESTS is deprecated. Use BUILD_TESTING instead.\ # ----------------------------------------------------
If you are manually building EigenPy from source in an existing build folder,\ # Policy can be removed when cmake_minimum_required is updated.
we suggest that you delete your build folder and make a new one.")
set(BUILD_TESTING ${BUILD_UNIT_TESTS}) # We also set CMAKE_POLICY_DEFAULT_CMPXXXX because CMake modules can reset
endif(DEFINED BUILD_UNIT_TESTS) # policy and redefine some macros like `find_dependency` that will not use our
# policy.
# Use BoostConfig module distributed by boost library instead of using FindBoost
# module distributed by CMake (to remove in 3.30).
if(POLICY CMP0167)
cmake_policy(SET CMP0167 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0167 NEW)
endif()
# install() DESTINATION paths are normalized (to remove in 3.31).
if(POLICY CMP0177)
cmake_policy(SET CMP0177 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0177 NEW)
endif()
include("${JRL_CMAKE_MODULES}/base.cmake") include("${JRL_CMAKE_MODULES}/base.cmake")
compute_project_args(PROJECT_ARGS LANGUAGES CXX) compute_project_args(PROJECT_ARGS LANGUAGES CXX)
project(${PROJECT_NAME} ${PROJECT_ARGS}) project(${PROJECT_NAME} ${PROJECT_ARGS})
...@@ -63,6 +101,15 @@ include("${JRL_CMAKE_MODULES}/apple.cmake") ...@@ -63,6 +101,15 @@ include("${JRL_CMAKE_MODULES}/apple.cmake")
option(GENERATE_PYTHON_STUBS option(GENERATE_PYTHON_STUBS
"Generate the Python stubs associated to the Python library" OFF) "Generate the Python stubs associated to the Python library" OFF)
option(BUILD_WITH_CHOLMOD_SUPPORT "Build EigenPy with the Cholmod support" OFF)
if(APPLE)
option(BUILD_WITH_ACCELERATE_SUPPORT
"Build EigenPy with the Accelerate support" OFF)
else(APPLE)
set(BUILD_WITH_ACCELERATE_SUPPORT FALSE)
endif(APPLE)
string(REPLACE "-pedantic" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) string(REPLACE "-pedantic" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
# If needed, fix CMake policy for APPLE systems # If needed, fix CMake policy for APPLE systems
...@@ -106,12 +153,45 @@ export_boost_default_options() ...@@ -106,12 +153,45 @@ export_boost_default_options()
find_package(Boost REQUIRED) find_package(Boost REQUIRED)
search_for_boost_python(REQUIRED) search_for_boost_python(REQUIRED)
if(BUILD_WITH_CHOLMOD_SUPPORT)
set(CMAKE_MODULE_PATH ${JRL_CMAKE_MODULES}/find-external/CHOLMOD
${CMAKE_MODULE_PATH})
add_project_dependency(CHOLMOD REQUIRED FIND_EXTERNAL "CHOLMOD")
message(
STATUS
"Build with CHOLDOD support (LGPL). See CHOLMOD/Doc/License.txt for further details."
)
add_definitions(-DEIGENPY_WITH_CHOLMOD_SUPPORT)
endif(BUILD_WITH_CHOLMOD_SUPPORT)
if(BUILD_WITH_ACCELERATE_SUPPORT)
if(NOT ${Eigen3_VERSION} VERSION_GREATER_EQUAL "3.4.90")
message(
FATAL_ERROR
"Your version of Eigen is too low. Should be at least 3.4.90. Current version is ${Eigen3_VERSION}."
)
endif()
set(CMAKE_MODULE_PATH ${JRL_CMAKE_MODULES}/find-external/Accelerate
${CMAKE_MODULE_PATH})
find_package(
Accelerate REQUIRED # FIND_EXTERNAL "Accelerate" # We don't export yet as
# there might be an issue on AMR64 platforms
)
message(STATUS "Build with Accelerate support framework.")
add_definitions(-DEIGENPY_WITH_ACCELERATE_SUPPORT)
endif(BUILD_WITH_ACCELERATE_SUPPORT)
# ---------------------------------------------------- # ----------------------------------------------------
# --- INCLUDE ---------------------------------------- # --- INCLUDE ----------------------------------------
# ---------------------------------------------------- # ----------------------------------------------------
set(${PROJECT_NAME}_UTILS_HEADERS set(${PROJECT_NAME}_UTILS_HEADERS
include/eigenpy/utils/scalar-name.hpp include/eigenpy/utils/is-approx.hpp include/eigenpy/utils/scalar-name.hpp
include/eigenpy/utils/is-aligned.hpp) include/eigenpy/utils/is-approx.hpp
include/eigenpy/utils/is-aligned.hpp
include/eigenpy/utils/traits.hpp
include/eigenpy/utils/python-compat.hpp
include/eigenpy/utils/empty-visitor.hpp)
set(${PROJECT_NAME}_SOLVERS_HEADERS set(${PROJECT_NAME}_SOLVERS_HEADERS
include/eigenpy/solvers/solvers.hpp include/eigenpy/solvers/solvers.hpp
...@@ -123,20 +203,57 @@ set(${PROJECT_NAME}_SOLVERS_HEADERS ...@@ -123,20 +203,57 @@ set(${PROJECT_NAME}_SOLVERS_HEADERS
include/eigenpy/solvers/BasicPreconditioners.hpp include/eigenpy/solvers/BasicPreconditioners.hpp
include/eigenpy/solvers/BFGSPreconditioners.hpp) include/eigenpy/solvers/BFGSPreconditioners.hpp)
set(${PROJECT_NAME}_EIGEN_HEADERS include/eigenpy/eigen/EigenBase.hpp)
set(${PROJECT_NAME}_DECOMPOSITIONS_SPARSE_CHOLMOD_HEADERS
include/eigenpy/decompositions/sparse/cholmod/CholmodBase.hpp
include/eigenpy/decompositions/sparse/cholmod/CholmodDecomposition.hpp
include/eigenpy/decompositions/sparse/cholmod/CholmodSimplicialLDLT.hpp
include/eigenpy/decompositions/sparse/cholmod/CholmodSimplicialLLT.hpp
include/eigenpy/decompositions/sparse/cholmod/CholmodSupernodalLLT.hpp)
set(${PROJECT_NAME}_DECOMPOSITIONS_SPARSE_ACCELERATE_HEADERS
include/eigenpy/decompositions/sparse/accelerate/accelerate.hpp)
set(${PROJECT_NAME}_DECOMPOSITIONS_SPARSE_HEADERS
include/eigenpy/decompositions/sparse/LLT.hpp
include/eigenpy/decompositions/sparse/LDLT.hpp
include/eigenpy/decompositions/sparse/SimplicialCholesky.hpp
include/eigenpy/decompositions/sparse/SparseSolverBase.hpp)
if(BUILD_WITH_CHOLMOD_SUPPORT)
list(APPEND ${PROJECT_NAME}_DECOMPOSITIONS_SPARSE_HEADERS
${${PROJECT_NAME}_DECOMPOSITIONS_SPARSE_CHOLMOD_HEADERS})
endif(BUILD_WITH_CHOLMOD_SUPPORT)
if(BUILD_WITH_ACCELERATE_SUPPORT)
list(APPEND ${PROJECT_NAME}_DECOMPOSITIONS_SPARSE_HEADERS
${${PROJECT_NAME}_DECOMPOSITIONS_SPARSE_ACCELERATE_HEADERS})
endif(BUILD_WITH_ACCELERATE_SUPPORT)
set(${PROJECT_NAME}_DECOMPOSITIONS_HEADERS set(${PROJECT_NAME}_DECOMPOSITIONS_HEADERS
${${PROJECT_NAME}_DECOMPOSITIONS_SPARSE_HEADERS}
include/eigenpy/decompositions/decompositions.hpp include/eigenpy/decompositions/decompositions.hpp
include/eigenpy/decompositions/EigenSolver.hpp include/eigenpy/decompositions/EigenSolver.hpp
include/eigenpy/decompositions/PermutationMatrix.hpp
include/eigenpy/decompositions/LDLT.hpp include/eigenpy/decompositions/LDLT.hpp
include/eigenpy/decompositions/LLT.hpp include/eigenpy/decompositions/LLT.hpp
include/eigenpy/decompositions/QR.hpp
include/eigenpy/decompositions/HouseholderQR.hpp
include/eigenpy/decompositions/ColPivHouseholderQR.hpp
include/eigenpy/decompositions/CompleteOrthogonalDecomposition.hpp
include/eigenpy/decompositions/FullPivHouseholderQR.hpp
include/eigenpy/decompositions/SelfAdjointEigenSolver.hpp include/eigenpy/decompositions/SelfAdjointEigenSolver.hpp
include/eigenpy/decompositions/minres.hpp) include/eigenpy/decompositions/minres.hpp)
set(${PROJECT_NAME}_HEADERS set(${PROJECT_NAME}_HEADERS
${${PROJECT_NAME}_UTILS_HEADERS} ${${PROJECT_NAME}_UTILS_HEADERS}
${${PROJECT_NAME}_SOLVERS_HEADERS} ${${PROJECT_NAME}_SOLVERS_HEADERS}
${${PROJECT_NAME}_EIGEN_HEADERS}
${${PROJECT_NAME}_DECOMPOSITIONS_HEADERS} ${${PROJECT_NAME}_DECOMPOSITIONS_HEADERS}
include/eigenpy/alignment.hpp include/eigenpy/alignment.hpp
include/eigenpy/computation-info.hpp include/eigenpy/computation-info.hpp
include/eigenpy/deprecation-policy.hpp
include/eigenpy/eigenpy.hpp include/eigenpy/eigenpy.hpp
include/eigenpy/exception.hpp include/eigenpy/exception.hpp
include/eigenpy/scalar-conversion.hpp include/eigenpy/scalar-conversion.hpp
...@@ -148,9 +265,11 @@ set(${PROJECT_NAME}_HEADERS ...@@ -148,9 +265,11 @@ set(${PROJECT_NAME}_HEADERS
include/eigenpy/eigen-to-python.hpp include/eigenpy/eigen-to-python.hpp
include/eigenpy/eigen-from-python.hpp include/eigenpy/eigen-from-python.hpp
include/eigenpy/eigen-typedef.hpp include/eigenpy/eigen-typedef.hpp
include/eigenpy/id.hpp
include/eigenpy/numpy-map.hpp include/eigenpy/numpy-map.hpp
include/eigenpy/geometry.hpp include/eigenpy/geometry.hpp
include/eigenpy/geometry-conversion.hpp include/eigenpy/geometry-conversion.hpp
include/eigenpy/map.hpp
include/eigenpy/memory.hpp include/eigenpy/memory.hpp
include/eigenpy/numpy.hpp include/eigenpy/numpy.hpp
include/eigenpy/numpy-allocator.hpp include/eigenpy/numpy-allocator.hpp
...@@ -162,13 +281,21 @@ set(${PROJECT_NAME}_HEADERS ...@@ -162,13 +281,21 @@ set(${PROJECT_NAME}_HEADERS
include/eigenpy/user-type.hpp include/eigenpy/user-type.hpp
include/eigenpy/ufunc.hpp include/eigenpy/ufunc.hpp
include/eigenpy/register.hpp include/eigenpy/register.hpp
include/eigenpy/std-array.hpp
include/eigenpy/std-map.hpp include/eigenpy/std-map.hpp
include/eigenpy/std-pair.hpp
include/eigenpy/std-vector.hpp include/eigenpy/std-vector.hpp
include/eigenpy/optional.hpp include/eigenpy/optional.hpp
include/eigenpy/pickle-vector.hpp include/eigenpy/pickle-vector.hpp
include/eigenpy/stride.hpp include/eigenpy/stride.hpp
include/eigenpy/tensor/eigen-from-python.hpp include/eigenpy/tensor/eigen-from-python.hpp
include/eigenpy/sparse/eigen-from-python.hpp
include/eigenpy/scipy-allocator.hpp
include/eigenpy/scipy-type.hpp
include/eigenpy/variant.hpp
include/eigenpy/std-unique-ptr.hpp
include/eigenpy/swig.hpp include/eigenpy/swig.hpp
include/eigenpy/type_info.hpp
include/eigenpy/version.hpp) include/eigenpy/version.hpp)
list( list(
...@@ -185,7 +312,27 @@ set(${PROJECT_NAME}_SOLVERS_SOURCES src/solvers/preconditioners.cpp ...@@ -185,7 +312,27 @@ set(${PROJECT_NAME}_SOLVERS_SOURCES src/solvers/preconditioners.cpp
src/solvers/solvers.cpp) src/solvers/solvers.cpp)
set(${PROJECT_NAME}_DECOMPOSITIONS_SOURCES set(${PROJECT_NAME}_DECOMPOSITIONS_SOURCES
src/decompositions/decompositions.cpp) src/decompositions/decompositions.cpp
src/decompositions/eigen-solver.cpp
src/decompositions/llt-solver.cpp
src/decompositions/ldlt-solver.cpp
src/decompositions/minres-solver.cpp
src/decompositions/qr-solvers.cpp
src/decompositions/eigen-solver.cpp
src/decompositions/self-adjoint-eigen-solver.cpp
src/decompositions/permutation-matrix.cpp
src/decompositions/simplicial-llt-solver.cpp
src/decompositions/simplicial-ldlt-solver.cpp)
if(BUILD_WITH_CHOLMOD_SUPPORT)
list(APPEND ${PROJECT_NAME}_DECOMPOSITIONS_SOURCES
src/decompositions/cholmod.cpp)
endif(BUILD_WITH_CHOLMOD_SUPPORT)
if(BUILD_WITH_ACCELERATE_SUPPORT)
list(APPEND ${PROJECT_NAME}_DECOMPOSITIONS_SOURCES
src/decompositions/accelerate.cpp)
endif(BUILD_WITH_ACCELERATE_SUPPORT)
set(${PROJECT_NAME}_SOURCES set(${PROJECT_NAME}_SOURCES
${${PROJECT_NAME}_SOLVERS_SOURCES} ${${PROJECT_NAME}_SOLVERS_SOURCES}
...@@ -202,21 +349,39 @@ set(${PROJECT_NAME}_SOURCES ...@@ -202,21 +349,39 @@ set(${PROJECT_NAME}_SOURCES
src/matrix-long-double.cpp src/matrix-long-double.cpp
src/matrix-complex-long-double.cpp src/matrix-complex-long-double.cpp
src/matrix-bool.cpp src/matrix-bool.cpp
src/matrix-int.cpp src/matrix-char.cpp
src/matrix-long.cpp src/matrix-int8.cpp
src/matrix-uint8.cpp
src/matrix-int16.cpp
src/matrix-uint16.cpp
src/matrix-int32.cpp
src/matrix-uint32.cpp
src/matrix-windows-long.cpp
src/matrix-windows-ulong.cpp
src/matrix-mac-long.cpp
src/matrix-mac-ulong.cpp
src/matrix-int64.cpp
src/matrix-uint64.cpp
src/matrix-linux-long-long.cpp
src/matrix-linux-ulong-long.cpp
src/angle-axis.cpp src/angle-axis.cpp
src/quaternion.cpp src/quaternion.cpp
src/geometry-conversion.cpp src/geometry-conversion.cpp
src/scipy-type.cpp
src/std-vector.cpp src/std-vector.cpp
src/optional.cpp src/optional.cpp
src/type_info.cpp
src/version.cpp) src/version.cpp)
add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES} add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES}
${${PROJECT_NAME}_HEADERS}) ${${PROJECT_NAME}_HEADERS})
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
set_standard_output_directory(${PROJECT_NAME})
target_include_directories( target_include_directories(
${PROJECT_NAME} SYSTEM ${PROJECT_NAME} SYSTEM
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include> PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
$<INSTALL_INTERFACE:include>) $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
modernize_target_link_libraries( modernize_target_link_libraries(
${PROJECT_NAME} ${PROJECT_NAME}
...@@ -237,6 +402,19 @@ modernize_target_link_libraries( ...@@ -237,6 +402,19 @@ modernize_target_link_libraries(
${NUMPY_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIR}) ${PYTHON_INCLUDE_DIR})
# Links against CholMod
if(BUILD_WITH_CHOLMOD_SUPPORT)
modernize_target_link_libraries(${PROJECT_NAME} SCOPE PUBLIC TARGETS
CHOLMOD::CHOLMOD)
endif(BUILD_WITH_CHOLMOD_SUPPORT)
# Links against accelerate
if(BUILD_WITH_ACCELERATE_SUPPORT)
# modernize_target_link_libraries(${PROJECT_NAME} SCOPE PUBLIC TARGETS
# Accelerate)
target_link_libraries(${PROJECT_NAME} PRIVATE "-framework accelerate")
endif(BUILD_WITH_ACCELERATE_SUPPORT)
if(SUFFIX_SO_VERSION) if(SUFFIX_SO_VERSION)
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION}) set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
endif(SUFFIX_SO_VERSION) endif(SUFFIX_SO_VERSION)
...@@ -267,29 +445,6 @@ add_source_group(${PROJECT_NAME}_SOURCES) ...@@ -267,29 +445,6 @@ add_source_group(${PROJECT_NAME}_SOURCES)
# Install package for ROS # Install package for ROS
install(FILES package.xml DESTINATION share/eigenpy) install(FILES package.xml DESTINATION share/eigenpy)
# Allows Colcon to find non-Ament packages when using workspace underlays
file(
WRITE
${CMAKE_CURRENT_BINARY_DIR}/share/ament_index/resource_index/packages/${PROJECT_NAME}
"")
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/share/ament_index/resource_index/packages/${PROJECT_NAME}
DESTINATION share/ament_index/resource_index/packages)
file(
WRITE
${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/ament_prefix_path.dsv
"prepend-non-duplicate;AMENT_PREFIX_PATH;")
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/ament_prefix_path.dsv
DESTINATION share/${PROJECT_NAME}/hook)
file(WRITE
${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/python_path.dsv
"prepend-non-duplicate;PYTHONPATH;${PYTHON_SITELIB}")
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/python_path.dsv
DESTINATION share/${PROJECT_NAME}/hook)
# ---------------------------------------------------- # ----------------------------------------------------
# --- PYTHON LIBRARY --------------------------------- # --- PYTHON LIBRARY ---------------------------------
...@@ -305,3 +460,5 @@ pkg_config_append_libs(${PROJECT_NAME}) ...@@ -305,3 +460,5 @@ pkg_config_append_libs(${PROJECT_NAME})
pkg_config_append_cflags("-I${PYTHON_INCLUDE_DIRS}") pkg_config_append_cflags("-I${PYTHON_INCLUDE_DIRS}")
pkg_config_append_cflags("-I${NUMPY_INCLUDE_DIRS}") pkg_config_append_cflags("-I${NUMPY_INCLUDE_DIRS}")
pkg_config_append_boost_libs(${BOOST_COMPONENTS}) pkg_config_append_boost_libs(${BOOST_COMPONENTS})
setup_project_finalize()