diff --git a/Modules/Core/Convolution/CMakeLists.txt b/Modules/Core/Convolution/CMakeLists.txt
index 4a79021d37ac4ea8f9577293913d40d63b380aa2..66dcee34743e4d1d32aee57803fcb6e689d52f23 100644
--- a/Modules/Core/Convolution/CMakeLists.txt
+++ b/Modules/Core/Convolution/CMakeLists.txt
@@ -19,4 +19,15 @@
 #
 
 project(OTBConvolution)
+
+option(OTB_USE_FFTW "Download and compile FFTW third party (license change to GPLv2)" OFF)
+
+if (OTB_USE_FFTW)
+  message(NOTICE "/!\ /!\ /!\ You are actually compiling OTB with FFTW. As FFTW is distributed under GNU GPLv2, OTB is now provided with GNU GPLv2 license /!\ /!\ /!\ ")
+else()
+  message(STATUS "Compiling with FFTW disabled, otbOverlapSaveConvolutionImageFilter will not be available")
+  add_compile_definitions(ITK_USE_FFTWD=0)
+  add_compile_definitions(ITK_USE_FFTWF=0)
+endif()
+
 otb_module_impl()
diff --git a/Modules/Core/Convolution/test/CMakeLists.txt b/Modules/Core/Convolution/test/CMakeLists.txt
index ebb6f84892b968f6c26feb23e22696a56c3f649d..e76c0e59fa69f5c06e41f7cfa59f54910b139dbf 100644
--- a/Modules/Core/Convolution/test/CMakeLists.txt
+++ b/Modules/Core/Convolution/test/CMakeLists.txt
@@ -23,11 +23,14 @@ otb_module_test()
 set(OTBConvolutionTests
 otbConvolutionTestDriver.cxx
 otbConvolutionImageFilter.cxx
-otbOverlapSaveConvolutionImageFilter.cxx
 otbCompareOverlapSaveAndClassicalConvolutionWithGaborFilter.cxx
 otbGaborFilterGenerator.cxx
 )
 
+if (OTB_USE_FFTW)
+  list(APPEND OTBConvolutionTests otbOverlapSaveConvolutionImageFilter.cxx)
+endif()
+
 add_executable(otbConvolutionTestDriver ${OTBConvolutionTests})
 target_link_libraries(otbConvolutionTestDriver ${OTBConvolution-Test_LIBRARIES})
 otb_module_target_label(otbConvolutionTestDriver)
@@ -43,35 +46,34 @@ otb_add_test(NAME bfTvConvolutionImageFilter COMMAND otbConvolutionTestDriver
   ${TEMP}/bfTvConvolutionImageFilter.tif
   )
 
-if(ITK_USE_FFTWD)
-
-if(MSVC AND (CMAKE_SIZEOF_VOID_P EQUAL "4"))
-  message(WARNING "Disable OverlapSaveConvolution tests")
-else()
-otb_add_test(NAME bfTvOverlapSaveConvolutionImageFilter COMMAND otbConvolutionTestDriver
-  --compare-image ${EPSILON_7}
-  ${BASELINE}/bfTvConvolutionImageFilter.tif
-  ${TEMP}/bfTvOverlapSaveConvolutionImageFilter.tif
-  otbOverlapSaveConvolutionImageFilter
-  ${INPUTDATA}/QB_Suburb.png
-  ${TEMP}/bfTvOverlapSaveConvolutionImageFilter.tif
-  )
+if(OTB_USE_FFTW)
+  if(MSVC AND (CMAKE_SIZEOF_VOID_P EQUAL "4"))
+    message(WARNING "Disable OverlapSaveConvolution tests")
+  else()
+    otb_add_test(NAME bfTvOverlapSaveConvolutionImageFilter COMMAND otbConvolutionTestDriver
+      --compare-image ${EPSILON_7}
+      ${BASELINE}/bfTvConvolutionImageFilter.tif
+      ${TEMP}/bfTvOverlapSaveConvolutionImageFilter.tif
+      otbOverlapSaveConvolutionImageFilter
+      ${INPUTDATA}/QB_Suburb.png
+      ${TEMP}/bfTvOverlapSaveConvolutionImageFilter.tif
+      )
 
