diff --git a/SuperBuild/CMake/External_mvd.cmake b/SuperBuild/CMake/External_mvd.cmake
index 0715f2fd5158b8ff02505a761aca25e0a76c87d2..2ecc040592934419417251380b8ac0cc29f39c99 100644
--- a/SuperBuild/CMake/External_mvd.cmake
+++ b/SuperBuild/CMake/External_mvd.cmake
@@ -28,6 +28,7 @@ ExternalProject_Add(MVD
   -DBUILD_SHARED_LIBS:BOOL=${SB_BUILD_SHARED_LIBS}
   -DBUILD_TESTING:BOOL=OFF
   -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
+  -DMonteverdi_INSTALL_LIB_DIR:STRING=lib
   -DCMAKE_PREFIX_PATH:STRING=${CMAKE_INSTALL_PREFIX};${CMAKE_PREFIX_PATH}
   -DOTB_DATA_ROOT:STRING=${OTB_DATA_ROOT}
   ${MVD_SB_CONFIG}
diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt
index b7c19303429a4e3d5e2a5702577b2bcad0092872..fea7c77e4a3db07f80ee3f712f37470ac94bb33b 100644
--- a/SuperBuild/CMakeLists.txt
+++ b/SuperBuild/CMakeLists.txt
@@ -249,10 +249,6 @@ else()
   include(External_otb)
 endif()
 
-option(GENERATE_PACKAGE "Generate OTB package" ON)
-option(GENERATE_XDK "Generate XDK for OTB development" OFF)
-if(GENERATE_PACKAGE OR GENERATE_XDK)
-  if(UNIX)
+if(UNIX)
     add_subdirectory(Packaging)
-  endif()
 endif()
diff --git a/SuperBuild/Packaging/CMakeLists.txt b/SuperBuild/Packaging/CMakeLists.txt
index 3e5863808c2cd18aa40d18f767966bb4a1f31cbc..fc8051dbca6c7f81008fe87c3d21a40741cb47c2 100644
--- a/SuperBuild/Packaging/CMakeLists.txt
+++ b/SuperBuild/Packaging/CMakeLists.txt
@@ -10,6 +10,9 @@ if(NOT PROJECT_NAME)
   project(OTBPackaging)
 endif()
 
+option(GENERATE_PACKAGE "Generate OTB package" ON)
+option(GENERATE_XDK "Generate XDK for OTB development" OFF)
+
 set(OUT_OF_SOURCE_BUILD FALSE)
 if(PROJECT_NAME STREQUAL "OTBPackaging")
   set(OUT_OF_SOURCE_BUILD TRUE)
@@ -26,26 +29,59 @@ if(OUT_OF_SOURCE_BUILD)
   if(BUILD_TESTING)
     include(CTest)
   endif()
-  set(SUPERBUILD_BINARY_DIR "" CACHE PATH "path to superbuild binary directory")
-  # From parent scope (SuperBuild) we have
-  # ENABLE_MONTEVERDI, DOWNLOAD_LOCATION, SB_INSTALL_PREFIX
-  option(ENABLE_MONTEVERDI "enable monteverdi" ON)
-  set(DOWNLOAD_LOCATION "" CACHE PATH "path to superbuild binary directory")
-  set(SB_INSTALL_PREFIX "" CACHE PATH "path to superbuild install directory")
+
+  if(WIN32 OR CMAKE_CROSSCOMPILING)
+    set(Monteverdi_SOURCE_DIR "" CACHE PATH "monteverdi source directory")
+    set(Monteverdi_BINARY_DIR "" CACHE PATH "monteverdi binary directory")
+  else()
+    set(SUPERBUILD_BINARY_DIR "" CACHE PATH "path to superbuild binary directory")
+    set(SUPERBUILD_INSTALL_DIR "" CACHE PATH "path to superbuild install directory")
+    option(ENABLE_MONTEVERDI "enable monteverdi" ON)
+    set(DOWNLOAD_LOCATION "" CACHE PATH "path to superbuild binary directory")
+  endif()
 else()
   # SUPERBUILD_BINARY_DIR is only set in Packaging/CMakeLists.txt and not available
   # in the parent scope like others. So we need to set it as CMAKE_BINARY_DIR
   # if doing packages from source tree.
   set(SUPERBUILD_BINARY_DIR ${CMAKE_BINARY_DIR})
+  set(SUPERBUILD_INSTALL_DIR ${SB_INSTALL_PREFIX})
 endif()
 
-if(NOT WIN32)
-  #set CMAKE_INSTALL_PREFIX and PKG_INSTALL_PREFIX to SB_INSTALL_PREFIX for convenience.
-  set(CMAKE_INSTALL_PREFIX "${SB_INSTALL_PREFIX}")
+get_filename_component(SUPERBUILD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} PATH)
+get_filename_component(OTB_SOURCE_DIR ${SUPERBUILD_SOURCE_DIR} PATH)
+
+if(WIN32 OR CMAKE_CROSSCOMPILING)
+  set(MONTEVERDI_INSTALL_DIR "" CACHE PATH "monteverdi install directory")
+  foreach(req
+      Monteverdi_SOURCE_DIR
+      Monteverdi_BINARY_DIR
+      MONTEVERDI_INSTALL_DIR
+      )
+    if(NOT DEFINED ${req} OR "${${req}}" STREQUAL "")
+      message(FATAL_ERROR "you must set ${req} before calling this method")
+    endif()
+    set(vars "${vars}  ${req}=[${${req}}]\n")
+  endforeach(req)
+else() #Unix like
+  foreach(req
+      SUPERBUILD_BINARY_DIR
+      SUPERBUILD_INSTALL_DIR
+      SUPERBUILD_SOURCE_DIR
+      OTB_SOURCE_DIR
+      )
+    if(NOT DEFINED ${req} OR "${${req}}" STREQUAL "")
+      message(FATAL_ERROR "you must set ${req} before calling this method")
+    endif()
+    set(vars "${vars}  ${req}=[${${req}}]\n")
+  endforeach(req)
 endif()
 
