bug fixes to enable cmake compilation on WIN32 platform (see CHANGES for details)
[openjpeg.git] / codec / CMakeLists.txt
1   # Build the demo app, small examples
2
3 # First thing define the common source:
4 SET(common_SRCS
5   convert.c
6   index.c
7   ${OPENJPEG_SOURCE_DIR}/common/color.c
8 )
9
10 # If not getopt was found then add it to the lib:
11 IF(DONT_HAVE_GETOPT)
12   SET(common_SRCS
13     ${common_SRCS}
14     ${OPENJPEG_SOURCE_DIR}/common/getopt.c
15   )
16 ENDIF(DONT_HAVE_GETOPT)
17
18 # Headers file are located here:
19 INCLUDE_DIRECTORIES(
20   ${OPENJPEG_SOURCE_DIR}/libopenjpeg
21   ${LCMS_INCLUDE_DIR}
22   ${OPENJPEG_SOURCE_DIR}/common
23   )
24 IF(PNG_FOUND)
25   INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
26 ENDIF(PNG_FOUND)
27 IF(TIFF_FOUND)
28   INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIR})
29 ENDIF(TIFF_FOUND)
30
31 IF(WIN32)
32   IF(BUILD_SHARED_LIBS)
33     ADD_DEFINITIONS(-DOPJ_EXPORTS)
34   ELSE(BUILD_SHARED_LIBS)
35     ADD_DEFINITIONS(-DOPJ_STATIC)
36   ENDIF(BUILD_SHARED_LIBS)
37 ENDIF(WIN32)
38
39 # Loop over all executables:
40 FOREACH(exe j2k_to_image image_to_j2k j2k_dump)
41   ADD_EXECUTABLE(${exe} ${exe}.c ${common_SRCS})
42   TARGET_LINK_LIBRARIES(${exe} ${OPENJPEG_LIBRARY_NAME} ${LCMS_LIB})
43   IF(PNG_FOUND)
44     TARGET_LINK_LIBRARIES(${exe} ${PNG_LIBRARIES})
45   ENDIF(PNG_FOUND)
46   IF(TIFF_FOUND)
47     TARGET_LINK_LIBRARIES(${exe} ${TIFF_LIBRARIES})
48   ENDIF(TIFF_FOUND)
49   ADD_TEST(${exe} ${EXECUTABLE_OUTPUT_PATH}/${exe})
50   # calling those exe without option will make them fail always:
51   SET_TESTS_PROPERTIES(${exe} PROPERTIES WILL_FAIL TRUE)
52   # On unix you need to link to the math library:
53   IF(UNIX)
54     TARGET_LINK_LIBRARIES(${exe} m)
55   ENDIF(UNIX)
56   # Install exe
57   INSTALL(TARGETS ${exe}
58     EXPORT OpenJPEGTargets
59     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
60   )
61 ENDFOREACH(exe)
62
63 # Install man pages
64 INSTALL(
65   FILES       ../doc/man/man1/image_to_j2k.1
66               ../doc/man/man1/j2k_dump.1
67               ../doc/man/man1/j2k_to_image.1
68   DESTINATION ${OPENJPEG_INSTALL_MAN_DIR}/man1)
69 #
70
71 if(BUILD_TESTING)
72 # Do testing here, once we know the examples are being built:
73 FILE(GLOB_RECURSE OPENJPEG_DATA_IMAGES_GLOB
74   "${JPEG2000_CONFORMANCE_DATA_ROOT}/*.j2k"
75   "${JPEG2000_CONFORMANCE_DATA_ROOT}/*.j2c"
76   "${JPEG2000_CONFORMANCE_DATA_ROOT}/*.jp2"
77   )
78
79 foreach(filename ${OPENJPEG_DATA_IMAGES_GLOB})
80   get_filename_component(filename_temp ${filename} NAME)
81   get_filename_component(filename_ext ${filename} EXT)
82   execute_process(COMMAND ${EXECUTABLE_OUTPUT_PATH}/j2k_dump -i ${filename}
83     OUTPUT_VARIABLE dump_success
84     OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${filename_temp}.dump
85     ERROR_QUIET
86   )
87   if(dump_success)
88   file(READ ${CMAKE_CURRENT_BINARY_DIR}/${filename_temp}.dump numcomp_file)
89   string(REGEX REPLACE ".*numcomps=([0-9]+).*" "\\1"
90     numcomps "${numcomp_file}")
91   #message( "found:${output_variable} for ${filename_temp}" )
92   endif()
93   ADD_TEST(dump-${filename_temp} ${EXECUTABLE_OUTPUT_PATH}/j2k_dump -i ${filename})
94   foreach(codec_type ppm pgx bmp tif raw tga png)
95     ADD_TEST(j2i-${filename_temp}-${codec_type} ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image -i ${filename} -o ${filename_temp}.${codec_type})
96     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})
97     #if(UNIX)
98     #  ADD_TEST(cmp-${filename_temp}-${codec_type} cmp ${filename} ${filename_temp}.${codec_type}${filename_ext})
99     #endif(UNIX)
100   endforeach(codec_type)
101 endforeach(filename)
102 endif(BUILD_TESTING)