Synchronize branch and trunk cmakelists files
authorMathieu Malaterre <mathieu.malaterre@gmail.com>
Tue, 29 Jun 2010 19:08:58 +0000 (19:08 +0000)
committerMathieu Malaterre <mathieu.malaterre@gmail.com>
Tue, 29 Jun 2010 19:08:58 +0000 (19:08 +0000)
CMakeLists.txt
codec/CMakeLists.txt
libopenjpeg/CMakeLists.txt

index aae9337175a7b0eb5e44ca0f1f45185416453ea6..8677d9b8985d42479ffdf2aa5349eb9c1cf65f6d 100644 (file)
@@ -9,9 +9,9 @@
 # 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")
@@ -39,24 +39,65 @@ SET(OPENJPEG_LIBRARY_PROPERTIES
   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)
@@ -125,8 +166,18 @@ FIND_PATH(JPEG2000_CONFORMANCE_DATA_ROOT testimages.html
 # 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}
+)
+
index 1e04b38b4d4ed3cae2ae0af0eed4bac8cd12faf6..9e5b0eb2770c610fc6ab0530b28724c5be67fc06 100644 (file)
@@ -52,9 +52,13 @@ FOREACH(exe j2k_to_image image_to_j2k j2k_dump)
     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"
@@ -62,8 +66,27 @@ FILE(GLOB_RECURSE OPENJPEG_DATA_IMAGES_GLOB
   "${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)
index 2814ad40bb3d366c67e52ea68539c6703d34aeb4..d7096bd6d5221a843a8aa408390820a686a26f2e 100644 (file)
@@ -37,8 +37,11 @@ SET_TARGET_PROPERTIES(${OPENJPEG_LIBRARY_NAME} PROPERTIES
 
 # Install library
 INSTALL(TARGETS ${OPENJPEG_LIBRARY_NAME}
-       DESTINATION lib)
+  EXPORT OpenJPEGTargets
+       DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries
+)
 
 # Install includes files
 INSTALL(FILES openjpeg.h
-       DESTINATION ${INCLUDE_INSTALL_DIR}/openjpeg)
+       DESTINATION ${OPENJPEG_INSTALL_INCLUDE_DIR} COMPONENT Headers
+)