-#used in PackageHelper.cmake (don't change)
-set(PKG_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+if(WIN32 OR CMAKE_CROSSCOMPILING)
+  set(CMAKE_INSTALL_PREFIX "${Monteverdi_INSTALL_DIR}")
+else()
+  set(CMAKE_INSTALL_PREFIX "${SUPERBUILD_INSTALL_DIR}")
+endif()
 
 set(PACKAGE_NAME OTB)
 set(PACKAGE_LONG_NAME OrfeoToolBox)
@@ -72,24 +108,41 @@ else() #(WIN32 OR CMAKE_CROSSCOMPILING)
     else()
       set(PACKAGE_PLATFORM_NAME "Linux")
     endif()
-    get_version("${OTB_SUPERBUILD_SOURCE_DIR}/CMake/External_itk.cmake" "ITK_SB_VERSION" ITK_SB_VERSION)
+    get_version("${SUPERBUILD_SOURCE_DIR}/CMake/External_itk.cmake" "ITK_SB_VERSION" ITK_SB_VERSION)
     get_version("${OTB_SOURCE_DIR}/CMakeLists.txt" "OTB_VERSION_" OTB_VERSION_STRING)
     set(PACKAGE_VERSION_STRING ${get_version_OTB_VERSION_STRING})
   endif(UNIX)
 endif() #(WIN32 OR CMAKE_CROSSCOMPILING)
 
-get_filename_component(OTB_SUPERBUILD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} PATH)
-get_filename_component(OTB_SOURCE_DIR ${OTB_SUPERBUILD_SOURCE_DIR} PATH)
-
-set(PACKAGE_LIST OTB)
-if(GENERATE_XDK)
-  list(APPEND PACKAGE_LIST XDK)
-endif()
+include(${SUPERBUILD_SOURCE_DIR}/CMake/External_pkgtools.cmake)
 
