Mercurial > hg > orthanc-wsi
diff Resources/CMake/OpenJpegConfiguration.cmake @ 0:4a7a53257c7d
initial commit
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 22 Oct 2016 21:48:33 +0200 |
parents | |
children | 217a219ac0fc |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/CMake/OpenJpegConfiguration.cmake Sat Oct 22 21:48:33 2016 +0200 @@ -0,0 +1,144 @@ +if (STATIC_BUILD OR NOT USE_SYSTEM_OPENJPEG) + SET(OPENJPEG_SOURCES_DIR ${CMAKE_BINARY_DIR}/openjpeg-version.2.1) + SET(OPENJPEG_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/openjpeg-2.1.tar.gz") + SET(OPENJPEG_MD5 "3e1c451c087f8462955426da38aa3b3d") + + if (IS_DIRECTORY "${OPENJPEG_SOURCES_DIR}") + set(FirstRun OFF) + else() + set(FirstRun ON) + endif() + + DownloadPackage(${OPENJPEG_MD5} ${OPENJPEG_URL} "${OPENJPEG_SOURCES_DIR}") + + execute_process( + COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${CMAKE_CURRENT_LIST_DIR}/OpenJpegConfiguration.patch + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + RESULT_VARIABLE Failure + ) + + if (Failure AND FirstRun) + message(FATAL_ERROR "Error while patching a file") + endif() + + if (USE_OPENJPEG_JP2) + set(OPENJPEG_SOURCES + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/bio.c + #${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/cidx_manager.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/cio.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/dwt.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/event.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/function_list.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/image.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/invert.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/j2k.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/jp2.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/mct.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/mqc.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/openjpeg.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/opj_clock.c + #${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/phix_manager.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/pi.c + #${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/ppix_manager.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/raw.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/t1.c + #${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/t1_generate_luts.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/t2.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/tcd.c + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/tgt.c + #${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/thix_manager.c + #${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/tpix_manager.c + ) + + configure_file( + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/opj_config.h.cmake.in + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/opj_config.h + @ONLY + ) + + configure_file( + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/opj_config_private.h.cmake.in + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/opj_config_private.h + @ONLY + ) + + include_directories( + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2 + ) + + # The following definition disables explicit inlining. This is + # necessary to bypass the "undefined reference to + # `opj_t1_dec_sigpass_step_mqc'" error. + add_definitions( + #-DINLINE= + ) + + else() + AUX_SOURCE_DIRECTORY(${OPENJPEG_SOURCES_DIR}/src/lib/openmj2 OPENJPEG_SOURCES) + + configure_file( + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/opj_config.h.cmake.in + ${OPENJPEG_SOURCES_DIR}/src/lib/openmj2/opj_config.h + @ONLY + ) + + configure_file( + ${OPENJPEG_SOURCES_DIR}/src/lib/openjp2/opj_config_private.h.cmake.in + ${OPENJPEG_SOURCES_DIR}/src/lib/openmj2/opj_config_private.h + @ONLY + ) + + include_directories( + ${OPENJPEG_SOURCES_DIR}/src/lib/openmj2 + ) + endif() + + + add_definitions( + -DOPJ_STATIC + -DORTHANC_OPENJPEG_MAJOR_VERSION=2 + ) + + if (NOT WIN32) + add_definitions( + -DOPJ_HAVE_STDINT_H=1 + -DOPJ_HAVE_INTTYPES_H=1 + ) + endif() + + source_group(ThirdParty\\OpenJpeg REGULAR_EXPRESSION ${OPENJPEG_SOURCES_DIR}/.*) + +else() + CHECK_INCLUDE_FILE_CXX(openjpeg.h HAVE_OPENJPEG_H) + if (NOT HAVE_OPENJPEG_H) + message(FATAL_ERROR "Please install the openjpeg-devel package") + endif() + + find_path(OPENJPEG_INCLUDE_DIR openjpeg.h) + + CHECK_LIBRARY_EXISTS(openjpeg opj_image_create "" HAVE_OPENJPEG_LIB) + if (NOT HAVE_OPENJPEG_LIB) + message(FATAL_ERROR "Please install the openjpeg-devel package") + endif() + + # Autodetection of the version of OpenJpeg + file(STRINGS + "${OPENJPEG_INCLUDE_DIR}/openjpeg.h" + OPENJPEG_VERSION REGEX + "#define OPENJPEG_VERSION") + + string(REGEX REPLACE + ".*OPENJPEG_VERSION.*\"([0-9]*)\\.([0-9]*)\\.([0-9]*)\"$" + "\\1" + OPENJPEG_MAJOR_VERSION ${OPENJPEG_VERSION}) + + if (OPENJPEG_MAJOR_VERSION EQUAL 1) + add_definitions(-DORTHANC_OPENJPEG_MAJOR_VERSION=1) + elseif (OPENJPEG_MAJOR_VERSION EQUAL 2) + add_definitions(-DORTHANC_OPENJPEG_MAJOR_VERSION=2) + else() + message(FATAL_ERROR "Cannot parse the version of OpenJpeg") + endif() + + link_libraries(openjpeg) +endif()