Support of ITK 5.x in OTB
Summary
ITK 5.0 has been released !
This merge request is based on the work done in !194 (closed), the original branch ( cs-si:itk5_preperation
) has been rebased on top of develop, and additional changes have been made to make the branch compatible with the release.
Rationale
See the ITK 5 migration guidelines
Prior to ITK 5.0, only a subset of C+11 functionality was used, when available, through backports and macros. ITK now requires a C+11 standard compiler. And this get rid of lot of macros. Move to C++11 does not affect OTB since it has already moved to a higher standard (C++14). Meanwhile in this MR we introduce some C++17 concepts, as ITK 5.4 will be the first release to fully support C++17
Another important API change in ITK is its threading model. This affects OTB , Remote Modules and projects depending on OTB (both official and unofficial) in large scale. This merge request covers the use of the new threading model introduced with ITK 5.0.
This MR is fully compatible with ITK 5 and drops compatibility with ITK 4.
With this MR, debian, openSuse and other distros can now provide a distribution package for OTB.
Implementation Details
- Rebase the 5 years branch to the current develop branch
- Use the new Threading model when possible ThreadedGenerateData => DynamicThreadedGenerateData
- Migrate ITK mutexes to std::mutex
- Migrate ITKTree to Boost Graph implementation for Vector Data handling
- Migrate ProgressReporter to ProgressReportManager
- Remove ITK 4 compatibility
- 100% tests pass
- Functional tests
- Performance tests
Copyright
The copyright owner is CNES and has signed the ORFEO ToolBox Contributor License Agreement.
Check before merging:
- All discussions are resolved
- At least 2
👍 votes from core developers, no👎 vote. - The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
- Optionally, run
git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i
on latest changes and commit