From bd45db50b9b7eebb298c5143aaf3c89cc6835a30 Mon Sep 17 00:00:00 2001
From: Mickael Savinaud <mickael.savinaud@c-s.fr>
Date: Fri, 4 Nov 2011 18:03:21 +0100
Subject: [PATCH] [ENH] patch rev1029 from openjpeg trunk to enable building
 from otb

---
 CMake/ImportJPEG2000.cmake                    |   8 +
 CMake/otbIncludeDirectories.cmake             |   4 +-
 Code/IO/otbJPEG2000ImageIO.h                  |   2 +-
 Utilities/CMakeLists.txt                      |   3 +
 Utilities/otbopenjpeg/CMakeLists.txt          |  71 +++--
 .../otbopenjpeg/libopenjpeg/CMakeLists.txt    |   8 +
 Utilities/otbopenjpeg/libopenjpeg/openjpeg.h  |   5 +-
 .../otbopenjpeg/libopenjpeg/opj_includes.h    |   2 +
 .../otbopenjpeg/openjpeg_mangle.h.cmake.in    |  89 ++++++
 .../openjpeg_mangle_private.h.cmake.in        | 276 ++++++++++++++++++
 10 files changed, 445 insertions(+), 23 deletions(-)
 create mode 100644 Utilities/otbopenjpeg/openjpeg_mangle.h.cmake.in
 create mode 100644 Utilities/otbopenjpeg/openjpeg_mangle_private.h.cmake.in

diff --git a/CMake/ImportJPEG2000.cmake b/CMake/ImportJPEG2000.cmake
index 46d776bbc8..36929fd248 100644
--- a/CMake/ImportJPEG2000.cmake
+++ b/CMake/ImportJPEG2000.cmake
@@ -35,6 +35,14 @@ ENDIF( OTB_USE_JPEG2000 )
 
 # Check jpeg2000 support
 IF(OTB_COMPILE_JPEG2000)
+
+ SET(OPENJPEG_SOURCE_DIR ${OTB_SOURCE_DIR}/Utilities/otbopenjpeg)
+ SET(OPENJPEG_BINARY_DIR ${OTB_BINARY_DIR}/Utilities/otbopenjpeg)
+ 
+ SET(OPENJPEG_NAMESPACE "OTBOPENJPEG")
+ SET(OPJ_MANGLE_PREFIX "otbopenjpeg")
+
+
   ADD_DEFINITIONS(-DOTB_COMPILE_JPEG2000 -DUSE_OPJ_DEPRECATED)
   IF(NOT BUILD_SHARED_LIBS)
         ADD_DEFINITIONS(-DOPJ_STATIC)
diff --git a/CMake/otbIncludeDirectories.cmake b/CMake/otbIncludeDirectories.cmake
index 54cf7d4ca8..f7afeeee4e 100644
--- a/CMake/otbIncludeDirectories.cmake
+++ b/CMake/otbIncludeDirectories.cmake
@@ -99,8 +99,8 @@ ENDIF(NOT OTB_USE_EXTERNAL_OSSIM)
 
 IF(OTB_COMPILE_JPEG2000)
   SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE}
-        ${OTB_SOURCE_DIR}/Utilities/otbopenjpeg
-        ${OTB_SOURCE_DIR}/Utilities/otbopenjpeg/libopenjpeg)
+        ${OTB_SOURCE_DIR}/Utilities/otbopenjpeg/libopenjpeg
+        ${OTB_BINARY_DIR}/Utilities/otbopenjpeg)
 ENDIF(OTB_COMPILE_JPEG2000)
 
 IF(OTB_USE_PQXX)
diff --git a/Code/IO/otbJPEG2000ImageIO.h b/Code/IO/otbJPEG2000ImageIO.h
index 816411b627..f3990388d5 100644
--- a/Code/IO/otbJPEG2000ImageIO.h
+++ b/Code/IO/otbJPEG2000ImageIO.h
@@ -26,7 +26,7 @@
 
 extern "C"
 {
-#include "otb_openjpeg.h"
+#include "openjpeg.h"
 }
 
 namespace otb
diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt
index fb05d78bf4..38a854cdcf 100644
--- a/Utilities/CMakeLists.txt
+++ b/Utilities/CMakeLists.txt
@@ -30,8 +30,11 @@ ENDIF(NOT OTB_USE_EXTERNAL_LIBLAS)
 ENDIF(OTB_USE_LIBLAS)
 
 IF(OTB_COMPILE_JPEG2000)
+  SET(L_BUILD_TESTING BUILD_TESTING)
+  SET(BUILD_TESTING OFF)
   MESSAGE(STATUS "Configuring otbopenjpeg...")
   ADD_SUBDIRECTORY( otbopenjpeg )
+  SET(BUILD_TESTING L_BUILD_TESTING)
 ENDIF(OTB_COMPILE_JPEG2000)
 
 
diff --git a/Utilities/otbopenjpeg/CMakeLists.txt b/Utilities/otbopenjpeg/CMakeLists.txt
index 47ebfdcd19..e97525fc31 100644
--- a/Utilities/otbopenjpeg/CMakeLists.txt
+++ b/Utilities/otbopenjpeg/CMakeLists.txt
@@ -34,15 +34,26 @@ 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 "1029")
+# 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}"
+#)
+
 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_SOURCE_DIR}/CMake
     ${CMAKE_MODULE_PATH})
 
 # --------------------------------------------------------------------------
