[DiapOTB] Frame FFTW code and add another alternative

Description

Today DiapOTB code relies on FFTW code and itk compiled with FFTW. FFTW is released with GNU GPLv2 license, thus diapOTB is contamined by it. Today if we want to compile diapOTB, we should compile an otb version with FFTW

Definition of Ready

Generic:

  • If this issue is consequent, it is split into subtasks with priority and complexity evaluated. These subtasks should be linked to this issue. (To do on GitLab interface after writing this issue)
  • Issue complexity evaluated
  • Priority of issue evaluated
  • If there is specific test data needed, it should be detailed and available
  • If there is a specific documentation/specification need, it should be available to the development team
  • Time during the sprint to realize this issue
  • Blocking elements resolved (check if non-applicable, detail otherwise the resolved elements)

Specific:

Definition of Done

Generic:

  • No test regression on CI
  • Code reviewed by peers
  • Code cleaned, no "debug" traces or "TODO" comments kept.
  • New code documented

Specific:

  • [ ] An OTB_USE_FFTW cmake option to declare OTB_USE_FFTW c++ define. This define switch the compilation with or without FFTW
  • [ ] A cmake message which warns that the code should be release with GNU GPLv2 if compiled with FFTW
  • [ ] DiapOTB can compile without FFTW enabled (use simple OTB 10 package from CI, they are now released without fftw)
  • [ ] If compile with FFTW we must ensure ITK is compiled with FFTW (how ?)