From fd72404553e951d8588ae8dee150b08868fc0797 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9dric=20Traizet?= <cedric.traizet@c-s.fr>
Date: Fri, 28 Aug 2020 14:42:34 +0200
Subject: [PATCH] REFAC: Update MuParser version in Superbuild

---
 CMake/FindMuParser.cmake                   | 10 ++++-
 CMake/OTBSetStandardCompilerFlags.cmake    |  2 +-
 SuperBuild/CMake/External_muparser.cmake   | 22 ++++++---
 SuperBuild/patches/MUPARSER/CMakeLists.txt | 52 ----------------------
 4 files changed, 25 insertions(+), 61 deletions(-)
 delete mode 100644 SuperBuild/patches/MUPARSER/CMakeLists.txt

diff --git a/CMake/FindMuParser.cmake b/CMake/FindMuParser.cmake
index 2e84940101..a776b90db5 100644
--- a/CMake/FindMuParser.cmake
+++ b/CMake/FindMuParser.cmake
@@ -41,7 +41,15 @@ find_path( MUPARSER_INCLUDE_DIR muParser.h
 
 if(EXISTS "${MUPARSER_INCLUDE_DIR}/muParserDef.h")
   file(READ "${MUPARSER_INCLUDE_DIR}/muParserDef.h" _muParserDef_h_CONTENTS)
-  string(REGEX REPLACE ".*# *define MUP_VERSION *_T\\(\"([0-9.]+)\"\\).*" "\\1" MUPARSER_VERSION "${_muParserDef_h_CONTENTS}")
+  
+  # Try to find the version for muparser < 2.3
+  string(REGEX REPLACE ".*# *define MUP_VERSION *_T\\(\"([0-9.]+)\"\\).*" "\\1" 
+    MUPARSER_VERSION_OLD_STYLE "${_muParserDef_h_CONTENTS}")
+
+  # Try to find the version for muparser >= 2.3
+  string(REGEX REPLACE ".*static *const *string_type *ParserVersion *= *string_type\\(_T\\(\"([0-9.]+)\"\\)\\);.*" 
+      "\\1" MUPARSER_VERSION "${MUPARSER_VERSION_OLD_STYLE}")
+  
   if(MUPARSER_VERSION MATCHES "^[0-9]+\$")
     set(MUPARSER_VERSION "${MUPARSER_VERSION}.0.0")
   endif()
diff --git a/CMake/OTBSetStandardCompilerFlags.cmake b/CMake/OTBSetStandardCompilerFlags.cmake
index 34c42242df..cfd3d6dd7e 100644
--- a/CMake/OTBSetStandardCompilerFlags.cmake
+++ b/CMake/OTBSetStandardCompilerFlags.cmake
@@ -333,7 +333,7 @@ macro(check_compiler_platform_flags)
     set(OTB_CXX_DISABLE_OPTIMIZATION_FLAG "-O0")
   endif()
   if(DEFINED OTB_CXX_DISABLE_OPTIMIZATION_FLAG)
-    CHECK_CXX_SOURCE_COMPILES(${OTB_CXX_DISABLE_OPTIMIZATION_FLAG} CXX_HAS_DISABLE_OPTIMIZATION_FLAG)
+    CHECK_CXX_COMPILER_FLAG(${OTB_CXX_DISABLE_OPTIMIZATION_FLAG} CXX_HAS_DISABLE_OPTIMIZATION_FLAG)
   endif()
 endmacro()#End the platform check function
 
diff --git a/SuperBuild/CMake/External_muparser.cmake b/SuperBuild/CMake/External_muparser.cmake
index fa80ebb6a9..af5c935fe0 100644
--- a/SuperBuild/CMake/External_muparser.cmake
+++ b/SuperBuild/CMake/External_muparser.cmake
@@ -24,21 +24,29 @@ SETUP_SUPERBUILD(MUPARSER)
 
 ExternalProject_Add(MUPARSER
   PREFIX MUPARSER
-  URL "https://github.com/beltoforion/muparser/archive/v2.2.5.tar.gz"
-  URL_MD5 02dae671aa5ad955fdcbcd3fee313fb7
+  URL "https://github.com/beltoforion/muparser/archive/v2.3.2.tar.gz"
+  URL_MD5 cbc1b284e03abc7081b3c30997959893
   BINARY_DIR ${MUPARSER_SB_BUILD_DIR}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
   DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-  CMAKE_CACHE_ARGS ${SB_CMAKE_CACHE_ARGS}
+  CMAKE_CACHE_ARGS 
+  ${SB_CMAKE_CACHE_ARGS}
+  -DCMAKE_INSTALL_LIBDIR:PATH=lib
+  -DENABLE_OPENMP:BOOL=FALSE
+  -DENABLE_SAMPLES:BOOL=FALSE
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
   DEPENDS ${MUPARSER_DEPENDENCIES}
-  PATCH_COMMAND ${CMAKE_COMMAND} -E copy
-  ${CMAKE_SOURCE_DIR}/patches/MUPARSER/CMakeLists.txt
-  ${MUPARSER_SB_SRC}
   LOG_DOWNLOAD 1
   LOG_CONFIGURE 1
   LOG_BUILD 1
   LOG_INSTALL 1
   )
 
-SUPERBUILD_UPDATE_CMAKE_VARIABLES(MUPARSER FALSE)
+SUPERBUILD_PATCH_SOURCE(MUPARSER)
+
+set(_SB_MUPARSER_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
+if(WIN32)
+  set(_SB_MUPARSER_LIBRARY ${SB_INSTALL_PREFIX}/lib/muparser.lib)
+elseif(UNIX)
+  set(_SB_MUPARSER_LIBRARY ${SB_INSTALL_PREFIX}/lib/libmuparser${CMAKE_SHARED_LIBRARY_SUFFIX})
+endif()
diff --git a/SuperBuild/patches/MUPARSER/CMakeLists.txt b/SuperBuild/patches/MUPARSER/CMakeLists.txt
deleted file mode 100644
index 8a86c052f8..0000000000
--- a/SuperBuild/patches/MUPARSER/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Copyright (C) 2005-2020 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.
-#
-
-cmake_minimum_required(VERSION 2.8.3)
-
-project(muparser)
-
-option(BUILD_SHARED_LIBS "Building shared libs. Default is ON" ON)
-if(MSVC AND BUILD_SHARED_LIBS)
- set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
-endif()
-
-file(GLOB MUPARSER_SRCS "src/*.cpp" )
-list(REMOVE_ITEM MUPARSER_SRCS "${CMAKE_SOURCE_DIR}/src/muParserComplex.cpp")
-
-include_directories("${CMAKE_SOURCE_DIR}/include")
-
-add_library(muparser ${MUPARSER_SRCS})
-#if(OTB_LIBRARY_PROPERTIES)
-#  set_target_properties(muparser PROPERTIES ${OTB_LIBRARY_PROPERTIES})
-#endif()
-
-install(TARGETS muparser
-  RUNTIME DESTINATION bin COMPONENT RuntimeLibraries
-  LIBRARY DESTINATION lib COMPONENT RuntimeLibraries
-  ARCHIVE DESTINATION lib COMPONENT Development)
-
-
-
-file(GLOB MUPARSER_HEADERS "${CMAKE_SOURCE_DIR}/include/*.h")
-list(REMOVE_ITEM MUPARSER_HEADERS "${CMAKE_SOURCE_DIR}/include/muParserComplex.h")
-install(FILES ${MUPARSER_HEADERS}
-  DESTINATION include
-  COMPONENT Development)
-
-- 
GitLab