@@ -115,8 +126,8 @@ INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityC.cmake)
 #-----------------------------------------------------------------------------
 # Setup file for setting custom ctest vars
 CONFIGURE_FILE(
-  ${CMAKE_SOURCE_DIR}/CMake/CTestCustom.cmake.in
-  ${CMAKE_BINARY_DIR}/CTestCustom.cmake
+  ${OPENJPEG_SOURCE_DIR}/CMake/CTestCustom.cmake.in
+  ${OPENJPEG_BINARY_DIR}/CTestCustom.cmake
   @ONLY
   )
 
@@ -130,12 +141,21 @@ 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
-               ${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle.h
+
+#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 IMMEDIATE)
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle_private.h.cmake.in
+               ${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle_private.h
                @ONLY IMMEDIATE)
-ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in)
 
 #-----------------------------------------------------------------------------
 # pkgconfig support
@@ -208,9 +228,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)
@@ -227,18 +247,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)
-IF(BUILD_DOC)
-    ADD_SUBDIRECTORY(doc)
-ENDIF(BUILD_DOC)
+#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()
@@ -279,3 +299,16 @@ INSTALL(
   FILES       CHANGES 
               LICENSE
   DESTINATION ${OPENJPEG_INSTALL_DOC_DIR})
+  
+
+#-----------------------------------------------------------------------------
+# otb added  
+IF(NOT OTB_INSTALL_NO_DEVELOPMENT)
+  # Install OTB specifics includes files
+
+  INSTALL(FILES otb_openjpeg.h otb_openjpeg_mangle.h
+          DESTINATION ${OTB_INSTALL_INCLUDE_DIR_CM24}/Utilities/otbopenjpeg
+          COMPONENT Development)
+
+ENDIF(NOT OTB_INSTALL_NO_DEVELOPMENT)
+  
diff --git a/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt b/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt
index 24ecf40910..5efa8c292e 100644
--- a/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt
+++ b/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt
@@ -59,6 +59,14 @@ INSTALL(FILES openjpeg.h
 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_BINARY_DIR}/openjpeg_mangle.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_mangle.h \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${OPENJPEG_INSTALL_INCLUDE_DIR}/openjpeg_mangle.h)")
