diff --git a/.travis.yml b/.travis.yml index 57e2a46096cd5394605d34555e99f75278249c4a..ec99d4dea9a1ee15fcf3db29a8e2d6244e39ab90 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,10 +6,10 @@ dist: trusty compiler: - clang -addons: - apt: - packages: - - libboost-all-dev +# addons: +# apt: +# packages: +# - libboost-all-dev cache: ccache diff --git a/Documentation/Cookbook/rst/Installation_Linux.txt b/Documentation/Cookbook/rst/Installation_Linux.txt index f86681bd63bad76344e1fea96780ac4cc3342953..0567d00c1ce372a8ddd323481dbd3b8595584bdd 100644 --- a/Documentation/Cookbook/rst/Installation_Linux.txt +++ b/Documentation/Cookbook/rst/Installation_Linux.txt @@ -49,6 +49,18 @@ The applications can be launched from the Mapla launcher. If you want to use the otbcli and otbgui launchers, you can initialize your environment with ``source otbenv.profile``. +Python bindings +--------------- +Starting from OTB 5.8.0, OTB python bindings are distributed with binary package. +currently only Python 2.x is supported. If no compatible python is found, installation +notify you about it. If everything works fine, you will be given information about +using python bindings. + +You must have python numpy bindings installed in your system. you can install it locally +without admin rights with "pip install --user numpy". This is to give users to choose +their own existing python installation rather than distributing one in OTB package + + Notes: - You must use monteverdi and mapla through ``mapla.sh`` and ``monteverdi.sh`` helper scripts in extracted directory. diff --git a/Documentation/Cookbook/rst/Installation_Macx.txt b/Documentation/Cookbook/rst/Installation_Macx.txt index 258548d1d47b9d92d5418861be43788361eed016..cf7f3f9bc462ef081facf3c93527c0c73b953d76 100644 --- a/Documentation/Cookbook/rst/Installation_Macx.txt +++ b/Documentation/Cookbook/rst/Installation_Macx.txt @@ -25,6 +25,17 @@ Contents of OTB-|release|-Darwin64 is briefly listed below: - ``share`` : A folder containing common resources and copyright mentions. +Python bindings +--------------- +Starting from OTB 5.8.0, OTB python bindings are distributed with binary package. +currently only Python 2.x is supported. If no compatible python is found, installation +notify you about it. If everything works fine, you will be given information about +using python bindings. + +You must have python numpy bindings installed in your system. you can install it locally +without admin rights with "pip install --user numpy". This is to give users to choose +their own existing python installation rather than distributing one in OTB package + Notes: - If you want to use the otbcli and otbgui launchers, you must access diff --git a/Documentation/Cookbook/rst/Installation_Windows.txt b/Documentation/Cookbook/rst/Installation_Windows.txt index 3c2884969a197f87b0dffb8dcf40358af5ccb589..f7a967190ee2f6b418753bac799cc7d31c18e37a 100644 --- a/Documentation/Cookbook/rst/Installation_Windows.txt +++ b/Documentation/Cookbook/rst/Installation_Windows.txt @@ -22,6 +22,17 @@ The applications can be launched from the Mapla launcher. If you want to use the otbcli and otbgui launchers, you can initialize a command prompt with ``otbenv.bat``. +Python bindings +--------------- +Starting from OTB 5.8.0, OTB python bindings are distributed with binary package. +currently only Python 2.x is supported. If no compatible python is found, installation +notify you about it. If everything works fine, you will be given information about +using python bindings. + +You must have python numpy bindings installed in your system. you can install it locally +without admin rights with "pip install --user numpy". This is to give users to choose +their own existing python installation rather than distributing one in OTB package + Notes: ~~~~~~ - You must have "Visual C++ Redistributable for Visual Studio 2015" installed for using this package. diff --git a/Documentation/Cookbook/rst/OTB-Applications.rst b/Documentation/Cookbook/rst/OTB-Applications.rst index a69fe4eff5f7f76ac336196bfd706a7529ce39f4..eea59f1a7291920ac8bee0b30ae1f689b6fedf21 100644 --- a/Documentation/Cookbook/rst/OTB-Applications.rst +++ b/Documentation/Cookbook/rst/OTB-Applications.rst @@ -31,7 +31,7 @@ entry points. The framework can be extended, but Orfeo Toolbox ships with the fo QGIS. The OTB Applications are now rich of more than 90 tools, which are -listed in the the applications reference documentation, presented in +listed in the applications reference documentation, presented in chapter [chap:apprefdoc], page. Running the applications @@ -40,7 +40,7 @@ Running the applications Common framework ~~~~~~~~~~~~~~~~ -All standard applications shared the same implementation and expose +All standard applications share the same implementation and expose automatically generated interfaces. Thus, the command-line interface is prefixed by ``otbcli_``, while the Qt interface is prefixed by ``otbgui_``. For instance, calling ``otbcli_Convert`` will launch the @@ -149,8 +149,6 @@ The graphical interface for the applications provides a useful interactive user interface to set the parameters, choose files, and monitor the execution progress. -This interface can be activated through the CMake option . - This launcher needs the same two arguments as the command line launcher : @@ -194,12 +192,12 @@ Using the Python interface ~~~~~~~~~~~~~~~~~~~~~~~~~~ The applications can also be accessed from Python, through a module -named ``otbApplication`` +named ``otbApplication``. -On Unix systems it is typically available in the ``/usr/lib/otb/python`` -directory. You may need to configure the environment variable -``PYTHONPATH`` to include this directory so that the module becomes -available from an Python shell. +On Unix systems, it is typically available in the ``/usr/lib/otb/python`` +directory. Depending on how you installed OTB, you may need to configure the +environment variable ``PYTHONPATH`` to include this directory so that the module +becomes available from Python. On Windows, you can install the ``otb-python`` package, and the module will be available from an OSGeo4W shell automatically. diff --git a/Modules/Filtering/Wavelet/include/otbWaveletFilterBank.txx b/Modules/Filtering/Wavelet/include/otbWaveletFilterBank.txx index 7753842f4bc8ed7eaa45035ed706543d8dee0f6c..b03e0fbb8b1eb3765edf96581489f18be4693dd6 100644 --- a/Modules/Filtering/Wavelet/include/otbWaveletFilterBank.txx +++ b/Modules/Filtering/Wavelet/include/otbWaveletFilterBank.txx @@ -1178,6 +1178,7 @@ WaveletFilterBank<TInputImage, TOutputImage, TWaveletOperator, Wavelet::INVERSE> typename FilterType::Pointer overSampledLowPass = FilterType::New(); overSampledLowPass->SetInput(cropedLowPass); overSampledLowPass->SetSubsampleFactor(delta); + overSampledLowPass->SetNumberOfThreads(1); overSampledLowPass->Update(); InputImagePointerType cropedHighPass = InputImageType::New(); @@ -1196,6 +1197,7 @@ WaveletFilterBank<TInputImage, TOutputImage, TWaveletOperator, Wavelet::INVERSE> typename FilterType::Pointer overSampledHighPass = FilterType::New(); overSampledHighPass->SetInput(cropedHighPass); overSampledHighPass->SetSubsampleFactor(delta); + overSampledHighPass->SetNumberOfThreads(1); overSampledHighPass->Update(); InnerProductType innerProduct; diff --git a/Modules/Learning/Supervised/include/otbImageClassificationFilter.txx b/Modules/Learning/Supervised/include/otbImageClassificationFilter.txx index eb9e9b67bde62baa2f027ce1aa772504e35e8bb3..54656b1948811c9685eaa01d729bc706ab15e98b 100644 --- a/Modules/Learning/Supervised/include/otbImageClassificationFilter.txx +++ b/Modules/Learning/Supervised/include/otbImageClassificationFilter.txx @@ -260,8 +260,7 @@ ImageClassificationFilter<TInputImage, TOutputImage, TMaskImage> typename TargetListSampleType::ConstIterator labIt = labels->Begin(); maskIt.GoToBegin(); - for (outIt.GoToBegin(); labIt!=labels->End() && !outIt.IsAtEnd(); - ++outIt) + for (outIt.GoToBegin(); !outIt.IsAtEnd(); ++outIt) { double confidenceIndex = 0.0; TargetValueType labelValue(m_DefaultLabel); @@ -270,7 +269,7 @@ ImageClassificationFilter<TInputImage, TOutputImage, TMaskImage> validPoint = maskIt.Get() > 0; ++maskIt; } - if (validPoint) + if (validPoint && labIt!=labels->End()) { labelValue = labIt.GetMeasurementVector()[0]; diff --git a/Modules/Remote/otbFFSforGMM.remote.cmake b/Modules/Remote/otbFFSforGMM.remote.cmake index 74c3752db8fd365fc23b06b388e9da57a7672aaf..b7ae4ee086c7bdb040faabc2c4b4c5baa381631b 100644 --- a/Modules/Remote/otbFFSforGMM.remote.cmake +++ b/Modules/Remote/otbFFSforGMM.remote.cmake @@ -1,5 +1,5 @@ #Contact: Adrien Lagrange <adrien.lagrange@irit.fr> -otb_fetch_module(OTBFastFeaturesSelection +otb_fetch_module(OTBFFSforGMM "This module implements a method to perform a fast forward feature selection using a Gaussian Mixture Model. A more detailed description can be found on the project website: https://github.com/Laadr/otbFFSforGMM diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperListViewParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperListViewParameter.h index 5423377f05acedca711c639389b2bcd15fb18571..1c6da2472963f97885035415c7eef8f522451fb5 100644 --- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperListViewParameter.h +++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperListViewParameter.h @@ -92,24 +92,10 @@ public: std::vector<int> GetSelectedItems() { - if( m_SelectedNames.size() != 0 ) - { - this->SetSelectedItemsByNames(); - } - else if( m_SelectedKeys.size() != 0 ) - { - this->SetSelectedItemsByKeys(); - } - return m_SelectedItems; } - void SetSelectedNames(std::vector<std::string> selectedNames) - { - m_SelectedNames = selectedNames; - m_SelectedItems.clear(); - m_SelectedKeys.clear(); - } + void SetSelectedNames(std::vector<std::string> selectedNames); std::vector<std::string> GetSelectedNames() { @@ -117,22 +103,21 @@ public: } - void SetSelectedKeys(std::vector<std::string> selectedKeys) - { - m_SelectedKeys = selectedKeys; - m_SelectedItems.clear(); - m_SelectedNames.clear(); - } + void SetSelectedKeys(std::vector<std::string> selectedKeys); std::vector<std::string> GetSelectedKeys() { return m_SelectedKeys; } - /** Set selected items using a lit of selected keys. */ - void SetSelectedItemsByKeys(); - /** Set selected items using a lit of selected names. */ - void SetSelectedItemsByNames(); + /** Set selected items using a lit of selected keys. + * OBSOLETE : this method is not needed anymore and does nothing. */ + void SetSelectedItemsByKeys(){} + + /** Set selected items using a lit of selected names. + * OBSOLETE : this method is not needed anymore and does nothing. */ + void SetSelectedItemsByNames(){} + void SetSelectedItems(std::vector<std::string> selectedItems) { std::vector<int> items; @@ -140,14 +125,22 @@ public: { items.push_back( atoi( selectedItems[i].c_str() ) ); } - m_SelectedItems = items; - m_SelectedNames.clear(); - m_SelectedKeys.clear(); + this->SetSelectedItems(items); } void SetSelectedItems(std::vector<int> selectedItems) { m_SelectedItems = selectedItems; + m_SelectedNames.clear(); + m_SelectedKeys.clear(); + // update selected names and keys + std::vector<std::string> names = this->GetChoiceNames(); + std::vector<std::string> keys = this->GetChoiceKeys(); + for (unsigned int i=0 ; i<m_SelectedItems.size() ; i++) + { + m_SelectedNames.push_back(names[m_SelectedItems[i]]); + m_SelectedKeys.push_back(keys[m_SelectedItems[i]]); + } } protected: diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperChoiceParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperChoiceParameter.cxx index eb2b09ac2ca54bdc8c3aeac3697b59baa895ffce..57c5cbeae3c4d96181f0b17f3ea9eeac475d70bd 100644 --- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperChoiceParameter.cxx +++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperChoiceParameter.cxx @@ -172,7 +172,10 @@ ChoiceParameter::SetValue(std::string choiceKey) ++i; } - itkExceptionMacro(<< "Cannot find " << choiceKey); + itkExceptionMacro(<< "Invalid parameter value '" + << choiceKey << "'" + << " given for parameter '-" + << this->GetKey() << "'"); } unsigned int diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexOutputImageParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexOutputImageParameter.cxx index 382d87a66780a9d15dba00c73b360fb35e51287c..597f1b8726c9eaa54d1de4d8cb5fec9cd7db1f06 100644 --- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexOutputImageParameter.cxx +++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexOutputImageParameter.cxx @@ -210,8 +210,8 @@ ComplexOutputImageParameter::GetWriter() // 0 : image // 1 : VectorImage - if ( dynamic_cast<FloatVectorImageType*>( m_Image.GetPointer()) || - dynamic_cast<DoubleVectorImageType*>(m_Image.GetPointer())) + if ( dynamic_cast<ComplexFloatVectorImageType*>( m_Image.GetPointer()) || + dynamic_cast<ComplexDoubleVectorImageType*>(m_Image.GetPointer())) { type = 1; } diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperListViewParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperListViewParameter.cxx index 2d3fa76b12f676b618ea47795c11d0ccd69fbe34..9abb0a7a98ac0e554d695690eeca50b7a2e78564 100644 --- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperListViewParameter.cxx +++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperListViewParameter.cxx @@ -145,14 +145,15 @@ ListViewParameter::ClearChoices() m_ChoiceList.clear(); } + void -ListViewParameter::SetSelectedItemsByNames() +ListViewParameter::SetSelectedNames(std::vector<std::string> selectedNames) { std::vector<int> selectedItems; std::vector<std::string> names = this->GetChoiceNames(); - for(unsigned int i=0; i<m_SelectedNames.size(); i++) + for(unsigned int i=0; i<selectedNames.size(); i++) { - const std::string selectedName = m_SelectedNames[i]; + const std::string selectedName = selectedNames[i]; unsigned int j(0); for(; j<names.size(); j++) { @@ -182,13 +183,13 @@ ListViewParameter::SetSelectedItemsByNames() void -ListViewParameter::SetSelectedItemsByKeys() +ListViewParameter::SetSelectedKeys(std::vector<std::string> selectedKeys) { std::vector<int> selectedItems; std::vector<std::string> keys = this->GetChoiceKeys(); - for(unsigned int i=0; i<m_SelectedKeys.size(); i++) + for(unsigned int i=0; i<selectedKeys.size(); i++) { - const std::string selectedKey = m_SelectedKeys[i]; + const std::string selectedKey = selectedKeys[i]; unsigned int j(0); std::ostringstream oss; for(; j<keys.size(); j++) diff --git a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetListViewParameter.cxx b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetListViewParameter.cxx index 9427927737d607479fdebfe7279d14831a925f5e..2f9f1a414894177704a6b1f52e12df0410eeca2f 100644 --- a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetListViewParameter.cxx +++ b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetListViewParameter.cxx @@ -97,6 +97,10 @@ void QtWidgetListViewParameter::SelectedItems() } } m_ListViewParam->SetSelectedItems(m_SelectedItems); + + // make sure parameter is enabled + m_ListViewParam->SetActive(true); + m_ListViewParam->SetUserValue(true); } } diff --git a/SuperBuild/Packaging/Files/linux_pkgsetup.in b/SuperBuild/Packaging/Files/linux_pkgsetup.in index 0204d79256e0f6deeae30d4bc8ddcc9c40d99b34..eb98b9d2040269347df982650e1bcaaabae0b64b 100644 --- a/SuperBuild/Packaging/Files/linux_pkgsetup.in +++ b/SuperBuild/Packaging/Files/linux_pkgsetup.in @@ -14,8 +14,8 @@ PATCH_ELF_EXE="$OUT_DIR/patchelf" LD_LIBRARY_PATH= echo "Configuring..." -#BINARY_FILES="@VAR_IN_PKGSETUP_CONFIGURE@" -BINARY_FILES=$(find $OUT_DIR/lib $OUT_DIR/lib/otb/applications $OUT_DIR/bin -maxdepth 1 -type f -exec file {} \; | grep -i elf|cut -f1 -d':') +#see next call below for otb applications +BINARY_FILES=$(find $OUT_DIR/lib $OUT_DIR/bin -maxdepth 1 -type f -exec file {} \; | grep -i elf|cut -f1 -d':') # run patchelf for bin_file in $BINARY_FILES; do @@ -33,6 +33,15 @@ if [ "$I_AM_XDK" = true ] ; then sed -i "s,@DEPENDENCIES_INSTALL_DIR@,$OUT_DIR,g" lib/cmake/ITK-@PKG_ITK_SB_VERSION@/ITKTargets-release.cmake else +OTB_APP_FILES=$(find $OUT_DIR/lib/otb/applications -maxdepth 1 -type f -exec file {} \; | grep -i elf|cut -f1 -d':') + # run patchelf +for app_file in $OTB_APP_FILES; do + #echo "adding rpath to $app_file" + if [ -f "$app_file" ]; then + "$PATCH_ELF_EXE" "--set-rpath" "$OUT_DIR/lib" "$app_file" + fi +done + cat > "$OUT_DIR/monteverdi.sh" << EOF #!/bin/sh diff --git a/SuperBuild/Packaging/InstallSupportFiles.cmake b/SuperBuild/Packaging/InstallSupportFiles.cmake index 68883e2b5b2bd0567a6d526a7022ad2dd6789f09..c8dca6dc9b1a1b8b5195413df6be1c99eaf1f98b 100644 --- a/SuperBuild/Packaging/InstallSupportFiles.cmake +++ b/SuperBuild/Packaging/InstallSupportFiles.cmake @@ -74,8 +74,8 @@ function(func_install_xdk_files) #file(GLOB ITK_EXTRA_DLL_FILES_1 "${DEPENDENCIES_INSTALL_DIR}/bin/libITK*.dll") #install(FILES ${ITK_EXTRA_DLL_FILES_1} DESTINATION ${PKG_STAGE_DIR}/bin) - #file(GLOB ITK_EXTRA_DLL_FILES_2 "${DEPENDENCIES_INSTALL_DIR}/bin/libitk*.dll") - #install(FILES ${ITK_EXTRA_DLL_FILES_2} DESTINATION ${PKG_STAGE_DIR}/bin) + file(GLOB ITK_EXTRA_DLL_FILES_2 "${DEPENDENCIES_INSTALL_DIR}/bin/itk*.dll") + install(FILES ${ITK_EXTRA_DLL_FILES_2} DESTINATION ${PKG_STAGE_DIR}/bin) #file(GLOB OPENCV_EXTRA_DLL_FILES "${DEPENDENCIES_INSTALL_DIR}/bin/libopencv*.dll") #install(FILES ${OPENCV_EXTRA_DLL_FILES} DESTINATION ${PKG_STAGE_DIR}/bin) diff --git a/SuperBuild/Packaging/PackageHelper.cmake b/SuperBuild/Packaging/PackageHelper.cmake index 98ef69549dd167ea50d5c739f208958e5dfdf81c..0432a6d4379f54d955b73d57e1e751d42658768a 100644 --- a/SuperBuild/Packaging/PackageHelper.cmake +++ b/SuperBuild/Packaging/PackageHelper.cmake @@ -307,7 +307,6 @@ function(func_prepare_package) endfunction() #func_prepare_package function(func_process_deps input_file) - search_library(${input_file} PKG_SEARCHDIRS input_file_full_path) if(NOT input_file_full_path) message(FATAL_ERROR "${input_file} not found. searched in ${PKG_SEARCHDIRS}") @@ -455,9 +454,11 @@ function(pkg_install_rule src_file) message(FATAL_ERROR "unreachable code") endif() + set(SKIP_INSTALL FALSE) setif_value_in_list(is_gtk_lib "${src_file_NAME}" ALLOWED_SYSTEM_DLLS) if(is_gtk_lib) set(output_dir "lib/gtk") + set(SKIP_INSTALL TRUE) endif() #special case @@ -465,19 +466,18 @@ function(pkg_install_rule src_file) set(output_dir "lib/otb/applications") set(file_type PROGRAMS) endif() - - set(SKIP_INSTALL FALSE) + if(PKG_GENERATE_XDK) if ("${src_file_NAME}" MATCHES - "libOTB|libotb|otbApp|otbapp_|otbTest|libMonteverdi|monteverdi|mapla|iceViewer" + "([Oo][Tt][Bb])|([Mm]onteverdi)|mapla|iceViewer" ) set(SKIP_INSTALL TRUE) + +message("SKIP_INSTALL for ${src_file_NAME}") endif() - if(is_gtk_lib) - set(SKIP_INSTALL TRUE) - endif() + endif() diff --git a/SuperBuild/Packaging/PackageMacros.cmake b/SuperBuild/Packaging/PackageMacros.cmake index 9cd0783d2891b611cd5616683655d5ae5d100a1a..a2283f28807f9ef8f6b9ac45788ea8b2b5fef2f5 100755 --- a/SuperBuild/Packaging/PackageMacros.cmake +++ b/SuperBuild/Packaging/PackageMacros.cmake @@ -75,12 +75,32 @@ function(search_library input_file pkg_searchdirs result) endfunction() macro(add_to_symlink_list src_file target_file) + #TODO: avoid code duplication here and later in install_rule + + set(SKIP_INSTALL FALSE) + if(PKG_GENERATE_XDK) + get_filename_component(src_file_NAME ${src_file} NAME) + setif_value_in_list(is_gtk_lib "${src_file_NAME}" ALLOWED_SYSTEM_DLLS) + if ("${src_file_NAME}" + MATCHES + "libOTB|libotb|otbApp|otbapp_|otbTest|libMonteverdi|monteverdi|mapla|iceViewer" + ) + set(SKIP_INSTALL TRUE) + endif() + + if(is_gtk_lib) + set(SKIP_INSTALL TRUE) + endif() + + endif(PKG_GENERATE_XDK) # NOTE: $OUT_DIR is set actually in pkgsetup.in. So don't try # any pre-mature optimization on that variable names + if(NOT SKIP_INSTALL) file(APPEND ${CMAKE_BINARY_DIR}/make_symlinks_temp - "ln -sf $OUT_DIR/lib/${src_file} $OUT_DIR/lib/${target_file}\n" - ) + "if [ -f \"\$OUT_DIR/lib/${src_file}\" ]; then \n ln -sf \"$OUT_DIR/lib/${src_file}\" \"$OUT_DIR/lib/${target_file}\" \n fi;\n" + ) + endif() endmacro() function(check_for_gtk_libs input_file result) diff --git a/SuperBuild/patches/ITK/itk-3-vnl_fixes-all.diff b/SuperBuild/patches/ITK/itk-3-vnl_fixes-all.diff new file mode 100755 index 0000000000000000000000000000000000000000..baebbecf147abc98b5b23cc4b787a6282e107e1f --- /dev/null +++ b/SuperBuild/patches/ITK/itk-3-vnl_fixes-all.diff @@ -0,0 +1,14 @@ +diff -burN InsightToolkit-4.10.0.orig/Modules/ThirdParty/VNL/src/vxl/core/CMakeLists.txt InsightToolkit-4.10.0/Modules/ThirdParty/VNL/src/vxl/core/CMakeLists.txt +--- InsightToolkit-4.10.0.orig/Modules/ThirdParty/VNL/src/vxl/core/CMakeLists.txt 2016-12-06 16:03:06.000000000 +0100 ++++ InsightToolkit-4.10.0/Modules/ThirdParty/VNL/src/vxl/core/CMakeLists.txt 2016-12-06 16:03:44.000000000 +0100 +@@ -131,8 +131,10 @@ + set(CORE_VIDEO_FOUND OFF CACHE INTERNAL "VXL core video libraries built") + endif () + ++if(BUILD_TESTING) + # common test executable + add_subdirectory(testlib) ++endif() + + # Tests that check and output the vxl configuration + # NOTE: some external projects remove the tests directory (aka ITK) diff --git a/SuperBuild/patches/OSSIM/ossim-4-trac_2354-linux.diff b/SuperBuild/patches/OSSIM/ossim-4-trac_2354-linux.diff new file mode 100755 index 0000000000000000000000000000000000000000..b24dd823a006acb884d677fe3956224538f38619 --- /dev/null +++ b/SuperBuild/patches/OSSIM/ossim-4-trac_2354-linux.diff @@ -0,0 +1,51 @@ +Description: Fix build failure with GCC 6: no match for 'operator<<'. +Author: Rashad M <rashadkm@gmail.com> +Origin: https://trac.osgeo.org/ossim/attachment/ticket/2354/fix-ossim-trac-2354.diff +Bug-Debian: https://bugs.debian.org/811851 +Bug: https://trac.osgeo.org/ossim/ticket/2354 + +--- a/ossim/src/ossim/elevation/ossimElevManager.cpp ++++ b/ossim/src/ossim/elevation/ossimElevManager.cpp +@@ -643,14 +643,26 @@ std::ostream& ossimElevManager::print(os + << "\nm_useGeoidIfNullFlag = "<<m_useGeoidIfNullFlag + << "\nm_currentDatabaseIdx = "<<m_currentDatabaseIdx + << "\nm_dbRoundRobin.size = "<<m_dbRoundRobin.size(); ++ + for (ossim_uint32 i=0; i<m_dbRoundRobin.size(); ++i) + { + out<<"\nm_dbRoundRobin["<<i<<"].size = "<<m_dbRoundRobin[i].size()<<endl; + for (ossim_uint32 j=0; j<m_dbRoundRobin[i].size(); ++j) +- out<<"m_dbRoundRobin["<<i<<"]["<<j<<"] = "<<m_dbRoundRobin[i][j]->print(out)<<endl; ++ { ++ out<<"m_dbRoundRobin["<<i<<"]["<<j<<"] = "; ++ // GP: We have to separate this line. On MS it will not compile ++ // otherwise ++ m_dbRoundRobin[i][j]->print(out); ++ ++ } ++ out<<endl; + } +- cout<<"\n"<<ossimElevSource::print(cout); ++ out<<"\n"; ++ ossimElevSource::print(out); + return out; ++ ++ ++ + } + + +--- a/ossim/src/ossim/elevation/ossimElevSource.cpp ++++ b/ossim/src/ossim/elevation/ossimElevSource.cpp +@@ -269,8 +269,9 @@ std::ostream& ossimElevSource::print(std + << "\ntheMaxHeightAboveMSL = "<<theMaxHeightAboveMSL + << "\ntheNullHeightValue = "<<theNullHeightValue + << "\ntheSeaLevelValue = "<<theSeaLevelValue +- << "\ntheGroundRect = "<<theGroundRect +- << ossimSource::print(out); ++ << "\ntheGroundRect = "<<theGroundRect; ++ // GP: need this by itself. MS errors out ++ ossimSource::print(out); + return out; + } + diff --git a/SuperBuild/patches/QT4/qt4-3-force-std98-linux.diff b/SuperBuild/patches/QT4/qt4-3-force-std98-linux.diff new file mode 100755 index 0000000000000000000000000000000000000000..9baf1895663471b0671a44ee622f274259cc7603 --- /dev/null +++ b/SuperBuild/patches/QT4/qt4-3-force-std98-linux.diff @@ -0,0 +1,12 @@ +diff -burN qt-everywhere-opensource-src-4.8.7.orig/mkspecs/common/linux.conf qt-everywhere-opensource-src-4.8.7/mkspecs/common/linux.conf +--- qt-everywhere-opensource-src-4.8.7.orig/mkspecs/common/linux.conf 2016-12-07 11:19:59.964124979 +0100 ++++ qt-everywhere-opensource-src-4.8.7/mkspecs/common/linux.conf 2016-12-07 11:22:29.116132748 +0100 +@@ -1,7 +1,7 @@ + # + # qmake configuration for common linux + # +- ++QMAKE_CXXFLAGS += -w -std=c++98 + QMAKE_CFLAGS_THREAD += -D_REENTRANT + QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD + diff --git a/Utilities/Maintenance/TravisBuild.cmake b/Utilities/Maintenance/TravisBuild.cmake index c0790ff2dde01f25af6d4c7f5cd7ff2b06892ed1..9faed267dab824033182c1700b3eddb6962bb4cc 100644 --- a/Utilities/Maintenance/TravisBuild.cmake +++ b/Utilities/Maintenance/TravisBuild.cmake @@ -63,11 +63,11 @@ QT_INSTALL_TRANSLATIONS:PATH=${XDK_INSTALL_DIR}/translations QT_MOC_EXECUTABLE:FILEPATH=${XDK_INSTALL_DIR}/bin/moc QT_UIC_EXECUTABLE:FILEPATH=${XDK_INSTALL_DIR}/bin/uic QT_RCC_EXECUTABLE:FILEPATH=${XDK_INSTALL_DIR}/bin/rcc +QT_LRELEASE_EXECUTABLE:FILEPATH=${XDK_INSTALL_DIR}/bin/lrelease QT_INSTALL_PLUGINS:PATH=${XDK_INSTALL_DIR}/plugins QT_INSTALL_HEADERS:PATH=${XDK_INSTALL_DIR}/include QMAKE_MKSPECS:PATH=${XDK_INSTALL_DIR}/mkspecs " - ) file(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" ${INITIAL_CACHE})