Skip to content
Snippets Groups Projects
Commit bd45db50 authored by Mickael Savinaud's avatar Mickael Savinaud
Browse files

[ENH] patch rev1029 from openjpeg trunk to enable building from otb

parent e16b00d1
No related branches found
No related tags found
No related merge requests found
...@@ -35,6 +35,14 @@ ENDIF( OTB_USE_JPEG2000 ) ...@@ -35,6 +35,14 @@ ENDIF( OTB_USE_JPEG2000 )
# Check jpeg2000 support # Check jpeg2000 support
IF(OTB_COMPILE_JPEG2000) 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) ADD_DEFINITIONS(-DOTB_COMPILE_JPEG2000 -DUSE_OPJ_DEPRECATED)
IF(NOT BUILD_SHARED_LIBS) IF(NOT BUILD_SHARED_LIBS)
ADD_DEFINITIONS(-DOPJ_STATIC) ADD_DEFINITIONS(-DOPJ_STATIC)
......
...@@ -99,8 +99,8 @@ ENDIF(NOT OTB_USE_EXTERNAL_OSSIM) ...@@ -99,8 +99,8 @@ ENDIF(NOT OTB_USE_EXTERNAL_OSSIM)
IF(OTB_COMPILE_JPEG2000) IF(OTB_COMPILE_JPEG2000)
SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE} 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) ENDIF(OTB_COMPILE_JPEG2000)
IF(OTB_USE_PQXX) IF(OTB_USE_PQXX)
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
extern "C" extern "C"
{ {
#include "otb_openjpeg.h" #include "openjpeg.h"
} }
namespace otb namespace otb
......
...@@ -30,8 +30,11 @@ ENDIF(NOT OTB_USE_EXTERNAL_LIBLAS) ...@@ -30,8 +30,11 @@ ENDIF(NOT OTB_USE_EXTERNAL_LIBLAS)
ENDIF(OTB_USE_LIBLAS) ENDIF(OTB_USE_LIBLAS)
IF(OTB_COMPILE_JPEG2000) IF(OTB_COMPILE_JPEG2000)
SET(L_BUILD_TESTING BUILD_TESTING)
SET(BUILD_TESTING OFF)
MESSAGE(STATUS "Configuring otbopenjpeg...") MESSAGE(STATUS "Configuring otbopenjpeg...")
ADD_SUBDIRECTORY( otbopenjpeg ) ADD_SUBDIRECTORY( otbopenjpeg )
SET(BUILD_TESTING L_BUILD_TESTING)
ENDIF(OTB_COMPILE_JPEG2000) ENDIF(OTB_COMPILE_JPEG2000)
......
...@@ -34,15 +34,26 @@ SET(OPENJPEG_VERSION ...@@ -34,15 +34,26 @@ SET(OPENJPEG_VERSION
"${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}") "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}")
SET(PACKAGE_VERSION SET(PACKAGE_VERSION
"${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}") "${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 SET(OPENJPEG_LIBRARY_PROPERTIES
VERSION "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}" VERSION "${OPENJPEG_SVN_REVISION}.${OPENJPEG_OTB_PATCH}.0}"
SOVERSION "${OPENJPEG_VERSION_MAJOR}" SOVERSION "${OPENJPEG_SVN_REVISION}.${OPENJPEG_OTB_PATCH}"
) )
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# Path to additional CMake modules # Path to additional CMake modules
SET(CMAKE_MODULE_PATH SET(CMAKE_MODULE_PATH
${CMAKE_SOURCE_DIR}/CMake ${OPENJPEG_SOURCE_DIR}/CMake
${CMAKE_MODULE_PATH}) ${CMAKE_MODULE_PATH})
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
...@@ -115,8 +126,8 @@ INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityC.cmake) ...@@ -115,8 +126,8 @@ INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityC.cmake)
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Setup file for setting custom ctest vars # Setup file for setting custom ctest vars
CONFIGURE_FILE( CONFIGURE_FILE(
${CMAKE_SOURCE_DIR}/CMake/CTestCustom.cmake.in ${OPENJPEG_SOURCE_DIR}/CMake/CTestCustom.cmake.in
${CMAKE_BINARY_DIR}/CTestCustom.cmake ${OPENJPEG_BINARY_DIR}/CTestCustom.cmake
@ONLY @ONLY
) )
...@@ -130,12 +141,21 @@ MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH) ...@@ -130,12 +141,21 @@ MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# configure name mangling to allow multiple libraries to coexist # configure name mangling to allow multiple libraries to coexist
# peacefully # peacefully
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in)
SET(MANGLE_PREFIX ${OPENJPEG_LIBRARY_NAME}) #SET(OPJ_MANGLE_PREFIX "" CACHE STRING "Prefix used to mangle all the symbols")
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in IF(OPJ_MANGLE_PREFIX)
${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle.h 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) @ONLY IMMEDIATE)
ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in)
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# pkgconfig support # pkgconfig support
...@@ -208,9 +228,9 @@ ADD_SUBDIRECTORY(libopenjpeg) ...@@ -208,9 +228,9 @@ ADD_SUBDIRECTORY(libopenjpeg)
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Build Applications # Build Applications
OPTION(BUILD_CODEC "Build the CODEC executables" ON) #OPTION(BUILD_CODEC "Build the CODEC executables" ON)
OPTION(BUILD_MJ2 "Build the MJ2 executables." OFF) #OPTION(BUILD_MJ2 "Build the MJ2 executables." OFF)
OPTION(BUILD_JPIP "Build the JPIP library and executables." OFF) #OPTION(BUILD_JPIP "Build the JPIP library and executables." OFF)
IF(BUILD_CODEC OR BUILD_MJ2 OR BUILD_JPIP) IF(BUILD_CODEC OR BUILD_MJ2 OR BUILD_JPIP)
OPTION(BUILD_THIRDPARTY "Build the thirdparty executables if it is needed" OFF) 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" ...@@ -227,18 +247,18 @@ CONFIGURE_FILE("${OPENJPEG_SOURCE_DIR}/opj_config.h.cmake.in"
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Build JPWL-flavoured library and executables # 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) # 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) #IF(BUILD_DOC)
ADD_SUBDIRECTORY(doc) # ADD_SUBDIRECTORY(doc)
ENDIF(BUILD_DOC) #ENDIF(BUILD_DOC)
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Buld Testing # Buld Testing
OPTION(BUILD_TESTING "Build the tests." OFF) #OPTION(BUILD_TESTING "Build the tests." OFF)
IF(BUILD_TESTING) IF(BUILD_TESTING)
IF(BUILD_CODEC) IF(BUILD_CODEC)
ENABLE_TESTING() ENABLE_TESTING()
...@@ -279,3 +299,16 @@ INSTALL( ...@@ -279,3 +299,16 @@ INSTALL(
FILES CHANGES FILES CHANGES
LICENSE LICENSE
DESTINATION ${OPENJPEG_INSTALL_DOC_DIR}) 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)
...@@ -59,6 +59,14 @@ INSTALL(FILES openjpeg.h ...@@ -59,6 +59,14 @@ INSTALL(FILES openjpeg.h
INSTALL(CODE 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)") "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 man page of the library
INSTALL( INSTALL(
FILES ${OPENJPEG_SOURCE_DIR}/doc/man/man3/libopenjpeg.3 FILES ${OPENJPEG_SOURCE_DIR}/doc/man/man3/libopenjpeg.3
......
/* /*
* Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
* Copyright (c) 2002-2007, Professor Benoit Macq * Copyright (c) 2002-2007, Professor Benoit Macq
* Copyright (c) 2001-2003, David Janssens * Copyright (c) 2001-2003, David Janssens
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#define OPENJPEG_H #define OPENJPEG_H
/* /*
========================================================== ==========================================================
Compiler directives Compiler directives
...@@ -75,6 +76,8 @@ typedef unsigned int OPJ_SIZE_T; ...@@ -75,6 +76,8 @@ typedef unsigned int OPJ_SIZE_T;
typedef double OPJ_FLOAT64; typedef double OPJ_FLOAT64;
typedef float OPJ_FLOAT32; typedef float OPJ_FLOAT32;
#include "openjpeg_mangle.h"
// Avoid compile-time warning because parameter is not used // Avoid compile-time warning because parameter is not used
#define OPJ_ARG_NOT_USED(x) (void)(x) #define OPJ_ARG_NOT_USED(x) (void)(x)
......
...@@ -55,6 +55,8 @@ ...@@ -55,6 +55,8 @@
========================================================== ==========================================================
*/ */
#include "openjpeg_mangle_private.h"
/* Ignore GCC attributes if this is not GCC */ /* Ignore GCC attributes if this is not GCC */
#ifndef __GNUC__ #ifndef __GNUC__
#define __attribute__(x) /* __attribute__(x) */ #define __attribute__(x) /* __attribute__(x) */
......
/* 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
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment