blob: 5ee91a4fb8f348d32c19aec4dce017b67e39db48 [file] [log] [blame]
DRC84697032010-10-15 03:43:24 +00001#
2# Setup
3#
4
DRCd45c5492014-03-11 06:21:46 +00005cmake_minimum_required(VERSION 2.8.8)
DRC9fe22da2014-04-16 23:30:38 +00006# Use LINK_INTERFACE_LIBRARIES instead of INTERFACE_LINK_LIBRARIES
7if(POLICY CMP0022)
8 cmake_policy(SET CMP0022 OLD)
9endif()
DRC84697032010-10-15 03:43:24 +000010
DRC5d6f8582011-02-18 23:08:58 +000011project(libjpeg-turbo C)
DRC2b7a3912015-01-16 06:17:05 +000012set(VERSION 1.4.1)
DRC84697032010-10-15 03:43:24 +000013
DRC9fe22da2014-04-16 23:30:38 +000014if(CYGWIN OR NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
DRC84697032010-10-15 03:43:24 +000015 execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
16 string(REGEX REPLACE "\n" "" BUILD ${BUILD})
17elseif(WIN32)
DRC5e3bb3e2012-10-12 10:19:09 +000018 execute_process(COMMAND "wmic.exe" "os" "get" "LocalDateTime" OUTPUT_VARIABLE
19 BUILD)
20 string(REGEX REPLACE "[^0-9]" "" BUILD "${BUILD}")
21 if (BUILD STREQUAL "")
22 execute_process(COMMAND "cmd.exe" "/C" "DATE" "/T" OUTPUT_VARIABLE BUILD)
23 string(REGEX REPLACE ".*[ ]([0-9]*)[/.]([0-9]*)[/.]([0-9]*).*" "\\3\\2\\1" BUILD "${BUILD}")
24 else()
25 string(SUBSTRING "${BUILD}" 0 8 BUILD)
26 endif()
DRC84697032010-10-15 03:43:24 +000027else()
DRC378da4d2010-10-15 19:11:11 +000028 message(FATAL_ERROR "Platform not supported by this build system. Use autotools instead.")
DRC84697032010-10-15 03:43:24 +000029endif()
30
DRC2ffcb8e2011-04-04 04:56:24 +000031# This does nothing except when using MinGW. CMAKE_BUILD_TYPE has no meaning
32# in Visual Studio, and it always defaults to Debug when using NMake.
DRC84697032010-10-15 03:43:24 +000033if(NOT CMAKE_BUILD_TYPE)
34 set(CMAKE_BUILD_TYPE Release)
35endif()
36
37message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
38
39# This only works if building from the command line. There is currently no way
DRC2ffcb8e2011-04-04 04:56:24 +000040# to set a variable's value based on the build type when using Visual Studio.
DRC84697032010-10-15 03:43:24 +000041if(CMAKE_BUILD_TYPE STREQUAL "Debug")
42 set(BUILD "${BUILD}d")
43endif()
44
DRCeb2b9d62010-10-15 04:55:13 +000045message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}")
46
DRCddcd5a12011-04-15 00:24:02 +000047option(WITH_SIMD "Include SIMD extensions" TRUE)
48option(WITH_ARITH_ENC "Include arithmetic encoding support" TRUE)
49option(WITH_ARITH_DEC "Include arithmetic decoding support" TRUE)
50option(WITH_JPEG7 "Emulate libjpeg v7 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
51option(WITH_JPEG8 "Emulate libjpeg v8 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
DRCab706232013-01-18 23:42:31 +000052option(WITH_MEM_SRCDST "Include in-memory source/destination manager functions when emulating the libjpeg v6b or v7 API/ABI" TRUE)
DRCaee4f722014-08-09 23:06:07 +000053option(WITH_TURBOJPEG "Include the TurboJPEG wrapper library and associated test programs" TRUE)
DRC5039d732013-01-21 23:42:12 +000054option(WITH_JAVA "Build Java wrapper for the TurboJPEG library" FALSE)
DRCaee4f722014-08-09 23:06:07 +000055option(WITH_12BIT "Encode/decode JPEG images with 12-bit samples (implies WITH_SIMD=0 WITH_TURBOJPEG=0 WITH_ARITH_ENC=0 WITH_ARITH_DEC=0)" FALSE)
DRC665c96e2015-05-15 22:08:21 +000056option(ENABLE_STATIC "Build static libraries" TRUE)
57option(ENABLE_SHARED "Build shared libraries" TRUE)
DRCaee4f722014-08-09 23:06:07 +000058
59if(WITH_12BIT)
60 set(WITH_SIMD FALSE)
61 set(WITH_TURBOJPEG FALSE)
DRCecc58362015-06-27 07:56:29 +000062 set(WITH_JAVA FALSE)
DRCaee4f722014-08-09 23:06:07 +000063 set(WITH_ARITH_ENC FALSE)
64 set(WITH_ARITH_DEC FALSE)
65 set(BITS_IN_JSAMPLE 12)
66 message(STATUS "12-bit JPEG support enabled")
67else()
68 set(BITS_IN_JSAMPLE 8)
69endif()
DRC245cfdf2010-11-23 17:11:06 +000070
71if(WITH_ARITH_ENC)
72 set(C_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000073 message(STATUS "Arithmetic encoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000074else()
DRC990e28d2011-01-04 21:40:11 +000075 message(STATUS "Arithmetic encoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000076endif()
77
78if(WITH_ARITH_DEC)
79 set(D_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000080 message(STATUS "Arithmetic decoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000081else()
DRC990e28d2011-01-04 21:40:11 +000082 message(STATUS "Arithmetic decoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000083endif()
84
DRCaee4f722014-08-09 23:06:07 +000085if(WITH_TURBOJPEG)
86 message(STATUS "TurboJPEG C wrapper enabled")
87else()
88 message(STATUS "TurboJPEG C wrapper disabled")
89endif()
90
DRC957d6232011-04-01 11:13:11 +000091if(WITH_JAVA)
DRC5039d732013-01-21 23:42:12 +000092 message(STATUS "TurboJPEG Java wrapper enabled")
DRC218c0c12011-02-05 06:01:18 +000093else()
DRC5039d732013-01-21 23:42:12 +000094 message(STATUS "TurboJPEG Java wrapper disabled")
DRC218c0c12011-02-05 06:01:18 +000095endif()
96
DRCab706232013-01-18 23:42:31 +000097set(SO_AGE 0)
98if(WITH_MEM_SRCDST)
99 set(SO_AGE 1)
100endif()
101
DRC84697032010-10-15 03:43:24 +0000102set(JPEG_LIB_VERSION 62)
103set(DLL_VERSION ${JPEG_LIB_VERSION})
DRCab706232013-01-18 23:42:31 +0000104set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +0000105if(WITH_JPEG8)
106 set(JPEG_LIB_VERSION 80)
107 set(DLL_VERSION 8)
DRCa9d5b252010-10-15 06:42:45 +0000108 set(FULLVERSION ${DLL_VERSION}.0.2)
DRCf38eee02011-02-18 07:00:38 +0000109 message(STATUS "Emulating libjpeg v8 API/ABI")
DRC84697032010-10-15 03:43:24 +0000110elseif(WITH_JPEG7)
111 set(JPEG_LIB_VERSION 70)
112 set(DLL_VERSION 7)
DRCab706232013-01-18 23:42:31 +0000113 set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +0000114 message(STATUS "Emulating libjpeg v7 API/ABI")
115endif(WITH_JPEG8)
116
DRCab706232013-01-18 23:42:31 +0000117if(WITH_MEM_SRCDST)
118 set(MEM_SRCDST_SUPPORTED 1)
119 message(STATUS "In-memory source/destination managers enabled")
120else()
121 message(STATUS "In-memory source/destination managers disabled")
122endif()
123
DRC84697032010-10-15 03:43:24 +0000124if(MSVC)
DRC89a3f972015-03-19 19:27:40 +0000125 option(WITH_CRT_DLL
126 "Link all libjpeg-turbo libraries and executables with the C run-time DLL (msvcr*.dll) instead of the static C run-time library (libcmt*.lib.) The default is to use the C run-time DLL only with the libraries and executables that need it."
127 FALSE)
128 if(NOT WITH_CRT_DLL)
129 # Use the static C library for all build types
130 foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
131 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
132 if(${var} MATCHES "/MD")
133 string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
134 endif()
135 endforeach()
136 endif()
DRC84697032010-10-15 03:43:24 +0000137 add_definitions(-W3 -wd4996)
138endif()
139
140# Detect whether compiler is 64-bit
141if(MSVC AND CMAKE_CL_64)
142 set(SIMD_X86_64 1)
143 set(64BIT 1)
144elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
145 set(SIMD_X86_64 1)
146 set(64BIT 1)
147endif()
148
149if(64BIT)
150 message(STATUS "64-bit build")
151else()
152 message(STATUS "32-bit build")
153endif()
154
DRC7175e512013-04-23 22:29:00 +0000155if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
156 if(MSVC)
157 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME})
158 else()
159 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME}-gcc)
160 endif()
161 if(64BIT)
162 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_INSTALL_PREFIX_DEFAULT}64)
163 endif()
164 set(CMAKE_INSTALL_PREFIX "c:/${CMAKE_INSTALL_PREFIX_DEFAULT}" CACHE PATH
165 "Directory into which to install libjpeg-turbo (default: c:/${CMAKE_INSTALL_PREFIX_DEFAULT})"
166 FORCE)
167endif()
168
169message(STATUS "Install directory = ${CMAKE_INSTALL_PREFIX}")
170
DRC84697032010-10-15 03:43:24 +0000171configure_file(win/jconfig.h.in jconfig.h)
DRCff6961f2014-04-20 09:17:11 +0000172configure_file(win/jconfigint.h.in jconfigint.h)
DRC84697032010-10-15 03:43:24 +0000173
174include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
175
DRC957d6232011-04-01 11:13:11 +0000176if(WITH_JAVA)
177 find_package(Java)
178 find_package(JNI)
DRCdb425062011-04-03 06:10:18 +0000179 if(DEFINED JAVACFLAGS)
180 message(STATUS "Java compiler flags = ${JAVACFLAGS}")
181 endif()
DRC218c0c12011-02-05 06:01:18 +0000182endif()
183
DRC84697032010-10-15 03:43:24 +0000184
185#
186# Targets
187#
188
DRC245cfdf2010-11-23 17:11:06 +0000189set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
190 jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
191 jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
192 jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
193 jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
194 jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
195 jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
196
197if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
198 set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
199endif()
200
201if(WITH_ARITH_ENC)
202 set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
203endif()
204
205if(WITH_ARITH_DEC)
206 set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
207endif()
DRC84697032010-10-15 03:43:24 +0000208
209if(WITH_SIMD)
210 add_definitions(-DWITH_SIMD)
211 add_subdirectory(simd)
212 if(SIMD_X86_64)
213 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
214 else()
215 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
216 endif()
217 # This tells CMake that the "source" files haven't been generated yet
218 set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
219else()
220 set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
DRC6f4ba612010-10-16 21:27:38 +0000221 message(STATUS "Not using SIMD acceleration")
DRC84697032010-10-15 03:43:24 +0000222endif()
223
DRC957d6232011-04-01 11:13:11 +0000224if(WITH_JAVA)
225 add_subdirectory(java)
DRC665c96e2015-05-15 22:08:21 +0000226 set(ENABLE_SHARED TRUE)
DRC957d6232011-04-01 11:13:11 +0000227endif()
228
DRC665c96e2015-05-15 22:08:21 +0000229if(ENABLE_SHARED)
230 add_subdirectory(sharedlib)
DRC84697032010-10-15 03:43:24 +0000231endif()
DRC665c96e2015-05-15 22:08:21 +0000232
233if(ENABLE_STATIC OR WITH_TURBOJPEG)
234 add_library(jpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
235 if(NOT MSVC)
236 set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
237 endif()
238 if(WITH_SIMD)
239 add_dependencies(jpeg-static simd)
240 endif()
DRC84697032010-10-15 03:43:24 +0000241endif()
242
DRCaee4f722014-08-09 23:06:07 +0000243if(WITH_TURBOJPEG)
244 set(TURBOJPEG_SOURCES turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
245 if(WITH_JAVA)
246 set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
247 include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
248 endif()
249
DRC665c96e2015-05-15 22:08:21 +0000250 if(ENABLE_SHARED)
251 add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
252 set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
253 if(MINGW)
254 set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
255 endif()
256 target_link_libraries(turbojpeg jpeg-static)
257 set_target_properties(turbojpeg PROPERTIES LINK_INTERFACE_LIBRARIES "")
DRCaee4f722014-08-09 23:06:07 +0000258
DRC665c96e2015-05-15 22:08:21 +0000259 add_executable(tjunittest tjunittest.c tjutil.c)
260 target_link_libraries(tjunittest turbojpeg)
261
262 add_executable(tjbench tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
263 wrppm.c)
264 target_link_libraries(tjbench turbojpeg jpeg-static)
265 set_property(TARGET tjbench PROPERTY COMPILE_FLAGS
266 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
DRCaee4f722014-08-09 23:06:07 +0000267 endif()
268
DRC665c96e2015-05-15 22:08:21 +0000269 if(ENABLE_STATIC)
270 add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS}
271 turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
272 if(NOT MSVC)
273 set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
274 endif()
275 if(WITH_SIMD)
276 add_dependencies(turbojpeg-static simd)
277 endif()
DRCaee4f722014-08-09 23:06:07 +0000278
DRC665c96e2015-05-15 22:08:21 +0000279 add_executable(tjunittest-static tjunittest.c tjutil.c)
280 target_link_libraries(tjunittest-static turbojpeg-static)
DRCaee4f722014-08-09 23:06:07 +0000281
DRC665c96e2015-05-15 22:08:21 +0000282 add_executable(tjbench-static tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c
283 wrbmp.c wrppm.c)
284 target_link_libraries(tjbench-static turbojpeg-static jpeg-static)
285 set_property(TARGET tjbench-static PROPERTY COMPILE_FLAGS
286 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
287 endif()
DRC218c0c12011-02-05 06:01:18 +0000288endif()
289
DRCaee4f722014-08-09 23:06:07 +0000290if(WITH_12BIT)
291 set(COMPILE_FLAGS "-DGIF_SUPPORTED -DPPM_SUPPORTED -DUSE_SETMODE")
292else()
293 set(COMPILE_FLAGS "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
DRCecc58362015-06-27 07:56:29 +0000294 set(CJPEG_BMP_SOURCES rdbmp.c rdtarga.c)
295 set(DJPEG_BMP_SOURCES wrbmp.c wrtarga.c)
DRC84697032010-10-15 03:43:24 +0000296endif()
297
DRC665c96e2015-05-15 22:08:21 +0000298if(ENABLE_STATIC)
299 add_executable(cjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdswitch.c
300 ${CJPEG_BMP_SOURCES})
301 set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
302 target_link_libraries(cjpeg-static jpeg-static)
DRC84697032010-10-15 03:43:24 +0000303
DRC665c96e2015-05-15 22:08:21 +0000304 add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c
305 wrppm.c ${DJPEG_BMP_SOURCES})
306 set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
307 target_link_libraries(djpeg-static jpeg-static)
DRC84697032010-10-15 03:43:24 +0000308
DRC665c96e2015-05-15 22:08:21 +0000309 add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
310 target_link_libraries(jpegtran-static jpeg-static)
311 set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "-DUSE_SETMODE")
312endif()
DRC84697032010-10-15 03:43:24 +0000313
314add_executable(rdjpgcom rdjpgcom.c)
315
DRCa81f5422014-06-22 20:50:14 +0000316add_executable(wrjpgcom wrjpgcom.c)
DRC84697032010-10-15 03:43:24 +0000317
318
319#
320# Tests
321#
322
DRC957d6232011-04-01 11:13:11 +0000323if(MSVC_IDE)
324 set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/")
325else()
326 set(OBJDIR "")
327endif()
328
DRC84697032010-10-15 03:43:24 +0000329enable_testing()
DRC211d1e72013-01-13 11:25:20 +0000330
DRCaee4f722014-08-09 23:06:07 +0000331if(WITH_12BIT)
332 set(TESTORIG testorig12.jpg)
333 set(MD5_JPEG_RGB_ISLOW 9620f424569594bb9242b48498ad801f)
334 set(MD5_PPM_RGB_ISLOW f3301d2219783b8b3d942b7239fa50c0)
335 set(MD5_JPEG_422_IFAST_OPT 7322e3bd2f127f7de4b40d4480ce60e4)
336 set(MD5_PPM_422_IFAST 79807fa552899e66a04708f533e16950)
337 set(MD5_PPM_422M_IFAST 07737bfe8a7c1c87aaa393a0098d16b0)
338 set(MD5_JPEG_420_IFAST_Q100_PROG a1da220b5604081863a504297ed59e55)
339 set(MD5_PPM_420_Q100_IFAST 1b3730122709f53d007255e8dfd3305e)
340 set(MD5_PPM_420M_Q100_IFAST 980a1a3c5bf9510022869d30b7d26566)
341 set(MD5_JPEG_GRAY_ISLOW 235c90707b16e2e069f37c888b2636d9)
342 set(MD5_PPM_GRAY_ISLOW 7213c10af507ad467da5578ca5ee1fca)
343 set(MD5_PPM_GRAY_ISLOW_RGB e96ee81c30a6ed422d466338bd3de65d)
344 set(MD5_JPEG_420S_IFAST_OPT 7af8e60be4d9c227ec63ac9b6630855e)
345 set(MD5_JPEG_3x2_FLOAT_PROG a8c17daf77b457725ec929e215b603f8)
346 set(MD5_PPM_3x2_FLOAT 42876ab9e5c2f76a87d08db5fbd57956)
347 set(MD5_PPM_420M_ISLOW_2_1 4ca6be2a6f326ff9eaab63e70a8259c0)
348 set(MD5_PPM_420M_ISLOW_15_8 12aa9f9534c1b3d7ba047322226365eb)
349 set(MD5_PPM_420M_ISLOW_13_8 f7e22817c7b25e1393e4ec101e9d4e96)
350 set(MD5_PPM_420M_ISLOW_11_8 800a16f9f4dc9b293197bfe11be10a82)
351 set(MD5_PPM_420M_ISLOW_9_8 06b7a92a9bc69f4dc36ec40f1937d55c)
352 set(MD5_PPM_420M_ISLOW_7_8 3ec444a14a4ab4eab88ffc49c48eca43)
353 set(MD5_PPM_420M_ISLOW_3_4 3e726b7ea872445b19437d1c1d4f0d93)
354 set(MD5_PPM_420M_ISLOW_5_8 a8a771abdc94301d20ffac119b2caccd)
355 set(MD5_PPM_420M_ISLOW_1_2 b419124dd5568b085787234866102866)
356 set(MD5_PPM_420M_ISLOW_3_8 343d19015531b7bbe746124127244fa8)
357 set(MD5_PPM_420M_ISLOW_1_4 35fd59d866e44659edfa3c18db2a3edb)
358 set(MD5_PPM_420M_ISLOW_1_8 ccaed48ac0aedefda5d4abe4013f4ad7)
359 set(MD5_JPEG_CROP cdb35ff4b4519392690ea040c56ea99c)
DRC35db75e2014-05-06 22:44:46 +0000360else()
DRCaee4f722014-08-09 23:06:07 +0000361 set(TESTORIG testorig.jpg)
362 set(MD5_JPEG_RGB_ISLOW 768e970dd57b340ff1b83c9d3d47c77b)
363 set(MD5_PPM_RGB_ISLOW 00a257f5393fef8821f2b88ac7421291)
364 set(MD5_BMP_RGB_ISLOW_565 f07d2e75073e4bb10f6c6f4d36e2e3be)
365 set(MD5_BMP_RGB_ISLOW_565D 4cfa0928ef3e6bb626d7728c924cfda4)
366 set(MD5_JPEG_422_IFAST_OPT 2540287b79d913f91665e660303ab2c8)
367 set(MD5_PPM_422_IFAST 35bd6b3f833bad23de82acea847129fa)
368 set(MD5_PPM_422M_IFAST 8dbc65323d62cca7c91ba02dd1cfa81d)
369 set(MD5_BMP_422M_IFAST_565 3294bd4d9a1f2b3d08ea6020d0db7065)
370 set(MD5_BMP_422M_IFAST_565D da98c9c7b6039511be4a79a878a9abc1)
371 set(MD5_JPEG_420_IFAST_Q100_PROG 990cbe0329c882420a2094da7e5adade)
372 set(MD5_PPM_420_Q100_IFAST 5a732542015c278ff43635e473a8a294)
373 set(MD5_PPM_420M_Q100_IFAST ff692ee9323a3b424894862557c092f1)
374 set(MD5_JPEG_GRAY_ISLOW 72b51f894b8f4a10b3ee3066770aa38d)
375 set(MD5_PPM_GRAY_ISLOW 8d3596c56eace32f205deccc229aa5ed)
376 set(MD5_PPM_GRAY_ISLOW_RGB 116424ac07b79e5e801f00508eab48ec)
377 set(MD5_BMP_GRAY_ISLOW_565 12f78118e56a2f48b966f792fedf23cc)
378 set(MD5_BMP_GRAY_ISLOW_565D bdbbd616441a24354c98553df5dc82db)
379 set(MD5_JPEG_420S_IFAST_OPT 388708217ac46273ca33086b22827ed8)
380 if(WITH_SIMD)
381 set(MD5_JPEG_3x2_FLOAT_PROG 343e3f8caf8af5986ebaf0bdc13b5c71)
382 set(MD5_PPM_3x2_FLOAT 1a75f36e5904d6fc3a85a43da9ad89bb)
383 else()
384 set(MD5_JPEG_3x2_FLOAT_PROG 9bca803d2042bd1eb03819e2bf92b3e5)
385 set(MD5_PPM_3x2_FLOAT f6bfab038438ed8f5522fbd33595dcdc)
386 endif()
387 set(MD5_JPEG_420_ISLOW_ARI e986fb0a637a8d833d96e8a6d6d84ea1)
388 set(MD5_JPEG_444_ISLOW_PROGARI 0a8f1c8f66e113c3cf635df0a475a617)
389 set(MD5_PPM_420M_IFAST_ARI 72b59a99bcf1de24c5b27d151bde2437)
390 set(MD5_JPEG_420_ISLOW 9a68f56bc76e466aa7e52f415d0f4a5f)
391 set(MD5_PPM_420M_ISLOW_2_1 9f9de8c0612f8d06869b960b05abf9c9)
392 set(MD5_PPM_420M_ISLOW_15_8 b6875bc070720b899566cc06459b63b7)
393 set(MD5_PPM_420M_ISLOW_13_8 bc3452573c8152f6ae552939ee19f82f)
394 set(MD5_PPM_420M_ISLOW_11_8 d8cc73c0aaacd4556569b59437ba00a5)
395 set(MD5_PPM_420M_ISLOW_9_8 d25e61bc7eac0002f5b393aa223747b6)
396 set(MD5_PPM_420M_ISLOW_7_8 ddb564b7c74a09494016d6cd7502a946)
397 set(MD5_PPM_420M_ISLOW_3_4 8ed8e68808c3fbc4ea764fc9d2968646)
398 set(MD5_PPM_420M_ISLOW_5_8 a3363274999da2366a024efae6d16c9b)
399 set(MD5_PPM_420M_ISLOW_1_2 e692a315cea26b988c8e8b29a5dbcd81)
400 set(MD5_PPM_420M_ISLOW_3_8 79eca9175652ced755155c90e785a996)
401 set(MD5_PPM_420M_ISLOW_1_4 79cd778f8bf1a117690052cacdd54eca)
402 set(MD5_PPM_420M_ISLOW_1_8 391b3d4aca640c8567d6f8745eb2142f)
403 set(MD5_BMP_420_ISLOW_256 4980185e3776e89bd931736e1cddeee6)
404 set(MD5_BMP_420_ISLOW_565 bf9d13e16c4923b92e1faa604d7922cb)
405 set(MD5_BMP_420_ISLOW_565D 6bde71526acc44bcff76f696df8638d2)
406 set(MD5_BMP_420M_ISLOW_565 8dc0185245353cfa32ad97027342216f)
407 set(MD5_BMP_420M_ISLOW_565D d1be3a3339166255e76fa50a0d70d73e)
408 set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d)
DRC35db75e2014-05-06 22:44:46 +0000409endif()
DRC211d1e72013-01-13 11:25:20 +0000410
DRC957d6232011-04-01 11:13:11 +0000411if(WITH_JAVA)
DRC35db75e2014-05-06 22:44:46 +0000412 add_test(TJUnitTest
413 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
414 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
415 TJUnitTest)
416 add_test(TJUnitTest-yuv
417 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
418 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
419 TJUnitTest -yuv)
420 add_test(TJUnitTest-yuv-nopad
421 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
422 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
423 TJUnitTest -yuv -noyuvpad)
424 add_test(TJUnitTest-bi
425 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
426 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
427 TJUnitTest -bi)
428 add_test(TJUnitTest-bi-yuv
429 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
430 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
431 TJUnitTest -bi -yuv)
432 add_test(TJUnitTest-bi-yuv-nopad
433 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
434 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
435 TJUnitTest -bi -yuv -noyuvpad)
DRC957d6232011-04-01 11:13:11 +0000436endif()
DRC84697032010-10-15 03:43:24 +0000437
DRC665c96e2015-05-15 22:08:21 +0000438set(TEST_LIBTYPES "")
439if(ENABLE_SHARED)
440 set(TEST_LIBTYPES ${TEST_LIBTYPES} shared)
441endif()
442if(ENABLE_STATIC)
443 set(TEST_LIBTYPES ${TEST_LIBTYPES} static)
444endif()
445
446foreach(libtype ${TEST_LIBTYPES})
DRC35db75e2014-05-06 22:44:46 +0000447 if(libtype STREQUAL "shared")
448 set(dir sharedlib/)
449 else()
450 set(dir "")
451 set(suffix -static)
452 endif()
DRCaee4f722014-08-09 23:06:07 +0000453 if(WITH_TURBOJPEG)
454 add_test(tjunittest${suffix} tjunittest${suffix})
455 add_test(tjunittest${suffix}-alloc tjunittest${suffix} -alloc)
456 add_test(tjunittest${suffix}-yuv tjunittest${suffix} -yuv)
457 add_test(tjunittest${suffix}-yuv-alloc tjunittest${suffix} -yuv -alloc)
458 add_test(tjunittest${suffix}-yuv-nopad tjunittest${suffix} -yuv -noyuvpad)
459 endif()
DRC35db75e2014-05-06 22:44:46 +0000460
461 # These tests are carefully chosen to provide full coverage of as many of the
462 # underlying algorithms as possible (including all of the SIMD-accelerated
463 # ones.)
464
465 # CC: null SAMP: fullsize FDCT: islow ENT: huff
466 add_test(cjpeg${suffix}-rgb-islow
467 ${dir}cjpeg${suffix} -rgb -dct int -outfile testout_rgb_islow.jpg
468 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
469 add_test(cjpeg${suffix}-rgb-islow-cmp
470 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_RGB_ISLOW} -DFILE=testout_rgb_islow.jpg
471 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
472 # CC: null SAMP: fullsize IDCT: islow ENT: huff
473 add_test(djpeg${suffix}-rgb-islow
474 ${dir}djpeg${suffix} -dct int -ppm -outfile testout_rgb_islow.ppm
475 testout_rgb_islow.jpg)
476 add_test(djpeg${suffix}-rgb-islow-cmp
477 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_RGB_ISLOW} -DFILE=testout_rgb_islow.ppm
478 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRCaee4f722014-08-09 23:06:07 +0000479 if(NOT WITH_12BIT)
480 # CC: RGB->RGB565 SAMP: fullsize IDCT: islow ENT: huff
481 add_test(djpeg${suffix}-rgb-islow-565
482 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
483 -outfile testout_rgb_islow_565.bmp testout_rgb_islow.jpg)
484 add_test(djpeg${suffix}-rgb-islow-565-cmp
485 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_RGB_ISLOW_565}
486 -DFILE=testout_rgb_islow_565.bmp
487 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
488 # CC: RGB->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
489 add_test(djpeg${suffix}-rgb-islow-565D
490 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
491 -outfile testout_rgb_islow_565D.bmp testout_rgb_islow.jpg)
492 add_test(djpeg${suffix}-rgb-islow-565D-cmp
493 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_RGB_ISLOW_565D}
494 -DFILE=testout_rgb_islow_565D.bmp
495 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
496 endif()
DRC35db75e2014-05-06 22:44:46 +0000497
498 # CC: RGB->YCC SAMP: fullsize/h2v1 FDCT: ifast ENT: 2-pass huff
499 add_test(cjpeg${suffix}-422-ifast-opt
500 ${dir}cjpeg${suffix} -sample 2x1 -dct fast -opt
501 -outfile testout_422_ifast_opt.jpg
502 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
503 add_test(cjpeg${suffix}-422-ifast-opt-cmp
504 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_422_IFAST_OPT}
505 -DFILE=testout_422_ifast_opt.jpg
506 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
507 # CC: YCC->RGB SAMP: fullsize/h2v1 fancy IDCT: ifast ENT: huff
508 add_test(djpeg${suffix}-422-ifast
509 ${dir}djpeg${suffix} -dct fast -outfile testout_422_ifast.ppm
510 testout_422_ifast_opt.jpg)
511 add_test(djpeg${suffix}-422-ifast-cmp
512 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_422_IFAST} -DFILE=testout_422_ifast.ppm
513 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
514 # CC: YCC->RGB SAMP: h2v1 merged IDCT: ifast ENT: huff
515 add_test(djpeg${suffix}-422m-ifast
DRC78df2e62014-05-12 09:23:57 +0000516 ${dir}djpeg${suffix} -dct fast -nosmooth -outfile testout_422m_ifast.ppm
DRC35db75e2014-05-06 22:44:46 +0000517 testout_422_ifast_opt.jpg)
518 add_test(djpeg${suffix}-422m-ifast-cmp
519 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_422M_IFAST} -DFILE=testout_422m_ifast.ppm
520 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRCaee4f722014-08-09 23:06:07 +0000521 if(NOT WITH_12BIT)
522 # CC: YCC->RGB565 SAMP: h2v1 merged IDCT: ifast ENT: huff
523 add_test(djpeg${suffix}-422m-ifast-565
524 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
525 -outfile testout_422m_ifast_565.bmp testout_422_ifast_opt.jpg)
526 add_test(djpeg${suffix}-422m-ifast-565-cmp
527 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_422M_IFAST_565}
528 -DFILE=testout_422m_ifast_565.bmp
529 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
530 # CC: YCC->RGB565 (dithered) SAMP: h2v1 merged IDCT: ifast ENT: huff
531 add_test(djpeg${suffix}-422m-ifast-565D
532 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -bmp
533 -outfile testout_422m_ifast_565D.bmp testout_422_ifast_opt.jpg)
534 add_test(djpeg${suffix}-422m-ifast-565D-cmp
535 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_422M_IFAST_565D}
536 -DFILE=testout_422m_ifast_565D.bmp
537 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
538 endif()
DRC35db75e2014-05-06 22:44:46 +0000539
540 # CC: RGB->YCC SAMP: fullsize/h2v2 FDCT: ifast ENT: prog huff
541 add_test(cjpeg${suffix}-420-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000542 ${dir}cjpeg${suffix} -sample 2x2 -quality 100 -dct fast -prog
DRC35db75e2014-05-06 22:44:46 +0000543 -outfile testout_420_q100_ifast_prog.jpg
544 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
545 add_test(cjpeg${suffix}-420-q100-ifast-prog-cmp
546 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_IFAST_Q100_PROG}
547 -DFILE=testout_420_q100_ifast_prog.jpg
548 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
549 # CC: YCC->RGB SAMP: fullsize/h2v2 fancy IDCT: ifast ENT: prog huff
550 add_test(djpeg${suffix}-420-q100-ifast-prog
551 ${dir}djpeg${suffix} -dct fast -outfile testout_420_q100_ifast.ppm
552 testout_420_q100_ifast_prog.jpg)
553 add_test(djpeg${suffix}-420-q100-ifast-prog-cmp
554 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420_Q100_IFAST}
555 -DFILE=testout_420_q100_ifast.ppm
556 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
557 # CC: YCC->RGB SAMP: h2v2 merged IDCT: ifast ENT: prog huff
558 add_test(djpeg${suffix}-420m-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000559 ${dir}djpeg${suffix} -dct fast -nosmooth
DRC35db75e2014-05-06 22:44:46 +0000560 -outfile testout_420m_q100_ifast.ppm testout_420_q100_ifast_prog.jpg)
561 add_test(djpeg${suffix}-420m-q100-ifast-prog-cmp
562 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_Q100_IFAST}
563 -DFILE=testout_420m_q100_ifast.ppm
564 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
565
566 # CC: RGB->Gray SAMP: fullsize FDCT: islow ENT: huff
567 add_test(cjpeg${suffix}-gray-islow
568 ${dir}cjpeg${suffix} -gray -dct int -outfile testout_gray_islow.jpg
569 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
570 add_test(cjpeg${suffix}-gray-islow-cmp
571 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_GRAY_ISLOW}
572 -DFILE=testout_gray_islow.jpg
573 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000574 # CC: Gray->Gray SAMP: fullsize IDCT: islow ENT: huff
DRC35db75e2014-05-06 22:44:46 +0000575 add_test(djpeg${suffix}-gray-islow
576 ${dir}djpeg${suffix} -dct int -outfile testout_gray_islow.ppm
577 testout_gray_islow.jpg)
578 add_test(djpeg${suffix}-gray-islow-cmp
579 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_GRAY_ISLOW}
580 -DFILE=testout_gray_islow.ppm
581 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000582 # CC: Gray->RGB SAMP: fullsize IDCT: islow ENT: huff
583 add_test(djpeg${suffix}-gray-islow-rgb
584 ${dir}djpeg${suffix} -dct int -rgb -outfile testout_gray_islow_rgb.ppm
DRC35db75e2014-05-06 22:44:46 +0000585 testout_gray_islow.jpg)
DRC4c773cf2014-12-08 23:23:41 +0000586 add_test(djpeg${suffix}-gray-islow-rgb-cmp
DRC78df2e62014-05-12 09:23:57 +0000587 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_GRAY_ISLOW_RGB}
588 -DFILE=testout_gray_islow_rgb.ppm
589 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRCaee4f722014-08-09 23:06:07 +0000590 if(NOT WITH_12BIT)
591 # CC: Gray->RGB565 SAMP: fullsize IDCT: islow ENT: huff
592 add_test(djpeg${suffix}-gray-islow-565
593 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
594 -outfile testout_gray_islow_565.bmp testout_gray_islow.jpg)
595 add_test(djpeg${suffix}-gray-islow-565-cmp
596 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_GRAY_ISLOW_565}
597 -DFILE=testout_gray_islow_565.bmp
598 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
599 # CC: Gray->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
600 add_test(djpeg${suffix}-gray-islow-565D
601 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
602 -outfile testout_gray_islow_565D.bmp testout_gray_islow.jpg)
603 add_test(djpeg${suffix}-gray-islow-565D-cmp
604 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_GRAY_ISLOW_565D}
605 -DFILE=testout_gray_islow_565D.bmp
606 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
607 endif()
DRC35db75e2014-05-06 22:44:46 +0000608
609 # CC: RGB->YCC SAMP: fullsize smooth/h2v2 smooth FDCT: islow
610 # ENT: 2-pass huff
611 add_test(cjpeg${suffix}-420s-ifast-opt
612 ${dir}cjpeg${suffix} -sample 2x2 -smooth 1 -dct int -opt -outfile
613 testout_420s_ifast_opt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
614 add_test(cjpeg${suffix}-420s-ifast-opt-cmp
615 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420S_IFAST_OPT}
616 -DFILE=testout_420s_ifast_opt.jpg
617 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
618
619 # CC: RGB->YCC SAMP: fullsize/int FDCT: float ENT: prog huff
620 add_test(cjpeg${suffix}-3x2-float-prog
621 ${dir}cjpeg${suffix} -sample 3x2 -dct float -prog
622 -outfile testout_3x2_float_prog.jpg
623 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
624 add_test(cjpeg${suffix}-3x2-float-prog-cmp
625 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_3x2_FLOAT_PROG}
626 -DFILE=testout_3x2_float_prog.jpg
627 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
628 # CC: YCC->RGB SAMP: fullsize/int IDCT: float ENT: prog huff
629 add_test(djpeg${suffix}-3x2-float-prog
630 ${dir}djpeg${suffix} -dct float -outfile testout_3x2_float.ppm
631 testout_3x2_float_prog.jpg)
632 add_test(djpeg${suffix}-3x2-float-prog-cmp
633 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_3x2_FLOAT} -DFILE=testout_3x2_float.ppm
634 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
635
636 if(WITH_ARITH_ENC)
637 # CC: YCC->RGB SAMP: fullsize/h2v2 FDCT: islow ENT: arith
638 add_test(cjpeg${suffix}-420-islow-ari
639 ${dir}cjpeg${suffix} -dct int -arithmetic
640 -outfile testout_420_islow_ari.jpg
641 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
642 add_test(cjpeg${suffix}-420-islow-ari-cmp
643 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW_ARI}
644 -DFILE=testout_420_islow_ari.jpg
645 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
646 add_test(jpegtran${suffix}-420-islow-ari
647 ${dir}jpegtran${suffix} -arithmetic
648 -outfile testout_420_islow_ari.jpg
649 ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
650 add_test(jpegtran${suffix}-420-islow-ari-cmp
651 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW_ARI}
652 -DFILE=testout_420_islow_ari.jpg
653 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
654 # CC: YCC->RGB SAMP: fullsize FDCT: islow ENT: prog arith
655 add_test(cjpeg${suffix}-444-islow-progari
DRC78df2e62014-05-12 09:23:57 +0000656 ${dir}cjpeg${suffix} -sample 1x1 -dct int -progressive -arithmetic
DRC35db75e2014-05-06 22:44:46 +0000657 -outfile testout_444_islow_progari.jpg
658 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
659 add_test(cjpeg${suffix}-444-islow-progari-cmp
660 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_444_ISLOW_PROGARI}
661 -DFILE=testout_444_islow_progari.jpg
662 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
663 endif()
664 if(WITH_ARITH_DEC)
665 # CC: RGB->YCC SAMP: h2v2 merged IDCT: ifast ENT: arith
DRC4c773cf2014-12-08 23:23:41 +0000666 add_test(djpeg${suffix}-420m-ifast-ari
DRC35db75e2014-05-06 22:44:46 +0000667 ${dir}djpeg${suffix} -fast -ppm -outfile testout_420m_ifast_ari.ppm
668 ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
DRC4c773cf2014-12-08 23:23:41 +0000669 add_test(djpeg${suffix}-420m-ifast-ari-cmp
DRC35db75e2014-05-06 22:44:46 +0000670 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_IFAST_ARI}
671 -DFILE=testout_420m_ifast_ari.ppm
672 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
673 add_test(jpegtran${suffix}-420-islow
674 ${dir}jpegtran${suffix} -outfile testout_420_islow.jpg
675 ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
676 add_test(jpegtran${suffix}-420-islow-cmp
677 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW}
678 -DFILE=testout_420_islow.jpg
679 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
680 endif()
681
682 # 2/1-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 16x16 islow ENT: huff
683 # 15/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 15x15 islow ENT: huff
684 # 13/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 13x13 islow ENT: huff
685 # 11/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 11x11 islow ENT: huff
686 # 9/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 9x9 islow ENT: huff
687 # 7/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 7x7 islow/14x14 islow
688 # ENT: huff
689 # 3/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 6x6 islow/12x12 islow
690 # ENT: huff
691 # 5/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 5x5 islow/10x10 islow
692 # ENT: huff
693 # 1/2-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 4x4 islow/8x8 islow
694 # ENT: huff
695 # 3/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 3x3 islow/6x6 islow
696 # ENT: huff
697 # 1/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 2x2 islow/4x4 islow
698 # ENT: huff
699 # 1/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 1x1 islow/2x2 islow
700 # ENT: huff
701 foreach(scale 2_1 15_8 13_8 11_8 9_8 7_8 3_4 5_8 1_2 3_8 1_4 1_8)
702 string(REGEX REPLACE "_" "/" scalearg ${scale})
703 add_test(djpeg${suffix}-420m-islow-${scale}
DRC78df2e62014-05-12 09:23:57 +0000704 ${dir}djpeg${suffix} -dct int -scale ${scalearg} -nosmooth -ppm
DRC35db75e2014-05-06 22:44:46 +0000705 -outfile testout_420m_islow_${scale}.ppm
DRCaee4f722014-08-09 23:06:07 +0000706 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
DRC35db75e2014-05-06 22:44:46 +0000707 add_test(djpeg${suffix}-420m-islow-${scale}-cmp
708 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_ISLOW_${scale}}
709 -DFILE=testout_420m_islow_${scale}.ppm
710 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
711 endforeach()
712
DRCaee4f722014-08-09 23:06:07 +0000713 if(NOT WITH_12BIT)
714 # CC: YCC->RGB (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
715 add_test(djpeg${suffix}-420-islow-256
716 ${dir}djpeg${suffix} -dct int -colors 256 -bmp
717 -outfile testout_420_islow_256.bmp
718 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
719 add_test(djpeg${suffix}-420-islow-256-cmp
720 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_256}
721 -DFILE=testout_420_islow_256.bmp
722 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
723 # CC: YCC->RGB565 SAMP: h2v2 fancy IDCT: islow ENT: huff
724 add_test(djpeg${suffix}-420-islow-565
725 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
726 -outfile testout_420_islow_565.bmp
727 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
728 add_test(djpeg${suffix}-420-islow-565-cmp
729 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_565}
730 -DFILE=testout_420_islow_565.bmp
731 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
732 # CC: YCC->RGB565 (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
733 add_test(djpeg${suffix}-420-islow-565D
734 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
735 -outfile testout_420_islow_565D.bmp
736 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
737 add_test(djpeg${suffix}-420-islow-565D-cmp
738 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_565D}
739 -DFILE=testout_420_islow_565D.bmp
740 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
741 # CC: YCC->RGB565 SAMP: h2v2 merged IDCT: islow ENT: huff
742 add_test(djpeg${suffix}-420m-islow-565
743 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
744 -outfile testout_420m_islow_565.bmp
745 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
746 add_test(djpeg${suffix}-420m-islow-565-cmp
747 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420M_ISLOW_565}
748 -DFILE=testout_420m_islow_565.bmp
749 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
750 # CC: YCC->RGB565 (dithered) SAMP: h2v2 merged IDCT: islow ENT: huff
751 add_test(djpeg${suffix}-420m-islow-565D
752 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -bmp
753 -outfile testout_420m_islow_565D.bmp
754 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
755 add_test(djpeg${suffix}-420m-islow-565D-cmp
756 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420M_ISLOW_565D}
757 -DFILE=testout_420m_islow_565D.bmp
758 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
759 endif()
DRC35db75e2014-05-06 22:44:46 +0000760 add_test(jpegtran${suffix}-crop
761 ${dir}jpegtran${suffix} -crop 120x90+20+50 -transpose -perfect
DRCaee4f722014-08-09 23:06:07 +0000762 -outfile testout_crop.jpg ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
DRC35db75e2014-05-06 22:44:46 +0000763 add_test(jpegtran${suffix}-crop-cmp
764 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testout_crop.jpg
765 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
766
DRC0af8d672012-01-31 11:09:11 +0000767endforeach()
DRC2c0a4e12010-10-16 08:51:43 +0000768
DRCa0f878a2011-04-02 04:43:14 +0000769add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P
770 ${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake)
771
DRC2c0a4e12010-10-16 08:51:43 +0000772
773#
774# Installer
775#
776
DRC2c0a4e12010-10-16 08:51:43 +0000777if(MSVC)
778 set(INST_PLATFORM "Visual C++")
DRCb94f2de2011-03-22 09:31:25 +0000779 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
DRC7175e512013-04-23 22:29:00 +0000780 set(INST_REG_NAME ${CMAKE_PROJECT_NAME})
DRC2c0a4e12010-10-16 08:51:43 +0000781elseif(MINGW)
782 set(INST_PLATFORM GCC)
DRCb94f2de2011-03-22 09:31:25 +0000783 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
DRC7175e512013-04-23 22:29:00 +0000784 set(INST_REG_NAME ${CMAKE_PROJECT_NAME}-gcc)
DRC2c0a4e12010-10-16 08:51:43 +0000785 set(INST_DEFS -DGCC)
786endif()
787
788if(64BIT)
789 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
790 set(INST_NAME ${INST_NAME}64)
DRC7175e512013-04-23 22:29:00 +0000791 set(INST_REG_NAME ${INST_DIR}64)
DRC2c0a4e12010-10-16 08:51:43 +0000792 set(INST_DEFS ${INST_DEFS} -DWIN64)
793endif()
794
DRC957d6232011-04-01 11:13:11 +0000795if(WITH_JAVA)
796 set(INST_DEFS ${INST_DEFS} -DJAVA)
797endif()
798
DRC2c0a4e12010-10-16 08:51:43 +0000799if(MSVC_IDE)
DRC926e01f2011-04-06 06:35:38 +0000800 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
DRC2c0a4e12010-10-16 08:51:43 +0000801else()
802 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
803endif()
804
DRC9fe22da2014-04-16 23:30:38 +0000805STRING(REGEX REPLACE "/" "\\\\" INST_DIR ${CMAKE_INSTALL_PREFIX})
DRC7175e512013-04-23 22:29:00 +0000806
DRC2c0a4e12010-10-16 08:51:43 +0000807configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
808
DRC7175e512013-04-23 22:29:00 +0000809if(WITH_JAVA)
810 set(JAVA_DEPEND java)
811endif()
DRC2c0a4e12010-10-16 08:51:43 +0000812add_custom_target(installer
813 makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
DRCb94f2de2011-03-22 09:31:25 +0000814 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
DRC7175e512013-04-23 22:29:00 +0000815 cjpeg djpeg jpegtran tjbench ${JAVA_DEPEND}
DRC2c0a4e12010-10-16 08:51:43 +0000816 SOURCES libjpeg-turbo.nsi)
DRC7284c9a2010-10-16 21:55:14 +0000817
DRCaee4f722014-08-09 23:06:07 +0000818if(WITH_TURBOJPEG)
DRC665c96e2015-05-15 22:08:21 +0000819 if(ENABLE_SHARED)
820 install(TARGETS turbojpeg tjbench
821 ARCHIVE DESTINATION lib
822 LIBRARY DESTINATION lib
823 RUNTIME DESTINATION bin)
824 endif()
825 if(ENABLE_STATIC)
826 install(TARGETS turbojpeg-static ARCHIVE DESTINATION lib)
827 if(NOT ENABLE_SHARED)
828 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/tjbench-static.exe
829 DESTINATION bin RENAME tjbench.exe)
830 endif()
831 endif()
832 install(FILES ${CMAKE_SOURCE_DIR}/turbojpeg.h DESTINATION include)
DRCaee4f722014-08-09 23:06:07 +0000833endif()
DRC665c96e2015-05-15 22:08:21 +0000834
835if(ENABLE_STATIC)
836 install(TARGETS jpeg-static ARCHIVE DESTINATION lib)
837 if(NOT ENABLE_SHARED)
838 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/cjpeg-static.exe
839 DESTINATION bin RENAME cjpeg.exe)
840 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/djpeg-static.exe
841 DESTINATION bin RENAME djpeg.exe)
842 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/jpegtran-static.exe
843 DESTINATION bin RENAME jpegtran.exe)
844 endif()
845endif()
846
847install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION bin)
DRC7284c9a2010-10-16 21:55:14 +0000848
DRCa1647c82012-02-10 00:39:05 +0000849install(FILES ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/README-turbo.txt
DRC9fe22da2014-04-16 23:30:38 +0000850 ${CMAKE_SOURCE_DIR}/example.c ${CMAKE_SOURCE_DIR}/libjpeg.txt
DRCa1647c82012-02-10 00:39:05 +0000851 ${CMAKE_SOURCE_DIR}/structure.txt ${CMAKE_SOURCE_DIR}/usage.txt
852 ${CMAKE_SOURCE_DIR}/wizard.txt
DRC7284c9a2010-10-16 21:55:14 +0000853 DESTINATION doc)
DRCe2befde2010-10-17 07:28:08 +0000854
855install(FILES ${CMAKE_BINARY_DIR}/jconfig.h ${CMAKE_SOURCE_DIR}/jerror.h
856 ${CMAKE_SOURCE_DIR}/jmorecfg.h ${CMAKE_SOURCE_DIR}/jpeglib.h
DRC665c96e2015-05-15 22:08:21 +0000857 DESTINATION include)