-otb_add_test(NAME bfTvCompareOverlapSaveAndClassicalConvolutionWithGaborFilter COMMAND otbConvolutionTestDriver
-  --compare-image ${EPSILON_7}
-  ${TEMP}/bfTvCompareConvolutionOutput.tif
-  ${TEMP}/bfTvCompareOSConvolutionoutput.tif
-  otbCompareOverlapSaveAndClassicalConvolutionWithGaborFilter
-  ${INPUTDATA}/QB_PAN_ROI_1000_100.tif
-  ${TEMP}/bfTvCompareConvolutionOutput.tif
-  ${TEMP}/bfTvCompareOSConvolutionoutput.tif
-  32 32 #Radius
-  0.02 0.025 # a b
-  -45 # theta
-  0.0125 0.0125 #u0 v0
-  0
-  )
-endif()
+    otb_add_test(NAME bfTvCompareOverlapSaveAndClassicalConvolutionWithGaborFilter COMMAND otbConvolutionTestDriver
+      --compare-image ${EPSILON_7}
+      ${TEMP}/bfTvCompareConvolutionOutput.tif
+      ${TEMP}/bfTvCompareOSConvolutionoutput.tif
+      otbCompareOverlapSaveAndClassicalConvolutionWithGaborFilter
+      ${INPUTDATA}/QB_PAN_ROI_1000_100.tif
+      ${TEMP}/bfTvCompareConvolutionOutput.tif
+      ${TEMP}/bfTvCompareOSConvolutionoutput.tif
+      32 32 #Radius
+      0.02 0.025 # a b
+      -45 # theta
+      0.0125 0.0125 #u0 v0
+      0
+      )
+  endif()
 
 endif()
 
diff --git a/Modules/ThirdParty/ITK/CMakeLists.txt b/Modules/ThirdParty/ITK/CMakeLists.txt
index 1efa7de0b4cba0490103d499fcf3d0e018dcae83..c40641a5c3b56651572ce9b864323e40f5e66557 100644
--- a/Modules/ThirdParty/ITK/CMakeLists.txt
+++ b/Modules/ThirdParty/ITK/CMakeLists.txt
@@ -23,7 +23,13 @@ project(OTBITK)
 set(OTBITK_SYSTEM_INCLUDE_DIRS ${ITK_INCLUDE_DIRS})
 set(OTBITK_SYSTEM_LIBRARY_DIRS ${ITK_LIBRARY_DIRS})
 list(REMOVE_DUPLICATES OTBITK_SYSTEM_LIBRARY_DIRS)
-set(OTBITK_LIBRARIES "${ITK_LIBRARIES}" ${FFTWD_BASE_LIB} ${FFTWD_THREADS_LIB} ${FFTWF_BASE_LIB} ${FFTWF_THREADS_LIB})
+
+if (OTB_USE_FFTW)
+    set(OTBITK_LIBRARIES "${ITK_LIBRARIES}" ${FFTWD_BASE_LIB} ${FFTWD_THREADS_LIB} ${FFTWF_BASE_LIB} ${FFTWF_THREADS_LIB})
+else()
+    set(OTBITK_LIBRARIES "${ITK_LIBRARIES}")
+endif()
+
 set(OTBITK_EXPORT_CODE_BUILD "find_package(ITK REQUIRED COMPONENTS ${OTBITK_ITK_REQUIRED_MODULE_LIST} HINTS ${ITK_DIR})")
 set(OTBITK_EXPORT_CODE_INSTALL ${OTBITK_EXPORT_CODE_BUILD})
 
diff --git a/SuperBuild/CMake/External_fftw.cmake b/SuperBuild/CMake/External_fftw.cmake
index bcc242186ad369dcaccdf7ec0a14ed1b8f86abef..f3a0c3f7de0286ef28cd127dcc4259adb175044c 100644
--- a/SuperBuild/CMake/External_fftw.cmake
+++ b/SuperBuild/CMake/External_fftw.cmake
@@ -18,78 +18,83 @@
 # limitations under the License.
 #
 