+
+
+
 # install man page of the library
 INSTALL(
   FILES       ${OPENJPEG_SOURCE_DIR}/doc/man/man3/libopenjpeg.3
diff --git a/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h b/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h
index 095ab2490e..77c3f9cb12 100644
--- a/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h
+++ b/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h
@@ -1,4 +1,4 @@
- /*
+/*
  * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
  * Copyright (c) 2002-2007, Professor Benoit Macq
  * Copyright (c) 2001-2003, David Janssens
@@ -35,6 +35,7 @@
 #define OPENJPEG_H
 
 
+
 /* 
 ==========================================================
    Compiler directives
@@ -75,6 +76,8 @@ typedef unsigned int	OPJ_SIZE_T;
 typedef double			OPJ_FLOAT64;
 typedef float			OPJ_FLOAT32;
 
+#include "openjpeg_mangle.h"
+
 // Avoid compile-time warning because parameter is not used
 #define OPJ_ARG_NOT_USED(x) (void)(x)
 
diff --git a/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h b/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h
index d94237e7fb..f67e3ee098 100644
--- a/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h
+++ b/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h
@@ -55,6 +55,8 @@
  ==========================================================
 */
 
+#include "openjpeg_mangle_private.h"
+
 /* Ignore GCC attributes if this is not GCC */
 #ifndef __GNUC__
 	#define __attribute__(x) /* __attribute__(x) */
diff --git a/Utilities/otbopenjpeg/openjpeg_mangle.h.cmake.in b/Utilities/otbopenjpeg/openjpeg_mangle.h.cmake.in
new file mode 100644
index 0000000000..c02cb84708
--- /dev/null
+++ b/Utilities/otbopenjpeg/openjpeg_mangle.h.cmake.in
@@ -0,0 +1,89 @@
+/* This file was generated by CMake http://www.cmake.org */
+
+#ifndef openjpeg_mangle_h
+#define openjpeg_mangle_h
+
+/*
+ * This header file mangles all symbols exported from the openjpeg library.
+ * It is included in all files while building or using the openjpeg library.
+ *
+ * The following command was used to generate the file content (after a standard static build without mangling):
+ *
+ * nm bin/libopenjpeg.a | grep " T " | cut -d ' ' -f 3 | grep "opj_\|cio_tell\|cio_seek" | sort | sed 's/.<star>/#define & @OPJ_MANGLE_PREFIX@_&/' | awk '{printf "%-8s%-40s%s\n", $1, $2, $3}' 
+ * 
+ * (be sure to replace the "<star>" by a real "*")
+ */
+
+#cmakedefine OPJ_USE_MANGLE_PREFIX
+
+#ifdef OPJ_USE_MANGLE_PREFIX
+
+#define opj_version                         @OPJ_MANGLE_PREFIX@_opj_version
+
+#define opj_cio_close                       @OPJ_MANGLE_PREFIX@_opj_cio_close
+#define opj_cio_open                        @OPJ_MANGLE_PREFIX@_opj_cio_open
+#define cio_tell                            @OPJ_MANGLE_PREFIX@_cio_tell
+#define cio_seek                            @OPJ_MANGLE_PREFIX@_cio_seek
+
+
+
+#define opj_create_compress                 @OPJ_MANGLE_PREFIX@_opj_create_compress
+#define opj_create_decompress               @OPJ_MANGLE_PREFIX@_opj_create_decompress
+#define opj_setup_decoder                   @OPJ_MANGLE_PREFIX@_opj_setup_decoder
+#define opj_setup_encoder                   @OPJ_MANGLE_PREFIX@_opj_setup_encoder
+#define opj_decode                          @OPJ_MANGLE_PREFIX@_opj_decode
+#define opj_decode_with_info                @OPJ_MANGLE_PREFIX@_opj_decode_with_info
+#define opj_encode                          @OPJ_MANGLE_PREFIX@_opj_encode
+#define opj_encode_with_info                @OPJ_MANGLE_PREFIX@_opj_encode_with_info
+#define opj_destroy_compress                @OPJ_MANGLE_PREFIX@_opj_destroy_compress
+#define opj_destroy_decompress              @OPJ_MANGLE_PREFIX@_opj_destroy_decompress
+
+#define opj_image_create                    @OPJ_MANGLE_PREFIX@_opj_image_create
+#define opj_image_destroy                   @OPJ_MANGLE_PREFIX@_opj_image_destroy
+
+
+#define opj_set_default_decoder_parameters  @OPJ_MANGLE_PREFIX@_opj_set_default_decoder_parameters
+#define opj_set_default_encoder_parameters  @OPJ_MANGLE_PREFIX@_opj_set_default_encoder_parameters
+
+#define opj_set_event_mgr                   @OPJ_MANGLE_PREFIX@_opj_set_event_mgr
+
+
+#define opj_create_decompress_v2            @OPJ_MANGLE_PREFIX@_opj_create_decompress_v2
+#define opj_set_decode_area                 @OPJ_MANGLE_PREFIX@_opj_set_decode_area                 
+#define opj_setup_decoder_v2                @OPJ_MANGLE_PREFIX@_opj_setup_decoder_v2   
+#define opj_read_header                     @OPJ_MANGLE_PREFIX@_opj_read_header            
+#define opj_read_tile_header                @OPJ_MANGLE_PREFIX@_opj_read_tile_header 
+#define opj_decode_tile_data                @OPJ_MANGLE_PREFIX@_opj_decode_tile_data
+#define opj_decode_v2                       @OPJ_MANGLE_PREFIX@_opj_decode_v2                   
+#define opj_default_callback                @OPJ_MANGLE_PREFIX@_opj_default_callback                        
+#define opj_destroy_codec                   @OPJ_MANGLE_PREFIX@_opj_destroy_codec                        
+#define opj_end_decompress                  @OPJ_MANGLE_PREFIX@_opj_end_decompress                                                    
+   
+#define opj_dump_codec                      @OPJ_MANGLE_PREFIX@_opj_dump_codec                                       
+#define opj_get_cstr_index                  @OPJ_MANGLE_PREFIX@_opj_get_cstr_index                      
+#define opj_get_cstr_info                   @OPJ_MANGLE_PREFIX@_opj_get_cstr_info
+#define opj_get_jp2_metadata                @OPJ_MANGLE_PREFIX@_opj_get_jp2_metadata
+#define opj_get_jp2_index                   @OPJ_MANGLE_PREFIX@_opj_get_jp2_index                     
+
+#define opj_destroy_cstr_info               @OPJ_MANGLE_PREFIX@_opj_destroy_cstr_info
+#define opj_destroy_cstr_index              @OPJ_MANGLE_PREFIX@_opj_destroy_cstr_index                         
+#define opj_destroy_cstr_info_v2            @OPJ_MANGLE_PREFIX@_opj_destroy_cstr_info_v2                                         
+                                        
+#define opj_initialize_default_event_handler @OPJ_MANGLE_PREFIX@_opj_initialize_default_event_handler                                        
+                                      
+                                        
+#define opj_stream_create                          @OPJ_MANGLE_PREFIX@_opj_stream_create   
+#define opj_stream_default_create                  @OPJ_MANGLE_PREFIX@_opj_stream_default_create
+#define opj_stream_create_default_file_stream      @OPJ_MANGLE_PREFIX@_opj_stream_create_default_file_stream                                  
+#define opj_stream_create_file_stream              @OPJ_MANGLE_PREFIX@_opj_stream_create_file_stream    
+#define opj_stream_set_user_data                   @OPJ_MANGLE_PREFIX@_opj_stream_set_user_data
+#define opj_stream_set_user_data_length            @OPJ_MANGLE_PREFIX@_opj_stream_set_user_data_length  
+#define opj_stream_set_read_function               @OPJ_MANGLE_PREFIX@_opj_stream_set_read_function
+#define opj_stream_set_seek_function               @OPJ_MANGLE_PREFIX@_opj_stream_set_seek_function
+#define opj_stream_set_write_function              @OPJ_MANGLE_PREFIX@_opj_stream_set_write_function
+#define opj_stream_set_skip_function               @OPJ_MANGLE_PREFIX@_opj_stream_set_skip_function
+#define opj_stream_destroy                         @OPJ_MANGLE_PREFIX@_opj_stream_destroy
+
+#endif
+
+#endif
\ No newline at end of file
diff --git a/Utilities/otbopenjpeg/openjpeg_mangle_private.h.cmake.in b/Utilities/otbopenjpeg/openjpeg_mangle_private.h.cmake.in
new file mode 100644
index 0000000000..78bb3df365
--- /dev/null
+++ b/Utilities/otbopenjpeg/openjpeg_mangle_private.h.cmake.in
@@ -0,0 +1,276 @@
+/* This file was generated by CMake http://www.cmake.org */
+
+#ifndef openjpeg_mangle_private_h
+#define openjpeg_mangle_private_h
+
+/*
+ * This header file mangles all symbols exported from the openjpeg library.
+ * It is included in all files while building or using the openjpeg library.
+ *
+ * The following command was used to generate the file content (after a standard static build without mangling):
+ *
+ * nm bin/libopenjpeg.a | grep " T " | cut -d ' ' -f 3 | grep -v "opj_\|cio_tell\|cio_seek" | sort | sed 's/.<star>/#define & @OPJ_MANGLE_PREFIX@_&/' | awk '{printf "%-8s%-40s%s\n", $1, $2, $3}'
+ * 
+ * (be sure to replace the "<star>" by a real "*")
+ */
+
+/* Import the definition of USE_MANGLE_PREFIX */
+#include "openjpeg_mangle.h"
+
+#ifdef OPJ_USE_MANGLE_PREFIX
+
+
+#define dwt_decode_real_v2                      @OPJ_MANGLE_PREFIX@_dwt_decode_real_v2	
+#define dwt_decode_v2                           @OPJ_MANGLE_PREFIX@_dwt_decode_v2
+#define dwt_getgain_real_v2                     @OPJ_MANGLE_PREFIX@_dwt_getgain_real_v2
+#define dwt_getgain_v2                          @OPJ_MANGLE_PREFIX@_dwt_getgain_v2
+#define get_all_encoding_parameters             @OPJ_MANGLE_PREFIX@_get_all_encoding_parameters
+#define j2k_allocate_tile_element_cstr_index    @OPJ_MANGLE_PREFIX@_j2k_allocate_tile_element_cstr_index
+#define j2k_build_decoder                       @OPJ_MANGLE_PREFIX@_j2k_build_decoder
+#define j2k_copy_default_tcp_and_create_tcd     @OPJ_MANGLE_PREFIX@_j2k_copy_default_tcp_and_create_tcd
+#define j2k_create_compress_v2                  @OPJ_MANGLE_PREFIX@_j2k_create_compress_v2
+#define j2k_create_decompress_v2                @OPJ_MANGLE_PREFIX@_j2k_create_decompress_v2
+#define j2k_decode_tile                         @OPJ_MANGLE_PREFIX@_j2k_decode_tile
+#define j2k_decode_tiles                        @OPJ_MANGLE_PREFIX@_j2k_decode_tiles
+#define j2k_decode_v2                           @OPJ_MANGLE_PREFIX@_j2k_decode_v2
+#define j2k_decoding_validation                 @OPJ_MANGLE_PREFIX@_j2k_decoding_validation
+#define j2k_destroy                             @OPJ_MANGLE_PREFIX@_j2k_destroy
+#define j2k_destroy_cstr_index                  @OPJ_MANGLE_PREFIX@_j2k_destroy_cstr_index
+#define j2k_dump                                @OPJ_MANGLE_PREFIX@_j2k_dump
+#define j2k_dump_image_comp_header              @OPJ_MANGLE_PREFIX@_j2k_dump_image_comp_header
+#define j2k_dump_image_header                   @OPJ_MANGLE_PREFIX@_j2k_dump_image_header
+#define j2k_end_decompress                      @OPJ_MANGLE_PREFIX@_j2k_end_decompress
+#define j2k_get_cstr_index                      @OPJ_MANGLE_PREFIX@_j2k_get_cstr_index
+#define j2k_get_cstr_info                       @OPJ_MANGLE_PREFIX@_j2k_get_cstr_info
+#define j2k_read_header                         @OPJ_MANGLE_PREFIX@_j2k_read_header
+#define j2k_read_header_procedure               @OPJ_MANGLE_PREFIX@_j2k_read_header_procedure
+#define j2k_read_tile_header                    @OPJ_MANGLE_PREFIX@_j2k_read_tile_header
+#define j2k_set_decode_area                     @OPJ_MANGLE_PREFIX@_j2k_set_decode_area
+#define j2k_setup_decoder_v2                    @OPJ_MANGLE_PREFIX@_j2k_setup_decoder_v2
+#define j2k_setup_decoding                      @OPJ_MANGLE_PREFIX@_j2k_setup_decoding
+#define j2k_setup_header_reading                @OPJ_MANGLE_PREFIX@_j2k_setup_header_reading
+#define jp2_create                              @OPJ_MANGLE_PREFIX@_jp2_create
+#define jp2_decode_tile                         @OPJ_MANGLE_PREFIX@_jp2_decode_tile
+#define jp2_decode_v2                           @OPJ_MANGLE_PREFIX@_jp2_decode_v2
+#define jp2_destroy                             @OPJ_MANGLE_PREFIX@_jp2_destroy
+#define jp2_dump                                @OPJ_MANGLE_PREFIX@_jp2_dump
+#define jp2_end_decompress                      @OPJ_MANGLE_PREFIX@_jp2_end_decompress
+#define jp2_get_cstr_index                      @OPJ_MANGLE_PREFIX@_jp2_get_cstr_index
+#define jp2_get_cstr_info                       @OPJ_MANGLE_PREFIX@_jp2_get_cstr_info
+#define jp2_read_header                         @OPJ_MANGLE_PREFIX@_jp2_read_header
+#define jp2_read_header_procedure               @OPJ_MANGLE_PREFIX@_jp2_read_header_procedure
+#define jp2_read_tile_header                    @OPJ_MANGLE_PREFIX@_jp2_read_tile_header
+#define jp2_set_decode_area                     @OPJ_MANGLE_PREFIX@_jp2_set_decode_area
+#define jp2_setup_decoder_v2                    @OPJ_MANGLE_PREFIX@_jp2_setup_decoder_v2
+#define mct_decode_custom                       @OPJ_MANGLE_PREFIX@_mct_decode_custom
+#define opj_clock                               @OPJ_MANGLE_PREFIX@_opj_clock
+#define opj_copy_image_header                   @OPJ_MANGLE_PREFIX@_opj_copy_image_header
+#define opj_error_default_callback              @OPJ_MANGLE_PREFIX@_opj_error_default_callback
+#define opj_event_msg                           @OPJ_MANGLE_PREFIX@_opj_event_msg
+#define opj_event_msg_v2                        @OPJ_MANGLE_PREFIX@_opj_event_msg_v2
+#define opj_get_data_length_from_file           @OPJ_MANGLE_PREFIX@_opj_get_data_length_from_file
+#define opj_image_comp_header_update            @OPJ_MANGLE_PREFIX@_opj_image_comp_header_update
+#define opj_image_create0                       @OPJ_MANGLE_PREFIX@_opj_image_create0
+#define opj_info_default_callback               @OPJ_MANGLE_PREFIX@_opj_info_default_callback
+#define opj_jp2_decode                          @OPJ_MANGLE_PREFIX@_opj_jp2_decode
+#define opj_jp2_encode                          @OPJ_MANGLE_PREFIX@_opj_jp2_encode
+#define opj_procedure_list_add_procedure        @OPJ_MANGLE_PREFIX@_opj_procedure_list_add_procedure
+#define opj_procedure_list_clear                @OPJ_MANGLE_PREFIX@_opj_procedure_list_clear
+#define opj_procedure_list_create               @OPJ_MANGLE_PREFIX@_opj_procedure_list_create
+#define opj_procedure_list_destroy              @OPJ_MANGLE_PREFIX@_opj_procedure_list_destroy
+#define opj_procedure_list_get_first_procedure  @OPJ_MANGLE_PREFIX@_opj_procedure_list_get_first_procedure
+#define opj_procedure_list_get_nb_procedures    @OPJ_MANGLE_PREFIX@_opj_procedure_list_get_nb_procedures
+#define opj_read_bytes_BE                       @OPJ_MANGLE_PREFIX@_opj_read_bytes_BE
+#define opj_read_bytes_LE                       @OPJ_MANGLE_PREFIX@_opj_read_bytes_LE
+#define opj_read_double_BE                      @OPJ_MANGLE_PREFIX@_opj_read_double_BE
+#define opj_read_double_LE                      @OPJ_MANGLE_PREFIX@_opj_read_double_LE
+#define opj_read_float_BE                       @OPJ_MANGLE_PREFIX@_opj_read_float_BE
+#define opj_read_float_LE                       @OPJ_MANGLE_PREFIX@_opj_read_float_LE
+#define opj_read_from_file                      @OPJ_MANGLE_PREFIX@_opj_read_from_file
+#define opj_seek_from_file                      @OPJ_MANGLE_PREFIX@_opj_seek_from_file
+#define opj_skip_from_file                      @OPJ_MANGLE_PREFIX@_opj_skip_from_file
+#define opj_stream_default_read                 @OPJ_MANGLE_PREFIX@_opj_stream_default_read
+#define opj_stream_default_seek                 @OPJ_MANGLE_PREFIX@_opj_stream_default_seek
+#define opj_stream_default_skip                 @OPJ_MANGLE_PREFIX@_opj_stream_default_skip
+#define opj_stream_default_write                @OPJ_MANGLE_PREFIX@_opj_stream_default_write
+#define opj_stream_flush                        @OPJ_MANGLE_PREFIX@_opj_stream_flush
+#define opj_stream_get_number_byte_left         @OPJ_MANGLE_PREFIX@_opj_stream_get_number_byte_left
+#define opj_stream_has_seek                     @OPJ_MANGLE_PREFIX@_opj_stream_has_seek
+#define opj_stream_read_data                    @OPJ_MANGLE_PREFIX@_opj_stream_read_data
+#define opj_stream_read_seek                    @OPJ_MANGLE_PREFIX@_opj_stream_read_seek
+#define opj_stream_read_skip                    @OPJ_MANGLE_PREFIX@_opj_stream_read_skip
+#define opj_stream_seek                         @OPJ_MANGLE_PREFIX@_opj_stream_seek
+#define opj_stream_skip                         @OPJ_MANGLE_PREFIX@_opj_stream_skip
+#define opj_stream_tell                         @OPJ_MANGLE_PREFIX@_opj_stream_tell
+#define opj_stream_write_data                   @OPJ_MANGLE_PREFIX@_opj_stream_write_data
+#define opj_stream_write_seek                   @OPJ_MANGLE_PREFIX@_opj_stream_write_seek
+#define opj_stream_write_skip                   @OPJ_MANGLE_PREFIX@_opj_stream_write_skip
+#define opj_warning_default_callback            @OPJ_MANGLE_PREFIX@_opj_warning_default_callback
+#define opj_write_bytes_BE                      @OPJ_MANGLE_PREFIX@_opj_write_bytes_BE
+#define opj_write_bytes_LE                      @OPJ_MANGLE_PREFIX@_opj_write_bytes_LE
+#define opj_write_double_BE                     @OPJ_MANGLE_PREFIX@_opj_write_double_BE
+#define opj_write_double_LE                     @OPJ_MANGLE_PREFIX@_opj_write_double_LE
+#define opj_write_float_BE                      @OPJ_MANGLE_PREFIX@_opj_write_float_BE
+#define opj_write_float_LE                      @OPJ_MANGLE_PREFIX@_opj_write_float_LE
+#define opj_write_from_file                     @OPJ_MANGLE_PREFIX@_opj_write_from_file
+
+
+#define bio_create                              @OPJ_MANGLE_PREFIX@_bio_create
+#define bio_destroy                             @OPJ_MANGLE_PREFIX@_bio_destroy
+#define bio_flush                               @OPJ_MANGLE_PREFIX@_bio_flush
+#define bio_inalign                             @OPJ_MANGLE_PREFIX@_bio_inalign
+#define bio_init_dec                            @OPJ_MANGLE_PREFIX@_bio_init_dec
+#define bio_init_enc                            @OPJ_MANGLE_PREFIX@_bio_init_enc
+#define bio_numbytes                            @OPJ_MANGLE_PREFIX@_bio_numbytes
+#define bio_read                                @OPJ_MANGLE_PREFIX@_bio_read
+#define bio_write                               @OPJ_MANGLE_PREFIX@_bio_write
+#define cio_bytein                              @OPJ_MANGLE_PREFIX@_cio_bytein
+#define cio_byteout                             @OPJ_MANGLE_PREFIX@_cio_byteout
+#define cio_getbp                               @OPJ_MANGLE_PREFIX@_cio_getbp
+#define cio_numbytesleft                        @OPJ_MANGLE_PREFIX@_cio_numbytesleft
+#define cio_read                                @OPJ_MANGLE_PREFIX@_cio_read
+#define cio_skip                                @OPJ_MANGLE_PREFIX@_cio_skip
+#define cio_write                               @OPJ_MANGLE_PREFIX@_cio_write
+#define dwt_calc_explicit_stepsizes             @OPJ_MANGLE_PREFIX@_dwt_calc_explicit_stepsizes
+#define dwt_decode                              @OPJ_MANGLE_PREFIX@_dwt_decode
+#define dwt_decode_real                         @OPJ_MANGLE_PREFIX@_dwt_decode_real
+#define dwt_encode                              @OPJ_MANGLE_PREFIX@_dwt_encode
+#define dwt_encode_real                         @OPJ_MANGLE_PREFIX@_dwt_encode_real
+#define dwt_getgain                             @OPJ_MANGLE_PREFIX@_dwt_getgain
+#define dwt_getgain_real                        @OPJ_MANGLE_PREFIX@_dwt_getgain_real
+#define dwt_getnorm                             @OPJ_MANGLE_PREFIX@_dwt_getnorm
+#define dwt_getnorm_real                        @OPJ_MANGLE_PREFIX@_dwt_getnorm_real
+#define j2k_calculate_tp                        @OPJ_MANGLE_PREFIX@_j2k_calculate_tp
+#define j2k_convert_progression_order           @OPJ_MANGLE_PREFIX@_j2k_convert_progression_order
+#define j2k_create_compress                     @OPJ_MANGLE_PREFIX@_j2k_create_compress
+#define j2k_create_decompress                   @OPJ_MANGLE_PREFIX@_j2k_create_decompress
+#define j2k_decode                              @OPJ_MANGLE_PREFIX@_j2k_decode
+#define j2k_decode_jpt_stream                   @OPJ_MANGLE_PREFIX@_j2k_decode_jpt_stream
+#define j2k_destroy_compress                    @OPJ_MANGLE_PREFIX@_j2k_destroy_compress
+#define j2k_destroy_decompress                  @OPJ_MANGLE_PREFIX@_j2k_destroy_decompress
+#define j2k_encode                              @OPJ_MANGLE_PREFIX@_j2k_encode
+#define j2k_setup_decoder                       @OPJ_MANGLE_PREFIX@_j2k_setup_decoder
+#define j2k_setup_encoder                       @OPJ_MANGLE_PREFIX@_j2k_setup_encoder
+#define jp2_create_compress                     @OPJ_MANGLE_PREFIX@_jp2_create_compress
+#define jp2_create_decompress                   @OPJ_MANGLE_PREFIX@_jp2_create_decompress
+#define jp2_destroy_compress                    @OPJ_MANGLE_PREFIX@_jp2_destroy_compress
+#define jp2_destroy_decompress                  @OPJ_MANGLE_PREFIX@_jp2_destroy_decompress
+#define jp2_read_jp2h                           @OPJ_MANGLE_PREFIX@_jp2_read_jp2h
+#define jp2_setup_decoder                       @OPJ_MANGLE_PREFIX@_jp2_setup_decoder
+#define jp2_setup_encoder                       @OPJ_MANGLE_PREFIX@_jp2_setup_encoder
+#define jp2_write_jp2h                          @OPJ_MANGLE_PREFIX@_jp2_write_jp2h
+#define jpt_init_msg_header                     @OPJ_MANGLE_PREFIX@_jpt_init_msg_header
+#define jpt_read_VBAS_info                      @OPJ_MANGLE_PREFIX@_jpt_read_VBAS_info
+#define jpt_read_msg_header                     @OPJ_MANGLE_PREFIX@_jpt_read_msg_header
+#define jpt_reinit_msg_header                   @OPJ_MANGLE_PREFIX@_jpt_reinit_msg_header
+#define mct_decode                              @OPJ_MANGLE_PREFIX@_mct_decode
+#define mct_decode_real                         @OPJ_MANGLE_PREFIX@_mct_decode_real
+#define mct_encode                              @OPJ_MANGLE_PREFIX@_mct_encode
+#define mct_encode_real                         @OPJ_MANGLE_PREFIX@_mct_encode_real
+#define mct_getnorm                             @OPJ_MANGLE_PREFIX@_mct_getnorm
+#define mct_getnorm_real                        @OPJ_MANGLE_PREFIX@_mct_getnorm_real
+#define mqc_bypass_enc                          @OPJ_MANGLE_PREFIX@_mqc_bypass_enc
+#define mqc_bypass_flush_enc                    @OPJ_MANGLE_PREFIX@_mqc_bypass_flush_enc
+#define mqc_bypass_init_enc                     @OPJ_MANGLE_PREFIX@_mqc_bypass_init_enc
+#define mqc_create                              @OPJ_MANGLE_PREFIX@_mqc_create
+#define mqc_decode                              @OPJ_MANGLE_PREFIX@_mqc_decode
+#define mqc_destroy                             @OPJ_MANGLE_PREFIX@_mqc_destroy
+#define mqc_encode                              @OPJ_MANGLE_PREFIX@_mqc_encode
+#define mqc_erterm_enc                          @OPJ_MANGLE_PREFIX@_mqc_erterm_enc
+#define mqc_flush                               @OPJ_MANGLE_PREFIX@_mqc_flush
+#define mqc_init_dec                            @OPJ_MANGLE_PREFIX@_mqc_init_dec
+#define mqc_init_enc                            @OPJ_MANGLE_PREFIX@_mqc_init_enc
+#define mqc_numbytes                            @OPJ_MANGLE_PREFIX@_mqc_numbytes
+#define mqc_reset_enc                           @OPJ_MANGLE_PREFIX@_mqc_reset_enc
+#define mqc_resetstates                         @OPJ_MANGLE_PREFIX@_mqc_resetstates
+#define mqc_restart_enc                         @OPJ_MANGLE_PREFIX@_mqc_restart_enc
+#define mqc_restart_init_enc                    @OPJ_MANGLE_PREFIX@_mqc_restart_init_enc
+#define mqc_segmark_enc                         @OPJ_MANGLE_PREFIX@_mqc_segmark_enc
+#define mqc_setstate                            @OPJ_MANGLE_PREFIX@_mqc_setstate
+#define pi_create_decode                        @OPJ_MANGLE_PREFIX@_pi_create_decode
+#define pi_create_encode                        @OPJ_MANGLE_PREFIX@_pi_create_encode
+#define pi_destroy                              @OPJ_MANGLE_PREFIX@_pi_destroy
+#define pi_initialise_encode                    @OPJ_MANGLE_PREFIX@_pi_initialise_encode
+#define pi_next                                 @OPJ_MANGLE_PREFIX@_pi_next
+#define raw_create                              @OPJ_MANGLE_PREFIX@_raw_create
+#define raw_decode                              @OPJ_MANGLE_PREFIX@_raw_decode
+#define raw_destroy                             @OPJ_MANGLE_PREFIX@_raw_destroy
+#define raw_init_dec                            @OPJ_MANGLE_PREFIX@_raw_init_dec
+#define raw_numbytes                            @OPJ_MANGLE_PREFIX@_raw_numbytes
+#define t1_create                               @OPJ_MANGLE_PREFIX@_t1_create
+#define t1_decode_cblks                         @OPJ_MANGLE_PREFIX@_t1_decode_cblks
+#define t1_destroy                              @OPJ_MANGLE_PREFIX@_t1_destroy
+#define t1_encode_cblks                         @OPJ_MANGLE_PREFIX@_t1_encode_cblks
+#define t2_create                               @OPJ_MANGLE_PREFIX@_t2_create
+#define t2_decode_packets                       @OPJ_MANGLE_PREFIX@_t2_decode_packets
+#define t2_destroy                              @OPJ_MANGLE_PREFIX@_t2_destroy
+#define t2_encode_packets                       @OPJ_MANGLE_PREFIX@_t2_encode_packets
+#define tcd_create                              @OPJ_MANGLE_PREFIX@_tcd_create
+#define tcd_decode_tile                         @OPJ_MANGLE_PREFIX@_tcd_decode_tile
+#define tcd_destroy                             @OPJ_MANGLE_PREFIX@_tcd_destroy
+#define tcd_dump                                @OPJ_MANGLE_PREFIX@_tcd_dump
+#define tcd_encode_tile                         @OPJ_MANGLE_PREFIX@_tcd_encode_tile
+#define tcd_free_decode                         @OPJ_MANGLE_PREFIX@_tcd_free_decode
+#define tcd_free_decode_tile                    @OPJ_MANGLE_PREFIX@_tcd_free_decode_tile
+#define tcd_free_encode                         @OPJ_MANGLE_PREFIX@_tcd_free_encode
+#define tcd_init_encode                         @OPJ_MANGLE_PREFIX@_tcd_init_encode
+#define tcd_makelayer                           @OPJ_MANGLE_PREFIX@_tcd_makelayer
+#define tcd_makelayer_fixed                     @OPJ_MANGLE_PREFIX@_tcd_makelayer_fixed
+#define tcd_malloc_decode                       @OPJ_MANGLE_PREFIX@_tcd_malloc_decode
+#define tcd_malloc_decode_tile                  @OPJ_MANGLE_PREFIX@_tcd_malloc_decode_tile
+#define tcd_malloc_encode                       @OPJ_MANGLE_PREFIX@_tcd_malloc_encode
+#define tcd_rateallocate                        @OPJ_MANGLE_PREFIX@_tcd_rateallocate
+#define tcd_rateallocate_fixed                  @OPJ_MANGLE_PREFIX@_tcd_rateallocate_fixed
+#define tgt_create                              @OPJ_MANGLE_PREFIX@_tgt_create
+#define tgt_decode                              @OPJ_MANGLE_PREFIX@_tgt_decode
+#define tgt_destroy                             @OPJ_MANGLE_PREFIX@_tgt_destroy
+#define tgt_encode                              @OPJ_MANGLE_PREFIX@_tgt_encode
+#define tgt_reset                               @OPJ_MANGLE_PREFIX@_tgt_reset
+#define tgt_setvalue                            @OPJ_MANGLE_PREFIX@_tgt_setvalue
+#define check_EPHuse                            @OPJ_MANGLE_PREFIX@_check_EPHuse
+#define write_cidx                              @OPJ_MANGLE_PREFIX@_write_cidx
+#define write_cptr                              @OPJ_MANGLE_PREFIX@_write_cptr
+#define write_mainmhix                          @OPJ_MANGLE_PREFIX@_write_mainmhix
+#define write_manf                              @OPJ_MANGLE_PREFIX@_write_manf
+#define write_phix                              @OPJ_MANGLE_PREFIX@_write_phix
+#define write_phixfaix                          @OPJ_MANGLE_PREFIX@_write_phixfaix
+#define write_ppix                              @OPJ_MANGLE_PREFIX@_write_ppix
+#define write_ppixfaix                          @OPJ_MANGLE_PREFIX@_write_ppixfaix
+#define write_thix                              @OPJ_MANGLE_PREFIX@_write_thix
+#define write_tilemhix                          @OPJ_MANGLE_PREFIX@_write_tilemhix
+#define get_num_max_tile_parts                  @OPJ_MANGLE_PREFIX@_get_num_max_tile_parts
+#define write_tpix                              @OPJ_MANGLE_PREFIX@_write_tpix
+#define write_tpixfaix                          @OPJ_MANGLE_PREFIX@_write_tpixfaix
+
+
+#define pi_create                               @OPJ_MANGLE_PREFIX@_pi_create
+#define pi_create_decode_v2                     @OPJ_MANGLE_PREFIX@_pi_create_decode_v2
+#define pi_destroy_v2                           @OPJ_MANGLE_PREFIX@_pi_destroy_v2
+#define pi_update_decode_not_poc                @OPJ_MANGLE_PREFIX@_pi_update_decode_not_poc
+#define pi_update_decode_poc                    @OPJ_MANGLE_PREFIX@_pi_update_decode_poc
+#define t1_create_v2                            @OPJ_MANGLE_PREFIX@_t1_create_v2
+#define t1_decode_cblks_v2                      @OPJ_MANGLE_PREFIX@_t1_decode_cblks_v2
+#define t1_destroy_v2                           @OPJ_MANGLE_PREFIX@_t1_destroy_v2
+#define t2_create_v2                            @OPJ_MANGLE_PREFIX@_t2_create_v2
+#define t2_decode_packets_v2                    @OPJ_MANGLE_PREFIX@_t2_decode_packets_v2
+#define t2_destroy_v2                           @OPJ_MANGLE_PREFIX@_t2_destroy_v2
+#define tcd_code_block_dec_deallocate           @OPJ_MANGLE_PREFIX@_tcd_code_block_dec_deallocate
+#define tcd_create_v2                           @OPJ_MANGLE_PREFIX@_tcd_create_v2
+#define tcd_dc_level_shift_decode               @OPJ_MANGLE_PREFIX@_tcd_dc_level_shift_decode
+#define tcd_decode_tile_v2                      @OPJ_MANGLE_PREFIX@_tcd_decode_tile_v2
+#define tcd_destroy_v2                          @OPJ_MANGLE_PREFIX@_tcd_destroy_v2
+#define tcd_dwt_decode                          @OPJ_MANGLE_PREFIX@_tcd_dwt_decode
+#define tcd_get_decoded_tile_size               @OPJ_MANGLE_PREFIX@_tcd_get_decoded_tile_size
+#define tcd_init_decode_tile                    @OPJ_MANGLE_PREFIX@_tcd_init_decode_tile
+#define tcd_init_v2                             @OPJ_MANGLE_PREFIX@_tcd_init_v2
+#define tcd_mct_decode                          @OPJ_MANGLE_PREFIX@_tcd_mct_decode
+#define tcd_t1_decode                           @OPJ_MANGLE_PREFIX@_tcd_t1_decode
+#define tcd_t2_decode                           @OPJ_MANGLE_PREFIX@_tcd_t2_decode
+#define tcd_update_tile_data                    @OPJ_MANGLE_PREFIX@_tcd_update_tile_data
+#define tgt_create_v2                           @OPJ_MANGLE_PREFIX@_tgt_create_v2
+#define tgt_init                                @OPJ_MANGLE_PREFIX@_tgt_init
+
+
+#endif
+
+#endif
\ No newline at end of file
-- 
GitLab