-set(OTB_SUPERBUILD_SOURCE_DIR ${OTB_SOURCE_DIR}/SuperBuild)
-include(${OTB_SUPERBUILD_SOURCE_DIR}/CMake/External_pkgtools.cmake)
+set(EXTRA_CACHE_CONFIG
+  "set(CMAKE_CROSSCOMPILING ON)
+   set(MXE_ARCH \"${MXE_ARCH}\")
+   set(MXE_MXEROOT \"${MXE_MXEROOT}\")")
 
-set(PACKAGE_PROJECT_DIR ${CMAKE_BINARY_DIR}/${pkg}-PACKAGE)
+#guess install directory from OTB_MODULES_DIR
+#copy of cmake variables not needed.
+if(WIN32 OR CMAKE_CROSSCOMPILING)
+  set(Monteverdi_SOURCE_DIR       "${Monteverdi_SOURCE_DIR}")
+  set(Monteverdi_BINARY_DIR       "${Monteverdi_BINARY_DIR}")
+  set(MONTEVERDI_INSTALL_DIR      "${MONTEVERDI_INSTALL_DIR}")
+  set(OTB_INSTALL_DIR             "${OTB_MODULES_DIR}/../../../..")
+  set(DEPENDENCIES_INSTALL_DIR    "${MXE_MXEROOT}/usr/${MXE_ARCH}-w64-mingw32.shared")
+  set(QT_PLUGINS_DIR              "${DEPENDENCIES_INSTALL_DIR}/qt/plugins")
+  set(QT_TRANSLATIONS_DIR         "${DEPENDENCIES_INSTALL_DIR}/qt/translations")
+  set(ITK_VERSION_STRING)
+  else() #unixes
+    set(Monteverdi_SOURCE_DIR     "${SUPERBUILD_BINARY_DIR}/MVD/src/MVD")
+    set(Monteverdi_BINARY_DIR     "${SUPERBUILD_BINARY_DIR}/MVD/build")
+    set(MONTEVERDI_INSTALL_DIR    "${SUPERBUILD_INSTALL_DIR}")
+    set(QT_PLUGINS_DIR            "${SUPERBUILD_INSTALL_DIR}/plugins")
+    set(QT_TRANSLATIONS_DIR       "${SUPERBUILD_INSTALL_DIR}/translations")
+    set(OTB_INSTALL_DIR           "${SUPERBUILD_BINARY_DIR}/OTB/build")
+    set(DEPENDENCIES_INSTALL_DIR  "${SUPERBUILD_INSTALL_DIR}")
+    set(ITK_VERSION_STRING        "${get_version_ITK_SB_VERSION}")
+    set(EXTRA_CACHE_CONFIG)
+  endif()
 
 macro_setup_cmake_sources(OTB)
 if(GENERATE_XDK)
diff --git a/SuperBuild/Packaging/PMacros.cmake b/SuperBuild/Packaging/PMacros.cmake
index df8e8e2032f7c7feda5d55ef1a6afc23d78be2e5..7285c0e23bffa89bfdbf48cf599de29268668e5c 100644
--- a/SuperBuild/Packaging/PMacros.cmake
+++ b/SuperBuild/Packaging/PMacros.cmake
@@ -2,6 +2,7 @@ macro(macro_setup_cmake_sources pkg)
 
   message( "-- Configuring ${pkg} package")
 
+  set(PACKAGE_PROJECT_DIR ${CMAKE_BINARY_DIR}/PACKAGE-${pkg})
   execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${PACKAGE_PROJECT_DIR}/build")
 
   #Easy way to have the write "PACKAGE_PROJECT_DIR/src/CMakeLists.txt"
@@ -15,50 +16,24 @@ macro(macro_setup_cmake_sources pkg)
   #set archive name inside loop
   set(ARCHIVE_NAME ${PACKAGE_NAME}-${PACKAGE_VERSION_STRING}-${PACKAGE_PLATFORM_NAME}${PACKAGE_ARCH})
 
-  #copy of cmake variables not needed.
-  if(WIN32 OR CMAKE_CROSSCOMPILING)
-    set(cache_Monteverdi_SOURCE_DIR "${Monteverdi_SOURCE_DIR}")
-    set(cache_Monteverdi_BINARY_DIR "${Monteverdi_BINARY_DIR}")
-    set(cache_QT_PLUGINS_DIR "${QT_PLUGINS_DIR}")
-    set(cache_QT_TRANSLATIONS_DIR "${QT_TRANSLATIONS_DIR}")
-    set(cache_PKG_INSTALL_PREFIX "${PKG_INSTALL_PREFIX}")
-    set(cache_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-    #guess install directory from OTB_MODULES_DIR
-    set(cache_OTB_INSTALL_DIR "${OTB_MODULES_DIR}/../../../..")
-    set(cache_ITK_VERSION_STRING)
-    set(EXTRA_CACHE_CONFIG "
-        set(CMAKE_CROSSCOMPILING ON)
-        set(MXE_ARCH \"${MXE_ARCH}\")
-        set(MXE_MXEROOT \"${MXE_MXEROOT}\")")
-  else() #unixes
-    set(cache_Monteverdi_SOURCE_DIR "${SUPERBUILD_BINARY_DIR}/MVD/src/MVD")
-    set(cache_Monteverdi_BINARY_DIR "${SUPERBUILD_BINARY_DIR}/MVD/build")
-    set(cache_QT_PLUGINS_DIR "${PKG_INSTALL_PREFIX}/plugins")
-    set(cache_QT_TRANSLATIONS_DIR "${PKG_INSTALL_PREFIX}/translations")
-    set(cache_PKG_INSTALL_PREFIX "${PKG_INSTALL_PREFIX}")
-    set(cache_CMAKE_INSTALL_PREFIX "${PKG_INSTALL_PREFIX}")
-    set(cache_OTB_INSTALL_DIR "${SUPERBUILD_BINARY_DIR}/OTB/build")
-    set(cache_ITK_VERSION_STRING "${get_version_ITK_SB_VERSION}")
-    set(EXTRA_CACHE_CONFIG)
-  endif()
-
   file(WRITE "${PACKAGE_PROJECT_DIR}/src/CMakeLists.txt"
   "cmake_minimum_required(VERSION 2.6)
    include(CMakeParseArguments)
    include(CMakeDetermineSystem)
-   set(Monteverdi_SOURCE_DIR \"${cache_Monteverdi_SOURCE_DIR}\")
-   set(Monteverdi_BINARY_DIR \"${cache_Monteverdi_BINARY_DIR}\")
-   set(PACKAGE_SUPPORT_FILES_DIR \"${OTB_SOURCE_DIR}/SuperBuild/Packaging/Files\")
-   set(QT_PLUGINS_DIR \"${cache_QT_PLUGINS_DIR}\")
-   set(QT_TRANSLATIONS_DIR \"${cache_QT_TRANSLATIONS_DIR}\")
-   set(PKG_INSTALL_PREFIX \"${cache_PKG_INSTALL_PREFIX}\")
-   set(CMAKE_INSTALL_PREFIX \"${cache_CMAKE_INSTALL_PREFIX}\")
-   set(OTB_INSTALL_DIR ${cache_OTB_INSTALL_DIR})
-   set(ITK_VERSION_STRING \"${cache_ITK_VERSION_STRING}\")
-   set(Monteverdi_INSTALL_DATA_DIR \"share/otb\")
-   set(PKG_GENERATE_XDK ${PKG_GENERATE_XDK})
+   set(Monteverdi_SOURCE_DIR        \"${Monteverdi_SOURCE_DIR}\")
+   set(Monteverdi_BINARY_DIR        \"${Monteverdi_BINARY_DIR}\")
+   set(MONTEVERDI_INSTALL_DIR       \"${MONTEVERDI_INSTALL_DIR}\")
+   set(Monteverdi_INSTALL_DATA_DIR  \"share/otb\")
+   set(QT_PLUGINS_DIR               \"${QT_PLUGINS_DIR}\")
+   set(QT_TRANSLATIONS_DIR          \"${QT_TRANSLATIONS_DIR}\")
+   set(DEPENDENCIES_INSTALL_DIR     \"${DEPENDENCIES_INSTALL_DIR}\")
+   set(OTB_INSTALL_DIR              \"${OTB_INSTALL_DIR}\")
+   set(PACKAGE_SUPPORT_FILES_DIR    \"${OTB_SOURCE_DIR}/SuperBuild/Packaging/Files\")
+   set(CMAKE_INSTALL_PREFIX         \"${CMAKE_INSTALL_PREFIX}\")
+   set(ITK_VERSION_STRING           \"${cache_ITK_VERSION_STRING}\")
+   set(PKG_GENERATE_XDK              ${PKG_GENERATE_XDK})
    ${EXTRA_CACHE_CONFIG}
-   include(\"${OTB_SUPERBUILD_SOURCE_DIR}/CMake/PackageHelper.cmake\")
+   include(\"${SUPERBUILD_SOURCE_DIR}/Packaging/PackageHelper.cmake\")
    super_package(STAGE_DIR \"${ARCHIVE_NAME}\")" )
 
 endmacro()
@@ -72,7 +47,6 @@ macro(macro_update_dependencies_list list_variable)
         add_custom_target(PACKAGE-check
           COMMAND ${CMAKE_COMMAND} --build "${SUPERBUILD_BINARY_DIR}/MVD/build"
           WORKING_DIRECTORY "${SUPERBUILD_BINARY_DIR}/MVD/build"
-          DEPENDS PACKAGE-check-otb
           )
       else()
         add_custom_target(PACKAGE-check
@@ -109,7 +83,7 @@ macro(macro_create_targets_for_package pkg)
   if(WIN32 OR CMAKE_CROSSCOMPILING)
     add_custom_target(PACKAGE-${pkg}
       COMMAND ${ZIP_EXECUTABLE}
-      "-r" "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.zip" "${PKG_INSTALL_PREFIX}/${ARCHIVE_NAME}"
+      "-r" "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.zip" "${CMAKE_INSTALL_PREFIX}/${ARCHIVE_NAME}"
       WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
       DEPENDS PACKAGE-${pkg}-build
       )
@@ -119,7 +93,7 @@ macro(macro_create_targets_for_package pkg)
       COMMAND ${MAKESELF_SCRIPT}
       "--target"
       "${ARCHIVE_NAME}"
-      "${PKG_INSTALL_PREFIX}/${ARCHIVE_NAME}"
+      "${CMAKE_INSTALL_PREFIX}/${ARCHIVE_NAME}"
       "${ARCHIVE_NAME}.run"
       "${PACKAGE_LONG_NAME} ${PACKAGE_VERSION_STRING}"
       "./pkgsetup"
@@ -135,7 +109,8 @@ macro(macro_create_targets_for_package pkg)
 
   #clean
   add_custom_target(PACKAGE-${pkg}-clean
-    COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_BINARY_DIR}/${pkg}-PACKAGE"
+    COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_BINARY_DIR}/PACKAGE-${pkg}"
+    COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_BINARY_DIR}/PACKAGE-TOOLS"
     COMMAND ${CMAKE_COMMAND} -E remove "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}${PACKAGE_EXTENSION}"
     COMMAND ${CMAKE_COMMAND} "${CMAKE_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
     )
@@ -146,7 +121,7 @@ endmacro(macro_create_targets_for_package)
 #macro:  get_version
 #args :
  # input_file         - Input cmake file where the version variable is set via cmake set() command.
- #                      Example: ${OTB_SUPERBUILD_SOURCE_DIR}/CMake/External_itk.cmake
+ #                      Example: ${SUPERBUILD_SOURCE_DIR}/CMake/External_itk.cmake
  #match_string        - A match string to filter out required set() commands.
  #                      Example: "ITK_SB_VERSION" will get all set(ITK_SB_VERSION_MAJOR)
  #                      set(ITK_SB_VERSION_MINOR) set(ITK_SB_VERSION_PATCH)
@@ -155,7 +130,7 @@ endmacro(macro_create_targets_for_package)
  #                      Example: ITK_SB_VERSION. This is same as match_string but not always
  # Sample usage:
  # get_version(
- # "${OTB_SUPERBUILD_SOURCE_DIR}/CMake/External_itk.cmake"
+ # "${SUPERBUILD_SOURCE_DIR}/CMake/External_itk.cmake"
  # "ITK_SB_VERSION"
  #  ITK_SB_VERSION)
 macro(get_version input_file match_string check_cmake_var)
diff --git a/SuperBuild/CMake/PackageHelper.cmake b/SuperBuild/Packaging/PackageHelper.cmake
similarity index 90%
rename from SuperBuild/CMake/PackageHelper.cmake
rename to SuperBuild/Packaging/PackageHelper.cmake
index 74fd21547b4156d61ac893d0e1ac16016c3e3391..f4f2aa150cea6d0f8843867d7a88c84284ab6930 100644
--- a/SuperBuild/CMake/PackageHelper.cmake
+++ b/SuperBuild/Packaging/PackageHelper.cmake
@@ -2,21 +2,22 @@ macro(super_package)
   cmake_parse_arguments(PKG  "" "STAGE_DIR" "SEARCHDIRS" ${ARGN} )
   set(loader_program_PATHS)
   if(WIN32 OR CMAKE_CROSSCOMPILING)
-      set(loader_program_names "${MXE_ARCH}-w64-mingw32.shared-objdump")
-      set(loader_program_PATHS "${MXE_MXEROOT}/usr/bin")
-      set(LOADER_PROGRAM_ARGS "-p")
-      set(DEPENDENCIES_INSTALL_DIR "${MXE_MXEROOT}/usr/${MXE_ARCH}-w64-mingw32.shared")
+      set(loader_program_names      "${MXE_ARCH}-w64-mingw32.shared-objdump")
+      set(loader_program_PATHS      "${MXE_MXEROOT}/usr/bin")
+      set(LOADER_PROGRAM_ARGS       "-p")
     else()
       if(APPLE)
-        set(loader_program_names otool)
-        set(LOADER_PROGRAM_ARGS "-l")
-        set(loader_program_PATHS /opt/local/bin) # a path that is already listed i path on apple
+        set(loader_program_names    otool)
+        set(LOADER_PROGRAM_ARGS     "-l")
+        set(loader_program_PATHS    /opt/local/bin) # a path that is already listed i path on apple
       else()
-        set(loader_program_names objdump)
-        set(LOADER_PROGRAM_ARGS "-p")
-        set(loader_program_PATHS /usr/bin) # a path that is already listed in default path on Linux
+        set(loader_program_names    objdump)
+        set(LOADER_PROGRAM_ARGS     "-p")
+        set(loader_program_PATHS    /usr/bin) # a path that is already listed in default path on Linux
+      endif()
+      if(NOT DEPENDENCIES_INSTALL_DIR)
+        message(FATAL_ERROR "DEPENDENCIES_INSTALL_DIR is not set of empty")
       endif()
-      set(DEPENDENCIES_INSTALL_DIR ${PKG_INSTALL_PREFIX})
   endif()
 
   find_program(LOADER_PROGRAM "${loader_program_names}" PATHS ${loader_program_PATHS})
@@ -29,23 +30,28 @@ macro(super_package)
   set(PKG_SEARCHDIRS)
 
   if(WIN32 OR CMAKE_CROSSCOMPILING)
-    set(MXE_BIN_DIR "${DEPENDENCIES_INSTALL_DIR}/bin")
-    list(APPEND PKG_SEARCHDIRS ${MXE_BIN_DIR})
-    file(GLOB MXE_GCC_LIB_DIR "${MXE_BIN_DIR}/gcc*")
+    file(GLOB MXE_GCC_LIB_DIR "${DEPENDENCIES_INSTALL_DIR}/bin/gcc*")
     list(APPEND PKG_SEARCHDIRS ${MXE_GCC_LIB_DIR})
-    list(APPEND PKG_SEARCHDIRS "${MXE_BIN_DIR}/../qt/bin") #Qt
-    list(APPEND PKG_SEARCHDIRS "${MXE_BIN_DIR}/../qt/lib") #Qwt
-    list(APPEND PKG_SEARCHDIRS "${CMAKE_INSTALL_PREFIX}/bin") #mvd
-    list(APPEND PKG_SEARCHDIRS "${OTB_INSTALL_DIR}/bin") #otbApplicationLauncher*.exe
+    list(APPEND PKG_SEARCHDIRS "${DEPENDENCIES_INSTALL_DIR}/qt/bin") #Qt
+    list(APPEND PKG_SEARCHDIRS "${DEPENDENCIES_INSTALL_DIR}/qt/lib") #Qwt
+    list(APPEND PKG_SEARCHDIRS "${DEPENDENCIES_INSTALL_DIR}/bin") #mxe dlls
   else() #unixes
-    list(APPEND PKG_SEARCHDIRS "${OTB_INSTALL_DIR}/bin") #exe
     list(APPEND PKG_SEARCHDIRS "${OTB_INSTALL_DIR}/lib") #so
-    list(APPEND PKG_SEARCHDIRS "${OTB_INSTALL_DIR}/lib/otb") #mvd so
+    list(APPEND PKG_SEARCHDIRS "${DEPENDENCIES_INSTALL_DIR}/lib") #superbuild .so /.dylib
+    list(APPEND PKG_SEARCHDIRS "${MONTEVERDI_INSTALL_DIR}/lib/otb") #mvd so
   endif()
+
   #common for all platforms.
   set(OTB_APPLICATIONS_DIR "${OTB_INSTALL_DIR}/lib/otb/applications")
+  list(APPEND PKG_SEARCHDIRS "${DEPENDENCIES_INSTALL_DIR}/bin") #superbuild, mxe binaries
+  list(APPEND PKG_SEARCHDIRS "${MONTEVERDI_INSTALL_DIR}/bin") #monteverdi, mapla
+  list(APPEND PKG_SEARCHDIRS "${OTB_INSTALL_DIR}/bin") #otbApplicationLauncherCommandLine..
   list(APPEND PKG_SEARCHDIRS "${OTB_APPLICATIONS_DIR}") #otb apps
 
+  set(EXE_SEARCH_DIRS ${OTB_INSTALL_DIR}/bin)
+  list(APPEND  EXE_SEARCH_DIRS ${MONTEVERDI_INSTALL_DIR}/bin)
+  list(APPEND  EXE_SEARCH_DIRS ${DEPENDENCIES_INSTALL_DIR}/bin)
+
   empty_package_staging_directory()
 
   set(PKG_PEFILES)
@@ -79,7 +85,7 @@ macro(super_package)
     if(UNIX)
       if(NOT APPLE)
         ####################### install patchelf #####################
-        install(FILES ${PKG_INSTALL_PREFIX}/tools/patchelf
+        install(FILES ${CMAKE_INSTALL_PREFIX}/tools/patchelf
           DESTINATION ${PKG_STAGE_DIR}/tools
           PERMISSIONS
           OWNER_EXECUTE OWNER_WRITE OWNER_READ
@@ -243,6 +249,7 @@ function(install_common include_mvd)
       OTB_APPLICATIONS_DIR
       PKG_STAGE_DIR
       PACKAGE_SUPPORT_FILES_DIR
+      MONTEVERDI_INSTALL_DIR
       OTB_INSTALL_DIR
       )
     if(NOT DEFINED ${req})
@@ -266,7 +273,8 @@ function(install_common include_mvd)
         install(FILES ${ENV_SOURCE_FILE} DESTINATION ${PKG_STAGE_DIR})
       endif()
     endforeach()
-    set(PKG_OTB_SHARE_SOURCE_DIR "${PKG_INSTALL_PREFIX}/share")
+    #MONTEVERDI_INSTALL_DIR/share has otb/i18N directory
+    set(PKG_OTB_SHARE_SOURCE_DIR "${MONTEVERDI_INSTALL_DIR}/share")
   endif()
   ####################### install cli and gui scripts ###########################
   file(GLOB PKG_APP_SCRIPTS
@@ -401,8 +409,8 @@ function(install_monteverdi_files)
 endfunction()
 
 macro(empty_package_staging_directory)
-  message(STATUS "Empty package staging directory: ${PKG_INSTALL_PREFIX}/${PKG_STAGE_DIR}")
-  execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${PKG_INSTALL_PREFIX}/${PKG_STAGE_DIR}")
+  message(STATUS "Empty package staging directory: ${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}")
+  execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}")
 endmacro()
 
 #NOTE:
@@ -442,14 +450,17 @@ function(configure_package)
       otbTestDriver
       monteverdi
       mapla)
-    if(EXISTS "${OTB_INSTALL_DIR}/bin/${EXE_FILE}${EXE_EXT}")
-      #see the first comment about VAR_IN_PKGSETUP_CONFIGURE
-      set(VAR_IN_PKGSETUP_CONFIGURE "${VAR_IN_PKGSETUP_CONFIGURE} bin/${EXE_FILE}${EXE_EXT}")
-      list(APPEND PKG_PEFILES
-        "${OTB_INSTALL_DIR}/bin/${EXE_FILE}${EXE_EXT}")
-    else()
-      message(WARNING "'${OTB_INSTALL_DIR}/bin/${EXE_FILE}${EXE_EXT}'(not found. skipping)")
-    endif()
+
+    foreach(EXE_SEARCH_DIR ${EXE_SEARCH_DIRS})
+      if(EXISTS "${EXE_SEARCH_DIR}/${EXE_FILE}${EXE_EXT}")
+        #see the first comment about VAR_IN_PKGSETUP_CONFIGURE
+        set(VAR_IN_PKGSETUP_CONFIGURE "${VAR_IN_PKGSETUP_CONFIGURE} bin/${EXE_FILE}${EXE_EXT}")
+        list(APPEND PKG_PEFILES
+          "${EXE_SEARCH_DIR}/${EXE_FILE}${EXE_EXT}")
+      else()
+        message(STATUS "'${OTB_INSTALL_DIR}/bin/${EXE_FILE}${EXE_EXT}'(not found. skipping)")
+      endif()
+      endforeach() #EXE_SEARCH_DIR
   endforeach()
 
   #For Unixes we write the startup script in the *pkgsetup.in