-INCLUDE_ONCE_MACRO(FFTW)
+if (OTB_USE_FFTW)
+  INCLUDE_ONCE_MACRO(FFTW)
 
-SETUP_SUPERBUILD(FFTW)
+  SETUP_SUPERBUILD(FFTW)
+  message(AUTHOR_WARNING "/!\\/!\\/!\\ You are actually compiling OTB with FFTW. As FFTW is distributed under GNU GPLv2, OTB is now provided with GNU GPLv2 license /!\\/!\\/!\\")
 
-set(FFTWF_SB_SRC ${CMAKE_BINARY_DIR}/FFTW/src/FFTWF)
-set(FFTWD_SB_SRC ${CMAKE_BINARY_DIR}/FFTW/src/FFTWD)
-set(FFTWF_SB_BUILD ${CMAKE_BINARY_DIR}/FFTW/build/FFTWF)
-set(FFTWD_SB_BUILD ${CMAKE_BINARY_DIR}/FFTW/build/FFTWD)
+  set(FFTWF_SB_SRC ${CMAKE_BINARY_DIR}/FFTW/src/FFTWF)
+  set(FFTWD_SB_SRC ${CMAKE_BINARY_DIR}/FFTW/src/FFTWD)
+  set(FFTWF_SB_BUILD ${CMAKE_BINARY_DIR}/FFTW/build/FFTWF)
+  set(FFTWD_SB_BUILD ${CMAKE_BINARY_DIR}/FFTW/build/FFTWD)
 
-if(WIN32)
-  set(FFTW_SB_CONFIG -DWITH_COMBINED_THREADS:BOOL=ON)
-else()
-  set(FFTW_SB_CONFIG -DWITH_COMBINED_THREADS:BOOL=OFF)
-endif()
+  if(WIN32)
+    set(FFTW_SB_CONFIG -DWITH_COMBINED_THREADS:BOOL=ON)
+  else()
+    set(FFTW_SB_CONFIG -DWITH_COMBINED_THREADS:BOOL=OFF)
+  endif()
 
-# Compile the float version of FFTW
-ExternalProject_Add(FFTWF
-  PREFIX FFTW/FFTWF
-  URL "https://fftw.org/fftw-3.3.10.tar.gz"
-  URL_MD5 8ccbf6a5ea78a16dbc3e1306e234cc5c
-  SOURCE_DIR ${FFTWF_SB_SRC}
-  BINARY_DIR ${FFTWF_SB_BUILD}
-  INSTALL_DIR ${SB_INSTALL_PREFIX}
-  DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-  CMAKE_CACHE_ARGS
-  ${SB_CMAKE_CACHE_ARGS}
-    -DCMAKE_INSTALL_LIBDIR:PATH=lib
-    -DBUILD_TESTS:BOOL=OFF
-    -DDISABLE_FORTRAN:BOOL=ON
-    -DENABLE_THREADS:BOOL=ON
-    -DENABLE_SSE2:BOOL=ON
-    -DENABLE_FLOAT:BOOL=ON
-    ${FFTW_SB_CONFIG}
-  DEPENDS ${FFTW_DEPENDENCIES}
-  LOG_DOWNLOAD 1
-  LOG_CONFIGURE 1
-  LOG_BUILD 1
-  LOG_INSTALL 1
-  )
+  # Compile the float version of FFTW
+  ExternalProject_Add(FFTWF
+    PREFIX FFTW/FFTWF
+    URL "https://fftw.org/fftw-3.3.10.tar.gz"
+    URL_MD5 8ccbf6a5ea78a16dbc3e1306e234cc5c
+    SOURCE_DIR ${FFTWF_SB_SRC}
+    BINARY_DIR ${FFTWF_SB_BUILD}
+    INSTALL_DIR ${SB_INSTALL_PREFIX}
+    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
+    CMAKE_CACHE_ARGS
+    ${SB_CMAKE_CACHE_ARGS}
+      -DCMAKE_INSTALL_LIBDIR:PATH=lib
+      -DBUILD_TESTS:BOOL=OFF
+      -DDISABLE_FORTRAN:BOOL=ON
+      -DENABLE_THREADS:BOOL=ON
+      -DENABLE_SSE2:BOOL=ON
+      -DENABLE_FLOAT:BOOL=ON
+      ${FFTW_SB_CONFIG}
+    DEPENDS ${FFTW_DEPENDENCIES}
+    LOG_DOWNLOAD 1
+    LOG_CONFIGURE 1
+    LOG_BUILD 1
+    LOG_INSTALL 1
+    )
 
