diff --git a/CMake/CPackFunctions.cmake b/CMake/CPackFunctions.cmake deleted file mode 100644 index 119aa8e3a2c470966cfd3bc8812f6647129928e2..0000000000000000000000000000000000000000 --- a/CMake/CPackFunctions.cmake +++ /dev/null @@ -1,408 +0,0 @@ -# -# Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) -# -# This file is part of Orfeo Toolbox -# -# https://www.orfeo-toolbox.org/ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -#RK: two packages. -#function(create_cpack_config application) -function(create_cpack_config) - #should we handle this when calling function ? - #for now mapla has no specific version or it is same as monteverdi - SET(CPACK_PACKAGE_VERSION "${Monteverdi_VERSION_MAJOR}.${Monteverdi_VERSION_MINOR}.${Monteverdi_VERSION_PATCH}${Monteverdi_VERSION_SUFFIX}") - SET(CPACK_PACKAGE_VERSION_MAJOR "${Monteverdi_VERSION_MAJOR}") - SET(CPACK_PACKAGE_VERSION_MINOR "${Monteverdi_VERSION_MINOR}") - SET(CPACK_PACKAGE_VERSION_PATCH "${Monteverdi_VERSION_PATCH}") - #monteverdi short version string - eg: 3.0.0-beta - SET(PACKAGE_SHORT_VERSION_STRING ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}${Monteverdi_VERSION_SUFFIX}) - - if(WIN32) - set(arch_prefix win32) - set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set(arch_prefix win64) - endif() - SET(CPACK_GENERATOR "NSIS") - SET(CPACK_NSIS_MODIFY_PATH OFF) - SET(CPACK_NSIS_CONTACT "contact@orfeo-toolbox.org") - - #RK: two packages. - #STRING(TOLOWER ${application} application_) - #SET(EXEFILE_NAME "${application_}.exe") - #SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\${EXEFILE_NAME}") - #SET(BATFILE_NAME "${application_}.bat") - #SET(CPACK_NSIS_MENU_LINKS "bin/${BATFILE_NAME}" "${application}" ) - # SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS - # "Delete \\\"$SMPROGRAMS\\\\${application}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}\\\\${application}.lnk\\\" ") - # SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS - # "CreateShortCut \\\"$SMPROGRAMS\\\\${application}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}\\\\${application}.lnk\\\" \\\"$INSTDIR\\\\bin\\\\${BATFILE_NAME}\\\" \\\" \\\" \\\"$INSTDIR\\\\bin\\\\${EXEFILE_NAME}\\\" - # ") - -SET(application "Monteverdi") -SET(startmenufolder "${application}-${PACKAGE_SHORT_VERSION_STRING}") - -#set(CPACK_NSIS_DEFINES " !define MUI_STARTMENUPAGE_DEFAULTFOLDER \\\"${startmenufolder} (${arch_prefix})\\\"") -#SET(CPACK_PACKAGE_EXECUTABLES "monteverdi.bat" "Monteverdi") -#SET(CPACK_CREATE_DESKTOP_LINKS "monteverdi.bat" ) - -SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\monteverdi.exe") -SET(CPACK_PACKAGE_ICON "${Monteverdi_SOURCE_DIR}\\\\Data\\\\Icons\\\\monteverdi.ico") -SET(CPACK_NSIS_CREATE_ICONS "CreateShortCut '$SMPROGRAMS\\\\${startmenufolder}\\\\Monteverdi.lnk' '$INSTDIR\\\\bin\\\\monteverdi.bat' ") -SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$SMPROGRAMS\\\\${startmenufolder}\\\\Mapla.lnk' '$INSTDIR\\\\bin\\\\mapla.bat' ") -SET(CPACK_NSIS_MUI_FINISHPAGE_RUN "monteverdi.bat") -SET(CPACK_NSIS_DELETE_ICONS - "Delete \\\"$SMPROGRAMS\\\\${startmenufolder}\\\\Monteverdi.lnk\\\" ") -SET(CPACK_NSIS_DELETE_ICONS_EXTRA - "Delete \\\"$SMPROGRAMS\\\\${startmenufolder}\\\\Mapla.lnk\\\" ") - - else(APPLE) - set(arch_prefix Darwin) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(arch_prefix Darwin64) - endif() - SET(CPACK_GENERATOR "Bundle") - SET(CPACK_BUNDLE_ICON "${Monteverdi_SOURCE_DIR}/Packaging/MacOS/Monteverdi.icns" ) - SET(CPACK_BUNDLE_NAME "${application}-${PACKAGE_SHORT_VERSION_STRING}" ) - SET(CPACK_BUNDLE_PLIST "${CMAKE_BINARY_DIR}/Packaging/MacOS/${application}-Info.plist" ) - SET(CPACK_BUNDLE_STARTUP_COMMAND "${Monteverdi_SOURCE_DIR}/Packaging/MacOS/${application}-StartupCommand" ) - - endif() - - #common cpack configurations. - - ################################## - ################################## - #CAUTION: Be careful when changing values below.# - ################################## - ################################## - - SET(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - SET(CPACK_MODULE_PATH "${Monteverdi_SOURCE_DIR}/CMake") - SET(CPACK_NSIS_INSTALLER_ICON_CODE "") - SET(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") - SET(CPACK_PACKAGE_CONTACT "contact@orfeo-toolbox.org") - SET(CPACK_PACKAGE_DEFAULT_LOCATION "/") - SET(CPACK_PACKAGE_DESCRIPTION_FILE "${Monteverdi_SOURCE_DIR}/Description.txt") - - SET(CPACK_RESOURCE_FILE_LICENSE "${Monteverdi_SOURCE_DIR}/Copyright/Copyright.txt") - SET(CPACK_OUTPUT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CPackConfig-${application}.cmake") - SET(CPACK_NSIS_MUI_ICON "${Monteverdi_SOURCE_DIR}/Data/Icons/monteverdi.ico") - SET(CPACK_NSIS_MUI_UNIICON "${Monteverdi_SOURCE_DIR}/Data/Icons/monteverdi.ico") - - SET(CPACK_COMPONENTS_ALL) - LIST(APPEND CPACK_COMPONENTS_ALL "Resources") - LIST(APPEND CPACK_COMPONENTS_ALL "Runtime") - - #RK: two packages - #LIST(APPEND CPACK_COMPONENTS_ALL "${application}") - LIST(APPEND CPACK_COMPONENTS_ALL "Monteverdi") - LIST(APPEND CPACK_COMPONENTS_ALL "Mapla") - - SET(CPACK_COMPONENT_MAPLA_DEPENDS Runtime) - SET(CPACK_COMPONENT_MONTEVERDI_DEPENDS Runtime) - SET(CPACK_COMPONENT_RUNTIME_DEPENDS Resources) - - SET(CPACK_COMPONENT_RUNTIME_REQUIRED ON) - SET(CPACK_COMPONENT_RESOURCES_REQUIRED ON) - SET(CPACK_COMPONENT_MAPLA_REQUIRED ON) - SET(CPACK_COMPONENT_MONTEVERDI_REQUIRED ON) - - SET(CPACK_COMPONENT_RESOURCES_HIDDEN ON) - - if(APPLE) - SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_BINARY_DIR};${application};ALL;/") - else(WIN32) - SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_BINARY_DIR};ALL;ALL;/") - endif() - SET(CPACK_PACKAGE_VENDOR "OTB Team") - - SET(CPACK_PACKAGE_NAME "${application}") - SET(CPACK_NSIS_DISPLAY_NAME "${application}-${PACKAGE_SHORT_VERSION_STRING}") - SET(CPACK_NSIS_PACKAGE_NAME "${application}-${PACKAGE_SHORT_VERSION_STRING}") - SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${application}-${PACKAGE_SHORT_VERSION_STRING}") - SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${application}-${PACKAGE_SHORT_VERSION_STRING}") - SET(CPACK_PACKAGE_FILE_NAME "${application}-${CPACK_PACKAGE_VERSION}-${arch_prefix}") - - INCLUDE(InstallRequiredSystemLibraries) - INCLUDE(CPack) - -endfunction(create_cpack_config) - - - -function(configure_app_package app with_otb_apps) - - string(TOLOWER ${app} EXECUTABLE_NAME) - set(APP_QTCONF_DIR bin) - set(APP_QTSQLITE_FILENAME qsqlite4.dll) - set(APP_QTPLUGINS_DIR lib/qt4/plugins) - set(APP_OTBLIBS_DIR lib/otb) - set(APP_I18N_DIR lib/qt4/translations) - set(APP_DATA_DIR share) - set(APP_NAME "\${CMAKE_INSTALL_PREFIX}/bin/${EXECUTABLE_NAME}.exe") - - install(CODE "file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${APP_QTCONF_DIR}/qt.conf\" - \"[Paths] - Translations=../lib/qt4/translations - Plugins=../lib/qt4/plugins - \")" - COMPONENT Runtime) - - install(FILES ${Monteverdi_SOURCE_DIR}/Packaging/Windows/${EXECUTABLE_NAME}.bat - DESTINATION bin - COMPONENT ${app}) - - if(WIN32) - - if(NOT CMAKE_CROSSCOMPILING AND Monteverdi_USE_CPACK) - - file(TO_CMAKE_PATH "$ENV{OSGEO4W_ROOT}" OSGEO4W_ROOT) - if(NOT OSGEO4W_ROOT) - message(FATAL_ERROR "Cannot generate installer without OSGeo4W environment : OSGEO4W_ROOT") - endif(NOT OSGEO4W_ROOT) - - # The following DLL handling is very specific - # both to OSGeo4W flavour (32 bit or 64 bit), OSGeo4W package state - # and the compiler used to make the Monteverdi installer (VC2010) - # Don't expect too much of it without VC2010. - - # For some reason, fixup_bundle won't package the msvc runtime dll - # I guess it's because cpack already handles installing the runtime, - # but here we build with a particular version of Visual, but - # some OSGeo4W dependencies are built upon other runtimes - set(MVD2_ADDITIONAL_DLLS - ${OSGEO4W_ROOT}/bin/msvcp60.dll - ${OSGEO4W_ROOT}/bin/msvcp70.dll - ${OSGEO4W_ROOT}/bin/msvcp71.dll - ${OSGEO4W_ROOT}/bin/msvcr71.dll - ${OSGEO4W_ROOT}/bin/msvcrt.dll) - - # Since an upgrade in OSGeo4W-32bit of libpq (around 2013/10) - # libpq depends on two additional libs that cmake - # surprisingly miss during package generation - # I really don't understand why. - # Let's add them manually - - set(MVD2_ADDITIONAL_DLLS - ${MVD2_ADDITIONAL_DLLS} - ${OSGEO4W_ROOT}/bin/libgcc_s_dw2-1.dll - ${OSGEO4W_ROOT}/bin/libiconv-2.dll) - - foreach(dll ${MVD2_ADDITIONAL_DLLS}) - if (EXISTS ${dll}) - install( FILES ${dll} DESTINATION bin COMPONENT Runtime ) - endif() - endforeach() - - #RK: two packages - # set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${app}") - # create_cpack_config(${app}) - - endif() #(NOT CMAKE_CROSSCOMPILING AND Monteverdi_USE_CPACK) - - - # if(CMAKE_CROSSCOMPILING) - # if(NOT DEFINED MXE_TARGET_DIR) - # message(FATAL_ERROR "MXE_TARGET_DIR is missing") - # endif() - # if(MXE_TARGET_DIR MATCHES "i686") - # set(mxearch x86) - # set(archive_name ${app}-${Monteverdi_VERSION_STRING}-win32) - # elseif(MXE_TARGET_DIR MATCHES "x86_64") - # set(mxearch x64) - # set(archive_name ${app}-${Monteverdi_VERSION_STRING}-win64) - # endif() - - # execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_INSTALL_PREFIX}/${archive_name}") - - # get_filename_component(mxeroot ${MXE_TARGET_DIR} PATH) - # get_filename_component(mxeroot ${mxeroot} PATH) - # file(WRITE "${CMAKE_BINARY_DIR}/_mingw/${app}/CMakeLists.txt" - # "cmake_minimum_required(VERSION 2.6) - # include(CMakeParseArguments) - # set(Monteverdi_SOURCE_DIR \"${Monteverdi_SOURCE_DIR}\") - # set(OTB_MODULES_DIR \"${OTB_MODULES_DIR}\") - # set(QT_PLUGINS_DIR \"${QT_PLUGINS_DIR}\") - # set(QT_TRANSLATIONS_DIR \"${QT_TRANSLATIONS_DIR}\") - # set(Monteverdi_BINARY_DIR \"${CMAKE_BINARY_DIR}\") - # set(CMAKE_INSTALL_PREFIX \"${CMAKE_INSTALL_PREFIX}\") - # set(Monteverdi_INSTALL_DATA_DIR \"${Monteverdi_INSTALL_DATA_DIR}\") - # include(${CMAKE_SOURCE_DIR}/CMake/MinGWPackage.cmake) - # include(${CMAKE_SOURCE_DIR}/CMake/CPackFunctions.cmake) - # package_mingw( - # ARCH \"${mxearch}\" - # MXEROOT \"${mxeroot}\" - # PREFIX_DIR \"${archive_name}\" - # PEFILES \"${APP_NAME}\" - # NEEDS_OTB_APPS ${with_otb_apps} - # SEARCHDIRS \"\")") - - # set(GDAL_DATA ${MXE_TARGET_DIR}/share/gdal) - - # add_custom_target(configure-${app}-mingw-package - # COMMAND ${CMAKE_COMMAND} - # "${CMAKE_BINARY_DIR}/_mingw/${app}" - # WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/_mingw/${app}") - - # add_custom_target(make-${app}-mingw-package - # COMMAND ${CMAKE_COMMAND} - # "--build" "${CMAKE_BINARY_DIR}/_mingw/${app}" "--target" "install" - # WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/_mingw/${app}" - # DEPENDS configure-${app}-mingw-package) - - # find_program(ZIP_EXECUTABLE zip) - - # if(ZIP_EXECUTABLE) - # add_custom_target(create-${app}-mingw-archive - # COMMAND ${ZIP_EXECUTABLE} "-r" "${CMAKE_BINARY_DIR}/${archive_name}.zip" "${archive_name}" - # WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}" - # DEPENDS make-${app}-mingw-package) - # else() - # message(FATAL_ERROR "Cannot find zip executable. Please add it to your path") - # endif() - - # endif() # (CMAKE_CROSSCOMPILING) - - endif(WIN32) - - if(APPLE) - set(APP_NAME "\${CMAKE_INSTALL_PREFIX}/${app}.app") - set(APP_PREFIX_DIR ${app}.app/Contents) #osx prefix - set(APP_QTCONF_DIR ${APP_PREFIX_DIR}/Resources) - set(APP_QTSQLITE_FILENAME libqsqlite.dylib) - set(APP_QTPLUGINS_DIR ${APP_PREFIX_DIR}/plugins) - set(APP_OTBLIBS_DIR ${APP_PREFIX_DIR}/MacOS/otb) - set(APP_I18N_DIR ${APP_PREFIX_DIR}/Resources/otb/translations) #translations - set(APP_DATA_DIR ${APP_PREFIX_DIR}/Resources) - - install(FILES ${CMAKE_SOURCE_DIR}/Packaging/MacOS/Monteverdi.icns - DESTINATION ${APP_PREFIX_DIR}/Resources - COMPONENT Resources) - - install(FILES ${CMAKE_BINARY_DIR}/Code/Application/${app}/${EXECUTABLE_NAME}_start - DESTINATION ${APP_PREFIX_DIR}/MacOS - PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - COMPONENT Runtime) - - install(CODE - "file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${APP_QTCONF_DIR}/qt.conf\" - \"[Paths] - Translations=Resources/otb/translations - Plugins=plugins - \")" - COMPONENT Runtime) - - file(GLOB APP_QM_TRANSLATIONS /*.qm) # qm files - - file(GLOB APP_TS_FILES ${CMAKE_SOURCE_DIR}/i18n/*.ts) # qm files - - foreach(APP_TS_FILE ${APP_TS_FILES}) - get_filename_component(APP_TS_FILENAME ${APP_TS_FILE} NAME_WE) - install(FILES ${CMAKE_BINARY_DIR}/i18n/${APP_TS_FILENAME}.qm - DESTINATION ${APP_PREFIX_DIR}/${Monteverdi_INSTALL_DATA_DIR}/i18n/ - COMPONENT Resources) - endforeach() - - set(CPACK_BINARY_DRAGNDROP ON) - - endif(APPLE) - -# ################################################################################ -# ################################################################################ -# ################### END OF PLATFORM SPECIFIC CMAKE VARIABLES ################### -# ################################################################################ -# ################################################################################ - -# ####################### install sqldrivers plugin ####################### - -# install(FILES ${QT_PLUGINS_DIR}/sqldrivers/${APP_QTSQLITE_FILENAME} -# DESTINATION ${APP_QTPLUGINS_DIR}/sqldrivers -# COMPONENT Runtime) - -# ####################### install translations ####################### -# get_qt_translation_files(QT_TRANSLATIONS_FILES) - -# install(FILES ${QT_TRANSLATIONS_FILES} -# DESTINATION ${APP_I18N_DIR} -# COMPONENT Resources) - -# ####################### install GDAL data ####################### - - -# if(NOT DEFINED GDAL_DATA) -# file(TO_CMAKE_PATH "$ENV{GDAL_DATA}" GDAL_DATA) -# if(NOT GDAL_DATA) -# if(Monteverdi_USE_CPACK) -# message(FATAL_ERROR "Cannot generate installer without GDAL_DATA : GDAL_DATA") -# else() -# message(WARNING "Cannot generate installer without GDAL_DATA : GDAL_DATA") -# endif() -# endif() -# endif() #(DEFINED GDAL_DATA) -# # Need to include csv files provided with GDAL that contains some needed EPSG definitions - -# install(DIRECTORY ${GDAL_DATA} -# DESTINATION ${APP_DATA_DIR} -# COMPONENT Resources) - -# ####################### Check otb applications ####################### - -# if(with_otb_apps) -# # message(FATAL_ERROR "No OTB-applications detected") -# file(GLOB OTB_APPS_LIST ${OTB_MODULES_DIR}/../../../otb/applications/otbapp_*${CMAKE_SHARED_LIBRARY_SUFFIX}) # /lib/otb -# if(NOT OTB_APPS_LIST) -# message(FATAL_ERROR "No OTB-applications detected") -# endif() - -# ## otb apps dir /lib/otb/applications -# install(DIRECTORY "${OTB_MODULES_DIR}/../../../otb/applications" -# DESTINATION ${APP_OTBLIBS_DIR} -# COMPONENT Runtime) - -# endif(with_otb_apps) - -# ## directories to look for dependencies -# set(SEARCH_DIRS) -# list(APPEND SEARCH_DIRS "${QT_PLUGINS_DIR}/sqldrivers") -# list(APPEND SEARCH_DIRS "${ITK_MODULES_DIR}/../../../") -# list(APPEND SEARCH_DIRS "${OTB_MODULES_DIR}/../../../") -# list(APPEND SEARCH_DIRS "${CMAKE_INSTALL_PREFIX}/lib/otb/") - -# ####################### install fixup_bundle code ####################### -# ## fixup_bundle code -# if(NOT CMAKE_CROSSCOMPILING) -# if(with_otb_apps) -# install(CODE -# "file(GLOB APP_LIBS \"${CMAKE_INSTALL_PREFIX}/${APP_OTBLIBS_DIR}/applications/otbapp_*${CMAKE_SHARED_LIBRARY_SUFFIX}\") -# list(APPEND APP_LIBS \"${CMAKE_INSTALL_PREFIX}/${APP_QTPLUGINS_DIR}/sqldrivers/${APP_QTSQLITE_FILENAME}\") -# include(BundleUtilities) -# set(BU_CHMOD_BUNDLE_ITEMS ON) -# fixup_bundle(\"${APP_NAME}\" \"\${APP_LIBS}\" \"${SEARCH_DIRS}\")" -# COMPONENT ${app}) - -# else() #(with_otb_apps) -# install(CODE -# "file(GLOB APP_LIBS \"${CMAKE_INSTALL_PREFIX}/${APP_QTPLUGINS_DIR}/sqldrivers/${APP_QTSQLITE_FILENAME}\") -# include(BundleUtilities) -# set(BU_CHMOD_BUNDLE_ITEMS ON) -# fixup_bundle(\"${APP_NAME}\" \"\${APP_LIBS}\" \"${SEARCH_DIRS}\")" -# COMPONENT ${app}) -# endif() #(with_otb_apps) -# endif() #(NOT CMAKE_CROSSCOMPILING) -endfunction(configure_app_package) - diff --git a/CMake/FindAgg.cmake b/CMake/FindAgg.cmake index 68fb8d7101040b57fec81c4fe63a3209b3c5f591..c47d5cf1ad7e507ad5480ee11b93d0aae929c5ee 100644 --- a/CMake/FindAgg.cmake +++ b/CMake/FindAgg.cmake @@ -36,7 +36,7 @@ find_path( AGG_INCLUDE_DIR agg_pixfmt_rgba.h # handle the QUIETLY and REQUIRED arguments and set AGG_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( Agg DEFAULT_MSG AGG_INCLUDE_DIR ) +find_package_handle_standard_args( Agg DEFAULT_MSG AGG_INCLUDE_DIR ) mark_as_advanced( AGG_INCLUDE_DIR ) diff --git a/CMake/FindGBenchmark.cmake b/CMake/FindGBenchmark.cmake index 76532bf91702ce1d9d193c407734bd14131c252b..44a49cec0bc66380bfe0fab044369eafb3336e4e 100644 --- a/CMake/FindGBenchmark.cmake +++ b/CMake/FindGBenchmark.cmake @@ -41,7 +41,7 @@ find_library(GBENCHMARK_LIBRARY NAMES benchmark) mark_as_advanced(GBENCHMARK_LIBRARY) include(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(GBENCHMARK +find_package_handle_standard_args(GBENCHMARK REQUIRED_VARS GBENCHMARK_LIBRARY GBENCHMARK_INCLUDE_DIR ) #VERSION_VAR GBENCHMARK_VERSION_STRING diff --git a/CMake/FindGLEW.cmake b/CMake/FindGLEW.cmake index 243191dbd57e5d53d680c74fa7f697f4e6b13f60..6ec4e8707ec38a78129fdc2dae16f4a941d20d19 100644 --- a/CMake/FindGLEW.cmake +++ b/CMake/FindGLEW.cmake @@ -35,6 +35,7 @@ # GLEW_LIBRARY # +# This whole file could be deleted. Find Packages GLEW can be used now find_path( GLEW_INCLUDE_DIR GL/glew.h DOC "The directory where GL/glew.h resides" @@ -57,6 +58,6 @@ if (GLEW_INCLUDE_DIR AND GLEW_LIBRARY) endif() INCLUDE(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLEW +find_package_handle_standard_args(GLEW REQUIRED_VARS GLEW_LIBRARY GLEW_INCLUDE_DIR VERSION_VAR GLEW_VERSION_STRING) diff --git a/CMake/FindGLFW.cmake b/CMake/FindGLFW.cmake index 09d823fe33df4d7a2fddbdb2b0ae7718dc9f7c20..2d5e3ea51693f40d9235c1d13868ea1cfdd5547c 100644 --- a/CMake/FindGLFW.cmake +++ b/CMake/FindGLFW.cmake @@ -78,6 +78,6 @@ IF(GLFW_INCLUDE_DIR AND EXISTS "${GLFW_INCLUDE_DIR}/GLFW/glfw3.h") ENDIF() INCLUDE(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLFW - REQUIRED_VARS GLFW_LIBRARY GLFW_INCLUDE_DIR - VERSION_VAR GLFW_VERSION_STRING) +find_package_handle_standard_args(GLFW + REQUIRED_VARS GLFW_LIBRARY GLFW_INCLUDE_DIR + VERSION_VAR GLFW_VERSION_STRING) diff --git a/CMake/FindGeoTIFF.cmake b/CMake/FindGeoTIFF.cmake index cf68262d01f888f6db0c5523d4a1b4465fc7b6fa..87c9c7871fcdc25830a5e92a1ae9caaa94daa0e8 100644 --- a/CMake/FindGeoTIFF.cmake +++ b/CMake/FindGeoTIFF.cmake @@ -58,9 +58,8 @@ mark_as_advanced( GEOTIFF_INCLUDE_DIR GEOTIFF_LIBRARY ) # handle the QUIETLY and REQUIRED arguments and set GEOTIFF_FOUND to TRUE if # all listed variables are TRUE include(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( GeoTIFF DEFAULT_MSG - GEOTIFF_LIBRARY - GEOTIFF_INCLUDE_DIR) +find_package_handle_standard_args( GeoTIFF DEFAULT_MSG + GEOTIFF_LIBRARY GEOTIFF_INCLUDE_DIR) if(GEOTIFF_FOUND) set( GEOTIFF_INCLUDE_DIRS ${GEOTIFF_INCLUDE_DIR} ) diff --git a/CMake/FindICUUC.cmake b/CMake/FindICUUC.cmake index 8bd6087425e8f14f83e8c37805c345e1b3145669..042adfdf79091b9d93fddda07bfd1572bc249968 100644 --- a/CMake/FindICUUC.cmake +++ b/CMake/FindICUUC.cmake @@ -39,7 +39,7 @@ find_library( ICUUC_LIBRARY # handle the QUIETLY and REQUIRED arguments and set ICUUC_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( ICUUC DEFAULT_MSG ICUUC_LIBRARY ICUUC_INCLUDE_DIR ) +find_package_handle_standard_args( ICUUC DEFAULT_MSG ICUUC_LIBRARY ICUUC_INCLUDE_DIR ) mark_as_advanced( ICUUC_INCLUDE_DIR ICUUC_LIBRARY ) diff --git a/CMake/FindLTDL.cmake b/CMake/FindLTDL.cmake index 797f0ce9956e7ffd52f99b9e565c9624e0ffc586..1820b17295dcdf3867e2cb478490e6a52e361574 100644 --- a/CMake/FindLTDL.cmake +++ b/CMake/FindLTDL.cmake @@ -39,7 +39,7 @@ find_library( LTDL_LIBRARY # handle the QUIETLY and REQUIRED arguments and set LTDL_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( LTDL DEFAULT_MSG LTDL_LIBRARY LTDL_INCLUDE_DIR ) +find_package_handle_standard_args( LTDL DEFAULT_MSG LTDL_LIBRARY LTDL_INCLUDE_DIR ) mark_as_advanced( LTDL_INCLUDE_DIR LTDL_LIBRARY ) diff --git a/CMake/FindLibKML.cmake b/CMake/FindLibKML.cmake index d0ff838045f4750492ae9591fb252f4de3365b4a..ee3c3376c240b77accac66bd149a9e62c75ecab6 100644 --- a/CMake/FindLibKML.cmake +++ b/CMake/FindLibKML.cmake @@ -46,7 +46,7 @@ mark_as_advanced( # handle the QUIETLY and REQUIRED arguments and set LIBKML_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( +find_package_handle_standard_args( LibKML DEFAULT_MSG LIBKML_INCLUDE_DIR diff --git a/CMake/FindLibSVM.cmake b/CMake/FindLibSVM.cmake index 93b2c9d126f4b7abe7aa89fb0d7a92fa40bc4f76..701c96cfe6010444ad6659790a6325c9f70026a6 100644 --- a/CMake/FindLibSVM.cmake +++ b/CMake/FindLibSVM.cmake @@ -121,13 +121,12 @@ endif () # handle REQUIRED and QUIET options include ( FindPackageHandleStandardArgs ) -find_package_handle_standard_args ( LibSVM DEFAULT_MSG LIBSVM_LIBRARY +find_package_handle_standard_args( LibSVM DEFAULT_MSG LIBSVM_LIBRARY _LIBSVM_VERSION_MATCH LIBSVM_INCLUDE_DIR LIBSVM_INCLUDE_DIRS LIBSVM_LIBRARIES - LIBSVM_ROOT_DIR -) + LIBSVM_ROOT_DIR) mark_as_advanced ( LIBSVM_LIBRARY diff --git a/CMake/FindMercurial.cmake b/CMake/FindMercurial.cmake index 7afdd86bb502f5bc96d320a3c7b04d9b27a80e25..cb84c1249830fcd25d76df3c6c9a49c96bb99616 100644 --- a/CMake/FindMercurial.cmake +++ b/CMake/FindMercurial.cmake @@ -28,7 +28,7 @@ # message("Mercurial version is ${Mercurial_VERSION_HG}") # endif() - +# This file can be deleted as we no longer use mercurial set(Mercurial_FOUND FALSE) set(Mercurial_HG_FOUND FALSE) diff --git a/CMake/FindMuParser.cmake b/CMake/FindMuParser.cmake index 22bba09d0a4524100ed260400dbbf0b5f34577e2..ecfd7e7157a5414dc94cec454c1ba69fddd9d817 100644 --- a/CMake/FindMuParser.cmake +++ b/CMake/FindMuParser.cmake @@ -66,7 +66,7 @@ find_library( MUPARSER_LIBRARY # handle the QUIETLY and REQUIRED arguments and set MUPARSER_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( MuParser DEFAULT_MSG MUPARSER_LIBRARY MUPARSER_INCLUDE_DIR ) +find_package_handle_standard_args( MuParser DEFAULT_MSG MUPARSER_LIBRARY MUPARSER_INCLUDE_DIR ) mark_as_advanced( MUPARSER_INCLUDE_DIR MUPARSER_LIBRARY ) diff --git a/CMake/FindMuParserX.cmake b/CMake/FindMuParserX.cmake index d3e9a60892e425a0ad77562a136c783839614393..f437828e9bc0c8b3ac3cb8ded26128c0d53b9b28 100644 --- a/CMake/FindMuParserX.cmake +++ b/CMake/FindMuParserX.cmake @@ -60,7 +60,7 @@ find_library( MUPARSERX_LIBRARY # handle the QUIETLY and REQUIRED arguments and set MUPARSERX_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( MuParserX DEFAULT_MSG MUPARSERX_LIBRARY MUPARSERX_INCLUDE_DIR ) +find_package_handle_standard_args( MuParserX DEFAULT_MSG MUPARSERX_LIBRARY MUPARSERX_INCLUDE_DIR ) mark_as_advanced( MUPARSERX_INCLUDE_DIR MUPARSERX_LIBRARY ) diff --git a/CMake/FindNumpy.cmake b/CMake/FindNumpy.cmake index 1997a3146650603eb23baf9b3e0dcd283180a201..9022fb0d43d0b8f2389f65600f78eaa43bef985c 100644 --- a/CMake/FindNumpy.cmake +++ b/CMake/FindNumpy.cmake @@ -37,7 +37,7 @@ else() endif() include( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( Numpy DEFAULT_MSG NUMPY_INCLUDE_DIR ) +find_package_handle_standard_args( Numpy DEFAULT_MSG NUMPY_INCLUDE_DIR ) mark_as_advanced( NUMPY_INCLUDE_DIR ) diff --git a/CMake/FindOpenCV.cmake b/CMake/FindOpenCV.cmake index 1cf560bdebdb5b8ee0691bea32cdb8022c5223eb..344f68245ffe3146a3406e2c45b323f77efac982 100644 --- a/CMake/FindOpenCV.cmake +++ b/CMake/FindOpenCV.cmake @@ -139,6 +139,6 @@ if( OPENCV_INCLUDE_DIRS AND OPENCV_LIBRARIES ) endif() include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenCV +find_package_handle_standard_args(OpenCV REQUIRED_VARS OPENCV_core_LIBRARY OPENCV_INCLUDE_DIRS VERSION_VAR OpenCV_VERSION) diff --git a/CMake/FindOpenThreads.cmake b/CMake/FindOpenThreads.cmake index 2462dbfb27cf1a0ed154e961ffcf637a346ccb5e..0b141d612536a43bfa56cd9ef9f9ead1f68dbdc2 100644 --- a/CMake/FindOpenThreads.cmake +++ b/CMake/FindOpenThreads.cmake @@ -58,6 +58,7 @@ # standard install paths. # Explicit -DVAR=value arguments should still be able to override everything. +# This whole file could be deleted. Find Packages OpenThreads can be used now find_path( OPENTHREADS_INCLUDE_DIR OpenThreads/Thread PATH_SUFFIXES include diff --git a/CMake/FindOssim.cmake b/CMake/FindOssim.cmake index 56b2eb49b058699504a71fcefc0f65cb76982707..dd2211a41759c7b2e425c2d7d80b245f8c5cc28b 100644 --- a/CMake/FindOssim.cmake +++ b/CMake/FindOssim.cmake @@ -91,7 +91,7 @@ find_library(OSSIM_LIBRARY # handle the QUIETLY and REQUIRED arguments and set OSSIM_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( Ossim DEFAULT_MSG OSSIM_LIBRARY OSSIM_INCLUDE_DIR ) +find_package_handle_standard_args( Ossim DEFAULT_MSG OSSIM_LIBRARY OSSIM_INCLUDE_DIR ) mark_as_advanced( OSSIM_INCLUDE_DIR OSSIM_LIBRARY ) diff --git a/CMake/FindShark.cmake b/CMake/FindShark.cmake index e4a9113e62914e3bfd84d5d64785ae124639f16c..a3daa3a6e1b0531b4a293b4734f4b125c906ba1b 100644 --- a/CMake/FindShark.cmake +++ b/CMake/FindShark.cmake @@ -139,7 +139,7 @@ else() endif() INCLUDE(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(Shark +find_package_handle_standard_args(Shark REQUIRED_VARS SHARK_LIBRARY SHARK_INCLUDE_DIR ${REQUIRED_CBLAS_LIB} VERSION_VAR SHARK_VERSION_STRING) diff --git a/CMake/FindTinyXML.cmake b/CMake/FindTinyXML.cmake index 2d5f957bc12e98e000724bb7f26b1337a5624ab0..7cf48c537f50791ea116d5c3f735b70ae5f491da 100644 --- a/CMake/FindTinyXML.cmake +++ b/CMake/FindTinyXML.cmake @@ -61,7 +61,7 @@ find_library( TINYXML_LIBRARY # handle the QUIETLY and REQUIRED arguments and set TINYXML_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( TinyXML DEFAULT_MSG TINYXML_LIBRARY TINYXML_INCLUDE_DIR ) +find_package_handle_standard_args( TinyXML DEFAULT_MSG TINYXML_LIBRARY TINYXML_INCLUDE_DIR ) mark_as_advanced( TINYXML_INCLUDE_DIR TINYXML_LIBRARY ) diff --git a/CMake/OTBCheckCpp11Keywords.cmake b/CMake/OTBCheckCpp11Keywords.cmake deleted file mode 100644 index 2d429590290b33a43b1a8f4262a695808b7fd76d..0000000000000000000000000000000000000000 --- a/CMake/OTBCheckCpp11Keywords.cmake +++ /dev/null @@ -1,107 +0,0 @@ -# -# Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) -# -# This file is part of Orfeo Toolbox -# -# https://www.orfeo-toolbox.org/ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# DEPRECATED: Not used in OTB cmake configuration -# DEPRECATED: should be removed after 6.2 release - -include(CheckCXXSourceCompiles) - -set(CMAKE_REQUIRED_FLAGS ${CMAKE_CXX_FLAGS}) - -unset(OTB_HAS_CXX11 CACHE) - -CHECK_CXX_SOURCE_COMPILES(" -#ifdef _MSC_VER - #if _MSC_VER <= 1700 - #error Compiler is not C++11 compliant - #endif -#else - #if __cplusplus <= 199711L - #error Compiler is not C++11 compliant - #endif -#endif - -int main(int argc, char *argv[]) -{ - return 0; -} - -" -OTB_HAS_CXX11 ) - - -CHECK_CXX_SOURCE_COMPILES(" -#include <memory> -struct Foo -{ - Foo() { } - ~Foo() { } -}; - -int main(int argc, char *argv[]) -{ - std::unique_ptr<Foo> p(new Foo); - return 0; -} - -" -OTB_CXX_HAS_UNIQUE_PTR ) - -CHECK_CXX_SOURCE_COMPILES(" -struct A -{ - A() { } - ~A() { } - virtual void foo( ) { } -}; - -struct B : A -{ - B() { } - ~B() { } - void foo( ) override { } -}; - -int main(int argc, char *argv[]) -{ - A* p = new B; - p->foo(); - return 0; -} - -" -OTB_CXX_HAS_OVERRIDE_SPECIFIER ) - -CHECK_CXX_SOURCE_COMPILES(" -#include <cstddef> -int main(int argc, char *argv[]) -{ - int *p = nullptr; - return 0; -} -" -OTB_CXX_HAS_NULLPTR ) - -# try_compile( -# OTB_HAS_CXX11 -# ${CMAKE_CURRENT_BINARY_DIR}/CMake -# ${CMAKE_SOURCE_DIR}/CMake/otbTestUniquePtr.cpp -# ) - diff --git a/CMake/OTBCheckSSEFeatures.cmake b/CMake/OTBCheckSSEFeatures.cmake index a7c67ed7de4f8274c379f86af8663f85630793c3..f09e0eeedec300469e6c0587f51e15503d969cde 100644 --- a/CMake/OTBCheckSSEFeatures.cmake +++ b/CMake/OTBCheckSSEFeatures.cmake @@ -1,3 +1,24 @@ +# +# Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) +# +# This file is part of Orfeo Toolbox +# +# https://www.orfeo-toolbox.org/ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This should be deleted as it can be done with cmake_host_system_information +# https://cmake.org/cmake/help/v3.10/command/cmake_host_system_information.html?highlight=sse function(check_sse_features sse_flags ) include(CheckCXXSourceRuns) include(CheckCXXCompilerFlag) diff --git a/CMake/OTBCheckTargetSystemArch.cmake b/CMake/OTBCheckTargetSystemArch.cmake index a15ac1e0364b6b99f7816f3c4c3950d2defd1a52..0e5891d622a8a97a1c1a1f2258980880f558ea46 100644 --- a/CMake/OTBCheckTargetSystemArch.cmake +++ b/CMake/OTBCheckTargetSystemArch.cmake @@ -18,6 +18,9 @@ # limitations under the License. # +# This maybe deleted as it might be done with cmake_host_system_information +# https://cmake.org/cmake/help/v3.10/command/cmake_host_system_information.html?highlight=sse + macro(OTB_CHECK_TARGET_SYSTEM_ARCH _RESULT1 _RESULT2) set(${_RESULT1} "x64") set(${_RESULT2} TRUE) diff --git a/CMake/OTBGroups.cmake b/CMake/OTBGroups.cmake index 47fbde9c7af162faea7b26cbd60133983b59564c..2e4a7199e08b5fcd4a1e82df7437a0293833c137 100644 --- a/CMake/OTBGroups.cmake +++ b/CMake/OTBGroups.cmake @@ -120,13 +120,11 @@ foreach( group ${group_list} ) set( _${group}_on_module_list ) list( LENGTH _${group}_module_list _num_modules ) set( _current_module 0 ) - while( ${_current_module} LESS ${_num_modules} ) - list( GET _${group}_module_list ${_current_module} _module_name ) - if( NOT OTB_MODULE_${_module_name}_EXCLUDE_FROM_DEFAULT ) + foreach(module ${_${group}_module_list}) + if( NOT OTB_MODULE_${module}_EXCLUDE_FROM_DEFAULT ) list( APPEND _${group}_on_module_list ${_module_name} ) endif() - math( EXPR _current_module "${_current_module} + 1" ) - endwhile() + endforeach() endforeach() if("$ENV{DASHBOARD_TEST_FROM_CTEST}" STREQUAL "") diff --git a/CMake/OTBModuleEnablement.cmake b/CMake/OTBModuleEnablement.cmake index 456a16631bba225e477ab38b1ee5d1bbea11fe64..143de8ad4cba37afd7e039942688bb77a54952a8 100644 --- a/CMake/OTBModuleEnablement.cmake +++ b/CMake/OTBModuleEnablement.cmake @@ -124,13 +124,6 @@ option(OTB_BUILD_DEFAULT_MODULES "Build the default OTB modules." ON) option(OTB_BUILD_ALL_MODULES_FOR_TESTS "Build the tests of module dependencies." OFF) mark_as_advanced(OTB_BUILD_ALL_MODULES_FOR_TESTS) -# To maintain backward compatibility -if(DEFINED OTB_BUILD_ALL_MODULES) - message(WARNING "OTB_BUILD_ALL_MODULES is deprecated, please remove this entry from the CMake " - "cache (edit the CMakeCache.txt file located in the top level of the OTB build " - "tree directly or via the CMake GUI), and use OTB_BUILD_DEFAULT_MODULES instead.") - set(OTB_BUILD_DEFAULT_MODULES ${OTB_BUILD_ALL_MODULES} CACHE BOOL "Build the default OTB modules." FORCE) -endif() # Provide module selections by groups include(${OTB_SOURCE_DIR}/CMake/OTBGroups.cmake) @@ -227,28 +220,6 @@ list(SORT OTB_MODULES_DISABLED) # Deterministic order. include(CMake/TopologicalSort.cmake) topological_sort(OTB_MODULES_ENABLED OTB_MODULE_ _DEPENDS_FOR_SORT) -# TODO : shall we set up CPack ? -# # -# # Set up CPack support -# # -# set(OTB_MODULES_DISABLED_CPACK ) -# foreach(m ${OTB_MODULES_DISABLED}) -# list(APPEND OTB_MODULES_DISABLED_CPACK "/${m}/") -# endforeach() -# set(CPACK_SOURCE_IGNORE_FILES -# "${OTB_MODULES_DISABLED_CPACK};/\\\\.git") -# -# set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Insight Toolkit version ${OTB_VERSION_MAJOR}") -# set(CPACK_PACKAGE_VENDOR "ISC") -# set(CPACK_PACKAGE_VERSION_MAJOR "${OTB_VERSION_MAJOR}") -# set(CPACK_PACKAGE_VERSION_MINOR "${OTB_VERSION_MINOR}") -# set(CPACK_PACKAGE_VERSION_PATCH "${OTB_VERSION_PATCH}") -# set(CPACK_PACKAGE_INSTALL_DIRECTORY "OTB-${OTB_VERSION_MAJOR}.${OTB_VERSION_MINOR}") -# set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.txt") -# set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") -# -# include(CPack) - # Report what will be built. set(_enabled_modules "${OTB_MODULES_ENABLED}") list(SORT _enabled_modules) @@ -380,7 +351,9 @@ file(WRITE "${OTB_BINARY_DIR}/OTBTargets.cmake" "# Generated by CMake, do not edit!") macro(init_module_vars) - verify_otb_module_is_set() + if( "${otb-module}" STREQUAL "" ) + message(FATAL_ERROR "CMake variable otb-module is not set") + endif() set(${otb-module}-targets OTBTargets) set(${otb-module}-targets-install "${OTB_INSTALL_PACKAGE_DIR}/OTBTargets.cmake") set(${otb-module}-targets-build "${OTB_BINARY_DIR}/OTBTargets.cmake") diff --git a/CMake/OTBModuleExternal.cmake b/CMake/OTBModuleExternal.cmake index b046feefc999e74ae5e51d5e7dbfe475a652ec61..f629eeeab4d37cc4108f85b6b958bbc428597155 100644 --- a/CMake/OTBModuleExternal.cmake +++ b/CMake/OTBModuleExternal.cmake @@ -33,12 +33,17 @@ if(NOT OTB_VERSION VERSION_GREATER "5.2") endif() if(NOT EXISTS ${OTB_CMAKE_DIR}/OTBModuleMacros.cmake) if(NOT OTB_BUILD_MODULE_AS_STANDALONE) - message(FATAL_ERROR "Modules can only be built against an OTB build tree; they cannot be built against an OTB install tree. You can build your module as a standalone CMake project instead, by activating the BUILD_MODULE_AS_STANDALONE option. Beware that dependency between remote modules will NOT be tracked.") + message(FATAL_ERROR "Modules can only be built against an OTB build tree; " + "they cannot be built against an OTB install tree. You can build " + "your module as a standalone CMake project instead, by activating " + "the BUILD_MODULE_AS_STANDALONE option. Beware that dependency " + "between remote modules will NOT be tracked.") endif() endif() if(OTB_BUILD_MODULE_AS_STANDALONE) - message(STATUS "You are building this module as a standalone CMake project. Beware that dependencies to other remote modules will not be tracked.") + message(STATUS "You are building this module as a standalone CMake project. " + "Beware that dependencies to other remote modules will not be tracked.") include(OTBStandaloneModuleMacros) otb_module_impl() else() @@ -86,7 +91,8 @@ else() set(CMAKE_EXE_LINKER_FLAGS "${OTB_REQUIRED_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS "${OTB_REQUIRED_LINK_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS "${OTB_REQUIRED_LINK_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}") - option(BUILD_SHARED_LIBS "Build OTB with shared libraries." ${OTB_BUILD_SHARED}) + option(BUILD_SHARED_LIBS "Build with shared libraries." ${OTB_BUILD_SHARED}) + mark_as_advanced(BUILD_SHARED_LIBS) # Add the OTB_MODULES_DIR to the CMAKE_MODULE_PATH and then use the binary # directory for the project to write out new ones to. diff --git a/CMake/OTBModuleHeaderTest.cmake b/CMake/OTBModuleHeaderTest.cmake index 20b43b76d4a276af341b20b5160c03ae71313a3f..ed89a0fc55af7d7f713490f2a28ec7ffa4c88eb6 100644 --- a/CMake/OTBModuleHeaderTest.cmake +++ b/CMake/OTBModuleHeaderTest.cmake @@ -66,7 +66,7 @@ macro( otb_module_headertest _name ) if( NOT ${_name}_THIRD_PARTY AND EXISTS ${${_name}_SOURCE_DIR}/include AND PYTHON_EXECUTABLE - AND NOT (PYTHON_VERSION_STRING VERSION_LESS 2.6) + AND NOT (PYTHON_VERSION_STRING VERSION_LESS 3) AND NOT (${_name} STREQUAL OTBTestKernel) AND NOT (CMAKE_GENERATOR MATCHES "^Visual Studio 10.*")) @@ -96,24 +96,22 @@ macro( otb_module_headertest _name ) # We check to see if the headers are changed. If so, remove the header test # source files so they are regenerated. - if( ${CMAKE_VERSION} VERSION_GREATER 2.8.6 ) # for string( MD5 - set( _headers_list_md5 "${${_name}_BINARY_DIR}/test/CMakeFiles/HeadersList.md5" ) - list( SORT _header_files ) - string( MD5 _new_md5 "${_header_files}" ) - set( _regenerate_sources FALSE ) - if( NOT EXISTS "${_headers_list_md5}" ) + set( _headers_list_md5 "${${_name}_BINARY_DIR}/test/CMakeFiles/HeadersList.md5" ) + list( SORT _header_files ) + string( MD5 _new_md5 "${_header_files}" ) + set( _regenerate_sources FALSE ) + if( NOT EXISTS "${_headers_list_md5}" ) + set( _regenerate_sources TRUE ) + else() + file( READ "${_headers_list_md5}" _old_md5 ) + if( NOT ("${_old_md5}" STREQUAL "${_new_md5}")) set( _regenerate_sources TRUE ) - else() - file( READ "${_headers_list_md5}" _old_md5 ) - if( NOT ("${_old_md5}" STREQUAL "${_new_md5}")) - set( _regenerate_sources TRUE ) - endif() - endif() - file( WRITE "${_headers_list_md5}" "${_new_md5}" ) - if( ${_regenerate_sources} ) - file( REMOVE ${_outputs} ) endif() endif() + file( WRITE "${_headers_list_md5}" "${_new_md5}" ) + if( ${_regenerate_sources} ) + file( REMOVE ${_outputs} ) + endif() set( _test_num 1 ) foreach( _header_test_src ${_outputs} ) diff --git a/CMake/OTBModuleMacros.cmake b/CMake/OTBModuleMacros.cmake index 4cde0c39e3dc38346559b0db1716854dff1c8b3e..57013195d39e52f15f750c00bb499b5716ea09bc 100644 --- a/CMake/OTBModuleMacros.cmake +++ b/CMake/OTBModuleMacros.cmake @@ -27,11 +27,8 @@ include(${_OTBModuleMacros_DIR}/OTBModuleDoxygen.cmake) include(${_OTBModuleMacros_DIR}/OTBModuleHeaderTest.cmake) include(${_OTBModuleMacros_DIR}/OTBApplicationMacros.cmake) -# With Apple's GGC <=4.2 and LLVM-GCC <=4.2 visibility of template -# don't work. Set the option to off and hide it. -if(APPLE AND CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.3") - set( USE_COMPILER_HIDDEN_VISIBILITY OFF CACHE INTERNAL "" ) -elseif(APPLE) +# TODO check if this is still the case: +if(APPLE) #RK: compiler visibility nor woking on osx with appleclang xcode. #gcc is a symlink to clang set( USE_COMPILER_HIDDEN_VISIBILITY OFF CACHE INTERNAL "" ) @@ -369,8 +366,3 @@ macro(otb_module_target _name) otb_module_target_install(${_name}) endif() endmacro() - -macro(otb_module_requires_cxx11) - message(WARNING "otb_module_requires_cxx11 is deprecated since OTB version 6.2 which build with c++14 by default. You can safely remove the call to this macro.") - set(OTB_MODULE_${otb-module}_REQUIRES_CXX11 1) -endmacro() diff --git a/CMake/OTBModuleTest.cmake b/CMake/OTBModuleTest.cmake index c1402718ece7ecb92c2aabc0b581f16e7c679aa3..25c7e308c86c51d12589e691210167501ed3270f 100644 --- a/CMake/OTBModuleTest.cmake +++ b/CMake/OTBModuleTest.cmake @@ -138,32 +138,6 @@ EM_ASM( otb_module_target_label(${KIT}TestDriver) endmacro() -#----------------------------------------------------------------------------- -# OTB wrapper for add_test that automatically sets the test's LABELS property -# to the value of its containing module. -# -# function(otb_add_test) -# # Add tests with data in the OTBData group. -# ExternalData_add_test(OTBData ${ARGN}) - -# if("NAME" STREQUAL "${ARGV0}") -# set(_iat_testname ${ARGV1}) -# else() -# set(_iat_testname ${ARGV0}) -# endif() - -# if(otb-module) -# set(_label ${otb-module}) -# if(TARGET ${otb-module}-all AND "${ARGN}" MATCHES "DATA{") -# add_dependencies(${otb-module}-all OTBData) -# endif() -# else() -# set(_label ${main_project_name}) -# endif() - -# set_property(TEST ${_iat_testname} PROPERTY LABELS ${_label}) -# endfunction() - #----------------------------------------------------------------------------- # OTB wrapper for add_test that automatically sets the test's LABELS property # to the value of its containing module. diff --git a/CMake/OTBSetStandardCompilerFlags.cmake b/CMake/OTBSetStandardCompilerFlags.cmake index 6a7cad037a8930553b177ba94e29e87a9079cc1d..a9f4e19d67ed6fff03aefd4015f2ec3ada4dd976 100644 --- a/CMake/OTBSetStandardCompilerFlags.cmake +++ b/CMake/OTBSetStandardCompilerFlags.cmake @@ -57,6 +57,8 @@ function(check_c_compiler_warning_flags c_flag_var) set(local_c_flags "") set(flag_list "${ARGN}") foreach(flag IN LISTS flag_list) +# This could be replaced by a simple check_c_compiler_flag(<flag> <var>) +# https://cmake.org/cmake/help/v3.10/module/CheckCCompilerFlag.html?highlight=flags OTB_CHECK_C_COMPILER_FLAG(${flag} C_HAS_WARNING${flag}) if(${C_HAS_WARNING${flag}}) set(local_c_flags "${local_c_flags} ${flag}") @@ -70,6 +72,8 @@ function(check_cxx_compiler_warning_flags cxx_flag_var) set(local_cxx_flags "") set(flag_list "${ARGN}") foreach(flag IN LISTS flag_list) +# This could be replaced by a simple check_cxx_compiler_flag(<flag> <var>) +# https://cmake.org/cmake/help/v3.10/module/CheckCXXCompilerFlag.html?highlight=checkcxxcompilerflag OTB_CHECK_CXX_COMPILER_FLAG(${flag} CXX_HAS_WARNING${flag}) if(${CXX_HAS_WARNING${flag}}) set(local_cxx_flags "${local_cxx_flags} ${flag}") @@ -215,6 +219,8 @@ macro(check_compiler_platform_flags) # BUILD_SHARED_LIBS works as it would on other systems if(NOT CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS) if(BUILD_SHARED_LIBS) + # TODO: + # OTB_LIBRARY_BUILD_TYPE is never used! set(OTB_LIBRARY_BUILD_TYPE "SHARED") else() set(OTB_LIBRARY_BUILD_TYPE "STATIC") @@ -295,6 +301,8 @@ macro(check_compiler_platform_flags) if(OTB_USE_SSE_FLAGS) message(STATUS "SIMD extensions requested with OTB_USE_SSE_FLAGS=${OTB_USE_SSE_FLAGS}") include(OTBCheckSSEFeatures) +# This should be deleted as it can be done with cmake_host_system_information +# https://cmake.org/cmake/help/v3.10/command/cmake_host_system_information.html?highlight=sse check_sse_features(OTB_SSE_FLAGS) if(OTB_SSE_FLAGS) message(STATUS "Adding '${OTB_SSE_FLAGS}' to OTB_REQUIRED_CXX_FLAGS") diff --git a/CMake/OTB_CheckCCompilerFlag.cmake b/CMake/OTB_CheckCCompilerFlag.cmake index 3cb206423609e77b802e4bd442126295a4541f2f..246cbcf258f3df2c99367f9dcfd53d2f6ff2d3c6 100644 --- a/CMake/OTB_CheckCCompilerFlag.cmake +++ b/CMake/OTB_CheckCCompilerFlag.cmake @@ -22,6 +22,8 @@ include(CheckCSourceCompiles) +# This could be replaced by a simple check_c_compiler_flag(<flag> <var>) +# https://cmake.org/cmake/help/v3.10/module/CheckCCompilerFlag.html?highlight=flags macro (OTB_CHECK_C_COMPILER_FLAG _FLAG _RESULT) set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}") diff --git a/CMake/OTB_CheckCXXCompilerFlag.cmake b/CMake/OTB_CheckCXXCompilerFlag.cmake index d7eb1260a11357f31f93ecd5c917a2c64748e9ce..26114bd0f2add75b77e3714f7129add67a842ec4 100644 --- a/CMake/OTB_CheckCXXCompilerFlag.cmake +++ b/CMake/OTB_CheckCXXCompilerFlag.cmake @@ -42,6 +42,8 @@ include(CheckCXXSourceCompiles) +# This could be replaced by a simple check_cxx_compiler_flag(<flag> <var>) +# https://cmake.org/cmake/help/v3.10/module/CheckCXXCompilerFlag.html?highlight=checkcxxcompilerflag macro (OTB_CHECK_CXX_COMPILER_FLAG _FLAG _RESULT) set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}") diff --git a/CMakeLists.txt b/CMakeLists.txt index 256b63ce38b97cbf568db835ed361fa371d9a004..f2f57de38427ab52b54e3ebf48a777d332253954 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,14 +18,9 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.1.0) +cmake_minimum_required(VERSION 3.10.2) foreach(p - CMP0025 # CMake 3.0 - CMP0042 # CMake 3.0 - CMP0046 # CMake 3.0 - CMP0054 # CMake 3.1 - CMP0058 # CMake 3.3 CMP0072 # CMake 3.11 ) if(POLICY ${p}) @@ -59,6 +54,10 @@ include(ExternalProject) #mantis: 1193 if(APPLE) + # https://cmake.org/cmake/help/v3.10/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.html + # By default it contains the standard directories for the current system. It + # is not intended to be modified by the project, use CMAKE_FRAMEWORK_PATH + # for this. set(CMAKE_SYSTEM_FRAMEWORK_PATH "" CACHE PATH "" FORCE) endif() @@ -88,7 +87,7 @@ mark_as_advanced(OTB_APPLICATIONS_NAME_LIST) set(OTB_CMAKE_DIR ${OTB_SOURCE_DIR}/CMake) set(CMAKE_MODULE_PATH ${OTB_CMAKE_DIR} ${CMAKE_MODULE_PATH}) -include (SourceStatus) +include(SourceStatus) include(PreventInSourceBuilds) include(PreventInBuildInstalls) include(OTBModuleMacros) @@ -110,6 +109,8 @@ if ( OTB_WRAP_PYTHON AND ( ${PYTHON_VERSION_MAJOR} EQUAL 2 ) ) message (WARNING "Python3 not found. There is no longer support of \ wrapping in python2 in OTB, but it can still be used.") endif() +# Now that we have a python version the addditional versions should only +# contain the version we have to get the corresponding libs set (Python_ADDITIONAL_VERSIONS "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") find_package ( PythonLibs ) @@ -179,15 +180,6 @@ endif() #convert path to native for reconfiguring otbcli.bat.in file(TO_NATIVE_PATH "${OTB_INSTALL_APP_DIR}" OTB_INSTALL_APP_DIR_NATIVE) -# Override CMake's built-in add_* commands: assign LABELS to tests and targets -# automatically. Depends on the CMake variable otb-module being set to the -# "current" module when add_* is called. -macro(verify_otb_module_is_set) - if("" STREQUAL "${otb-module}") - message(FATAL_ERROR "CMake variable otb-module is not set") - endif() -endmacro() - #----------------------------------------------------------------------------- # Set a default build type if none was specified if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) @@ -217,10 +209,16 @@ endmacro() # TODO : handle shared libs on windows option(BUILD_SHARED_LIBS "Build OTB with shared libraries." ON) +mark_as_advanced(BUILD_SHARED_LIBS) + +# The following variable can be deleted and replace by BUILD_SHARED_LIBS +# in otbConfigure.h.in set(OTB_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) + if(MSVC) option(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS "Build OTB with shared libraries." ON) + mark_as_advanced(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS) set(OTB_CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ${CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS}) else() set(OTB_CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS OFF) @@ -235,6 +233,7 @@ endif() option(OTB_USE_OPENMP "Add openmp compiler and linker flags" OFF) option(OTB_USE_SSE_FLAGS "Enable SIMD optimizations (hardware dependent)." ON) +mark_as_advanced(OTB_USE_SSE_FLAGS) include(OTBSetStandardCompilerFlags) #--------------------------------------------------------------- @@ -268,10 +267,6 @@ if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY) endif() set(OTB_MODULES_DIR "${OTB_BINARY_DIR}/${OTB_INSTALL_PACKAGE_DIR}/Modules") -#----------------------------------------------------------------------------- -# OTB uses KWStyle for checking the coding style -#include(${OTB_SOURCE_DIR}/Utilities/KWStyle/KWStyle.cmake) - #----------------------------------------------------------------------------- # By default, OTB does not build the Examples that are illustrated in the Software Guide option(BUILD_EXAMPLES "Build the Examples directory." OFF) @@ -481,18 +476,6 @@ configure_file( add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake) -# #----------------------------------------------------------------------------- -# # Packaging options for Windows packages -# if(WIN32 OR CMAKE_CROSSCOMPILING) -# option(GENERATE_PACKAGE "Generate OTB package" OFF) -# option(GENERATE_XDK "Generate XDK for OTB development" OFF) -# if(GENERATE_PACKAGE OR GENERATE_XDK) -# set(MXE_TARGET_DIR "" CACHE PATH "path to mxe directory") -# set(PACKAGE_OTB_SRC_DIR ${OTB_SOURCE_DIR}) -# add_subdirectory(${OTB_SOURCE_DIR}/SuperBuild/Packaging ${CMAKE_BINARY_DIR}/Packaging) -# endif() # (GENERATE_PACKAGE OR GENERATE_XDK) -# endif() # (WIN32 OR CMAKE_CROSSCOMPILING) - #----------------------------------------------------------------------------- #macro to put a fixed space between key, value in summary macro(get_white_spaces var res) @@ -538,18 +521,8 @@ foreach(otb_option message("${otb_option} ${spaces} = ${${otb_option}}") endforeach() -# set(modules_list_for_summary "${OTB_MODULES_ENABLED}") -# list(SORT modules_list_for_summary) -# string(REPLACE ";" " " modules_list_for_summary "${modules_list_for_summary}") -# message("OTB_MODULES_ENABLED = ${modules_list_for_summary}") -# unset(modules_list_for_summary) - -list(REMOVE_ITEM option_list "OTB_USE_6S" "OTB_USE_SIFTFAST" "OTB_USE_QT") -foreach(item ${option_list}) - if(NOT ${item}) - list(REMOVE_ITEM option_list "${item}" ) - endif() -endforeach() +# Cleaning option_list as we are using a new one now +unset(option_list) #To report non-optional dependencies inside summary list(APPEND option_list Boost) diff --git a/CTestConfig.cmake b/CTestConfig.cmake index d50bf8089915dc328b031b1ee4a5f672895545b2..d8f16549813bfccee2f4a490a76310d90e4ee90a 100644 --- a/CTestConfig.cmake +++ b/CTestConfig.cmake @@ -19,8 +19,6 @@ # set(CTEST_PROJECT_NAME "OTB") -set(CTEST_NIGHTLY_START_TIME "20:00:00 CEST") - set(CTEST_DROP_METHOD "https") set(CTEST_DROP_SITE "cdash.orfeo-toolbox.org") set(CTEST_DROP_LOCATION "/submit.php?project=OTB") diff --git a/Modules/ThirdParty/GDAL/otb-module-init.cmake b/Modules/ThirdParty/GDAL/otb-module-init.cmake index 140f5835963031c31b1737bc0b4d616c087eea1e..5c0247dfad8c5fe9b352e44adb8dba950aa32c7c 100644 --- a/Modules/ThirdParty/GDAL/otb-module-init.cmake +++ b/Modules/ThirdParty/GDAL/otb-module-init.cmake @@ -51,78 +51,39 @@ macro(error_message m) message(FATAL_ERROR "${m}") endmacro(error_message) -#------------------- C version --------------------- -macro(gdal_try_run_c msg_type var source_file) -message(STATUS "Performing Test ${var}") -set(${var}) -try_run(RUN_${var} COMPILE_${var} ${CMAKE_CURRENT_BINARY_DIR} -${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/${source_file} -CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" -COMPILE_DEFINITIONS "-w" -COMPILE_OUTPUT_VARIABLE COMPILE_OUTPUT_${var} -RUN_OUTPUT_VARIABLE RUN_OUTPUT_${var} -ARGS ${ARGN} -) - -if(NOT COMPILE_${var}) - error_message("Compiling Test ${var} - Failed \n -COMPILE_OUTPUT_${var}: '${COMPILE_OUTPUT_${var}}'") -endif() -if(RUN_${var}) - set(${var} FALSE) - #if msg_type is STATUS (ie "okay" if test is failing), - #then we don't need to give an run-output and exit status. - if("${msg_type}" STREQUAL "STATUS") - message(${msg_type} "Performing Test ${var} - Failed") - else() - error_message("Performing Test ${var} - Failed \n - Exit status: '${RUN_${var}}' \n - RUN_OUTPUT_${var}: '${RUN_OUTPUT_${var}}'") - endif() -else() - set(${var} TRUE) - message(STATUS "Performing Test ${var} - Success") -endif() -unset(RUN_OUTPUT_${var}) -unset(COMPILE_OUTPUT_${var}) -unset(COMPILE_${var}) -endmacro() - #------------------- Helper Macro --------------------- macro(gdal_try_run msg_type var source_file) -message(STATUS "Performing Test ${var}") -set(${var}) -try_run(RUN_${var} COMPILE_${var} ${CMAKE_CURRENT_BINARY_DIR} -${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/${source_file} -CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" -COMPILE_DEFINITIONS "-std=c++14" "-w" -COMPILE_OUTPUT_VARIABLE COMPILE_OUTPUT_${var} -RUN_OUTPUT_VARIABLE RUN_OUTPUT_${var} -ARGS ${ARGN} -) - -if(NOT COMPILE_${var}) - error_message("Compiling Test ${var} - Failed \n -COMPILE_OUTPUT_${var}: '${COMPILE_OUTPUT_${var}}'") -endif() -if(RUN_${var}) - set(${var} FALSE) - #if msg_type is STATUS (ie "okay" if test is failing), - #then we don't need to give an run-output and exit status. - if("${msg_type}" STREQUAL "STATUS") - message(${msg_type} "Performing Test ${var} - Failed") + message(STATUS "Performing Test ${var}") + set(${var}) + try_run(RUN_${var} COMPILE_${var} ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/${source_file} + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" + COMPILE_OUTPUT_VARIABLE COMPILE_OUTPUT_${var} + RUN_OUTPUT_VARIABLE RUN_OUTPUT_${var} + ARGS ${ARGN} + ) + if(NOT COMPILE_${var}) + error_message("Compiling Test ${var} - Failed \n" + "COMPILE_OUTPUT_${var}: '${COMPILE_OUTPUT_${var}}'") + endif() + if(RUN_${var}) + set(${var} FALSE) + #if msg_type is STATUS (ie "okay" if test is failing), + #then we don't need to give an run-output and exit status. + if("${msg_type}" STREQUAL "STATUS") + message(${msg_type} "Performing Test ${var} - Failed") + else() + error_message("Performing Test ${var} - Failed \n" + "Exit status: '${RUN_${var}}' \n" + "RUN_OUTPUT_${var}: '${RUN_OUTPUT_${var}}'") + endif() else() - error_message("Performing Test ${var} - Failed \n - Exit status: '${RUN_${var}}' \n - RUN_OUTPUT_${var}: '${RUN_OUTPUT_${var}}'") + set(${var} TRUE) + message(STATUS "Performing Test ${var} - Success") endif() -else() - set(${var} TRUE) - message(STATUS "Performing Test ${var} - Success") -endif() -unset(RUN_OUTPUT_${var}) -unset(COMPILE_OUTPUT_${var}) -unset(COMPILE_${var}) + unset(RUN_OUTPUT_${var}) + unset(COMPILE_OUTPUT_${var}) + unset(COMPILE_${var}) endmacro() #------------------- TESTS --------------------- @@ -155,11 +116,11 @@ endif() # check formats TIFF, GeoTIFF, JPEG, JPEG2000, HDF5 # Note : exact format names can be found here http://www.gdal.org/formats_list.html -gdal_try_run_c(STATUS GDAL_FORMATS_LIST gdalFormatsListTest.c ${TEMP}/gdalFormatsList.csv) +gdal_try_run(STATUS GDAL_FORMATS_LIST gdalFormatsListTest.c ${TEMP}/gdalFormatsList.csv) -gdal_try_run_c(FATAL_ERROR GDAL_HAS_JPEG gdalFormatsTest.c JPEG) +gdal_try_run(FATAL_ERROR GDAL_HAS_JPEG gdalFormatsTest.c JPEG) -gdal_try_run_c(FATAL_ERROR GDAL_HAS_GTiff gdalFormatsTest.c GTiff) +gdal_try_run(FATAL_ERROR GDAL_HAS_GTiff gdalFormatsTest.c GTiff) gdal_try_run(FATAL_ERROR GDAL_CAN_CREATE_GTiff gdalCreateTest.cxx GTiff ${TEMP}/testImage.gtif ) @@ -168,39 +129,39 @@ gdal_try_run(FATAL_ERROR GDAL_CAN_CREATE_GTiff_BIGTIFF gdalCreateCopyTest.cxx ${ gdal_try_run(FATAL_ERROR GDAL_CAN_CREATE_JPEG gdalCreateCopyTest.cxx ${TEMP}/testImage.gtif ${TEMP}/testImage.jpeg JPEG) set(JPEG2000_DRIVER_USED) -gdal_try_run_c(STATUS GDAL_HAS_JP2OpenJPEG gdalFormatsTest.c JP2OpenJPEG) +gdal_try_run(STATUS GDAL_HAS_JP2OpenJPEG gdalFormatsTest.c JP2OpenJPEG) if (GDAL_HAS_JP2OpenJPEG) set(JPEG2000_DRIVER_USED "OpenJPEG") gdal_try_run(STATUS GDAL_CAN_CREATE_JP2OpenJPEG gdalCreateCopyTest.cxx ${TEMP}/testImage.gtif ${TEMP}/testImage.j2k JP2OpenJPEG) endif() -gdal_try_run_c(STATUS GDAL_HAS_JP2KAK gdalFormatsTest.c JP2KAK) +gdal_try_run(STATUS GDAL_HAS_JP2KAK gdalFormatsTest.c JP2KAK) if (GDAL_HAS_JP2KAK) set(JPEG2000_DRIVER_USED "Kakadu") gdal_try_run(STATUS GDAL_CAN_CREATE_JP2KAK gdalCreateCopyTest.cxx ${TEMP}/testImage.gtif ${TEMP}/testImage.j2k JP2KAK) endif() -gdal_try_run_c(STATUS GDAL_HAS_JP2ECW gdalFormatsTest.c JP2ECW) +gdal_try_run(STATUS GDAL_HAS_JP2ECW gdalFormatsTest.c JP2ECW) if (GDAL_HAS_JP2ECW) set(JPEG2000_DRIVER_USED "ECW") gdal_try_run(STATUS GDAL_CAN_CREATE_JP2ECW gdalCreateCopyTest.cxx ${TEMP}/testImage.gtif ${TEMP}/testImage.j2k JP2ECW) endif() -gdal_try_run_c(STATUS GDAL_HAS_JPEG2000 gdalFormatsTest.c JPEG2000) +gdal_try_run(STATUS GDAL_HAS_JPEG2000 gdalFormatsTest.c JPEG2000) if (GDAL_HAS_JPEG2000) set(JPEG2000_DRIVER_USED "JPEG2000") gdal_try_run(STATUS GDAL_CAN_CREATE_JPEG2000 gdalCreateCopyTest.cxx ${TEMP}/testImage.gtif ${TEMP}/testImage.j2k JPEG2000) endif() -gdal_try_run_c(STATUS GDAL_HAS_HDF5 gdalFormatsTest.c HDF5) -gdal_try_run_c(STATUS GDAL_HAS_HDF4 gdalFormatsTest.c HDF4) +gdal_try_run(STATUS GDAL_HAS_HDF5 gdalFormatsTest.c HDF5) +gdal_try_run(STATUS GDAL_HAS_HDF4 gdalFormatsTest.c HDF4) #check some vector formats #TODO: fix gdalFormatsTest.c to work with gdal 1.x and 2.x -# gdal_try_run_c(FATAL_ERROR GDAL_HAS_SQLite gdalFormatsTest.c SQLite) -# gdal_try_run_c(FATAL_ERROR GDAL_HAS_VRT gdalFormatsTest.c VRT) -# gdal_try_run_c(FATAL_ERROR GDAL_HAS_KML gdalFormatsTest.c KML) -# gdal_try_run_c(STATUS GDAL_HAS_LIBKML gdalFormatsTest.c LIBKML) +# gdal_try_run(FATAL_ERROR GDAL_HAS_SQLite gdalFormatsTest.c SQLite) +# gdal_try_run(FATAL_ERROR GDAL_HAS_VRT gdalFormatsTest.c VRT) +# gdal_try_run(FATAL_ERROR GDAL_HAS_KML gdalFormatsTest.c KML) +# gdal_try_run(STATUS GDAL_HAS_LIBKML gdalFormatsTest.c LIBKML) #------------------- TESTS (END)--------------------- diff --git a/Packaging/CMakeLists.txt b/Packaging/CMakeLists.txt index 65c599be710007be908128ab79bad5b21f09b85d..a8d5c1658b8e4ee45863b2d50c8c0f2bbb4c8f26 100644 --- a/Packaging/CMakeLists.txt +++ b/Packaging/CMakeLists.txt @@ -18,7 +18,7 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.3.0) +cmake_minimum_required(VERSION 3.10.2) project(OTBPackaging) @@ -31,7 +31,7 @@ include(CTest) set(PKG_DEBUG OFF) #set( PKG_DEBUG 1) -set(CMAKE_BUILD_TYPE Release) +set(CMAKE_BUILD_TYPE Release) #user-defined variables and option option(OTB_WRAP_PYTHON "include python bindings in package" ON) @@ -40,13 +40,12 @@ set(SUPERBUILD_INSTALL_DIR "" CACHE PATH "path to superbuild install directory") set(DOWNLOAD_LOCATION "" CACHE PATH "path to superbuild download archives") #variables based on above user-defined variables -message( "OTB_BINARY_DIR=${OTB_BINARY_DIR}" ) if ( NOT OTB_BINARY_DIR ) - set(OTB_BINARY_DIR "${SUPERBUILD_BINARY_DIR}/OTB/build") + set(OTB_BINARY_DIR "${SUPERBUILD_BINARY_DIR}/OTB/build") endif() -set(QT_TRANSLATIONS_DIR "${SUPERBUILD_INSTALL_DIR}/translations") +set(QT_TRANSLATIONS_DIR "${SUPERBUILD_INSTALL_DIR}/translations") get_filename_component(PACKAGE_OTB_SRC_DIR ${OTBPackaging_SOURCE_DIR} PATH) -set(SUPERBUILD_SOURCE_DIR "${PACKAGE_OTB_SRC_DIR}/SuperBuild") +set(SUPERBUILD_SOURCE_DIR "${PACKAGE_OTB_SRC_DIR}/SuperBuild") set(LINUX FALSE) @@ -70,6 +69,8 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) include(${SUPERBUILD_SOURCE_DIR}/CMake/SuperBuild_Macro.cmake) #include superbuild_macro for OTB_TARGET_SYSTEM_ARCH_IS_X64 value +# This maybe deleted as it might be done with cmake_host_system_information +# https://cmake.org/cmake/help/v3.10/command/cmake_host_system_information.html?highlight=sse include(${PACKAGE_OTB_SRC_DIR}/CMake/OTBCheckTargetSystemArch.cmake) # get itk version from External_itk.cmake if not on mingw @@ -221,15 +222,8 @@ if(BUILD_TESTING) include(testing.cmake) endif() - - - -#TODO: dummy targets. to be removed after merge -add_custom_target( - PACKAGE-OTB - COMMAND - "${CMAKE_COMMAND}" --build . --target install - WORKING_DIRECTORY - "${CMAKE_BINARY_DIR}" - COMMENT "dummy target PACKAGE-OTB" - ) +add_custom_target( PACKAGE-OTB + COMMAND "${CMAKE_COMMAND}" --build . --target install + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "PACKAGE-OTB" + ) \ No newline at end of file diff --git a/Packaging/CTestConfig.cmake b/Packaging/CTestConfig.cmake index 8f8b4948dbb685c582affd0f7098023d8ab82f15..a61552e69e4c33320d1b70e4b4669e28a192f3e4 100644 --- a/Packaging/CTestConfig.cmake +++ b/Packaging/CTestConfig.cmake @@ -19,7 +19,6 @@ # set(CTEST_PROJECT_NAME "OTB") -set(CTEST_NIGHTLY_START_TIME "20:00:00 CEST") set(CTEST_DROP_METHOD "https") set(CTEST_DROP_SITE "cdash.orfeo-toolbox.org") set(CTEST_DROP_LOCATION "/submit.php?project=OTB") diff --git a/Packaging/PackageGlobals.cmake b/Packaging/PackageGlobals.cmake index a2202433bd4731c4606c43eaa51ae69a601bb157..22202d0ddcdec4fc751fbbe7be0e8a7348e68013 100644 --- a/Packaging/PackageGlobals.cmake +++ b/Packaging/PackageGlobals.cmake @@ -186,6 +186,4 @@ set(GTK_LIB_LIST_1 # libpng12.so.0 # ) - -#set(ALLOWED_SYSTEM_DLLS ${GTK_LIB_LIST_1} ${GTK_LIB_LIST_2}) set(ALLOWED_SYSTEM_DLLS ${GTK_LIB_LIST_1}) # ${GTK_LIB_LIST_2}) diff --git a/Packaging/cleanup_package.cmake b/Packaging/cleanup_package.cmake index 2df328bf11afefdde73f902b4f1829fc425854f6..a003fa09861b71aa986746961c5dc6b5ab0a61fe 100644 --- a/Packaging/cleanup_package.cmake +++ b/Packaging/cleanup_package.cmake @@ -22,36 +22,36 @@ macro(cleanup_package) if(EXISTS "${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}") -message(STATUS "Deleting package staging directory: ${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}") -execute_process(COMMAND -${CMAKE_COMMAND} -E remove_directory - "${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}" - RESULT_VARIABLE cleanup_stagedir_rv - OUTPUT_VARIABLE cleanup_stagedir_ov - ERROR_VARIABLE cleanup_stagedir_ov - ) + message(STATUS "Deleting package staging directory: ${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}") + execute_process(COMMAND + ${CMAKE_COMMAND} -E remove_directory + "${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}" + RESULT_VARIABLE cleanup_stagedir_rv + OUTPUT_VARIABLE cleanup_stagedir_ov + ERROR_VARIABLE cleanup_stagedir_ov + ) if(cleanup_stagedir_rv) - message(FATAL_ERROR "Delete ${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR} - FAILED\ncleanup_stagedir_ov=${cleanup_stagedir_ov}") + message(FATAL_ERROR "Delete ${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR} - FAILED\ncleanup_stagedir_ov=${cleanup_stagedir_ov}") else() - message(STATUS "Delete ${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR} - OK") + message(STATUS "Delete ${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR} - OK") endif() endif() if(EXISTS "${PACKAGE_OUTPUT_FILE}") -message(STATUS "Remove PACKAGE_OUTPUT_FILE: ${PACKAGE_OUTPUT_FILE}") -execute_process(COMMAND -${CMAKE_COMMAND} -E remove -f "${PACKAGE_OUTPUT_FILE}" - RESULT_VARIABLE cleanup_pkgfile_rv - OUTPUT_VARIABLE cleanup_pkgfile_ov - ERROR_VARIABLE cleanup_pkgfile_ov - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - ) + message(STATUS "Remove PACKAGE_OUTPUT_FILE: ${PACKAGE_OUTPUT_FILE}") + execute_process(COMMAND + ${CMAKE_COMMAND} -E remove -f "${PACKAGE_OUTPUT_FILE}" + RESULT_VARIABLE cleanup_pkgfile_rv + OUTPUT_VARIABLE cleanup_pkgfile_ov + ERROR_VARIABLE cleanup_pkgfile_ov + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) - if(cleanup_pkgfile_rv) - message(FATAL_ERROR "Delete ${PACKAGE_OUTPUT_FILE} - FAILED\ncleanup_pkgfile_ov=${cleanup_pkgfile_ov}") + if(cleanup_pkgfile_rv) + message(FATAL_ERROR "Delete ${PACKAGE_OUTPUT_FILE} - FAILED\ncleanup_pkgfile_ov=${cleanup_pkgfile_ov}") else() - message(STATUS "Delete ${PACKAGE_OUTPUT_FILE} - OK") + message(STATUS "Delete ${PACKAGE_OUTPUT_FILE} - OK") endif() endif() diff --git a/Packaging/install_rule.cmake b/Packaging/install_rule.cmake index f18018ccdeab02bd345c4497c846d069bd5d0d6b..f335ad165461d2d4ded0c68aa490a593771f64a5 100644 --- a/Packaging/install_rule.cmake +++ b/Packaging/install_rule.cmake @@ -51,7 +51,7 @@ function(install_rule src_file) # like MosiacHeaderTest1.exe. This ideally should be # fixed in remote modules like OTBMosiacHeaderTest1.exe if(PKG_DEBUG) - message("SKIP INSTALL for ${sfile_NAME_LOWER}") + message("SKIP INSTALL for ${sfile_NAME_LOWER}") endif() continue() elseif(("${sfile_ABS_LOWER}" MATCHES "(\\${LIB_EXT})$") AND (src_file_GNAME STREQUAL "plugins")) @@ -109,11 +109,11 @@ function(install_rule src_file) # This check comes outside the first if-elseif ladder # because no matter what extension of file type, otbapp_* must go # into lib/otb/applications - if("${sfile_NAME_LOWER}" MATCHES "^otbapp_") - install_otbapp_wrapper_scripts(${sfile_NAME}) - set(install_dir "lib/otb/applications") - set(install_type PROGRAMS) - endif() + if("${sfile_NAME_LOWER}" MATCHES "^otbapp_") + install_otbapp_wrapper_scripts(${sfile_NAME}) + set(install_dir "lib/otb/applications") + set(install_type PROGRAMS) + endif() if(NOT install_type OR NOT install_dir) #throw fatal error and return diff --git a/Packaging/isfile_symlink.cmake b/Packaging/isfile_symlink.cmake index 511012b9fc58a708a60f2a74d479191483c1859e..a67cceaff6ec334acf91a941132f59ef745b29b7 100644 --- a/Packaging/isfile_symlink.cmake +++ b/Packaging/isfile_symlink.cmake @@ -17,6 +17,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # + +# Two things can replace this whole function : +# This test if it is a symlink +# if(IS_SYMLINK file_name) + # This resolve the link + # get_filename_component(real_name file_name + # REALPATH ) +# endif() +# We can also just do +# get_filename_component(real_name file_name + # REALPATH ) +# and resolve the symlink function(isfile_symlink file result_var1 result_var2) # # A file is not executable until proven otherwise: diff --git a/Packaging/setif_value_in_list.cmake b/Packaging/setif_value_in_list.cmake index 673f90b8c2b5bf5a83f215d36a55b7309faa6069..b82650012ce5bbbf603aafcd0cb0eeb7bdd0d880 100644 --- a/Packaging/setif_value_in_list.cmake +++ b/Packaging/setif_value_in_list.cmake @@ -17,6 +17,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# This is the list( FIND list value matched ) +# To be removed function(setif_value_in_list matched VALUE list) set(${matched} FALSE PARENT_SCOPE) string(TOLOWER ${VALUE} value) diff --git a/SuperBuild/CMake/SystemCheckup/CMakeLists.txt b/SuperBuild/CMake/SystemCheckup/CMakeLists.txt index d62ffda278a110c99fb8c9030aaaf2b03bef3bf3..58ed95c622dbefbf32bf60cb59089d9a9ab55eff 100644 --- a/SuperBuild/CMake/SystemCheckup/CMakeLists.txt +++ b/SuperBuild/CMake/SystemCheckup/CMakeLists.txt @@ -19,7 +19,7 @@ # # Script to analyse the OTB dependencies already present -cmake_minimum_required(VERSION 2.8.7) +cmake_minimum_required(VERSION 3.10.2) project(SystemCheckup) if (EXISTS ${CMAKE_SOURCE_DIR}/../../../CMake) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 54b09d87b881dde45a673b8b670fdb506d9f4a94..fbcf788525b1f568d87a3b913eaaf2e0c77f72fd 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -18,7 +18,7 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.3.0) +cmake_minimum_required(VERSION 3.10.2) project(OTB-SuperBuild) @@ -40,9 +40,6 @@ endif() include(ExternalProject) -# Not needed as OTB Superbuild requires c++14 since version 6.2 -# include(OTBCheckCpp11Keywords) - include(OTBCheckTargetSystemArch) set(LINUX FALSE) @@ -50,17 +47,18 @@ if( "${CMAKE_SYSTEM_NAME}" MATCHES "Linux") set(LINUX TRUE) endif() -option(BUILD_SHARED_LIBS "Build OTB with shared libraries." ON) -option(BUILD_STATIC_LIBS "Build with static libraries." OFF) +option(BUILD_SHARED_LIBS "Build Superbuild with shared libraries." ON) +mark_as_advanced(BUILD_SHARED_LIBS) +option(BUILD_GEOS_STATIC_LIBS "Build GEOS with static libraries." OFF) +mark_as_advanced(BUILD_GEOS_STATIC_LIBS) option(BUILD_ALWAYS "Always build or install OTB." ON) option(WITH_REMOTE_MODULES "Build with specific list of remote modules." OFF) option(OTB_USE_OPENMP "use openmp" OFF) -set(OTB_ADDITIONAL_CACHE "" CACHE STRING "Additional cmake options for OTB with the syntax (semi-colon used as a separator): -D<var>:<type>=<value>;-D<var>:<type>=<value>") +set(OTB_ADDITIONAL_CACHE "" CACHE STRING "Additional cmake options for OTB with " + "the syntax (semi-colon used as a separator): " + "-D<var>:<type>=<value>;-D<var>:<type>=<value>") if(APPLE) - if(POLICY CMP0042) - cmake_policy(SET CMP0042 NEW) - endif() set(CMAKE_MACOSX_RPATH TRUE) endif() @@ -120,6 +118,7 @@ message("OTB version : ${SUPERBUILD_OTB_VERSION}") # Special setting for low kernel versions if(UNIX) option(USE_LOW_KERNEL_VERSION "Try to keep the minimal kernel version as low as possible" ON) + mark_as_advanced(USE_LOW_KERNEL_VERSION) endif() diff --git a/SuperBuild/CTestConfig.cmake b/SuperBuild/CTestConfig.cmake index 05ffb327e79a85362e54831e3d2c859c59ae7b92..d8f16549813bfccee2f4a490a76310d90e4ee90a 100644 --- a/SuperBuild/CTestConfig.cmake +++ b/SuperBuild/CTestConfig.cmake @@ -18,15 +18,7 @@ # limitations under the License. # -## This file should be placed in the root directory of your project. -## Then modify the CMakeLists.txt file in the root directory of your -## project to incorporate the testing dashboard. -## # The following are required to uses Dart and the Cdash dashboard -## enable_testing() -## include(Dart) set(CTEST_PROJECT_NAME "OTB") -set(CTEST_NIGHTLY_START_TIME "20:00:00 CEST") - set(CTEST_DROP_METHOD "https") set(CTEST_DROP_SITE "cdash.orfeo-toolbox.org") set(CTEST_DROP_LOCATION "/submit.php?project=OTB") diff --git a/Utilities/Doxygen/CMakeLists.txt b/Utilities/Doxygen/CMakeLists.txt index 7680b8f940a3101e176c3e298e820030ea189b9b..c5d5cfa5be967a62842eabc4232fb28ddce03634 100644 --- a/Utilities/Doxygen/CMakeLists.txt +++ b/Utilities/Doxygen/CMakeLists.txt @@ -21,10 +21,9 @@ # # Build the documentation # +# This file provides the advanced variable BUILD_DOCUMENTATION include (${CMAKE_ROOT}/Modules/Documentation.cmake) -mark_as_advanced(BUILD_DOCUMENTATION) - # ------------------------------------------------------------- # # Generate Doxygen configuration file in all configuration file diff --git a/i18n/CMakeLists.txt b/i18n/CMakeLists.txt index efd5fcaf0dd7cc22a4c28773ec9db24bde082c5b..5aa39ee48e0c1fcbce0a7a1ad523641ca45f2af9 100644 --- a/i18n/CMakeLists.txt +++ b/i18n/CMakeLists.txt @@ -35,6 +35,7 @@ option( OTB_I18N_MERGE_TS "Create/merge .ts source translation files. WARNING: If ON, 'make clean' will delete the .ts files from source directory!" OFF ) +mark_as_advanced( OTB_I18N_MERGE_TS ) #---------------------------------------------------------------------------- if( OTBQt_ENABLED )