blob: 3295deaf0f09365fdaf378bdb9b299cbc378c9f1 [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)
62 set(WITH_ARITH_ENC FALSE)
63 set(WITH_ARITH_DEC FALSE)
64 set(BITS_IN_JSAMPLE 12)
65 message(STATUS "12-bit JPEG support enabled")
66else()
67 set(BITS_IN_JSAMPLE 8)
68endif()
DRC245cfdf2010-11-23 17:11:06 +000069
70if(WITH_ARITH_ENC)
71 set(C_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000072 message(STATUS "Arithmetic encoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000073else()
DRC990e28d2011-01-04 21:40:11 +000074 message(STATUS "Arithmetic encoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000075endif()
76
77if(WITH_ARITH_DEC)
78 set(D_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000079 message(STATUS "Arithmetic decoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000080else()
DRC990e28d2011-01-04 21:40:11 +000081 message(STATUS "Arithmetic decoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000082endif()
83
DRCaee4f722014-08-09 23:06:07 +000084if(WITH_TURBOJPEG)
85 message(STATUS "TurboJPEG C wrapper enabled")
86else()
87 message(STATUS "TurboJPEG C wrapper disabled")
88endif()
89
DRC957d6232011-04-01 11:13:11 +000090if(WITH_JAVA)
DRC5039d732013-01-21 23:42:12 +000091 message(STATUS "TurboJPEG Java wrapper enabled")
DRC218c0c12011-02-05 06:01:18 +000092else()
DRC5039d732013-01-21 23:42:12 +000093 message(STATUS "TurboJPEG Java wrapper disabled")
DRC218c0c12011-02-05 06:01:18 +000094endif()
95
DRCab706232013-01-18 23:42:31 +000096set(SO_AGE 0)
97if(WITH_MEM_SRCDST)
98 set(SO_AGE 1)
99endif()
100
DRC84697032010-10-15 03:43:24 +0000101set(JPEG_LIB_VERSION 62)
102set(DLL_VERSION ${JPEG_LIB_VERSION})
DRCab706232013-01-18 23:42:31 +0000103set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +0000104if(WITH_JPEG8)
105 set(JPEG_LIB_VERSION 80)
106 set(DLL_VERSION 8)
DRCa9d5b252010-10-15 06:42:45 +0000107 set(FULLVERSION ${DLL_VERSION}.0.2)
DRCf38eee02011-02-18 07:00:38 +0000108 message(STATUS "Emulating libjpeg v8 API/ABI")
DRC84697032010-10-15 03:43:24 +0000109elseif(WITH_JPEG7)
110 set(JPEG_LIB_VERSION 70)
111 set(DLL_VERSION 7)
DRCab706232013-01-18 23:42:31 +0000112 set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +0000113 message(STATUS "Emulating libjpeg v7 API/ABI")
114endif(WITH_JPEG8)
115
DRCab706232013-01-18 23:42:31 +0000116if(WITH_MEM_SRCDST)
117 set(MEM_SRCDST_SUPPORTED 1)
118 message(STATUS "In-memory source/destination managers enabled")
119else()
120 message(STATUS "In-memory source/destination managers disabled")
121endif()
122
DRC84697032010-10-15 03:43:24 +0000123if(MSVC)
DRC89a3f972015-03-19 19:27:40 +0000124 option(WITH_CRT_DLL
125 "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."
126 FALSE)
127 if(NOT WITH_CRT_DLL)
128 # Use the static C library for all build types
129 foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
130 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
131 if(${var} MATCHES "/MD")
132 string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
133 endif()
134 endforeach()
135 endif()
DRC84697032010-10-15 03:43:24 +0000136 add_definitions(-W3 -wd4996)
137endif()
138
139# Detect whether compiler is 64-bit
140if(MSVC AND CMAKE_CL_64)
141 set(SIMD_X86_64 1)
142 set(64BIT 1)
143elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
144 set(SIMD_X86_64 1)
145 set(64BIT 1)
146endif()
147
148if(64BIT)
149 message(STATUS "64-bit build")
150else()
151 message(STATUS "32-bit build")
152endif()
153
DRC7175e512013-04-23 22:29:00 +0000154if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
155 if(MSVC)
156 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME})
157 else()
158 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME}-gcc)
159 endif()
160 if(64BIT)
161 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_INSTALL_PREFIX_DEFAULT}64)
162 endif()
163 set(CMAKE_INSTALL_PREFIX "c:/${CMAKE_INSTALL_PREFIX_DEFAULT}" CACHE PATH
164 "Directory into which to install libjpeg-turbo (default: c:/${CMAKE_INSTALL_PREFIX_DEFAULT})"
165 FORCE)
166endif()
167
168message(STATUS "Install directory = ${CMAKE_INSTALL_PREFIX}")
169
DRC84697032010-10-15 03:43:24 +0000170configure_file(win/jconfig.h.in jconfig.h)
DRCff6961f2014-04-20 09:17:11 +0000171configure_file(win/jconfigint.h.in jconfigint.h)
DRC84697032010-10-15 03:43:24 +0000172
173include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
174
DRC957d6232011-04-01 11:13:11 +0000175if(WITH_JAVA)
176 find_package(Java)
177 find_package(JNI)
DRCdb425062011-04-03 06:10:18 +0000178 if(DEFINED JAVACFLAGS)
179 message(STATUS "Java compiler flags = ${JAVACFLAGS}")
180 endif()
DRC218c0c12011-02-05 06:01:18 +0000181endif()
182
DRC84697032010-10-15 03:43:24 +0000183
184#
185# Targets
186#
187
DRC245cfdf2010-11-23 17:11:06 +0000188set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
189 jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
190 jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
191 jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
192 jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
193 jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
194 jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
195
196if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
197 set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
198endif()
199
200if(WITH_ARITH_ENC)
201 set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
202endif()
203
204if(WITH_ARITH_DEC)
205 set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
206endif()
DRC84697032010-10-15 03:43:24 +0000207
208if(WITH_SIMD)
209 add_definitions(-DWITH_SIMD)
210 add_subdirectory(simd)
211 if(SIMD_X86_64)
212 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
213 else()
214 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
215 endif()
216 # This tells CMake that the "source" files haven't been generated yet
217 set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
218else()
219 set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
DRC6f4ba612010-10-16 21:27:38 +0000220 message(STATUS "Not using SIMD acceleration")
DRC84697032010-10-15 03:43:24 +0000221endif()
222
DRC957d6232011-04-01 11:13:11 +0000223if(WITH_JAVA)
224 add_subdirectory(java)
DRC665c96e2015-05-15 22:08:21 +0000225 set(ENABLE_SHARED TRUE)
DRC957d6232011-04-01 11:13:11 +0000226endif()
227
DRC665c96e2015-05-15 22:08:21 +0000228if(ENABLE_SHARED)
229 add_subdirectory(sharedlib)
DRC84697032010-10-15 03:43:24 +0000230endif()
DRC665c96e2015-05-15 22:08:21 +0000231
232if(ENABLE_STATIC OR WITH_TURBOJPEG)
233 add_library(jpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
234 if(NOT MSVC)
235 set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
236 endif()
237 if(WITH_SIMD)
238 add_dependencies(jpeg-static simd)
239 endif()
DRC84697032010-10-15 03:43:24 +0000240endif()
241
DRCaee4f722014-08-09 23:06:07 +0000242if(WITH_TURBOJPEG)
243 set(TURBOJPEG_SOURCES turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
244 if(WITH_JAVA)
245 set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
246 include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
247 endif()
248
DRC665c96e2015-05-15 22:08:21 +0000249 if(ENABLE_SHARED)
250 add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
251 set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
252 if(MINGW)
253 set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
254 endif()
255 target_link_libraries(turbojpeg jpeg-static)
256 set_target_properties(turbojpeg PROPERTIES LINK_INTERFACE_LIBRARIES "")
DRCaee4f722014-08-09 23:06:07 +0000257
DRC665c96e2015-05-15 22:08:21 +0000258 add_executable(tjunittest tjunittest.c tjutil.c)
259 target_link_libraries(tjunittest turbojpeg)
260
261 add_executable(tjbench tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
262 wrppm.c)
263 target_link_libraries(tjbench turbojpeg jpeg-static)
264 set_property(TARGET tjbench PROPERTY COMPILE_FLAGS
265 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
DRCaee4f722014-08-09 23:06:07 +0000266 endif()
267
DRC665c96e2015-05-15 22:08:21 +0000268 if(ENABLE_STATIC)
269 add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS}
270 turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
271 if(NOT MSVC)
272 set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
273 endif()
274 if(WITH_SIMD)
275 add_dependencies(turbojpeg-static simd)
276 endif()
DRCaee4f722014-08-09 23:06:07 +0000277
DRC665c96e2015-05-15 22:08:21 +0000278 add_executable(tjunittest-static tjunittest.c tjutil.c)
279 target_link_libraries(tjunittest-static turbojpeg-static)
DRCaee4f722014-08-09 23:06:07 +0000280
DRC665c96e2015-05-15 22:08:21 +0000281 add_executable(tjbench-static tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c
282 wrbmp.c wrppm.c)
283 target_link_libraries(tjbench-static turbojpeg-static jpeg-static)
284 set_property(TARGET tjbench-static PROPERTY COMPILE_FLAGS
285 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
286 endif()
DRC218c0c12011-02-05 06:01:18 +0000287endif()
288
DRCaee4f722014-08-09 23:06:07 +0000289if(WITH_12BIT)
290 set(COMPILE_FLAGS "-DGIF_SUPPORTED -DPPM_SUPPORTED -DUSE_SETMODE")
291else()
292 set(COMPILE_FLAGS "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
293 set(CJPEG_BMP_SOURCES rdbmp.c rdtarga.c)
294 set(DJPEG_BMP_SOURCES wrbmp.c wrtarga.c)
DRC84697032010-10-15 03:43:24 +0000295endif()
296
DRC665c96e2015-05-15 22:08:21 +0000297if(ENABLE_STATIC)
298 add_executable(cjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdswitch.c
299 ${CJPEG_BMP_SOURCES})
300 set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
301 target_link_libraries(cjpeg-static jpeg-static)
DRC84697032010-10-15 03:43:24 +0000302
DRC665c96e2015-05-15 22:08:21 +0000303 add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c
304 wrppm.c ${DJPEG_BMP_SOURCES})
305 set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
306 target_link_libraries(djpeg-static jpeg-static)
DRC84697032010-10-15 03:43:24 +0000307
DRC665c96e2015-05-15 22:08:21 +0000308 add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
309 target_link_libraries(jpegtran-static jpeg-static)
310 set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "-DUSE_SETMODE")
311endif()
DRC84697032010-10-15 03:43:24 +0000312
313add_executable(rdjpgcom rdjpgcom.c)
314
DRCa81f5422014-06-22 20:50:14 +0000315add_executable(wrjpgcom wrjpgcom.c)
DRC84697032010-10-15 03:43:24 +0000316
317
318#
319# Tests
320#
321
DRC957d6232011-04-01 11:13:11 +0000322if(MSVC_IDE)
323 set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/")
324else()
325 set(OBJDIR "")
326endif()
327
DRC84697032010-10-15 03:43:24 +0000328enable_testing()
DRC211d1e72013-01-13 11:25:20 +0000329
DRCaee4f722014-08-09 23:06:07 +0000330if(WITH_12BIT)
331 set(TESTORIG testorig12.jpg)
332 set(MD5_JPEG_RGB_ISLOW 9620f424569594bb9242b48498ad801f)
333 set(MD5_PPM_RGB_ISLOW f3301d2219783b8b3d942b7239fa50c0)
334 set(MD5_JPEG_422_IFAST_OPT 7322e3bd2f127f7de4b40d4480ce60e4)
335 set(MD5_PPM_422_IFAST 79807fa552899e66a04708f533e16950)
336 set(MD5_PPM_422M_IFAST 07737bfe8a7c1c87aaa393a0098d16b0)
337 set(MD5_JPEG_420_IFAST_Q100_PROG a1da220b5604081863a504297ed59e55)
338 set(MD5_PPM_420_Q100_IFAST 1b3730122709f53d007255e8dfd3305e)
339 set(MD5_PPM_420M_Q100_IFAST 980a1a3c5bf9510022869d30b7d26566)
340 set(MD5_JPEG_GRAY_ISLOW 235c90707b16e2e069f37c888b2636d9)
341 set(MD5_PPM_GRAY_ISLOW 7213c10af507ad467da5578ca5ee1fca)
342 set(MD5_PPM_GRAY_ISLOW_RGB e96ee81c30a6ed422d466338bd3de65d)
343 set(MD5_JPEG_420S_IFAST_OPT 7af8e60be4d9c227ec63ac9b6630855e)
344 set(MD5_JPEG_3x2_FLOAT_PROG a8c17daf77b457725ec929e215b603f8)
345 set(MD5_PPM_3x2_FLOAT 42876ab9e5c2f76a87d08db5fbd57956)
346 set(MD5_PPM_420M_ISLOW_2_1 4ca6be2a6f326ff9eaab63e70a8259c0)
347 set(MD5_PPM_420M_ISLOW_15_8 12aa9f9534c1b3d7ba047322226365eb)
348 set(MD5_PPM_420M_ISLOW_13_8 f7e22817c7b25e1393e4ec101e9d4e96)
349 set(MD5_PPM_420M_ISLOW_11_8 800a16f9f4dc9b293197bfe11be10a82)
350 set(MD5_PPM_420M_ISLOW_9_8 06b7a92a9bc69f4dc36ec40f1937d55c)
351 set(MD5_PPM_420M_ISLOW_7_8 3ec444a14a4ab4eab88ffc49c48eca43)
352 set(MD5_PPM_420M_ISLOW_3_4 3e726b7ea872445b19437d1c1d4f0d93)
353 set(MD5_PPM_420M_ISLOW_5_8 a8a771abdc94301d20ffac119b2caccd)
354 set(MD5_PPM_420M_ISLOW_1_2 b419124dd5568b085787234866102866)
355 set(MD5_PPM_420M_ISLOW_3_8 343d19015531b7bbe746124127244fa8)
356 set(MD5_PPM_420M_ISLOW_1_4 35fd59d866e44659edfa3c18db2a3edb)
357 set(MD5_PPM_420M_ISLOW_1_8 ccaed48ac0aedefda5d4abe4013f4ad7)
358 set(MD5_JPEG_CROP cdb35ff4b4519392690ea040c56ea99c)
DRC35db75e2014-05-06 22:44:46 +0000359else()
DRCaee4f722014-08-09 23:06:07 +0000360 set(TESTORIG testorig.jpg)
361 set(MD5_JPEG_RGB_ISLOW 768e970dd57b340ff1b83c9d3d47c77b)
362 set(MD5_PPM_RGB_ISLOW 00a257f5393fef8821f2b88ac7421291)
363 set(MD5_BMP_RGB_ISLOW_565 f07d2e75073e4bb10f6c6f4d36e2e3be)
364 set(MD5_BMP_RGB_ISLOW_565D 4cfa0928ef3e6bb626d7728c924cfda4)
365 set(MD5_JPEG_422_IFAST_OPT 2540287b79d913f91665e660303ab2c8)
366 set(MD5_PPM_422_IFAST 35bd6b3f833bad23de82acea847129fa)
367 set(MD5_PPM_422M_IFAST 8dbc65323d62cca7c91ba02dd1cfa81d)
368 set(MD5_BMP_422M_IFAST_565 3294bd4d9a1f2b3d08ea6020d0db7065)
369 set(MD5_BMP_422M_IFAST_565D da98c9c7b6039511be4a79a878a9abc1)
370 set(MD5_JPEG_420_IFAST_Q100_PROG 990cbe0329c882420a2094da7e5adade)
371 set(MD5_PPM_420_Q100_IFAST 5a732542015c278ff43635e473a8a294)
372 set(MD5_PPM_420M_Q100_IFAST ff692ee9323a3b424894862557c092f1)
373 set(MD5_JPEG_GRAY_ISLOW 72b51f894b8f4a10b3ee3066770aa38d)
374 set(MD5_PPM_GRAY_ISLOW 8d3596c56eace32f205deccc229aa5ed)
375 set(MD5_PPM_GRAY_ISLOW_RGB 116424ac07b79e5e801f00508eab48ec)
376 set(MD5_BMP_GRAY_ISLOW_565 12f78118e56a2f48b966f792fedf23cc)
377 set(MD5_BMP_GRAY_ISLOW_565D bdbbd616441a24354c98553df5dc82db)
378 set(MD5_JPEG_420S_IFAST_OPT 388708217ac46273ca33086b22827ed8)
379 if(WITH_SIMD)
380 set(MD5_JPEG_3x2_FLOAT_PROG 343e3f8caf8af5986ebaf0bdc13b5c71)
381 set(MD5_PPM_3x2_FLOAT 1a75f36e5904d6fc3a85a43da9ad89bb)
382 else()
383 set(MD5_JPEG_3x2_FLOAT_PROG 9bca803d2042bd1eb03819e2bf92b3e5)
384 set(MD5_PPM_3x2_FLOAT f6bfab038438ed8f5522fbd33595dcdc)
385 endif()
386 set(MD5_JPEG_420_ISLOW_ARI e986fb0a637a8d833d96e8a6d6d84ea1)
387 set(MD5_JPEG_444_ISLOW_PROGARI 0a8f1c8f66e113c3cf635df0a475a617)
388 set(MD5_PPM_420M_IFAST_ARI 72b59a99bcf1de24c5b27d151bde2437)
389 set(MD5_JPEG_420_ISLOW 9a68f56bc76e466aa7e52f415d0f4a5f)
390 set(MD5_PPM_420M_ISLOW_2_1 9f9de8c0612f8d06869b960b05abf9c9)
391 set(MD5_PPM_420M_ISLOW_15_8 b6875bc070720b899566cc06459b63b7)
392 set(MD5_PPM_420M_ISLOW_13_8 bc3452573c8152f6ae552939ee19f82f)
393 set(MD5_PPM_420M_ISLOW_11_8 d8cc73c0aaacd4556569b59437ba00a5)
394 set(MD5_PPM_420M_ISLOW_9_8 d25e61bc7eac0002f5b393aa223747b6)
395 set(MD5_PPM_420M_ISLOW_7_8 ddb564b7c74a09494016d6cd7502a946)
396 set(MD5_PPM_420M_ISLOW_3_4 8ed8e68808c3fbc4ea764fc9d2968646)
397 set(MD5_PPM_420M_ISLOW_5_8 a3363274999da2366a024efae6d16c9b)
398 set(MD5_PPM_420M_ISLOW_1_2 e692a315cea26b988c8e8b29a5dbcd81)
399 set(MD5_PPM_420M_ISLOW_3_8 79eca9175652ced755155c90e785a996)
400 set(MD5_PPM_420M_ISLOW_1_4 79cd778f8bf1a117690052cacdd54eca)
401 set(MD5_PPM_420M_ISLOW_1_8 391b3d4aca640c8567d6f8745eb2142f)
402 set(MD5_BMP_420_ISLOW_256 4980185e3776e89bd931736e1cddeee6)
403 set(MD5_BMP_420_ISLOW_565 bf9d13e16c4923b92e1faa604d7922cb)
404 set(MD5_BMP_420_ISLOW_565D 6bde71526acc44bcff76f696df8638d2)
405 set(MD5_BMP_420M_ISLOW_565 8dc0185245353cfa32ad97027342216f)
406 set(MD5_BMP_420M_ISLOW_565D d1be3a3339166255e76fa50a0d70d73e)
407 set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d)
DRC35db75e2014-05-06 22:44:46 +0000408endif()
DRC211d1e72013-01-13 11:25:20 +0000409
DRC957d6232011-04-01 11:13:11 +0000410if(WITH_JAVA)
DRC35db75e2014-05-06 22:44:46 +0000411 add_test(TJUnitTest
412 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
413 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
414 TJUnitTest)
415 add_test(TJUnitTest-yuv
416 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
417 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
418 TJUnitTest -yuv)
419 add_test(TJUnitTest-yuv-nopad
420 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
421 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
422 TJUnitTest -yuv -noyuvpad)
423 add_test(TJUnitTest-bi
424 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
425 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
426 TJUnitTest -bi)
427 add_test(TJUnitTest-bi-yuv
428 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
429 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
430 TJUnitTest -bi -yuv)
431 add_test(TJUnitTest-bi-yuv-nopad
432 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
433 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
434 TJUnitTest -bi -yuv -noyuvpad)
DRC957d6232011-04-01 11:13:11 +0000435endif()
DRC84697032010-10-15 03:43:24 +0000436
DRC665c96e2015-05-15 22:08:21 +0000437set(TEST_LIBTYPES "")
438if(ENABLE_SHARED)
439 set(TEST_LIBTYPES ${TEST_LIBTYPES} shared)
440endif()
441if(ENABLE_STATIC)
442 set(TEST_LIBTYPES ${TEST_LIBTYPES} static)
443endif()
444
445foreach(libtype ${TEST_LIBTYPES})
DRC35db75e2014-05-06 22:44:46 +0000446 if(libtype STREQUAL "shared")
447 set(dir sharedlib/)
448 else()
449 set(dir "")
450 set(suffix -static)
451 endif()
DRCaee4f722014-08-09 23:06:07 +0000452 if(WITH_TURBOJPEG)
453 add_test(tjunittest${suffix} tjunittest${suffix})
454 add_test(tjunittest${suffix}-alloc tjunittest${suffix} -alloc)
455 add_test(tjunittest${suffix}-yuv tjunittest${suffix} -yuv)
456 add_test(tjunittest${suffix}-yuv-alloc tjunittest${suffix} -yuv -alloc)
457 add_test(tjunittest${suffix}-yuv-nopad tjunittest${suffix} -yuv -noyuvpad)
458 endif()
DRC35db75e2014-05-06 22:44:46 +0000459
460 # These tests are carefully chosen to provide full coverage of as many of the
461 # underlying algorithms as possible (including all of the SIMD-accelerated
462 # ones.)
463
464 # CC: null SAMP: fullsize FDCT: islow ENT: huff
465 add_test(cjpeg${suffix}-rgb-islow
466 ${dir}cjpeg${suffix} -rgb -dct int -outfile testout_rgb_islow.jpg
467 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
468 add_test(cjpeg${suffix}-rgb-islow-cmp
469 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_RGB_ISLOW} -DFILE=testout_rgb_islow.jpg
470 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
471 # CC: null SAMP: fullsize IDCT: islow ENT: huff
472 add_test(djpeg${suffix}-rgb-islow
473 ${dir}djpeg${suffix} -dct int -ppm -outfile testout_rgb_islow.ppm
474 testout_rgb_islow.jpg)
475 add_test(djpeg${suffix}-rgb-islow-cmp
476 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_RGB_ISLOW} -DFILE=testout_rgb_islow.ppm
477 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRCaee4f722014-08-09 23:06:07 +0000478 if(NOT WITH_12BIT)
479 # CC: RGB->RGB565 SAMP: fullsize IDCT: islow ENT: huff
480 add_test(djpeg${suffix}-rgb-islow-565
481 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
482 -outfile testout_rgb_islow_565.bmp testout_rgb_islow.jpg)
483 add_test(djpeg${suffix}-rgb-islow-565-cmp
484 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_RGB_ISLOW_565}
485 -DFILE=testout_rgb_islow_565.bmp
486 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
487 # CC: RGB->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
488 add_test(djpeg${suffix}-rgb-islow-565D
489 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
490 -outfile testout_rgb_islow_565D.bmp testout_rgb_islow.jpg)
491 add_test(djpeg${suffix}-rgb-islow-565D-cmp
492 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_RGB_ISLOW_565D}
493 -DFILE=testout_rgb_islow_565D.bmp
494 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
495 endif()
DRC35db75e2014-05-06 22:44:46 +0000496
497 # CC: RGB->YCC SAMP: fullsize/h2v1 FDCT: ifast ENT: 2-pass huff
498 add_test(cjpeg${suffix}-422-ifast-opt
499 ${dir}cjpeg${suffix} -sample 2x1 -dct fast -opt
500 -outfile testout_422_ifast_opt.jpg
501 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
502 add_test(cjpeg${suffix}-422-ifast-opt-cmp
503 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_422_IFAST_OPT}
504 -DFILE=testout_422_ifast_opt.jpg
505 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
506 # CC: YCC->RGB SAMP: fullsize/h2v1 fancy IDCT: ifast ENT: huff
507 add_test(djpeg${suffix}-422-ifast
508 ${dir}djpeg${suffix} -dct fast -outfile testout_422_ifast.ppm
509 testout_422_ifast_opt.jpg)
510 add_test(djpeg${suffix}-422-ifast-cmp
511 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_422_IFAST} -DFILE=testout_422_ifast.ppm
512 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
513 # CC: YCC->RGB SAMP: h2v1 merged IDCT: ifast ENT: huff
514 add_test(djpeg${suffix}-422m-ifast
DRC78df2e62014-05-12 09:23:57 +0000515 ${dir}djpeg${suffix} -dct fast -nosmooth -outfile testout_422m_ifast.ppm
DRC35db75e2014-05-06 22:44:46 +0000516 testout_422_ifast_opt.jpg)
517 add_test(djpeg${suffix}-422m-ifast-cmp
518 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_422M_IFAST} -DFILE=testout_422m_ifast.ppm
519 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRCaee4f722014-08-09 23:06:07 +0000520 if(NOT WITH_12BIT)
521 # CC: YCC->RGB565 SAMP: h2v1 merged IDCT: ifast ENT: huff
522 add_test(djpeg${suffix}-422m-ifast-565
523 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
524 -outfile testout_422m_ifast_565.bmp testout_422_ifast_opt.jpg)
525 add_test(djpeg${suffix}-422m-ifast-565-cmp
526 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_422M_IFAST_565}
527 -DFILE=testout_422m_ifast_565.bmp
528 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
529 # CC: YCC->RGB565 (dithered) SAMP: h2v1 merged IDCT: ifast ENT: huff
530 add_test(djpeg${suffix}-422m-ifast-565D
531 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -bmp
532 -outfile testout_422m_ifast_565D.bmp testout_422_ifast_opt.jpg)
533 add_test(djpeg${suffix}-422m-ifast-565D-cmp
534 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_422M_IFAST_565D}
535 -DFILE=testout_422m_ifast_565D.bmp
536 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
537 endif()
DRC35db75e2014-05-06 22:44:46 +0000538
539 # CC: RGB->YCC SAMP: fullsize/h2v2 FDCT: ifast ENT: prog huff
540 add_test(cjpeg${suffix}-420-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000541 ${dir}cjpeg${suffix} -sample 2x2 -quality 100 -dct fast -prog
DRC35db75e2014-05-06 22:44:46 +0000542 -outfile testout_420_q100_ifast_prog.jpg
543 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
544 add_test(cjpeg${suffix}-420-q100-ifast-prog-cmp
545 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_IFAST_Q100_PROG}
546 -DFILE=testout_420_q100_ifast_prog.jpg
547 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
548 # CC: YCC->RGB SAMP: fullsize/h2v2 fancy IDCT: ifast ENT: prog huff
549 add_test(djpeg${suffix}-420-q100-ifast-prog
550 ${dir}djpeg${suffix} -dct fast -outfile testout_420_q100_ifast.ppm
551 testout_420_q100_ifast_prog.jpg)
552 add_test(djpeg${suffix}-420-q100-ifast-prog-cmp
553 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420_Q100_IFAST}
554 -DFILE=testout_420_q100_ifast.ppm
555 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
556 # CC: YCC->RGB SAMP: h2v2 merged IDCT: ifast ENT: prog huff
557 add_test(djpeg${suffix}-420m-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000558 ${dir}djpeg${suffix} -dct fast -nosmooth
DRC35db75e2014-05-06 22:44:46 +0000559 -outfile testout_420m_q100_ifast.ppm testout_420_q100_ifast_prog.jpg)
560 add_test(djpeg${suffix}-420m-q100-ifast-prog-cmp
561 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_Q100_IFAST}
562 -DFILE=testout_420m_q100_ifast.ppm
563 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
564
565 # CC: RGB->Gray SAMP: fullsize FDCT: islow ENT: huff
566 add_test(cjpeg${suffix}-gray-islow
567 ${dir}cjpeg${suffix} -gray -dct int -outfile testout_gray_islow.jpg
568 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
569 add_test(cjpeg${suffix}-gray-islow-cmp
570 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_GRAY_ISLOW}
571 -DFILE=testout_gray_islow.jpg
572 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000573 # CC: Gray->Gray SAMP: fullsize IDCT: islow ENT: huff
DRC35db75e2014-05-06 22:44:46 +0000574 add_test(djpeg${suffix}-gray-islow
575 ${dir}djpeg${suffix} -dct int -outfile testout_gray_islow.ppm
576 testout_gray_islow.jpg)
577 add_test(djpeg${suffix}-gray-islow-cmp
578 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_GRAY_ISLOW}
579 -DFILE=testout_gray_islow.ppm
580 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000581 # CC: Gray->RGB SAMP: fullsize IDCT: islow ENT: huff
582 add_test(djpeg${suffix}-gray-islow-rgb
583 ${dir}djpeg${suffix} -dct int -rgb -outfile testout_gray_islow_rgb.ppm
DRC35db75e2014-05-06 22:44:46 +0000584 testout_gray_islow.jpg)
DRC4c773cf2014-12-08 23:23:41 +0000585 add_test(djpeg${suffix}-gray-islow-rgb-cmp
DRC78df2e62014-05-12 09:23:57 +0000586 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_GRAY_ISLOW_RGB}
587 -DFILE=testout_gray_islow_rgb.ppm
588 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRCaee4f722014-08-09 23:06:07 +0000589 if(NOT WITH_12BIT)
590 # CC: Gray->RGB565 SAMP: fullsize IDCT: islow ENT: huff
591 add_test(djpeg${suffix}-gray-islow-565
592 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
593 -outfile testout_gray_islow_565.bmp testout_gray_islow.jpg)
594 add_test(djpeg${suffix}-gray-islow-565-cmp
595 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_GRAY_ISLOW_565}
596 -DFILE=testout_gray_islow_565.bmp
597 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
598 # CC: Gray->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
599 add_test(djpeg${suffix}-gray-islow-565D
600 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
601 -outfile testout_gray_islow_565D.bmp testout_gray_islow.jpg)
602 add_test(djpeg${suffix}-gray-islow-565D-cmp
603 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_GRAY_ISLOW_565D}
604 -DFILE=testout_gray_islow_565D.bmp
605 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
606 endif()
DRC35db75e2014-05-06 22:44:46 +0000607
608 # CC: RGB->YCC SAMP: fullsize smooth/h2v2 smooth FDCT: islow
609 # ENT: 2-pass huff
610 add_test(cjpeg${suffix}-420s-ifast-opt
611 ${dir}cjpeg${suffix} -sample 2x2 -smooth 1 -dct int -opt -outfile
612 testout_420s_ifast_opt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
613 add_test(cjpeg${suffix}-420s-ifast-opt-cmp
614 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420S_IFAST_OPT}
615 -DFILE=testout_420s_ifast_opt.jpg
616 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
617
618 # CC: RGB->YCC SAMP: fullsize/int FDCT: float ENT: prog huff
619 add_test(cjpeg${suffix}-3x2-float-prog
620 ${dir}cjpeg${suffix} -sample 3x2 -dct float -prog
621 -outfile testout_3x2_float_prog.jpg
622 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
623 add_test(cjpeg${suffix}-3x2-float-prog-cmp
624 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_3x2_FLOAT_PROG}
625 -DFILE=testout_3x2_float_prog.jpg
626 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
627 # CC: YCC->RGB SAMP: fullsize/int IDCT: float ENT: prog huff
628 add_test(djpeg${suffix}-3x2-float-prog
629 ${dir}djpeg${suffix} -dct float -outfile testout_3x2_float.ppm
630 testout_3x2_float_prog.jpg)
631 add_test(djpeg${suffix}-3x2-float-prog-cmp
632 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_3x2_FLOAT} -DFILE=testout_3x2_float.ppm
633 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
634
635 if(WITH_ARITH_ENC)
636 # CC: YCC->RGB SAMP: fullsize/h2v2 FDCT: islow ENT: arith
637 add_test(cjpeg${suffix}-420-islow-ari
638 ${dir}cjpeg${suffix} -dct int -arithmetic
639 -outfile testout_420_islow_ari.jpg
640 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
641 add_test(cjpeg${suffix}-420-islow-ari-cmp
642 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW_ARI}
643 -DFILE=testout_420_islow_ari.jpg
644 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
645 add_test(jpegtran${suffix}-420-islow-ari
646 ${dir}jpegtran${suffix} -arithmetic
647 -outfile testout_420_islow_ari.jpg
648 ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
649 add_test(jpegtran${suffix}-420-islow-ari-cmp
650 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW_ARI}
651 -DFILE=testout_420_islow_ari.jpg
652 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
653 # CC: YCC->RGB SAMP: fullsize FDCT: islow ENT: prog arith
654 add_test(cjpeg${suffix}-444-islow-progari
DRC78df2e62014-05-12 09:23:57 +0000655 ${dir}cjpeg${suffix} -sample 1x1 -dct int -progressive -arithmetic
DRC35db75e2014-05-06 22:44:46 +0000656 -outfile testout_444_islow_progari.jpg
657 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
658 add_test(cjpeg${suffix}-444-islow-progari-cmp
659 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_444_ISLOW_PROGARI}
660 -DFILE=testout_444_islow_progari.jpg
661 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
662 endif()
663 if(WITH_ARITH_DEC)
664 # CC: RGB->YCC SAMP: h2v2 merged IDCT: ifast ENT: arith
DRC4c773cf2014-12-08 23:23:41 +0000665 add_test(djpeg${suffix}-420m-ifast-ari
DRC35db75e2014-05-06 22:44:46 +0000666 ${dir}djpeg${suffix} -fast -ppm -outfile testout_420m_ifast_ari.ppm
667 ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
DRC4c773cf2014-12-08 23:23:41 +0000668 add_test(djpeg${suffix}-420m-ifast-ari-cmp
DRC35db75e2014-05-06 22:44:46 +0000669 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_IFAST_ARI}
670 -DFILE=testout_420m_ifast_ari.ppm
671 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
672 add_test(jpegtran${suffix}-420-islow
673 ${dir}jpegtran${suffix} -outfile testout_420_islow.jpg
674 ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
675 add_test(jpegtran${suffix}-420-islow-cmp
676 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW}
677 -DFILE=testout_420_islow.jpg
678 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
679 endif()
680
681 # 2/1-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 16x16 islow ENT: huff
682 # 15/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 15x15 islow ENT: huff
683 # 13/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 13x13 islow ENT: huff
684 # 11/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 11x11 islow ENT: huff
685 # 9/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 9x9 islow ENT: huff
686 # 7/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 7x7 islow/14x14 islow
687 # ENT: huff
688 # 3/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 6x6 islow/12x12 islow
689 # ENT: huff
690 # 5/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 5x5 islow/10x10 islow
691 # ENT: huff
692 # 1/2-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 4x4 islow/8x8 islow
693 # ENT: huff
694 # 3/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 3x3 islow/6x6 islow
695 # ENT: huff
696 # 1/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 2x2 islow/4x4 islow
697 # ENT: huff
698 # 1/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 1x1 islow/2x2 islow
699 # ENT: huff
700 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)
701 string(REGEX REPLACE "_" "/" scalearg ${scale})
702 add_test(djpeg${suffix}-420m-islow-${scale}
DRC78df2e62014-05-12 09:23:57 +0000703 ${dir}djpeg${suffix} -dct int -scale ${scalearg} -nosmooth -ppm
DRC35db75e2014-05-06 22:44:46 +0000704 -outfile testout_420m_islow_${scale}.ppm
DRCaee4f722014-08-09 23:06:07 +0000705 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
DRC35db75e2014-05-06 22:44:46 +0000706 add_test(djpeg${suffix}-420m-islow-${scale}-cmp
707 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_ISLOW_${scale}}
708 -DFILE=testout_420m_islow_${scale}.ppm
709 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
710 endforeach()
711
DRCaee4f722014-08-09 23:06:07 +0000712 if(NOT WITH_12BIT)
713 # CC: YCC->RGB (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
714 add_test(djpeg${suffix}-420-islow-256
715 ${dir}djpeg${suffix} -dct int -colors 256 -bmp
716 -outfile testout_420_islow_256.bmp
717 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
718 add_test(djpeg${suffix}-420-islow-256-cmp
719 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_256}
720 -DFILE=testout_420_islow_256.bmp
721 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
722 # CC: YCC->RGB565 SAMP: h2v2 fancy IDCT: islow ENT: huff
723 add_test(djpeg${suffix}-420-islow-565
724 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
725 -outfile testout_420_islow_565.bmp
726 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
727 add_test(djpeg${suffix}-420-islow-565-cmp
728 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_565}
729 -DFILE=testout_420_islow_565.bmp
730 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
731 # CC: YCC->RGB565 (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
732 add_test(djpeg${suffix}-420-islow-565D
733 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
734 -outfile testout_420_islow_565D.bmp
735 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
736 add_test(djpeg${suffix}-420-islow-565D-cmp
737 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_565D}
738 -DFILE=testout_420_islow_565D.bmp
739 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
740 # CC: YCC->RGB565 SAMP: h2v2 merged IDCT: islow ENT: huff
741 add_test(djpeg${suffix}-420m-islow-565
742 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
743 -outfile testout_420m_islow_565.bmp
744 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
745 add_test(djpeg${suffix}-420m-islow-565-cmp
746 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420M_ISLOW_565}
747 -DFILE=testout_420m_islow_565.bmp
748 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
749 # CC: YCC->RGB565 (dithered) SAMP: h2v2 merged IDCT: islow ENT: huff
750 add_test(djpeg${suffix}-420m-islow-565D
751 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -bmp
752 -outfile testout_420m_islow_565D.bmp
753 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
754 add_test(djpeg${suffix}-420m-islow-565D-cmp
755 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420M_ISLOW_565D}
756 -DFILE=testout_420m_islow_565D.bmp
757 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
758 endif()
DRC35db75e2014-05-06 22:44:46 +0000759 add_test(jpegtran${suffix}-crop
760 ${dir}jpegtran${suffix} -crop 120x90+20+50 -transpose -perfect
DRCaee4f722014-08-09 23:06:07 +0000761 -outfile testout_crop.jpg ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
DRC35db75e2014-05-06 22:44:46 +0000762 add_test(jpegtran${suffix}-crop-cmp
763 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testout_crop.jpg
764 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
765
DRC0af8d672012-01-31 11:09:11 +0000766endforeach()
DRC2c0a4e12010-10-16 08:51:43 +0000767
DRCa0f878a2011-04-02 04:43:14 +0000768add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P
769 ${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake)
770
DRC2c0a4e12010-10-16 08:51:43 +0000771
772#
773# Installer
774#
775
DRC2c0a4e12010-10-16 08:51:43 +0000776if(MSVC)
777 set(INST_PLATFORM "Visual C++")
DRCb94f2de2011-03-22 09:31:25 +0000778 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
DRC7175e512013-04-23 22:29:00 +0000779 set(INST_REG_NAME ${CMAKE_PROJECT_NAME})
DRC2c0a4e12010-10-16 08:51:43 +0000780elseif(MINGW)
781 set(INST_PLATFORM GCC)
DRCb94f2de2011-03-22 09:31:25 +0000782 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
DRC7175e512013-04-23 22:29:00 +0000783 set(INST_REG_NAME ${CMAKE_PROJECT_NAME}-gcc)
DRC2c0a4e12010-10-16 08:51:43 +0000784 set(INST_DEFS -DGCC)
785endif()
786
787if(64BIT)
788 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
789 set(INST_NAME ${INST_NAME}64)
DRC7175e512013-04-23 22:29:00 +0000790 set(INST_REG_NAME ${INST_DIR}64)
DRC2c0a4e12010-10-16 08:51:43 +0000791 set(INST_DEFS ${INST_DEFS} -DWIN64)
792endif()
793
DRC957d6232011-04-01 11:13:11 +0000794if(WITH_JAVA)
795 set(INST_DEFS ${INST_DEFS} -DJAVA)
796endif()
797
DRC2c0a4e12010-10-16 08:51:43 +0000798if(MSVC_IDE)
DRC926e01f2011-04-06 06:35:38 +0000799 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
DRC2c0a4e12010-10-16 08:51:43 +0000800else()
801 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
802endif()
803
DRC9fe22da2014-04-16 23:30:38 +0000804STRING(REGEX REPLACE "/" "\\\\" INST_DIR ${CMAKE_INSTALL_PREFIX})
DRC7175e512013-04-23 22:29:00 +0000805
DRC2c0a4e12010-10-16 08:51:43 +0000806configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
807
DRC7175e512013-04-23 22:29:00 +0000808if(WITH_JAVA)
809 set(JAVA_DEPEND java)
810endif()
DRC2c0a4e12010-10-16 08:51:43 +0000811add_custom_target(installer
812 makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
DRCb94f2de2011-03-22 09:31:25 +0000813 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
DRC7175e512013-04-23 22:29:00 +0000814 cjpeg djpeg jpegtran tjbench ${JAVA_DEPEND}
DRC2c0a4e12010-10-16 08:51:43 +0000815 SOURCES libjpeg-turbo.nsi)
DRC7284c9a2010-10-16 21:55:14 +0000816
DRCaee4f722014-08-09 23:06:07 +0000817if(WITH_TURBOJPEG)
DRC665c96e2015-05-15 22:08:21 +0000818 if(ENABLE_SHARED)
819 install(TARGETS turbojpeg tjbench
820 ARCHIVE DESTINATION lib
821 LIBRARY DESTINATION lib
822 RUNTIME DESTINATION bin)
823 endif()
824 if(ENABLE_STATIC)
825 install(TARGETS turbojpeg-static ARCHIVE DESTINATION lib)
826 if(NOT ENABLE_SHARED)
827 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/tjbench-static.exe
828 DESTINATION bin RENAME tjbench.exe)
829 endif()
830 endif()
831 install(FILES ${CMAKE_SOURCE_DIR}/turbojpeg.h DESTINATION include)
DRCaee4f722014-08-09 23:06:07 +0000832endif()
DRC665c96e2015-05-15 22:08:21 +0000833
834if(ENABLE_STATIC)
835 install(TARGETS jpeg-static ARCHIVE DESTINATION lib)
836 if(NOT ENABLE_SHARED)
837 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/cjpeg-static.exe
838 DESTINATION bin RENAME cjpeg.exe)
839 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/djpeg-static.exe
840 DESTINATION bin RENAME djpeg.exe)
841 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/jpegtran-static.exe
842 DESTINATION bin RENAME jpegtran.exe)
843 endif()
844endif()
845
846install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION bin)
DRC7284c9a2010-10-16 21:55:14 +0000847
DRCa1647c82012-02-10 00:39:05 +0000848install(FILES ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/README-turbo.txt
DRC9fe22da2014-04-16 23:30:38 +0000849 ${CMAKE_SOURCE_DIR}/example.c ${CMAKE_SOURCE_DIR}/libjpeg.txt
DRCa1647c82012-02-10 00:39:05 +0000850 ${CMAKE_SOURCE_DIR}/structure.txt ${CMAKE_SOURCE_DIR}/usage.txt
851 ${CMAKE_SOURCE_DIR}/wizard.txt
DRC7284c9a2010-10-16 21:55:14 +0000852 DESTINATION doc)
DRCe2befde2010-10-17 07:28:08 +0000853
854install(FILES ${CMAKE_BINARY_DIR}/jconfig.h ${CMAKE_SOURCE_DIR}/jerror.h
855 ${CMAKE_SOURCE_DIR}/jmorecfg.h ${CMAKE_SOURCE_DIR}/jpeglib.h
DRC665c96e2015-05-15 22:08:21 +0000856 DESTINATION include)