-# Compile the double version of FFTW
-ExternalProject_Add(FFTWD
-  PREFIX FFTW/FFTWD
-  URL "https://fftw.org/fftw-3.3.10.tar.gz"
-  URL_MD5 8ccbf6a5ea78a16dbc3e1306e234cc5c
-  SOURCE_DIR ${FFTWD_SB_SRC}
-  BINARY_DIR ${FFTWD_SB_BUILD}
-  INSTALL_DIR ${SB_INSTALL_PREFIX}
-  DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-  CMAKE_CACHE_ARGS
-  ${SB_CMAKE_CACHE_ARGS}
-    -DCMAKE_INSTALL_LIBDIR:PATH=lib
-    -DBUILD_TESTS:BOOL=OFF
-    -DDISABLE_FORTRAN:BOOL=ON
-    -DENABLE_THREADS:BOOL=ON
-    -DENABLE_SSE2:BOOL=ON
-    -DENABLE_FLOAT:BOOL=OFF
-    ${FFTW_SB_CONFIG}
-  DEPENDS FFTWF
-  LOG_DOWNLOAD 1
-  LOG_CONFIGURE 1
-  LOG_BUILD 1
-  LOG_INSTALL 1
-  )
+  # Compile the double version of FFTW
+  ExternalProject_Add(FFTWD
+    PREFIX FFTW/FFTWD
+    URL "https://fftw.org/fftw-3.3.10.tar.gz"
+    URL_MD5 8ccbf6a5ea78a16dbc3e1306e234cc5c
+    SOURCE_DIR ${FFTWD_SB_SRC}
+    BINARY_DIR ${FFTWD_SB_BUILD}
+    INSTALL_DIR ${SB_INSTALL_PREFIX}
+    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
+    CMAKE_CACHE_ARGS
+    ${SB_CMAKE_CACHE_ARGS}
+      -DCMAKE_INSTALL_LIBDIR:PATH=lib
+      -DBUILD_TESTS:BOOL=OFF
+      -DDISABLE_FORTRAN:BOOL=ON
+      -DENABLE_THREADS:BOOL=ON
+      -DENABLE_SSE2:BOOL=ON
+      -DENABLE_FLOAT:BOOL=OFF
+      ${FFTW_SB_CONFIG}
+    DEPENDS FFTWF
+    LOG_DOWNLOAD 1
+    LOG_CONFIGURE 1
+    LOG_BUILD 1
+    LOG_INSTALL 1
+    )
 
-ExternalProject_Add(FFTW
-  PREFIX FFTW
-  DOWNLOAD_COMMAND ""
-  CONFIGURE_COMMAND ""
-  BUILD_COMMAND ""
-  INSTALL_COMMAND ""
-  DEPENDS FFTWD
-  )
+  ExternalProject_Add(FFTW
+    PREFIX FFTW
+    DOWNLOAD_COMMAND ""
+    CONFIGURE_COMMAND ""
+    BUILD_COMMAND ""
+    INSTALL_COMMAND ""
+    DEPENDS FFTWD
+    )
 
-set(_SB_FFTW_INCLUDE_PATH ${SB_INSTALL_PREFIX}/include)
+  set(_SB_FFTW_INCLUDE_PATH ${SB_INSTALL_PREFIX}/include)
+else()
+  message(STATUS "Compiling with FFTW disabled, otbOverlapSaveConvolutionImageFilter will not be available")
+endif()
diff --git a/SuperBuild/CMake/External_itk.cmake b/SuperBuild/CMake/External_itk.cmake
index 8357ad767e70e167bee71f21f8ad6c98856d2d7b..a03dccb487c7bd1b5a73ed6cd6db296a7db3fa06 100644
--- a/SuperBuild/CMake/External_itk.cmake
+++ b/SuperBuild/CMake/External_itk.cmake
@@ -114,19 +114,29 @@ foreach(ITK_MODULE ${ITK_ENABLED_MODULES})
 endforeach()
 
 # declare dependencies
-ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(ITK ZLIB FFTW)
+# by default we don't distribute otb with fftw as it implies a GPLv2
+# contamination
+if (OTB_USE_FFTW)
+  ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(ITK ZLIB FFTW)
+else()
+  ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(ITK ZLIB)
+  add_compile_definitions(ITK_USE_FFTWD=0)
+  add_compile_definitions(ITK_USE_FFTWF=0)
+endif()
 ADD_SUPERBUILD_CMAKE_VAR(ITK ZLIB_INCLUDE_DIR)
 ADD_SUPERBUILD_CMAKE_VAR(ITK ZLIB_LIBRARY)
 
-# These variables are used in ITK to initialize the value of the ITK_USE_FFTW_XXX options
-list(APPEND ITK_SB_CONFIG
-  -DUSE_FFTWF:BOOL=ON
-  -DUSE_FFTWD:BOOL=ON
-  -DUSE_SYSTEM_FFTW:BOOL=ON
-  )
-ADD_SUPERBUILD_CMAKE_VAR(ITK FFTW_INCLUDE_PATH)
-ADD_SUPERBUILD_CMAKE_VAR(ITK FFTW_LIBRARIES)
-ADD_SUPERBUILD_CMAKE_VAR(ITK FFTWD_LIBRARIES)
+if (OTB_USE_FFTW)
+  # These variables are used in ITK to initialize the value of the ITK_USE_FFTW_XXX options
+  list(APPEND ITK_SB_CONFIG
+    -DUSE_FFTWF:BOOL=ON
+    -DUSE_FFTWD:BOOL=ON
+    -DUSE_SYSTEM_FFTW:BOOL=ON
+    )
+  ADD_SUPERBUILD_CMAKE_VAR(ITK FFTW_INCLUDE_PATH)
+  ADD_SUPERBUILD_CMAKE_VAR(ITK FFTW_LIBRARIES)
+  ADD_SUPERBUILD_CMAKE_VAR(ITK FFTWD_LIBRARIES)
+endif()
 
 if (WIN32)
   list(APPEND ITK_SB_CONFIG
@@ -169,4 +179,4 @@ ExternalProject_Add(ITK
   LOG_INSTALL 1
   )
 
-SUPERBUILD_PATCH_SOURCE(ITK)
\ No newline at end of file
+SUPERBUILD_PATCH_SOURCE(ITK)
diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt
index f1bcd99adb4be7a09150538b48556bd231230e22..579b767bbfe468915a2682583177006fd1cb0ae9 100644
--- a/SuperBuild/CMakeLists.txt
+++ b/SuperBuild/CMakeLists.txt
@@ -22,6 +22,15 @@ cmake_minimum_required(VERSION 3.10.2)
 
 project(OTB-SuperBuild)
 
+if(POLICY CMP0135)
+  # avoid cmake warnings about missing DOWNLOAD_EXTRACT_TIMESTAMP
+  # when using ExternalProject_Add in External_<dep>.cmake files.
+  # As we also build on rhel and cmake version < 3.24 here,
+  # we need to use policy settings
+  cmake_policy(SET CMP0135 NEW)
+endif()
+
+
 set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 set(CMAKE_CXX_EXTENSIONS OFF)
@@ -276,6 +285,7 @@ option(OTB_USE_CURL "Enable module Curl in OTB" ON)
 option(OTB_USE_SIFTFAST "Enable module Siftfast in OTB" ON)
 option(OTB_USE_GSL "Enable module GSL in OTB" ON)
 option(OTB_USE_LIBKML "Enable module libKML in OTB" OFF)
+option(OTB_USE_FFTW "Download and compile FFTW third party (license change to GPLv2)" OFF)
 #option() does not change the value in cache so we have to set the option via the set CACHE FORCE method
 if(OTB_BUILD_Learning MATCHES ON)
   set(OTB_USE_LIBSVM ON CACHE BOOL "Enable module LibSVM in OTB" FORCE)