blob: 46c6450ebf5b320dfc4ebff45ddac1fa7071b41d [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)
DRCf72f1f22014-09-04 18:51:31 +000012set(VERSION 1.4.80)
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)
56
57if(WITH_12BIT)
58 set(WITH_SIMD FALSE)
59 set(WITH_TURBOJPEG FALSE)
60 set(WITH_ARITH_ENC FALSE)
61 set(WITH_ARITH_DEC FALSE)
62 set(BITS_IN_JSAMPLE 12)
63 message(STATUS "12-bit JPEG support enabled")
64else()
65 set(BITS_IN_JSAMPLE 8)
66endif()
DRC245cfdf2010-11-23 17:11:06 +000067
68if(WITH_ARITH_ENC)
69 set(C_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000070 message(STATUS "Arithmetic encoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000071else()
DRC990e28d2011-01-04 21:40:11 +000072 message(STATUS "Arithmetic encoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000073endif()
74
75if(WITH_ARITH_DEC)
76 set(D_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000077 message(STATUS "Arithmetic decoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000078else()
DRC990e28d2011-01-04 21:40:11 +000079 message(STATUS "Arithmetic decoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000080endif()
81
DRCaee4f722014-08-09 23:06:07 +000082if(WITH_TURBOJPEG)
83 message(STATUS "TurboJPEG C wrapper enabled")
84else()
85 message(STATUS "TurboJPEG C wrapper disabled")
86endif()
87
DRC957d6232011-04-01 11:13:11 +000088if(WITH_JAVA)
DRC5039d732013-01-21 23:42:12 +000089 message(STATUS "TurboJPEG Java wrapper enabled")
DRC218c0c12011-02-05 06:01:18 +000090else()
DRC5039d732013-01-21 23:42:12 +000091 message(STATUS "TurboJPEG Java wrapper disabled")
DRC218c0c12011-02-05 06:01:18 +000092endif()
93
DRCab706232013-01-18 23:42:31 +000094set(SO_AGE 0)
95if(WITH_MEM_SRCDST)
96 set(SO_AGE 1)
97endif()
98
DRC84697032010-10-15 03:43:24 +000099set(JPEG_LIB_VERSION 62)
100set(DLL_VERSION ${JPEG_LIB_VERSION})
DRCab706232013-01-18 23:42:31 +0000101set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +0000102if(WITH_JPEG8)
103 set(JPEG_LIB_VERSION 80)
104 set(DLL_VERSION 8)
DRCa9d5b252010-10-15 06:42:45 +0000105 set(FULLVERSION ${DLL_VERSION}.0.2)
DRCf38eee02011-02-18 07:00:38 +0000106 message(STATUS "Emulating libjpeg v8 API/ABI")
DRC84697032010-10-15 03:43:24 +0000107elseif(WITH_JPEG7)
108 set(JPEG_LIB_VERSION 70)
109 set(DLL_VERSION 7)
DRCab706232013-01-18 23:42:31 +0000110 set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +0000111 message(STATUS "Emulating libjpeg v7 API/ABI")
112endif(WITH_JPEG8)
113
DRCab706232013-01-18 23:42:31 +0000114if(WITH_MEM_SRCDST)
115 set(MEM_SRCDST_SUPPORTED 1)
116 message(STATUS "In-memory source/destination managers enabled")
117else()
118 message(STATUS "In-memory source/destination managers disabled")
119endif()
120
DRC84697032010-10-15 03:43:24 +0000121if(MSVC)
122 # Use the static C library for all build types
123 foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
DRC2e4d0442011-02-08 01:18:37 +0000124 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
DRC84697032010-10-15 03:43:24 +0000125 if(${var} MATCHES "/MD")
126 string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
127 endif()
128 endforeach()
129
130 add_definitions(-W3 -wd4996)
131endif()
132
133# Detect whether compiler is 64-bit
134if(MSVC AND CMAKE_CL_64)
135 set(SIMD_X86_64 1)
136 set(64BIT 1)
137elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
138 set(SIMD_X86_64 1)
139 set(64BIT 1)
140endif()
141
142if(64BIT)
143 message(STATUS "64-bit build")
144else()
145 message(STATUS "32-bit build")
146endif()
147
DRC7175e512013-04-23 22:29:00 +0000148if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
149 if(MSVC)
150 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME})
151 else()
152 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME}-gcc)
153 endif()
154 if(64BIT)
155 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_INSTALL_PREFIX_DEFAULT}64)
156 endif()
157 set(CMAKE_INSTALL_PREFIX "c:/${CMAKE_INSTALL_PREFIX_DEFAULT}" CACHE PATH
158 "Directory into which to install libjpeg-turbo (default: c:/${CMAKE_INSTALL_PREFIX_DEFAULT})"
159 FORCE)
160endif()
161
162message(STATUS "Install directory = ${CMAKE_INSTALL_PREFIX}")
163
DRC84697032010-10-15 03:43:24 +0000164configure_file(win/jconfig.h.in jconfig.h)
DRCff6961f2014-04-20 09:17:11 +0000165configure_file(win/jconfigint.h.in jconfigint.h)
DRC84697032010-10-15 03:43:24 +0000166
167include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
168
DRC957d6232011-04-01 11:13:11 +0000169if(WITH_JAVA)
170 find_package(Java)
171 find_package(JNI)
DRCdb425062011-04-03 06:10:18 +0000172 if(DEFINED JAVACFLAGS)
173 message(STATUS "Java compiler flags = ${JAVACFLAGS}")
174 endif()
DRC218c0c12011-02-05 06:01:18 +0000175endif()
176
DRC84697032010-10-15 03:43:24 +0000177
178#
179# Targets
180#
181
DRC245cfdf2010-11-23 17:11:06 +0000182set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
183 jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
184 jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
185 jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
186 jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
187 jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
188 jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
189
190if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
191 set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
192endif()
193
194if(WITH_ARITH_ENC)
195 set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
196endif()
197
198if(WITH_ARITH_DEC)
199 set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
200endif()
DRC84697032010-10-15 03:43:24 +0000201
202if(WITH_SIMD)
203 add_definitions(-DWITH_SIMD)
204 add_subdirectory(simd)
205 if(SIMD_X86_64)
206 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
207 else()
208 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
209 endif()
210 # This tells CMake that the "source" files haven't been generated yet
211 set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
212else()
213 set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
DRC6f4ba612010-10-16 21:27:38 +0000214 message(STATUS "Not using SIMD acceleration")
DRC84697032010-10-15 03:43:24 +0000215endif()
216
DRC957d6232011-04-01 11:13:11 +0000217if(WITH_JAVA)
218 add_subdirectory(java)
219endif()
220
DRC84697032010-10-15 03:43:24 +0000221add_subdirectory(sharedlib)
222
223add_library(jpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
DRC84697032010-10-15 03:43:24 +0000224if(NOT MSVC)
225 set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
226endif()
227if(WITH_SIMD)
228 add_dependencies(jpeg-static simd)
229endif()
230
DRCaee4f722014-08-09 23:06:07 +0000231if(WITH_TURBOJPEG)
232 set(TURBOJPEG_SOURCES turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
233 if(WITH_JAVA)
234 set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
235 include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
236 endif()
237
238 add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
239 set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
240 if(MINGW)
241 set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
242 endif()
243 target_link_libraries(turbojpeg jpeg-static)
244 set_target_properties(turbojpeg PROPERTIES LINK_INTERFACE_LIBRARIES "")
245
246 add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS}
247 turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
248 if(NOT MSVC)
249 set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
250 endif()
251 if(WITH_SIMD)
252 add_dependencies(turbojpeg-static simd)
253 endif()
254
255 add_executable(tjunittest tjunittest.c tjutil.c)
256 target_link_libraries(tjunittest turbojpeg)
257
258 add_executable(tjunittest-static tjunittest.c tjutil.c)
259 target_link_libraries(tjunittest-static turbojpeg-static)
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")
266
267 add_executable(tjbench-static tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
268 wrppm.c)
269 target_link_libraries(tjbench-static turbojpeg-static jpeg-static)
270 set_property(TARGET tjbench-static PROPERTY COMPILE_FLAGS
271 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
DRC218c0c12011-02-05 06:01:18 +0000272endif()
273
DRCaee4f722014-08-09 23:06:07 +0000274if(WITH_12BIT)
275 set(COMPILE_FLAGS "-DGIF_SUPPORTED -DPPM_SUPPORTED -DUSE_SETMODE")
276else()
277 set(COMPILE_FLAGS "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
278 set(CJPEG_BMP_SOURCES rdbmp.c rdtarga.c)
279 set(DJPEG_BMP_SOURCES wrbmp.c wrtarga.c)
DRC84697032010-10-15 03:43:24 +0000280endif()
281
DRCaee4f722014-08-09 23:06:07 +0000282add_executable(cjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdswitch.c
283 ${CJPEG_BMP_SOURCES})
284set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
DRC84697032010-10-15 03:43:24 +0000285target_link_libraries(cjpeg-static jpeg-static)
286
DRCaee4f722014-08-09 23:06:07 +0000287add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c
288 wrppm.c ${DJPEG_BMP_SOURCES})
289set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
DRC84697032010-10-15 03:43:24 +0000290target_link_libraries(djpeg-static jpeg-static)
291
292add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
293target_link_libraries(jpegtran-static jpeg-static)
DRC7e3fd2f2011-05-25 06:04:43 +0000294set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "-DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000295
296add_executable(rdjpgcom rdjpgcom.c)
297
DRCa81f5422014-06-22 20:50:14 +0000298add_executable(wrjpgcom wrjpgcom.c)
DRC84697032010-10-15 03:43:24 +0000299
300
301#
302# Tests
303#
304
DRC957d6232011-04-01 11:13:11 +0000305if(MSVC_IDE)
306 set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/")
307else()
308 set(OBJDIR "")
309endif()
310
DRC84697032010-10-15 03:43:24 +0000311enable_testing()
DRC211d1e72013-01-13 11:25:20 +0000312
DRCaee4f722014-08-09 23:06:07 +0000313if(WITH_12BIT)
314 set(TESTORIG testorig12.jpg)
315 set(MD5_JPEG_RGB_ISLOW 9620f424569594bb9242b48498ad801f)
316 set(MD5_PPM_RGB_ISLOW f3301d2219783b8b3d942b7239fa50c0)
317 set(MD5_JPEG_422_IFAST_OPT 7322e3bd2f127f7de4b40d4480ce60e4)
318 set(MD5_PPM_422_IFAST 79807fa552899e66a04708f533e16950)
319 set(MD5_PPM_422M_IFAST 07737bfe8a7c1c87aaa393a0098d16b0)
320 set(MD5_JPEG_420_IFAST_Q100_PROG a1da220b5604081863a504297ed59e55)
321 set(MD5_PPM_420_Q100_IFAST 1b3730122709f53d007255e8dfd3305e)
322 set(MD5_PPM_420M_Q100_IFAST 980a1a3c5bf9510022869d30b7d26566)
323 set(MD5_JPEG_GRAY_ISLOW 235c90707b16e2e069f37c888b2636d9)
324 set(MD5_PPM_GRAY_ISLOW 7213c10af507ad467da5578ca5ee1fca)
325 set(MD5_PPM_GRAY_ISLOW_RGB e96ee81c30a6ed422d466338bd3de65d)
326 set(MD5_JPEG_420S_IFAST_OPT 7af8e60be4d9c227ec63ac9b6630855e)
327 set(MD5_JPEG_3x2_FLOAT_PROG a8c17daf77b457725ec929e215b603f8)
328 set(MD5_PPM_3x2_FLOAT 42876ab9e5c2f76a87d08db5fbd57956)
329 set(MD5_PPM_420M_ISLOW_2_1 4ca6be2a6f326ff9eaab63e70a8259c0)
330 set(MD5_PPM_420M_ISLOW_15_8 12aa9f9534c1b3d7ba047322226365eb)
331 set(MD5_PPM_420M_ISLOW_13_8 f7e22817c7b25e1393e4ec101e9d4e96)
332 set(MD5_PPM_420M_ISLOW_11_8 800a16f9f4dc9b293197bfe11be10a82)
333 set(MD5_PPM_420M_ISLOW_9_8 06b7a92a9bc69f4dc36ec40f1937d55c)
334 set(MD5_PPM_420M_ISLOW_7_8 3ec444a14a4ab4eab88ffc49c48eca43)
335 set(MD5_PPM_420M_ISLOW_3_4 3e726b7ea872445b19437d1c1d4f0d93)
336 set(MD5_PPM_420M_ISLOW_5_8 a8a771abdc94301d20ffac119b2caccd)
337 set(MD5_PPM_420M_ISLOW_1_2 b419124dd5568b085787234866102866)
338 set(MD5_PPM_420M_ISLOW_3_8 343d19015531b7bbe746124127244fa8)
339 set(MD5_PPM_420M_ISLOW_1_4 35fd59d866e44659edfa3c18db2a3edb)
340 set(MD5_PPM_420M_ISLOW_1_8 ccaed48ac0aedefda5d4abe4013f4ad7)
341 set(MD5_JPEG_CROP cdb35ff4b4519392690ea040c56ea99c)
DRC35db75e2014-05-06 22:44:46 +0000342else()
DRCaee4f722014-08-09 23:06:07 +0000343 set(TESTORIG testorig.jpg)
344 set(MD5_JPEG_RGB_ISLOW 768e970dd57b340ff1b83c9d3d47c77b)
345 set(MD5_PPM_RGB_ISLOW 00a257f5393fef8821f2b88ac7421291)
346 set(MD5_BMP_RGB_ISLOW_565 f07d2e75073e4bb10f6c6f4d36e2e3be)
347 set(MD5_BMP_RGB_ISLOW_565D 4cfa0928ef3e6bb626d7728c924cfda4)
348 set(MD5_JPEG_422_IFAST_OPT 2540287b79d913f91665e660303ab2c8)
349 set(MD5_PPM_422_IFAST 35bd6b3f833bad23de82acea847129fa)
350 set(MD5_PPM_422M_IFAST 8dbc65323d62cca7c91ba02dd1cfa81d)
351 set(MD5_BMP_422M_IFAST_565 3294bd4d9a1f2b3d08ea6020d0db7065)
352 set(MD5_BMP_422M_IFAST_565D da98c9c7b6039511be4a79a878a9abc1)
353 set(MD5_JPEG_420_IFAST_Q100_PROG 990cbe0329c882420a2094da7e5adade)
354 set(MD5_PPM_420_Q100_IFAST 5a732542015c278ff43635e473a8a294)
355 set(MD5_PPM_420M_Q100_IFAST ff692ee9323a3b424894862557c092f1)
356 set(MD5_JPEG_GRAY_ISLOW 72b51f894b8f4a10b3ee3066770aa38d)
357 set(MD5_PPM_GRAY_ISLOW 8d3596c56eace32f205deccc229aa5ed)
358 set(MD5_PPM_GRAY_ISLOW_RGB 116424ac07b79e5e801f00508eab48ec)
359 set(MD5_BMP_GRAY_ISLOW_565 12f78118e56a2f48b966f792fedf23cc)
360 set(MD5_BMP_GRAY_ISLOW_565D bdbbd616441a24354c98553df5dc82db)
361 set(MD5_JPEG_420S_IFAST_OPT 388708217ac46273ca33086b22827ed8)
362 if(WITH_SIMD)
363 set(MD5_JPEG_3x2_FLOAT_PROG 343e3f8caf8af5986ebaf0bdc13b5c71)
364 set(MD5_PPM_3x2_FLOAT 1a75f36e5904d6fc3a85a43da9ad89bb)
365 else()
366 set(MD5_JPEG_3x2_FLOAT_PROG 9bca803d2042bd1eb03819e2bf92b3e5)
367 set(MD5_PPM_3x2_FLOAT f6bfab038438ed8f5522fbd33595dcdc)
368 endif()
369 set(MD5_JPEG_420_ISLOW_ARI e986fb0a637a8d833d96e8a6d6d84ea1)
370 set(MD5_JPEG_444_ISLOW_PROGARI 0a8f1c8f66e113c3cf635df0a475a617)
371 set(MD5_PPM_420M_IFAST_ARI 72b59a99bcf1de24c5b27d151bde2437)
372 set(MD5_JPEG_420_ISLOW 9a68f56bc76e466aa7e52f415d0f4a5f)
373 set(MD5_PPM_420M_ISLOW_2_1 9f9de8c0612f8d06869b960b05abf9c9)
374 set(MD5_PPM_420M_ISLOW_15_8 b6875bc070720b899566cc06459b63b7)
375 set(MD5_PPM_420M_ISLOW_13_8 bc3452573c8152f6ae552939ee19f82f)
376 set(MD5_PPM_420M_ISLOW_11_8 d8cc73c0aaacd4556569b59437ba00a5)
377 set(MD5_PPM_420M_ISLOW_9_8 d25e61bc7eac0002f5b393aa223747b6)
378 set(MD5_PPM_420M_ISLOW_7_8 ddb564b7c74a09494016d6cd7502a946)
379 set(MD5_PPM_420M_ISLOW_3_4 8ed8e68808c3fbc4ea764fc9d2968646)
380 set(MD5_PPM_420M_ISLOW_5_8 a3363274999da2366a024efae6d16c9b)
381 set(MD5_PPM_420M_ISLOW_1_2 e692a315cea26b988c8e8b29a5dbcd81)
382 set(MD5_PPM_420M_ISLOW_3_8 79eca9175652ced755155c90e785a996)
383 set(MD5_PPM_420M_ISLOW_1_4 79cd778f8bf1a117690052cacdd54eca)
384 set(MD5_PPM_420M_ISLOW_1_8 391b3d4aca640c8567d6f8745eb2142f)
385 set(MD5_BMP_420_ISLOW_256 4980185e3776e89bd931736e1cddeee6)
386 set(MD5_BMP_420_ISLOW_565 bf9d13e16c4923b92e1faa604d7922cb)
387 set(MD5_BMP_420_ISLOW_565D 6bde71526acc44bcff76f696df8638d2)
388 set(MD5_BMP_420M_ISLOW_565 8dc0185245353cfa32ad97027342216f)
389 set(MD5_BMP_420M_ISLOW_565D d1be3a3339166255e76fa50a0d70d73e)
390 set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d)
DRC35db75e2014-05-06 22:44:46 +0000391endif()
DRC211d1e72013-01-13 11:25:20 +0000392
DRC957d6232011-04-01 11:13:11 +0000393if(WITH_JAVA)
DRC35db75e2014-05-06 22:44:46 +0000394 add_test(TJUnitTest
395 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
396 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
397 TJUnitTest)
398 add_test(TJUnitTest-yuv
399 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
400 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
401 TJUnitTest -yuv)
402 add_test(TJUnitTest-yuv-nopad
403 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
404 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
405 TJUnitTest -yuv -noyuvpad)
406 add_test(TJUnitTest-bi
407 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
408 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
409 TJUnitTest -bi)
410 add_test(TJUnitTest-bi-yuv
411 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
412 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
413 TJUnitTest -bi -yuv)
414 add_test(TJUnitTest-bi-yuv-nopad
415 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
416 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
417 TJUnitTest -bi -yuv -noyuvpad)
DRC957d6232011-04-01 11:13:11 +0000418endif()
DRC84697032010-10-15 03:43:24 +0000419
DRC35db75e2014-05-06 22:44:46 +0000420foreach(libtype shared static)
421 if(libtype STREQUAL "shared")
422 set(dir sharedlib/)
423 else()
424 set(dir "")
425 set(suffix -static)
426 endif()
DRCaee4f722014-08-09 23:06:07 +0000427 if(WITH_TURBOJPEG)
428 add_test(tjunittest${suffix} tjunittest${suffix})
429 add_test(tjunittest${suffix}-alloc tjunittest${suffix} -alloc)
430 add_test(tjunittest${suffix}-yuv tjunittest${suffix} -yuv)
431 add_test(tjunittest${suffix}-yuv-alloc tjunittest${suffix} -yuv -alloc)
432 add_test(tjunittest${suffix}-yuv-nopad tjunittest${suffix} -yuv -noyuvpad)
433 endif()
DRC35db75e2014-05-06 22:44:46 +0000434
435 # These tests are carefully chosen to provide full coverage of as many of the
436 # underlying algorithms as possible (including all of the SIMD-accelerated
437 # ones.)
438
439 # CC: null SAMP: fullsize FDCT: islow ENT: huff
440 add_test(cjpeg${suffix}-rgb-islow
441 ${dir}cjpeg${suffix} -rgb -dct int -outfile testout_rgb_islow.jpg
442 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
443 add_test(cjpeg${suffix}-rgb-islow-cmp
444 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_RGB_ISLOW} -DFILE=testout_rgb_islow.jpg
445 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
446 # CC: null SAMP: fullsize IDCT: islow ENT: huff
447 add_test(djpeg${suffix}-rgb-islow
448 ${dir}djpeg${suffix} -dct int -ppm -outfile testout_rgb_islow.ppm
449 testout_rgb_islow.jpg)
450 add_test(djpeg${suffix}-rgb-islow-cmp
451 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_RGB_ISLOW} -DFILE=testout_rgb_islow.ppm
452 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRCaee4f722014-08-09 23:06:07 +0000453 if(NOT WITH_12BIT)
454 # CC: RGB->RGB565 SAMP: fullsize IDCT: islow ENT: huff
455 add_test(djpeg${suffix}-rgb-islow-565
456 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
457 -outfile testout_rgb_islow_565.bmp testout_rgb_islow.jpg)
458 add_test(djpeg${suffix}-rgb-islow-565-cmp
459 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_RGB_ISLOW_565}
460 -DFILE=testout_rgb_islow_565.bmp
461 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
462 # CC: RGB->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
463 add_test(djpeg${suffix}-rgb-islow-565D
464 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
465 -outfile testout_rgb_islow_565D.bmp testout_rgb_islow.jpg)
466 add_test(djpeg${suffix}-rgb-islow-565D-cmp
467 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_RGB_ISLOW_565D}
468 -DFILE=testout_rgb_islow_565D.bmp
469 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
470 endif()
DRC35db75e2014-05-06 22:44:46 +0000471
472 # CC: RGB->YCC SAMP: fullsize/h2v1 FDCT: ifast ENT: 2-pass huff
473 add_test(cjpeg${suffix}-422-ifast-opt
474 ${dir}cjpeg${suffix} -sample 2x1 -dct fast -opt
475 -outfile testout_422_ifast_opt.jpg
476 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
477 add_test(cjpeg${suffix}-422-ifast-opt-cmp
478 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_422_IFAST_OPT}
479 -DFILE=testout_422_ifast_opt.jpg
480 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
481 # CC: YCC->RGB SAMP: fullsize/h2v1 fancy IDCT: ifast ENT: huff
482 add_test(djpeg${suffix}-422-ifast
483 ${dir}djpeg${suffix} -dct fast -outfile testout_422_ifast.ppm
484 testout_422_ifast_opt.jpg)
485 add_test(djpeg${suffix}-422-ifast-cmp
486 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_422_IFAST} -DFILE=testout_422_ifast.ppm
487 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
488 # CC: YCC->RGB SAMP: h2v1 merged IDCT: ifast ENT: huff
489 add_test(djpeg${suffix}-422m-ifast
DRC78df2e62014-05-12 09:23:57 +0000490 ${dir}djpeg${suffix} -dct fast -nosmooth -outfile testout_422m_ifast.ppm
DRC35db75e2014-05-06 22:44:46 +0000491 testout_422_ifast_opt.jpg)
492 add_test(djpeg${suffix}-422m-ifast-cmp
493 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_422M_IFAST} -DFILE=testout_422m_ifast.ppm
494 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRCaee4f722014-08-09 23:06:07 +0000495 if(NOT WITH_12BIT)
496 # CC: YCC->RGB565 SAMP: h2v1 merged IDCT: ifast ENT: huff
497 add_test(djpeg${suffix}-422m-ifast-565
498 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
499 -outfile testout_422m_ifast_565.bmp testout_422_ifast_opt.jpg)
500 add_test(djpeg${suffix}-422m-ifast-565-cmp
501 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_422M_IFAST_565}
502 -DFILE=testout_422m_ifast_565.bmp
503 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
504 # CC: YCC->RGB565 (dithered) SAMP: h2v1 merged IDCT: ifast ENT: huff
505 add_test(djpeg${suffix}-422m-ifast-565D
506 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -bmp
507 -outfile testout_422m_ifast_565D.bmp testout_422_ifast_opt.jpg)
508 add_test(djpeg${suffix}-422m-ifast-565D-cmp
509 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_422M_IFAST_565D}
510 -DFILE=testout_422m_ifast_565D.bmp
511 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
512 endif()
DRC35db75e2014-05-06 22:44:46 +0000513
514 # CC: RGB->YCC SAMP: fullsize/h2v2 FDCT: ifast ENT: prog huff
515 add_test(cjpeg${suffix}-420-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000516 ${dir}cjpeg${suffix} -sample 2x2 -quality 100 -dct fast -prog
DRC35db75e2014-05-06 22:44:46 +0000517 -outfile testout_420_q100_ifast_prog.jpg
518 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
519 add_test(cjpeg${suffix}-420-q100-ifast-prog-cmp
520 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_IFAST_Q100_PROG}
521 -DFILE=testout_420_q100_ifast_prog.jpg
522 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
523 # CC: YCC->RGB SAMP: fullsize/h2v2 fancy IDCT: ifast ENT: prog huff
524 add_test(djpeg${suffix}-420-q100-ifast-prog
525 ${dir}djpeg${suffix} -dct fast -outfile testout_420_q100_ifast.ppm
526 testout_420_q100_ifast_prog.jpg)
527 add_test(djpeg${suffix}-420-q100-ifast-prog-cmp
528 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420_Q100_IFAST}
529 -DFILE=testout_420_q100_ifast.ppm
530 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
531 # CC: YCC->RGB SAMP: h2v2 merged IDCT: ifast ENT: prog huff
532 add_test(djpeg${suffix}-420m-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000533 ${dir}djpeg${suffix} -dct fast -nosmooth
DRC35db75e2014-05-06 22:44:46 +0000534 -outfile testout_420m_q100_ifast.ppm testout_420_q100_ifast_prog.jpg)
535 add_test(djpeg${suffix}-420m-q100-ifast-prog-cmp
536 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_Q100_IFAST}
537 -DFILE=testout_420m_q100_ifast.ppm
538 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
539
540 # CC: RGB->Gray SAMP: fullsize FDCT: islow ENT: huff
541 add_test(cjpeg${suffix}-gray-islow
542 ${dir}cjpeg${suffix} -gray -dct int -outfile testout_gray_islow.jpg
543 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
544 add_test(cjpeg${suffix}-gray-islow-cmp
545 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_GRAY_ISLOW}
546 -DFILE=testout_gray_islow.jpg
547 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000548 # CC: Gray->Gray SAMP: fullsize IDCT: islow ENT: huff
DRC35db75e2014-05-06 22:44:46 +0000549 add_test(djpeg${suffix}-gray-islow
550 ${dir}djpeg${suffix} -dct int -outfile testout_gray_islow.ppm
551 testout_gray_islow.jpg)
552 add_test(djpeg${suffix}-gray-islow-cmp
553 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_GRAY_ISLOW}
554 -DFILE=testout_gray_islow.ppm
555 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000556 # CC: Gray->RGB SAMP: fullsize IDCT: islow ENT: huff
557 add_test(djpeg${suffix}-gray-islow-rgb
558 ${dir}djpeg${suffix} -dct int -rgb -outfile testout_gray_islow_rgb.ppm
DRC35db75e2014-05-06 22:44:46 +0000559 testout_gray_islow.jpg)
DRC78df2e62014-05-12 09:23:57 +0000560 add_test(cjpeg${suffix}-gray-islow-rgb-cmp
561 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_GRAY_ISLOW_RGB}
562 -DFILE=testout_gray_islow_rgb.ppm
563 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRCaee4f722014-08-09 23:06:07 +0000564 if(NOT WITH_12BIT)
565 # CC: Gray->RGB565 SAMP: fullsize IDCT: islow ENT: huff
566 add_test(djpeg${suffix}-gray-islow-565
567 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
568 -outfile testout_gray_islow_565.bmp testout_gray_islow.jpg)
569 add_test(djpeg${suffix}-gray-islow-565-cmp
570 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_GRAY_ISLOW_565}
571 -DFILE=testout_gray_islow_565.bmp
572 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
573 # CC: Gray->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
574 add_test(djpeg${suffix}-gray-islow-565D
575 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
576 -outfile testout_gray_islow_565D.bmp testout_gray_islow.jpg)
577 add_test(djpeg${suffix}-gray-islow-565D-cmp
578 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_GRAY_ISLOW_565D}
579 -DFILE=testout_gray_islow_565D.bmp
580 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
581 endif()
DRC35db75e2014-05-06 22:44:46 +0000582
583 # CC: RGB->YCC SAMP: fullsize smooth/h2v2 smooth FDCT: islow
584 # ENT: 2-pass huff
585 add_test(cjpeg${suffix}-420s-ifast-opt
586 ${dir}cjpeg${suffix} -sample 2x2 -smooth 1 -dct int -opt -outfile
587 testout_420s_ifast_opt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
588 add_test(cjpeg${suffix}-420s-ifast-opt-cmp
589 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420S_IFAST_OPT}
590 -DFILE=testout_420s_ifast_opt.jpg
591 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
592
593 # CC: RGB->YCC SAMP: fullsize/int FDCT: float ENT: prog huff
594 add_test(cjpeg${suffix}-3x2-float-prog
595 ${dir}cjpeg${suffix} -sample 3x2 -dct float -prog
596 -outfile testout_3x2_float_prog.jpg
597 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
598 add_test(cjpeg${suffix}-3x2-float-prog-cmp
599 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_3x2_FLOAT_PROG}
600 -DFILE=testout_3x2_float_prog.jpg
601 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
602 # CC: YCC->RGB SAMP: fullsize/int IDCT: float ENT: prog huff
603 add_test(djpeg${suffix}-3x2-float-prog
604 ${dir}djpeg${suffix} -dct float -outfile testout_3x2_float.ppm
605 testout_3x2_float_prog.jpg)
606 add_test(djpeg${suffix}-3x2-float-prog-cmp
607 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_3x2_FLOAT} -DFILE=testout_3x2_float.ppm
608 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
609
610 if(WITH_ARITH_ENC)
611 # CC: YCC->RGB SAMP: fullsize/h2v2 FDCT: islow ENT: arith
612 add_test(cjpeg${suffix}-420-islow-ari
613 ${dir}cjpeg${suffix} -dct int -arithmetic
614 -outfile testout_420_islow_ari.jpg
615 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
616 add_test(cjpeg${suffix}-420-islow-ari-cmp
617 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW_ARI}
618 -DFILE=testout_420_islow_ari.jpg
619 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
620 add_test(jpegtran${suffix}-420-islow-ari
621 ${dir}jpegtran${suffix} -arithmetic
622 -outfile testout_420_islow_ari.jpg
623 ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
624 add_test(jpegtran${suffix}-420-islow-ari-cmp
625 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW_ARI}
626 -DFILE=testout_420_islow_ari.jpg
627 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
628 # CC: YCC->RGB SAMP: fullsize FDCT: islow ENT: prog arith
629 add_test(cjpeg${suffix}-444-islow-progari
DRC78df2e62014-05-12 09:23:57 +0000630 ${dir}cjpeg${suffix} -sample 1x1 -dct int -progressive -arithmetic
DRC35db75e2014-05-06 22:44:46 +0000631 -outfile testout_444_islow_progari.jpg
632 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
633 add_test(cjpeg${suffix}-444-islow-progari-cmp
634 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_444_ISLOW_PROGARI}
635 -DFILE=testout_444_islow_progari.jpg
636 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
637 endif()
638 if(WITH_ARITH_DEC)
639 # CC: RGB->YCC SAMP: h2v2 merged IDCT: ifast ENT: arith
640 add_test(cjpeg${suffix}-420m-ifast-ari
641 ${dir}djpeg${suffix} -fast -ppm -outfile testout_420m_ifast_ari.ppm
642 ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
643 add_test(cjpeg${suffix}-420m-ifast-ari-cmp
644 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_IFAST_ARI}
645 -DFILE=testout_420m_ifast_ari.ppm
646 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
647 add_test(jpegtran${suffix}-420-islow
648 ${dir}jpegtran${suffix} -outfile testout_420_islow.jpg
649 ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
650 add_test(jpegtran${suffix}-420-islow-cmp
651 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW}
652 -DFILE=testout_420_islow.jpg
653 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
654 endif()
655
656 # 2/1-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 16x16 islow ENT: huff
657 # 15/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 15x15 islow ENT: huff
658 # 13/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 13x13 islow ENT: huff
659 # 11/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 11x11 islow ENT: huff
660 # 9/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 9x9 islow ENT: huff
661 # 7/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 7x7 islow/14x14 islow
662 # ENT: huff
663 # 3/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 6x6 islow/12x12 islow
664 # ENT: huff
665 # 5/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 5x5 islow/10x10 islow
666 # ENT: huff
667 # 1/2-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 4x4 islow/8x8 islow
668 # ENT: huff
669 # 3/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 3x3 islow/6x6 islow
670 # ENT: huff
671 # 1/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 2x2 islow/4x4 islow
672 # ENT: huff
673 # 1/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 1x1 islow/2x2 islow
674 # ENT: huff
675 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)
676 string(REGEX REPLACE "_" "/" scalearg ${scale})
677 add_test(djpeg${suffix}-420m-islow-${scale}
DRC78df2e62014-05-12 09:23:57 +0000678 ${dir}djpeg${suffix} -dct int -scale ${scalearg} -nosmooth -ppm
DRC35db75e2014-05-06 22:44:46 +0000679 -outfile testout_420m_islow_${scale}.ppm
DRCaee4f722014-08-09 23:06:07 +0000680 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
DRC35db75e2014-05-06 22:44:46 +0000681 add_test(djpeg${suffix}-420m-islow-${scale}-cmp
682 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_ISLOW_${scale}}
683 -DFILE=testout_420m_islow_${scale}.ppm
684 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
685 endforeach()
686
DRCaee4f722014-08-09 23:06:07 +0000687 if(NOT WITH_12BIT)
688 # CC: YCC->RGB (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
689 add_test(djpeg${suffix}-420-islow-256
690 ${dir}djpeg${suffix} -dct int -colors 256 -bmp
691 -outfile testout_420_islow_256.bmp
692 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
693 add_test(djpeg${suffix}-420-islow-256-cmp
694 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_256}
695 -DFILE=testout_420_islow_256.bmp
696 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
697 # CC: YCC->RGB565 SAMP: h2v2 fancy IDCT: islow ENT: huff
698 add_test(djpeg${suffix}-420-islow-565
699 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
700 -outfile testout_420_islow_565.bmp
701 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
702 add_test(djpeg${suffix}-420-islow-565-cmp
703 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_565}
704 -DFILE=testout_420_islow_565.bmp
705 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
706 # CC: YCC->RGB565 (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
707 add_test(djpeg${suffix}-420-islow-565D
708 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
709 -outfile testout_420_islow_565D.bmp
710 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
711 add_test(djpeg${suffix}-420-islow-565D-cmp
712 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_565D}
713 -DFILE=testout_420_islow_565D.bmp
714 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
715 # CC: YCC->RGB565 SAMP: h2v2 merged IDCT: islow ENT: huff
716 add_test(djpeg${suffix}-420m-islow-565
717 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
718 -outfile testout_420m_islow_565.bmp
719 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
720 add_test(djpeg${suffix}-420m-islow-565-cmp
721 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420M_ISLOW_565}
722 -DFILE=testout_420m_islow_565.bmp
723 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
724 # CC: YCC->RGB565 (dithered) SAMP: h2v2 merged IDCT: islow ENT: huff
725 add_test(djpeg${suffix}-420m-islow-565D
726 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -bmp
727 -outfile testout_420m_islow_565D.bmp
728 ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
729 add_test(djpeg${suffix}-420m-islow-565D-cmp
730 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420M_ISLOW_565D}
731 -DFILE=testout_420m_islow_565D.bmp
732 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
733 endif()
DRC35db75e2014-05-06 22:44:46 +0000734 add_test(jpegtran${suffix}-crop
735 ${dir}jpegtran${suffix} -crop 120x90+20+50 -transpose -perfect
DRCaee4f722014-08-09 23:06:07 +0000736 -outfile testout_crop.jpg ${CMAKE_SOURCE_DIR}/testimages/${TESTORIG})
DRC35db75e2014-05-06 22:44:46 +0000737 add_test(jpegtran${suffix}-crop-cmp
738 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testout_crop.jpg
739 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
740
DRC0af8d672012-01-31 11:09:11 +0000741endforeach()
DRC2c0a4e12010-10-16 08:51:43 +0000742
DRCa0f878a2011-04-02 04:43:14 +0000743add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P
744 ${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake)
745
DRC2c0a4e12010-10-16 08:51:43 +0000746
747#
748# Installer
749#
750
DRC2c0a4e12010-10-16 08:51:43 +0000751if(MSVC)
752 set(INST_PLATFORM "Visual C++")
DRCb94f2de2011-03-22 09:31:25 +0000753 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
DRC7175e512013-04-23 22:29:00 +0000754 set(INST_REG_NAME ${CMAKE_PROJECT_NAME})
DRC2c0a4e12010-10-16 08:51:43 +0000755elseif(MINGW)
756 set(INST_PLATFORM GCC)
DRCb94f2de2011-03-22 09:31:25 +0000757 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
DRC7175e512013-04-23 22:29:00 +0000758 set(INST_REG_NAME ${CMAKE_PROJECT_NAME}-gcc)
DRC2c0a4e12010-10-16 08:51:43 +0000759 set(INST_DEFS -DGCC)
760endif()
761
762if(64BIT)
763 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
764 set(INST_NAME ${INST_NAME}64)
DRC7175e512013-04-23 22:29:00 +0000765 set(INST_REG_NAME ${INST_DIR}64)
DRC2c0a4e12010-10-16 08:51:43 +0000766 set(INST_DEFS ${INST_DEFS} -DWIN64)
767endif()
768
DRC957d6232011-04-01 11:13:11 +0000769if(WITH_JAVA)
770 set(INST_DEFS ${INST_DEFS} -DJAVA)
771endif()
772
DRC2c0a4e12010-10-16 08:51:43 +0000773if(MSVC_IDE)
DRC926e01f2011-04-06 06:35:38 +0000774 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
DRC2c0a4e12010-10-16 08:51:43 +0000775else()
776 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
777endif()
778
DRC9fe22da2014-04-16 23:30:38 +0000779STRING(REGEX REPLACE "/" "\\\\" INST_DIR ${CMAKE_INSTALL_PREFIX})
DRC7175e512013-04-23 22:29:00 +0000780
DRC2c0a4e12010-10-16 08:51:43 +0000781configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
782
DRC7175e512013-04-23 22:29:00 +0000783if(WITH_JAVA)
784 set(JAVA_DEPEND java)
785endif()
DRC2c0a4e12010-10-16 08:51:43 +0000786add_custom_target(installer
787 makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
DRCb94f2de2011-03-22 09:31:25 +0000788 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
DRC7175e512013-04-23 22:29:00 +0000789 cjpeg djpeg jpegtran tjbench ${JAVA_DEPEND}
DRC2c0a4e12010-10-16 08:51:43 +0000790 SOURCES libjpeg-turbo.nsi)
DRC7284c9a2010-10-16 21:55:14 +0000791
DRCaee4f722014-08-09 23:06:07 +0000792if(WITH_TURBOJPEG)
793 set(TURBOJPEG_TARGETS turbojpeg turbojpeg-static tjbench)
794endif()
795install(TARGETS jpeg-static rdjpgcom wrjpgcom ${TURBOJPEG_TARGETS}
DRC7284c9a2010-10-16 21:55:14 +0000796 ARCHIVE DESTINATION lib
797 LIBRARY DESTINATION lib
798 RUNTIME DESTINATION bin
799)
800
DRCa1647c82012-02-10 00:39:05 +0000801install(FILES ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/README-turbo.txt
DRC9fe22da2014-04-16 23:30:38 +0000802 ${CMAKE_SOURCE_DIR}/example.c ${CMAKE_SOURCE_DIR}/libjpeg.txt
DRCa1647c82012-02-10 00:39:05 +0000803 ${CMAKE_SOURCE_DIR}/structure.txt ${CMAKE_SOURCE_DIR}/usage.txt
804 ${CMAKE_SOURCE_DIR}/wizard.txt
DRC7284c9a2010-10-16 21:55:14 +0000805 DESTINATION doc)
DRCe2befde2010-10-17 07:28:08 +0000806
807install(FILES ${CMAKE_BINARY_DIR}/jconfig.h ${CMAKE_SOURCE_DIR}/jerror.h
808 ${CMAKE_SOURCE_DIR}/jmorecfg.h ${CMAKE_SOURCE_DIR}/jpeglib.h
809 ${CMAKE_SOURCE_DIR}/turbojpeg.h DESTINATION include)