From 7325629e168289618fcfdcaea4cb602d0c80040c Mon Sep 17 00:00:00 2001
From: Julien Malik <julien.malik@c-s.fr>
Date: Thu, 1 Dec 2011 14:06:35 +0100
Subject: [PATCH] UTIL: apply OTB patch

---
 Utilities/otbopenjpeg/CMakeLists.txt          | 78 +++++++++++--------
 .../otbopenjpeg/libopenjpeg/CMakeLists.txt    | 16 ++--
 Utilities/otbopenjpeg/libopenjpeg/openjpeg.h  |  7 +-
 .../otbopenjpeg/libopenjpeg/opj_includes.h    |  1 +
 4 files changed, 62 insertions(+), 40 deletions(-)

diff --git a/Utilities/otbopenjpeg/CMakeLists.txt b/Utilities/otbopenjpeg/CMakeLists.txt
index 09a0a10055..405afafe0c 100644
--- a/Utilities/otbopenjpeg/CMakeLists.txt
+++ b/Utilities/otbopenjpeg/CMakeLists.txt
@@ -34,15 +34,21 @@ SET(OPENJPEG_VERSION
   "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}")
 SET(PACKAGE_VERSION
   "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}")
+  
+# svn revision number of this openjpeg fork (used for .so versioning)
+SET(OPENJPEG_SVN_REVISION "1108")
+# patch number for OTB modifications applied on top of OPENJPEG_SVN_REVISION (used for .so versioning)
+SET(OPENJPEG_OTB_PATCH "1")
+
 SET(OPENJPEG_LIBRARY_PROPERTIES
-  VERSION   "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}"
-  SOVERSION "${OPENJPEG_VERSION_MAJOR}"
+  VERSION   "${OPENJPEG_SVN_REVISION}.${OPENJPEG_OTB_PATCH}.0"
+  SOVERSION "${OPENJPEG_SVN_REVISION}.${OPENJPEG_OTB_PATCH}"
 )
 
 # --------------------------------------------------------------------------
 # Path to additional CMake modules
 SET(CMAKE_MODULE_PATH
-    ${CMAKE_SOURCE_DIR}/CMake
+    ${${OPENJPEG_NAMESPACE}_SOURCE_DIR}/CMake
     ${CMAKE_MODULE_PATH})
 
 # --------------------------------------------------------------------------
@@ -118,8 +124,8 @@ TEST_BIG_ENDIAN(OPJ_BIG_ENDIAN)
 #-----------------------------------------------------------------------------
 # Setup file for setting custom ctest vars
 CONFIGURE_FILE(
-  ${CMAKE_SOURCE_DIR}/CMake/CTestCustom.cmake.in
-  ${CMAKE_BINARY_DIR}/CTestCustom.cmake
+  ${${OPENJPEG_NAMESPACE}_SOURCE_DIR}/CMake/CTestCustom.cmake.in
+  ${${OPENJPEG_NAMESPACE}_BINARY_DIR}/CTestCustom.cmake
   @ONLY
   )
 
@@ -133,19 +139,28 @@ MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
 #-----------------------------------------------------------------------------
 # configure name mangling to allow multiple libraries to coexist
 # peacefully
-IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in)
-SET(MANGLE_PREFIX ${OPENJPEG_LIBRARY_NAME})
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in
+
+#SET(OPJ_MANGLE_PREFIX "" CACHE STRING "Prefix used to mangle all the symbols")
+IF(OPJ_MANGLE_PREFIX)
+  SET(OPJ_USE_MANGLE_PREFIX ON)
+ELSE(OPJ_MANGLE_PREFIX)
+  SET(OPJ_USE_MANGLE_PREFIX OFF)
+ENDIF(OPJ_MANGLE_PREFIX)
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.cmake.in
                ${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle.h
-               @ONLY)
-ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in)
+               @ONLY IMMEDIATE)
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle_private.h.cmake.in
+               ${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle_private.h
+               @ONLY IMMEDIATE)
 
 #-----------------------------------------------------------------------------
 # pkgconfig support
 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libopenjpeg1.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libopenjpeg1.pc @ONLY)
