# SET(OPENJPEG_NAMESPACE "GDCMOPENJPEG")
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-if(COMMAND cmake_policy)
- cmake_policy(SET CMP0003 NEW)
-endif(COMMAND cmake_policy)
+IF(COMMAND CMAKE_POLICY)
+ CMAKE_POLICY(SET CMP0003 NEW)
+ENDIF(COMMAND CMAKE_POLICY)
IF(NOT OPENJPEG_NAMESPACE)
SET(OPENJPEG_NAMESPACE "OPENJPEG")
VERSION "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}"
SOVERSION "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}"
)
+# You will also need to define a value for the following variables:
+# OPENJPEG_INSTALL_BIN_DIR - binary dir (executables)
+# OPENJPEG_INSTALL_LIB_DIR - library dir (libs)
+# OPENJPEG_INSTALL_DATA_DIR - share dir (say, examples, data, etc)
+# OPENJPEG_INSTALL_INCLUDE_DIR - include dir (headers)
-#-----------------------------------------------------------------------------
-# OpenJPEG build configuration options.
-OPTION(BUILD_SHARED_LIBS "Build OpenJPEG with shared libraries." OFF)
+# --------------------------------------------------------------------------
+# Install directories
+
+STRING(TOLOWER ${PROJECT_NAME} projectname)
+SET(subdir "${projectname}-${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}")
+
+IF(NOT OPENJPEG_INSTALL_BIN_DIR)
+ SET(OPENJPEG_INSTALL_BIN_DIR "bin")
+ENDIF(NOT OPENJPEG_INSTALL_BIN_DIR)
+
+IF(NOT OPENJPEG_INSTALL_LIB_DIR)
+ SET(OPENJPEG_INSTALL_LIB_DIR "lib")
+ENDIF(NOT OPENJPEG_INSTALL_LIB_DIR)
+
+IF(NOT OPENJPEG_INSTALL_DATA_DIR)
+ SET(OPENJPEG_INSTALL_DATA_DIR "share/${subdir}")
+ENDIF(NOT OPENJPEG_INSTALL_DATA_DIR)
+
+IF(NOT OPENJPEG_INSTALL_INCLUDE_DIR)
+ SET(OPENJPEG_INSTALL_INCLUDE_DIR "include/${subdir}")
+ENDIF(NOT OPENJPEG_INSTALL_INCLUDE_DIR)
+
+IF(NOT OPENJPEG_INSTALL_DOC_DIR)
+ SET(OPENJPEG_INSTALL_DOC_DIR "share/doc/${subdir}")
+ENDIF(NOT OPENJPEG_INSTALL_DOC_DIR)
+
+IF(NOT OPENJPEG_INSTALL_PACKAGE_DIR)
+ SET(OPENJPEG_INSTALL_PACKAGE_DIR ${OPENJPEG_INSTALL_LIB_DIR}/${subdir}
+ CACHE INTERNAL "")
+ENDIF(NOT OPENJPEG_INSTALL_PACKAGE_DIR)
#-----------------------------------------------------------------------------
-SET (EXECUTABLE_OUTPUT_PATH ${OPENJPEG_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.")
-SET (LIBRARY_OUTPUT_PATH ${OPENJPEG_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.")
-MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
+# Test for some required system information.
+INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityC.cmake)
#-----------------------------------------------------------------------------
# Setup file for setting custom ctest vars
CONFIGURE_FILE(
- ${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake.in
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/CTestCustom.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake
@ONLY
)
+#-----------------------------------------------------------------------------
+# OpenJPEG build configuration options.
+OPTION(BUILD_SHARED_LIBS "Build OpenJPEG with shared libraries." OFF)
+
+#-----------------------------------------------------------------------------
+SET (EXECUTABLE_OUTPUT_PATH ${OPENJPEG_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.")
+SET (LIBRARY_OUTPUT_PATH ${OPENJPEG_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.")
+MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
+
+
#-----------------------------------------------------------------------------
# For the codec...
OPTION(BUILD_EXAMPLES "Build the Examples (codec...)." OFF)
# Compiler specific flags:
IF(CMAKE_COMPILER_IS_GNUCC)
# For all builds, make sure openjpeg is std99 compliant:
- SET(CMAKE_C_FLAGS "-Wall -std=c99 ${CMAKE_C_FLAGS}")
+ # SET(CMAKE_C_FLAGS "-Wall -std=c99 ${CMAKE_C_FLAGS}") # FIXME: this setting prevented us from setting a coverage build.
# Do not use ffast-math for all build, it would produce incorrect results, only set for release:
SET(CMAKE_C_FLAGS_RELEASE "-ffast-math ${CMAKE_C_FLAGS_RELEASE}")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
+# 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}
+)
+
TARGET_LINK_LIBRARIES(${exe} m)
ENDIF(UNIX)
# Install exe
- INSTALL_TARGETS(/bin/ ${exe})
+ INSTALL(TARGETS ${exe}
+ EXPORT OpenJPEGTargets
+ DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
+ )
ENDFOREACH(exe)
+if(BUILD_TESTING)
# Do testing here, once we know the examples are being built:
FILE(GLOB_RECURSE OPENJPEG_DATA_IMAGES_GLOB
"${JPEG2000_CONFORMANCE_DATA_ROOT}/*.j2k"
"${JPEG2000_CONFORMANCE_DATA_ROOT}/*.jp2"
)
-FOREACH(filename ${OPENJPEG_DATA_IMAGES_GLOB})
- GET_FILENAME_COMPONENT(filename_temp ${filename} NAME)
- ADD_TEST(j2i-${filename_temp} ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image -i ${filename} -o ${filename_temp}.tif)
-ENDFOREACH(filename)
-
+foreach(filename ${OPENJPEG_DATA_IMAGES_GLOB})
+ get_filename_component(filename_temp ${filename} NAME)
+ get_filename_component(filename_ext ${filename} EXT)
+ execute_process(COMMAND ${EXECUTABLE_OUTPUT_PATH}/j2k_dump -i ${filename}
+ OUTPUT_VARIABLE dump_success
+ OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${filename_temp}.dump
+ ERROR_QUIET
+ )
+ if(dump_success)
+ file(READ ${CMAKE_CURRENT_BINARY_DIR}/${filename_temp}.dump numcomp_file)
+ string(REGEX REPLACE ".*numcomps=([0-9]+).*" "\\1"
+ numcomps "${numcomp_file}")
+ #message( "found:${output_variable} for ${filename_temp}" )
+ endif()
+ ADD_TEST(dump-${filename_temp} ${EXECUTABLE_OUTPUT_PATH}/j2k_dump -i ${filename})
+ foreach(codec_type ppm pgx bmp tif raw tga png)
+ ADD_TEST(j2i-${filename_temp}-${codec_type} ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image -i ${filename} -o ${filename_temp}.${codec_type})
+ ADD_TEST(i2j-${filename_temp}-${codec_type} ${EXECUTABLE_OUTPUT_PATH}/image_to_j2k -i ${filename_temp}.${codec_type} -o ${filename_temp}.${codec_type}${filename_ext})
+ #if(UNIX)
+ # ADD_TEST(cmp-${filename_temp}-${codec_type} cmp ${filename} ${filename_temp}.${codec_type}${filename_ext})
+ #endif(UNIX)
+ endforeach(codec_type)
+endforeach(filename)
+endif(BUILD_TESTING)