[trunk] clean jp2_read_ihdr_v2 interface
[openjpeg.git] / libopenjpeg / CMakeLists.txt
index f1934d174553647d0d50fa7a3738910d96614010..cc9a23cdb91859c2bc1513317bfc83a55ae5e12f 100644 (file)
@@ -1,79 +1,82 @@
 INCLUDE_REGULAR_EXPRESSION("^.*$")
 # Defines the source code for the library
 SET(OPENJPEG_SRCS
-  bio.c
-  cio.c
-  dwt.c
-  event.c
-  image.c
-  j2k.c
-  j2k_lib.c
-  jp2.c
-  jpt.c
-  mct.c
-  mqc.c
-  openjpeg.c
-  pi.c
-  raw.c
-  t1.c
-  t2.c
-  tcd.c
-  tgt.c
-  opj_convert.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/bio.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/cio.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/dwt.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/event.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/image.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/j2k.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/j2k_lib.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/jp2.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/jpt.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/mct.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/mqc.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/pi.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/raw.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/t1.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/t2.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/tcd.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/tgt.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/cidx_manager.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/phix_manager.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/ppix_manager.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/thix_manager.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/tpix_manager.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/function_list.c
 )
 
-IF(LCMS_INCLUDE_DIR)
-  INCLUDE_DIRECTORIES( ${LCMS_INCLUDE_DIR} )
-ENDIF(LCMS_INCLUDE_DIR)
-
-# Build the static library
+# Build the library
 IF(WIN32)
-  ADD_DEFINITIONS(-DOPJ_STATIC)
+  IF(BUILD_SHARED_LIBS)
+    ADD_DEFINITIONS(-DOPJ_EXPORTS)
+  ELSE(BUILD_SHARED_LIBS)
+    ADD_DEFINITIONS(-DOPJ_STATIC)
+  ENDIF(BUILD_SHARED_LIBS)
 ENDIF(WIN32)
-ADD_LIBRARY(${OPENJPEG_LIBRARY_NAME}.static STATIC ${OPENJPEG_SRCS})
-SET_TARGET_PROPERTIES(${OPENJPEG_LIBRARY_NAME}.static PROPERTIES CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${OPENJPEG_LIBRARY_NAME} PREFIX "lib")
-SET_TARGET_PROPERTIES(${OPENJPEG_LIBRARY_NAME}.static PROPERTIES ${OPENJPEG_LIBRARY_PROPERTIES})
-IF(LCMS_LIB)
-  TARGET_LINK_LIBRARIES(${OPENJPEG_LIBRARY_NAME}.static ${LCMS_LIB})
-ENDIF(LCMS_LIB)
+ADD_LIBRARY(${OPENJPEG_LIBRARY_NAME} ${OPENJPEG_SRCS})
+IF(UNIX)
+  TARGET_LINK_LIBRARIES(${OPENJPEG_LIBRARY_NAME} m)
+ENDIF(UNIX)
+SET_TARGET_PROPERTIES(${OPENJPEG_LIBRARY_NAME} PROPERTIES ${OPENJPEG_LIBRARY_PROPERTIES})
+
+# Build the JPWL library ?
+IF(BUILD_JPWL)
+ ADD_SUBDIRECTORY(jpwl)
+ENDIF(BUILD_JPWL)
+
 # Install library
-INSTALL(TARGETS ${OPENJPEG_LIBRARY_NAME}.static
+INSTALL(TARGETS ${OPENJPEG_LIBRARY_NAME}
   EXPORT OpenJPEGTargets
-  DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries
+  RUNTIME DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
+  LIBRARY DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries
+  ARCHIVE DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries
 )
 
-# If BUILD_SHARED_LIBS is ON, also build the shared library
-IF(BUILD_SHARED_LIBS)
-  # replace flag for static build with flag for shared build
-  IF(WIN32)
-    REMOVE_DEFINITIONS(-DOPJ_STATIC)
-    ADD_DEFINITIONS(-DOPJ_EXPORTS)
-  ENDIF(WIN32)
-  # Create the shared library
-  ADD_LIBRARY(${OPENJPEG_LIBRARY_NAME}.shared SHARED ${OPENJPEG_SRCS})
-  SET_TARGET_PROPERTIES(${OPENJPEG_LIBRARY_NAME}.shared PROPERTIES OUTPUT_NAME ${OPENJPEG_LIBRARY_NAME})
-  SET_TARGET_PROPERTIES(${OPENJPEG_LIBRARY_NAME}.shared PROPERTIES ${OPENJPEG_LIBRARY_PROPERTIES})
-  IF(LCMS_LIB)
-    TARGET_LINK_LIBRARIES(${OPENJPEG_LIBRARY_NAME}.shared ${LCMS_LIB})
-  ENDIF(LCMS_LIB)
-  # Install library
-  INSTALL(TARGETS ${OPENJPEG_LIBRARY_NAME}.shared
-    EXPORT OpenJPEGTargets
-    DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries
-  )
-  IF(WIN32)
-    REMOVE_DEFINITIONS(-DOPJ_EXPORTS)
-  ENDIF(WIN32)
-ENDIF(BUILD_SHARED_LIBS)
-
 # Install includes files
-INSTALL(FILES openjpeg.h
-  DESTINATION ${OPENJPEG_INSTALL_INCLUDE_DIR}/${subdir} COMPONENT Headers
+INSTALL(FILES openjpeg.h opj_stdint.h
+  DESTINATION ${OPENJPEG_INSTALL_INCLUDE_DIR} COMPONENT Headers
 )
-INSTALL(CODE
-  "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${OPENJPEG_INSTALL_INCLUDE_DIR}/${subdir}/openjpeg.h \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${OPENJPEG_INSTALL_INCLUDE_DIR}/openjpeg.h)")
 
 # install man page of the library
 INSTALL(
-  FILES       ../doc/man/man3/libopenjpeg.3
+  FILES       ${OPENJPEG_SOURCE_DIR}/doc/man/man3/libopenjpeg.3
   DESTINATION ${OPENJPEG_INSTALL_MAN_DIR}/man3)
+
+# Experimental option; let's how cppcheck performs
+# Implementation details:
+# I could not figure out how to easily upload a file to CDash. Instead simply
+# pretend cppcheck is part of the Build step. Technically cppcheck can even
+# output gcc formatted error/warning report
+# Another implementation detail: I could not redirect error to the error
+# catching mechanism something is busted in cmake 2.8.5, I had to use the
+# warning regex to catch them.
+if(OPENJPEG_CPPCHECK)
+  find_package(CPPCHECK REQUIRED)
+  foreach(f ${OPENJPEG_SRCS})
+    # cppcheck complains about too many configuration, pretend to be WIN32:
+    add_custom_command(TARGET ${OPENJPEG_LIBRARY_NAME}
+      COMMAND ${CPPCHECK_EXECUTABLE} -DWIN32 ${f})
+  endforeach()
+endif()