Fix some error with cmake
[openjpeg.git] / applications / 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}/applications/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}/applications/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_DIRNAME}
22   ${OPENJPEG_SOURCE_DIR}/applications/common
23   ${Z_INCLUDE_DIRNAME}
24   ${PNG_INCLUDE_DIRNAME}
25   ${TIFF_INCLUDE_DIRNAME}
26   )
27
28 IF(WIN32)
29   IF(BUILD_SHARED_LIBS)
30     ADD_DEFINITIONS(-DOPJ_EXPORTS)
31   ELSE(BUILD_SHARED_LIBS)
32     ADD_DEFINITIONS(-DOPJ_STATIC)
33   ENDIF(BUILD_SHARED_LIBS)
34 ENDIF(WIN32)
35
36 # Loop over all executables:
37 FOREACH(exe j2k_to_image image_to_j2k j2k_dump)
38   ADD_EXECUTABLE(${exe} ${exe}.c ${common_SRCS})
39   TARGET_LINK_LIBRARIES(${exe} ${OPENJPEG_LIBRARY_NAME} 
40 ${Z_LIBNAME} ${PNG_LIBNAME} ${TIFF_LIBNAME})
41
42   IF(LCMS_FOUND OR LCMS2_FOUND)
43     TARGET_LINK_LIBRARIES(${exe} ${LCMS_LIBNAME})
44   ENDIF(LCMS_FOUND OR LCMS2_FOUND)
45
46   ADD_TEST(${exe} ${EXECUTABLE_OUTPUT_PATH}/${exe})
47   # calling those exe without option will make them fail always:
48   SET_TESTS_PROPERTIES(${exe} PROPERTIES WILL_FAIL TRUE)
49   # On unix you need to link to the math library:
50   IF(UNIX)
51     TARGET_LINK_LIBRARIES(${exe} m)
52   ENDIF(UNIX)
53   # Install exe
54   INSTALL(TARGETS ${exe}
55     EXPORT OpenJPEGTargets
56     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
57   )
58 ENDFOREACH(exe)
59
60 # Install man pages
61 INSTALL(
62   FILES       ${OPENJPEG_SOURCE_DIR}/doc/man/man1/image_to_j2k.1
63               ${OPENJPEG_SOURCE_DIR}/doc/man/man1/j2k_dump.1
64               ${OPENJPEG_SOURCE_DIR}/doc/man/man1/j2k_to_image.1
65   DESTINATION ${OPENJPEG_INSTALL_MAN_DIR}/man1)
66 #
67
68 IF(BUILD_JPWL)
69   ADD_EXECUTABLE(JPWL_j2k_to_image
70   j2k_to_image.c
71   ${common_SRCS}
72   )
73   
74   SET_PROPERTY(
75      TARGET JPWL_j2k_to_image
76      APPEND PROPERTY COMPILE_DEFINITIONS USE_JPWL
77   )
78
79   TARGET_LINK_LIBRARIES(JPWL_j2k_to_image ${OPENJPEG_LIBRARY_NAME}_JPWL
80     ${LCMS_LIBNAME} ${Z_LIBNAME} ${PNG_LIBNAME} ${TIFF_LIBNAME})
81   
82   IF(UNIX)
83     TARGET_LINK_LIBRARIES(JPWL_j2k_to_image m)
84   ENDIF(UNIX)
85
86   ADD_EXECUTABLE(JPWL_image_to_j2k
87   image_to_j2k.c
88   ${common_SRCS}
89   )
90   
91   SET_PROPERTY(
92      TARGET JPWL_image_to_j2k
93      APPEND PROPERTY COMPILE_DEFINITIONS USE_JPWL
94   )
95
96   TARGET_LINK_LIBRARIES(JPWL_image_to_j2k ${OPENJPEG_LIBRARY_NAME}_JPWL 
97         ${LCMS_LIBNAME} ${Z_LIBNAME} ${PNG_LIBNAME} ${TIFF_LIBNAME})
98
99   IF(UNIX)
100     TARGET_LINK_LIBRARIES(JPWL_image_to_j2k m)
101   ENDIF(UNIX)
102
103   INSTALL(TARGETS JPWL_image_to_j2k JPWL_j2k_to_image
104     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
105   )
106 ENDIF(BUILD_JPWL)
107
108 if(BUILD_TESTING)
109 # Do testing here, once we know the examples are being built:
110 FILE(GLOB_RECURSE OPENJPEG_DATA_IMAGES_GLOB
111   "${JPEG2000_CONFORMANCE_DATA_ROOT}/*.j2k"
112   "${JPEG2000_CONFORMANCE_DATA_ROOT}/*.j2c"
113   "${JPEG2000_CONFORMANCE_DATA_ROOT}/*.jp2"
114   )
115
116 foreach(filename ${OPENJPEG_DATA_IMAGES_GLOB})
117   get_filename_component(filename_temp ${filename} NAME)
118   get_filename_component(filename_ext ${filename} EXT)
119   execute_process(COMMAND ${EXECUTABLE_OUTPUT_PATH}/j2k_dump -i ${filename}
120     OUTPUT_VARIABLE dump_success
121     OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${filename_temp}.dump
122     ERROR_QUIET
123   )
124   if(dump_success)
125   file(READ ${CMAKE_CURRENT_BINARY_DIR}/${filename_temp}.dump numcomp_file)
126   string(REGEX REPLACE ".*numcomps=([0-9]+).*" "\\1"
127     numcomps "${numcomp_file}")
128   #message( "found:${output_variable} for ${filename_temp}" )
129   endif()
130   ADD_TEST(dump-${filename_temp} ${EXECUTABLE_OUTPUT_PATH}/j2k_dump -i ${filename})
131   foreach(codec_type ppm pgx bmp tif raw tga png)
132     ADD_TEST(j2i-${filename_temp}-${codec_type} ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image -i ${filename} -o ${filename_temp}.${codec_type})
133   endforeach(codec_type)
134   foreach(codec_type ppm bmp tif tga png)
135     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})
136     #if(UNIX)
137     #  ADD_TEST(cmp-${filename_temp}-${codec_type} cmp ${filename} ${filename_temp}.${codec_type}${filename_ext})
138     #endif(UNIX)
139   endforeach(codec_type)
140 endforeach(filename)
141 endif(BUILD_TESTING)