-INSTALL( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjpeg1.pc DESTINATION ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
-INSTALL( CODE
-  "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink \"libopenjpeg1.pc\" \"\$ENV{DESTDIR}${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig/libopenjpeg.pc\")")
+#INSTALL( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjpeg1.pc DESTINATION ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
+#INSTALL( CODE
+#  "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink \"libopenjpeg1.pc\" \"\$ENV{DESTDIR}${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig/libopenjpeg.pc\")")
 
 #-----------------------------------------------------------------------------
 # Compiler specific flags:
@@ -179,9 +194,9 @@ ADD_SUBDIRECTORY(libopenjpeg)
 
 #-----------------------------------------------------------------------------
 # Build Applications
-OPTION(BUILD_CODEC "Build the CODEC executables" ON)
-OPTION(BUILD_MJ2 "Build the MJ2 executables." OFF)
-OPTION(BUILD_JPIP "Build the JPIP library and executables." OFF)
+#OPTION(BUILD_CODEC "Build the CODEC executables" ON)
+#OPTION(BUILD_MJ2 "Build the MJ2 executables." OFF)
+#OPTION(BUILD_JPIP "Build the JPIP library and executables." OFF)
 
 IF(BUILD_CODEC OR BUILD_MJ2 OR BUILD_JPIP)
   OPTION(BUILD_THIRDPARTY "Build the thirdparty executables if it is needed" OFF)
@@ -198,18 +213,18 @@ CONFIGURE_FILE("${OPENJPEG_SOURCE_DIR}/opj_config.h.cmake.in"
 
 #-----------------------------------------------------------------------------
 # Build JPWL-flavoured library and executables
-OPTION(BUILD_JPWL "Build the JPWL library and executables" OFF)
+#OPTION(BUILD_JPWL "Build the JPWL library and executables" OFF)
 
 #-----------------------------------------------------------------------------
 # Build DOCUMENTATION (not in ALL target and only if Doxygen is found)
-OPTION(BUILD_DOC "Build the HTML documentation (with doxygen if available)." OFF)
+#OPTION(BUILD_DOC "Build the HTML documentation (with doxygen if available)." OFF)
 IF(BUILD_DOC)
     ADD_SUBDIRECTORY(doc)
 ENDIF(BUILD_DOC)
 
 #-----------------------------------------------------------------------------
 # Buld Testing
-OPTION(BUILD_TESTING "Build the tests." OFF)
+#OPTION(BUILD_TESTING "Build the tests." OFF)
 IF(BUILD_TESTING)
   IF(BUILD_CODEC)
     ENABLE_TESTING()
@@ -243,18 +258,19 @@ ENDIF(BUILD_TESTING)
 
 #-----------------------------------------------------------------------------
 # install all targets referenced as OPENJPEGTargets
-INSTALL(EXPORT OpenJPEGTargets DESTINATION ${OPENJPEG_INSTALL_PACKAGE_DIR})
-CONFIGURE_FILE( ${OPENJPEG_SOURCE_DIR}/CMake/OpenJPEGConfig.cmake.in
-  ${OPENJPEG_BINARY_DIR}/OpenJPEGConfig.cmake
-  @ONLY
-)
-INSTALL( FILES ${OPENJPEG_BINARY_DIR}/OpenJPEGConfig.cmake
-  DESTINATION ${OPENJPEG_INSTALL_PACKAGE_DIR}
-)
+#INSTALL(EXPORT OpenJPEGTargets DESTINATION ${OPENJPEG_INSTALL_PACKAGE_DIR})
+#CONFIGURE_FILE( ${OPENJPEG_SOURCE_DIR}/CMake/OpenJPEGConfig.cmake.in
+#  ${OPENJPEG_BINARY_DIR}/OpenJPEGConfig.cmake
+#  @ONLY
+#)
+#INSTALL( FILES ${OPENJPEG_BINARY_DIR}/OpenJPEGConfig.cmake
+#  DESTINATION ${OPENJPEG_INSTALL_PACKAGE_DIR}
+#)
 
 #-----------------------------------------------------------------------------
 # install CHANGES and LICENSE
-INSTALL(
-  FILES       CHANGES 
-              LICENSE
-  DESTINATION ${OPENJPEG_INSTALL_DOC_DIR})
+#INSTALL(
+#  FILES       CHANGES 
+#              LICENSE
+#  DESTINATION ${OPENJPEG_INSTALL_DOC_DIR})
+#
diff --git a/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt b/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt
index 24ecf40910..84a441aa5e 100644
--- a/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt
+++ b/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt
@@ -53,13 +53,13 @@ INSTALL(TARGETS ${OPENJPEG_LIBRARY_NAME}
 )
 
 # Install includes files
-INSTALL(FILES openjpeg.h
-  DESTINATION ${OPENJPEG_INSTALL_INCLUDE_DIR}/${OPENJPEG_INSTALL_SUBDIR} COMPONENT Headers
-)
-INSTALL(CODE
-  "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${OPENJPEG_INSTALL_SUBDIR}/openjpeg.h \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${OPENJPEG_INSTALL_INCLUDE_DIR}/openjpeg.h)")
+#INSTALL(FILES openjpeg.h
+#  DESTINATION ${OPENJPEG_INSTALL_INCLUDE_DIR}/${OPENJPEG_INSTALL_SUBDIR} COMPONENT Headers
+#)
+#INSTALL(CODE
+#  "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${OPENJPEG_INSTALL_SUBDIR}/openjpeg.h \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${OPENJPEG_INSTALL_INCLUDE_DIR}/openjpeg.h)")
 
 # install man page of the library
-INSTALL(
-  FILES       ${OPENJPEG_SOURCE_DIR}/doc/man/man3/libopenjpeg.3
-  DESTINATION ${OPENJPEG_INSTALL_MAN_DIR}/man3)
+#INSTALL(
+#  FILES       ${OPENJPEG_SOURCE_DIR}/doc/man/man3/libopenjpeg.3
+#  DESTINATION ${OPENJPEG_INSTALL_MAN_DIR}/man3)
diff --git a/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h b/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h
index d8a332b3c7..147ee003c1 100644
--- a/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h
+++ b/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h
@@ -35,6 +35,7 @@
 #ifndef OPENJPEG_H
 #define OPENJPEG_H
 
+#include "openjpeg_mangle.h"
 
 /* 
 ==========================================================
@@ -1515,7 +1516,11 @@ OPJ_API opj_jp2_metadata_t* OPJ_CALLCONV opj_get_jp2_metadata(opj_codec_t *p_cod
 OPJ_API opj_jp2_index_t* OPJ_CALLCONV opj_get_jp2_index(opj_codec_t *p_codec);
 
 
-
+/* >>OTB */
+OPJ_API opj_image_t* OPJ_CALLCONV opj_image_create0();
+OPJ_API void opj_copy_image_header(const opj_image_t* p_image_src, opj_image_t* p_image_dest);
+/* <<OTB */
+ 
 
 
 #ifdef __cplusplus
diff --git a/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h b/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h
index 0ee873a813..b00acd1031 100644
--- a/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h
+++ b/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h
@@ -87,6 +87,7 @@
    OpenJPEG interface
  ==========================================================
  */
+#include "openjpeg_mangle_private.h"
 #include "openjpeg.h"
 
 /*
-- 
GitLab