blob: 0c461306c97fb88cb3cfde252970ac2424fb8500 [file] [log] [blame]
DRC84697032010-10-15 03:43:24 +00001#
2# Setup
3#
4
DRCee681aa2016-05-01 11:42:15 -05005cmake_minimum_required(VERSION 2.8.11)
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)
DRC9e6c6a12016-07-06 16:22:27 +000012set(VERSION 1.5.1)
DRCf06cc122016-05-10 19:36:34 -050013string(REPLACE "." ";" VERSION_TRIPLET ${VERSION})
14list(GET VERSION_TRIPLET 0 VERSION_MAJOR)
15list(GET VERSION_TRIPLET 1 VERSION_MINOR)
16list(GET VERSION_TRIPLET 2 VERSION_REVISION)
17function(pad_number NUMBER OUTPUT_LEN)
18 string(LENGTH "${${NUMBER}}" INPUT_LEN)
19 if(INPUT_LEN LESS OUTPUT_LEN)
20 math(EXPR ZEROES "${OUTPUT_LEN} - ${INPUT_LEN} - 1")
21 set(NUM ${${NUMBER}})
22 foreach(C RANGE ${ZEROES})
23 set(NUM "0${NUM}")
24 endforeach()
25 set(${NUMBER} ${NUM} PARENT_SCOPE)
26 endif()
27endfunction()
28pad_number(VERSION_MINOR 3)
29pad_number(VERSION_REVISION 3)
30set(LIBJPEG_TURBO_VERSION_NUMBER ${VERSION_MAJOR}${VERSION_MINOR}${VERSION_REVISION})
DRC84697032010-10-15 03:43:24 +000031
DRCee681aa2016-05-01 11:42:15 -050032if(NOT WIN32)
DRC378da4d2010-10-15 19:11:11 +000033 message(FATAL_ERROR "Platform not supported by this build system. Use autotools instead.")
DRC84697032010-10-15 03:43:24 +000034endif()
35
DRCee681aa2016-05-01 11:42:15 -050036string(TIMESTAMP BUILD "%Y%m%d")
37
DRC2ffcb8e2011-04-04 04:56:24 +000038# This does nothing except when using MinGW. CMAKE_BUILD_TYPE has no meaning
39# in Visual Studio, and it always defaults to Debug when using NMake.
DRC84697032010-10-15 03:43:24 +000040if(NOT CMAKE_BUILD_TYPE)
41 set(CMAKE_BUILD_TYPE Release)
42endif()
43
44message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
45
46# This only works if building from the command line. There is currently no way
DRC2ffcb8e2011-04-04 04:56:24 +000047# to set a variable's value based on the build type when using Visual Studio.
DRC84697032010-10-15 03:43:24 +000048if(CMAKE_BUILD_TYPE STREQUAL "Debug")
49 set(BUILD "${BUILD}d")
50endif()
51
DRCeb2b9d62010-10-15 04:55:13 +000052message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}")
53
DRCddcd5a12011-04-15 00:24:02 +000054option(WITH_SIMD "Include SIMD extensions" TRUE)
DRC5c064de2016-05-09 20:00:46 -050055option(WITH_ARITH_ENC "Include arithmetic encoding support when emulating the libjpeg v6b API/ABI" TRUE)
56option(WITH_ARITH_DEC "Include arithmetic decoding support when emulating the libjpeg v6b API/ABI" TRUE)
DRCddcd5a12011-04-15 00:24:02 +000057option(WITH_JPEG7 "Emulate libjpeg v7 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
58option(WITH_JPEG8 "Emulate libjpeg v8 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
DRCab706232013-01-18 23:42:31 +000059option(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 +000060option(WITH_TURBOJPEG "Include the TurboJPEG wrapper library and associated test programs" TRUE)
DRC5039d732013-01-21 23:42:12 +000061option(WITH_JAVA "Build Java wrapper for the TurboJPEG library" FALSE)
DRCaee4f722014-08-09 23:06:07 +000062option(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 +000063option(ENABLE_STATIC "Build static libraries" TRUE)
64option(ENABLE_SHARED "Build shared libraries" TRUE)
DRCaee4f722014-08-09 23:06:07 +000065
66if(WITH_12BIT)
67 set(WITH_SIMD FALSE)
68 set(WITH_TURBOJPEG FALSE)
DRCecc58362015-06-27 07:56:29 +000069 set(WITH_JAVA FALSE)
DRCaee4f722014-08-09 23:06:07 +000070 set(WITH_ARITH_ENC FALSE)
71 set(WITH_ARITH_DEC FALSE)
72 set(BITS_IN_JSAMPLE 12)
73 message(STATUS "12-bit JPEG support enabled")
74else()
75 set(BITS_IN_JSAMPLE 8)
76endif()
DRC245cfdf2010-11-23 17:11:06 +000077
DRC5c064de2016-05-09 20:00:46 -050078if(WITH_JPEG8 OR WITH_JPEG7)
79 set(WITH_ARITH_ENC 1)
80 set(WITH_ARITH_DEC 1)
81endif()
82if(WITH_JPEG8)
83 set(WITH_MEM_SRCDST 1)
84endif()
85
DRC245cfdf2010-11-23 17:11:06 +000086if(WITH_ARITH_ENC)
87 set(C_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000088 message(STATUS "Arithmetic encoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000089else()
DRC990e28d2011-01-04 21:40:11 +000090 message(STATUS "Arithmetic encoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000091endif()
92
93if(WITH_ARITH_DEC)
94 set(D_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000095 message(STATUS "Arithmetic decoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000096else()
DRC990e28d2011-01-04 21:40:11 +000097 message(STATUS "Arithmetic decoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000098endif()
99
DRCaee4f722014-08-09 23:06:07 +0000100if(WITH_TURBOJPEG)
101 message(STATUS "TurboJPEG C wrapper enabled")
102else()
103 message(STATUS "TurboJPEG C wrapper disabled")
104endif()
105
DRC957d6232011-04-01 11:13:11 +0000106if(WITH_JAVA)
DRC5039d732013-01-21 23:42:12 +0000107 message(STATUS "TurboJPEG Java wrapper enabled")
DRC218c0c12011-02-05 06:01:18 +0000108else()
DRC5039d732013-01-21 23:42:12 +0000109 message(STATUS "TurboJPEG Java wrapper disabled")
DRC218c0c12011-02-05 06:01:18 +0000110endif()
111
DRCab706232013-01-18 23:42:31 +0000112set(SO_AGE 0)
113if(WITH_MEM_SRCDST)
114 set(SO_AGE 1)
115endif()
116
DRC84697032010-10-15 03:43:24 +0000117set(JPEG_LIB_VERSION 62)
118set(DLL_VERSION ${JPEG_LIB_VERSION})
DRCab706232013-01-18 23:42:31 +0000119set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +0000120if(WITH_JPEG8)
121 set(JPEG_LIB_VERSION 80)
122 set(DLL_VERSION 8)
DRCa9d5b252010-10-15 06:42:45 +0000123 set(FULLVERSION ${DLL_VERSION}.0.2)
DRCf38eee02011-02-18 07:00:38 +0000124 message(STATUS "Emulating libjpeg v8 API/ABI")
DRC84697032010-10-15 03:43:24 +0000125elseif(WITH_JPEG7)
126 set(JPEG_LIB_VERSION 70)
127 set(DLL_VERSION 7)
DRCab706232013-01-18 23:42:31 +0000128 set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +0000129 message(STATUS "Emulating libjpeg v7 API/ABI")
130endif(WITH_JPEG8)
131
DRCab706232013-01-18 23:42:31 +0000132if(WITH_MEM_SRCDST)
133 set(MEM_SRCDST_SUPPORTED 1)
134 message(STATUS "In-memory source/destination managers enabled")
135else()
136 message(STATUS "In-memory source/destination managers disabled")
137endif()
138
DRC84697032010-10-15 03:43:24 +0000139if(MSVC)
DRC89a3f972015-03-19 19:27:40 +0000140 option(WITH_CRT_DLL
141 "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."
142 FALSE)
143 if(NOT WITH_CRT_DLL)
144 # Use the static C library for all build types
145 foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
146 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
147 if(${var} MATCHES "/MD")
148 string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
149 endif()
150 endforeach()
151 endif()
DRC84697032010-10-15 03:43:24 +0000152 add_definitions(-W3 -wd4996)
153endif()
154
155# Detect whether compiler is 64-bit
156if(MSVC AND CMAKE_CL_64)
157 set(SIMD_X86_64 1)
158 set(64BIT 1)
159elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
160 set(SIMD_X86_64 1)
161 set(64BIT 1)
162endif()
163
164if(64BIT)
165 message(STATUS "64-bit build")
166else()
167 message(STATUS "32-bit build")
168endif()
169
DRC7175e512013-04-23 22:29:00 +0000170if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
171 if(MSVC)
172 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME})
173 else()
174 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME}-gcc)
175 endif()
176 if(64BIT)
177 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_INSTALL_PREFIX_DEFAULT}64)
178 endif()
179 set(CMAKE_INSTALL_PREFIX "c:/${CMAKE_INSTALL_PREFIX_DEFAULT}" CACHE PATH
180 "Directory into which to install libjpeg-turbo (default: c:/${CMAKE_INSTALL_PREFIX_DEFAULT})"
181 FORCE)
182endif()
183
184message(STATUS "Install directory = ${CMAKE_INSTALL_PREFIX}")
185
DRC84697032010-10-15 03:43:24 +0000186configure_file(win/jconfig.h.in jconfig.h)
DRCff6961f2014-04-20 09:17:11 +0000187configure_file(win/jconfigint.h.in jconfigint.h)
DRC84697032010-10-15 03:43:24 +0000188
189include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
190
DRC03841e62016-02-09 18:27:27 -0600191string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UC)
192
193set(EFFECTIVE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UC}}")
194message(STATUS "Compiler flags = ${EFFECTIVE_C_FLAGS}")
195
196set(EFFECTIVE_LD_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UC}}")
197message(STATUS "Linker flags = ${EFFECTIVE_LD_FLAGS}")
198
DRC957d6232011-04-01 11:13:11 +0000199if(WITH_JAVA)
200 find_package(Java)
201 find_package(JNI)
DRCdb425062011-04-03 06:10:18 +0000202 if(DEFINED JAVACFLAGS)
203 message(STATUS "Java compiler flags = ${JAVACFLAGS}")
204 endif()
DRC218c0c12011-02-05 06:01:18 +0000205endif()
206
DRC84697032010-10-15 03:43:24 +0000207
208#
209# Targets
210#
211
DRC245cfdf2010-11-23 17:11:06 +0000212set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
213 jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
214 jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
215 jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
216 jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
217 jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
218 jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
219
220if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
221 set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
222endif()
223
224if(WITH_ARITH_ENC)
225 set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
226endif()
227
228if(WITH_ARITH_DEC)
229 set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
230endif()
DRC84697032010-10-15 03:43:24 +0000231
232if(WITH_SIMD)
233 add_definitions(-DWITH_SIMD)
234 add_subdirectory(simd)
235 if(SIMD_X86_64)
236 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
237 else()
238 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
239 endif()
240 # This tells CMake that the "source" files haven't been generated yet
241 set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
242else()
243 set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
DRC6f4ba612010-10-16 21:27:38 +0000244 message(STATUS "Not using SIMD acceleration")
DRC84697032010-10-15 03:43:24 +0000245endif()
246
DRC957d6232011-04-01 11:13:11 +0000247if(WITH_JAVA)
248 add_subdirectory(java)
DRC665c96e2015-05-15 22:08:21 +0000249 set(ENABLE_SHARED TRUE)
DRC957d6232011-04-01 11:13:11 +0000250endif()
251
DRC665c96e2015-05-15 22:08:21 +0000252if(ENABLE_SHARED)
253 add_subdirectory(sharedlib)
DRC84697032010-10-15 03:43:24 +0000254endif()
DRC665c96e2015-05-15 22:08:21 +0000255
256if(ENABLE_STATIC OR WITH_TURBOJPEG)
257 add_library(jpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
258 if(NOT MSVC)
259 set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
260 endif()
261 if(WITH_SIMD)
262 add_dependencies(jpeg-static simd)
263 endif()
DRC84697032010-10-15 03:43:24 +0000264endif()
265
DRCaee4f722014-08-09 23:06:07 +0000266if(WITH_TURBOJPEG)
267 set(TURBOJPEG_SOURCES turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
268 if(WITH_JAVA)
269 set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
270 include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
271 endif()
272
DRC665c96e2015-05-15 22:08:21 +0000273 if(ENABLE_SHARED)
274 add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
275 set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
276 if(MINGW)
277 set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
278 endif()
279 target_link_libraries(turbojpeg jpeg-static)
280 set_target_properties(turbojpeg PROPERTIES LINK_INTERFACE_LIBRARIES "")
DRCaee4f722014-08-09 23:06:07 +0000281
DRC665c96e2015-05-15 22:08:21 +0000282 add_executable(tjunittest tjunittest.c tjutil.c)
283 target_link_libraries(tjunittest turbojpeg)
284
285 add_executable(tjbench tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
286 wrppm.c)
287 target_link_libraries(tjbench turbojpeg jpeg-static)
288 set_property(TARGET tjbench PROPERTY COMPILE_FLAGS
289 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
DRCaee4f722014-08-09 23:06:07 +0000290 endif()
291
DRC665c96e2015-05-15 22:08:21 +0000292 if(ENABLE_STATIC)
293 add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS}
294 turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
295 if(NOT MSVC)
296 set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
297 endif()
298 if(WITH_SIMD)
299 add_dependencies(turbojpeg-static simd)
300 endif()
DRCaee4f722014-08-09 23:06:07 +0000301
DRC665c96e2015-05-15 22:08:21 +0000302 add_executable(tjunittest-static tjunittest.c tjutil.c)
303 target_link_libraries(tjunittest-static turbojpeg-static)
DRCaee4f722014-08-09 23:06:07 +0000304
DRC665c96e2015-05-15 22:08:21 +0000305 add_executable(tjbench-static tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c
306 wrbmp.c wrppm.c)
307 target_link_libraries(tjbench-static turbojpeg-static jpeg-static)
308 set_property(TARGET tjbench-static PROPERTY COMPILE_FLAGS
309 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
310 endif()
DRC218c0c12011-02-05 06:01:18 +0000311endif()
312
DRCaee4f722014-08-09 23:06:07 +0000313if(WITH_12BIT)
314 set(COMPILE_FLAGS "-DGIF_SUPPORTED -DPPM_SUPPORTED -DUSE_SETMODE")
315else()
316 set(COMPILE_FLAGS "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
DRCecc58362015-06-27 07:56:29 +0000317 set(CJPEG_BMP_SOURCES rdbmp.c rdtarga.c)
318 set(DJPEG_BMP_SOURCES wrbmp.c wrtarga.c)
DRC84697032010-10-15 03:43:24 +0000319endif()
320
DRC665c96e2015-05-15 22:08:21 +0000321if(ENABLE_STATIC)
322 add_executable(cjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdswitch.c
323 ${CJPEG_BMP_SOURCES})
324 set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
325 target_link_libraries(cjpeg-static jpeg-static)
DRC84697032010-10-15 03:43:24 +0000326
DRC665c96e2015-05-15 22:08:21 +0000327 add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c
328 wrppm.c ${DJPEG_BMP_SOURCES})
329 set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
330 target_link_libraries(djpeg-static jpeg-static)
DRC84697032010-10-15 03:43:24 +0000331
DRC665c96e2015-05-15 22:08:21 +0000332 add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
333 target_link_libraries(jpegtran-static jpeg-static)
334 set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "-DUSE_SETMODE")
335endif()
DRC84697032010-10-15 03:43:24 +0000336
337add_executable(rdjpgcom rdjpgcom.c)
338
DRCa81f5422014-06-22 20:50:14 +0000339add_executable(wrjpgcom wrjpgcom.c)
DRC84697032010-10-15 03:43:24 +0000340
341
342#
343# Tests
344#
345
DRCf9134382016-02-06 14:09:20 -0600346add_subdirectory(md5)
347
DRC957d6232011-04-01 11:13:11 +0000348if(MSVC_IDE)
349 set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/")
350else()
351 set(OBJDIR "")
352endif()
353
DRC84697032010-10-15 03:43:24 +0000354enable_testing()
DRC211d1e72013-01-13 11:25:20 +0000355
DRCaee4f722014-08-09 23:06:07 +0000356if(WITH_12BIT)
357 set(TESTORIG testorig12.jpg)
358 set(MD5_JPEG_RGB_ISLOW 9620f424569594bb9242b48498ad801f)
359 set(MD5_PPM_RGB_ISLOW f3301d2219783b8b3d942b7239fa50c0)
360 set(MD5_JPEG_422_IFAST_OPT 7322e3bd2f127f7de4b40d4480ce60e4)
361 set(MD5_PPM_422_IFAST 79807fa552899e66a04708f533e16950)
362 set(MD5_PPM_422M_IFAST 07737bfe8a7c1c87aaa393a0098d16b0)
363 set(MD5_JPEG_420_IFAST_Q100_PROG a1da220b5604081863a504297ed59e55)
364 set(MD5_PPM_420_Q100_IFAST 1b3730122709f53d007255e8dfd3305e)
365 set(MD5_PPM_420M_Q100_IFAST 980a1a3c5bf9510022869d30b7d26566)
366 set(MD5_JPEG_GRAY_ISLOW 235c90707b16e2e069f37c888b2636d9)
367 set(MD5_PPM_GRAY_ISLOW 7213c10af507ad467da5578ca5ee1fca)
368 set(MD5_PPM_GRAY_ISLOW_RGB e96ee81c30a6ed422d466338bd3de65d)
369 set(MD5_JPEG_420S_IFAST_OPT 7af8e60be4d9c227ec63ac9b6630855e)
370 set(MD5_JPEG_3x2_FLOAT_PROG a8c17daf77b457725ec929e215b603f8)
371 set(MD5_PPM_3x2_FLOAT 42876ab9e5c2f76a87d08db5fbd57956)
372 set(MD5_PPM_420M_ISLOW_2_1 4ca6be2a6f326ff9eaab63e70a8259c0)
373 set(MD5_PPM_420M_ISLOW_15_8 12aa9f9534c1b3d7ba047322226365eb)
374 set(MD5_PPM_420M_ISLOW_13_8 f7e22817c7b25e1393e4ec101e9d4e96)
375 set(MD5_PPM_420M_ISLOW_11_8 800a16f9f4dc9b293197bfe11be10a82)
376 set(MD5_PPM_420M_ISLOW_9_8 06b7a92a9bc69f4dc36ec40f1937d55c)
377 set(MD5_PPM_420M_ISLOW_7_8 3ec444a14a4ab4eab88ffc49c48eca43)
378 set(MD5_PPM_420M_ISLOW_3_4 3e726b7ea872445b19437d1c1d4f0d93)
379 set(MD5_PPM_420M_ISLOW_5_8 a8a771abdc94301d20ffac119b2caccd)
380 set(MD5_PPM_420M_ISLOW_1_2 b419124dd5568b085787234866102866)
381 set(MD5_PPM_420M_ISLOW_3_8 343d19015531b7bbe746124127244fa8)
382 set(MD5_PPM_420M_ISLOW_1_4 35fd59d866e44659edfa3c18db2a3edb)
383 set(MD5_PPM_420M_ISLOW_1_8 ccaed48ac0aedefda5d4abe4013f4ad7)
DRC7a7da942015-06-27 08:10:31 +0000384 set(MD5_PPM_420_ISLOW_SKIP15_31 86664cd9dc956536409e44e244d20a97)
DRC3ab68cf2016-02-19 18:32:10 -0600385 set(MD5_PPM_420_ISLOW_PROG_CROP62x62_71_71 452a21656115a163029cfba5c04fa76a)
DRC7a7da942015-06-27 08:10:31 +0000386 set(MD5_PPM_444_ISLOW_SKIP1_6 ef63901f71ef7a75cd78253fc0914f84)
DRC3ab68cf2016-02-19 18:32:10 -0600387 set(MD5_PPM_444_ISLOW_PROG_CROP98x98_13_13 15b173fb5872d9575572fbcc1b05956f)
DRCaee4f722014-08-09 23:06:07 +0000388 set(MD5_JPEG_CROP cdb35ff4b4519392690ea040c56ea99c)
DRC35db75e2014-05-06 22:44:46 +0000389else()
DRCaee4f722014-08-09 23:06:07 +0000390 set(TESTORIG testorig.jpg)
391 set(MD5_JPEG_RGB_ISLOW 768e970dd57b340ff1b83c9d3d47c77b)
392 set(MD5_PPM_RGB_ISLOW 00a257f5393fef8821f2b88ac7421291)
393 set(MD5_BMP_RGB_ISLOW_565 f07d2e75073e4bb10f6c6f4d36e2e3be)
394 set(MD5_BMP_RGB_ISLOW_565D 4cfa0928ef3e6bb626d7728c924cfda4)
395 set(MD5_JPEG_422_IFAST_OPT 2540287b79d913f91665e660303ab2c8)
396 set(MD5_PPM_422_IFAST 35bd6b3f833bad23de82acea847129fa)
397 set(MD5_PPM_422M_IFAST 8dbc65323d62cca7c91ba02dd1cfa81d)
398 set(MD5_BMP_422M_IFAST_565 3294bd4d9a1f2b3d08ea6020d0db7065)
399 set(MD5_BMP_422M_IFAST_565D da98c9c7b6039511be4a79a878a9abc1)
400 set(MD5_JPEG_420_IFAST_Q100_PROG 990cbe0329c882420a2094da7e5adade)
401 set(MD5_PPM_420_Q100_IFAST 5a732542015c278ff43635e473a8a294)
402 set(MD5_PPM_420M_Q100_IFAST ff692ee9323a3b424894862557c092f1)
403 set(MD5_JPEG_GRAY_ISLOW 72b51f894b8f4a10b3ee3066770aa38d)
404 set(MD5_PPM_GRAY_ISLOW 8d3596c56eace32f205deccc229aa5ed)
405 set(MD5_PPM_GRAY_ISLOW_RGB 116424ac07b79e5e801f00508eab48ec)
406 set(MD5_BMP_GRAY_ISLOW_565 12f78118e56a2f48b966f792fedf23cc)
407 set(MD5_BMP_GRAY_ISLOW_565D bdbbd616441a24354c98553df5dc82db)
408 set(MD5_JPEG_420S_IFAST_OPT 388708217ac46273ca33086b22827ed8)
409 if(WITH_SIMD)
410 set(MD5_JPEG_3x2_FLOAT_PROG 343e3f8caf8af5986ebaf0bdc13b5c71)
411 set(MD5_PPM_3x2_FLOAT 1a75f36e5904d6fc3a85a43da9ad89bb)
412 else()
413 set(MD5_JPEG_3x2_FLOAT_PROG 9bca803d2042bd1eb03819e2bf92b3e5)
414 set(MD5_PPM_3x2_FLOAT f6bfab038438ed8f5522fbd33595dcdc)
415 endif()
416 set(MD5_JPEG_420_ISLOW_ARI e986fb0a637a8d833d96e8a6d6d84ea1)
417 set(MD5_JPEG_444_ISLOW_PROGARI 0a8f1c8f66e113c3cf635df0a475a617)
418 set(MD5_PPM_420M_IFAST_ARI 72b59a99bcf1de24c5b27d151bde2437)
419 set(MD5_JPEG_420_ISLOW 9a68f56bc76e466aa7e52f415d0f4a5f)
420 set(MD5_PPM_420M_ISLOW_2_1 9f9de8c0612f8d06869b960b05abf9c9)
421 set(MD5_PPM_420M_ISLOW_15_8 b6875bc070720b899566cc06459b63b7)
422 set(MD5_PPM_420M_ISLOW_13_8 bc3452573c8152f6ae552939ee19f82f)
423 set(MD5_PPM_420M_ISLOW_11_8 d8cc73c0aaacd4556569b59437ba00a5)
424 set(MD5_PPM_420M_ISLOW_9_8 d25e61bc7eac0002f5b393aa223747b6)
425 set(MD5_PPM_420M_ISLOW_7_8 ddb564b7c74a09494016d6cd7502a946)
426 set(MD5_PPM_420M_ISLOW_3_4 8ed8e68808c3fbc4ea764fc9d2968646)
427 set(MD5_PPM_420M_ISLOW_5_8 a3363274999da2366a024efae6d16c9b)
428 set(MD5_PPM_420M_ISLOW_1_2 e692a315cea26b988c8e8b29a5dbcd81)
429 set(MD5_PPM_420M_ISLOW_3_8 79eca9175652ced755155c90e785a996)
430 set(MD5_PPM_420M_ISLOW_1_4 79cd778f8bf1a117690052cacdd54eca)
431 set(MD5_PPM_420M_ISLOW_1_8 391b3d4aca640c8567d6f8745eb2142f)
432 set(MD5_BMP_420_ISLOW_256 4980185e3776e89bd931736e1cddeee6)
433 set(MD5_BMP_420_ISLOW_565 bf9d13e16c4923b92e1faa604d7922cb)
434 set(MD5_BMP_420_ISLOW_565D 6bde71526acc44bcff76f696df8638d2)
435 set(MD5_BMP_420M_ISLOW_565 8dc0185245353cfa32ad97027342216f)
436 set(MD5_BMP_420M_ISLOW_565D d1be3a3339166255e76fa50a0d70d73e)
DRC7a7da942015-06-27 08:10:31 +0000437 set(MD5_PPM_420_ISLOW_SKIP15_31 c4c65c1e43d7275cd50328a61e6534f0)
438 set(MD5_PPM_420_ISLOW_ARI_SKIP16_139 087c6b123db16ac00cb88c5b590bb74a)
DRC3ab68cf2016-02-19 18:32:10 -0600439 set(MD5_PPM_420_ISLOW_PROG_CROP62x62_71_71 26eb36ccc7d1f0cb80cdabb0ac8b5d99)
440 set(MD5_PPM_420_ISLOW_ARI_CROP53x53_4_4 886c6775af22370257122f8b16207e6d)
DRC7a7da942015-06-27 08:10:31 +0000441 set(MD5_PPM_444_ISLOW_SKIP1_6 5606f86874cf26b8fcee1117a0a436a6)
DRC3ab68cf2016-02-19 18:32:10 -0600442 set(MD5_PPM_444_ISLOW_PROG_CROP98x98_13_13 db87dc7ce26bcdc7a6b56239ce2b9d6c)
443 set(MD5_PPM_444_ISLOW_ARI_CROP37x37_0_0 cb57b32bd6d03e35432362f7bf184b6d)
DRCaee4f722014-08-09 23:06:07 +0000444 set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d)
DRC35db75e2014-05-06 22:44:46 +0000445endif()
DRC211d1e72013-01-13 11:25:20 +0000446
DRC957d6232011-04-01 11:13:11 +0000447if(WITH_JAVA)
DRC35db75e2014-05-06 22:44:46 +0000448 add_test(TJUnitTest
449 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
450 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
451 TJUnitTest)
452 add_test(TJUnitTest-yuv
453 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
454 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
455 TJUnitTest -yuv)
456 add_test(TJUnitTest-yuv-nopad
457 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
458 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
459 TJUnitTest -yuv -noyuvpad)
460 add_test(TJUnitTest-bi
461 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
462 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
463 TJUnitTest -bi)
464 add_test(TJUnitTest-bi-yuv
465 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
466 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
467 TJUnitTest -bi -yuv)
468 add_test(TJUnitTest-bi-yuv-nopad
469 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
470 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
471 TJUnitTest -bi -yuv -noyuvpad)
DRC957d6232011-04-01 11:13:11 +0000472endif()
DRC84697032010-10-15 03:43:24 +0000473
DRC665c96e2015-05-15 22:08:21 +0000474set(TEST_LIBTYPES "")
475if(ENABLE_SHARED)
476 set(TEST_LIBTYPES ${TEST_LIBTYPES} shared)
477endif()
478if(ENABLE_STATIC)
479 set(TEST_LIBTYPES ${TEST_LIBTYPES} static)
480endif()
481
DRCf9134382016-02-06 14:09:20 -0600482set(TESTIMAGES ${CMAKE_SOURCE_DIR}/testimages)
483set(MD5CMP ${CMAKE_CURRENT_BINARY_DIR}/md5/md5cmp)
484if(CMAKE_CROSSCOMPILING)
485 file(RELATIVE_PATH TESTIMAGES ${CMAKE_CURRENT_BINARY_DIR} ${TESTIMAGES})
486 file(RELATIVE_PATH MD5CMP ${CMAKE_CURRENT_BINARY_DIR} ${MD5CMP})
487endif()
488
DRC665c96e2015-05-15 22:08:21 +0000489foreach(libtype ${TEST_LIBTYPES})
DRC35db75e2014-05-06 22:44:46 +0000490 if(libtype STREQUAL "shared")
491 set(dir sharedlib/)
492 else()
493 set(dir "")
494 set(suffix -static)
495 endif()
DRCaee4f722014-08-09 23:06:07 +0000496 if(WITH_TURBOJPEG)
497 add_test(tjunittest${suffix} tjunittest${suffix})
498 add_test(tjunittest${suffix}-alloc tjunittest${suffix} -alloc)
499 add_test(tjunittest${suffix}-yuv tjunittest${suffix} -yuv)
500 add_test(tjunittest${suffix}-yuv-alloc tjunittest${suffix} -yuv -alloc)
501 add_test(tjunittest${suffix}-yuv-nopad tjunittest${suffix} -yuv -noyuvpad)
502 endif()
DRC35db75e2014-05-06 22:44:46 +0000503
504 # These tests are carefully chosen to provide full coverage of as many of the
505 # underlying algorithms as possible (including all of the SIMD-accelerated
506 # ones.)
507
508 # CC: null SAMP: fullsize FDCT: islow ENT: huff
509 add_test(cjpeg${suffix}-rgb-islow
DRCf9134382016-02-06 14:09:20 -0600510 ${dir}cjpeg${suffix} -rgb -dct int
511 -outfile testout_rgb_islow.jpg ${TESTIMAGES}/testorig.ppm)
DRC35db75e2014-05-06 22:44:46 +0000512 add_test(cjpeg${suffix}-rgb-islow-cmp
DRCf9134382016-02-06 14:09:20 -0600513 ${MD5CMP} ${MD5_JPEG_RGB_ISLOW} testout_rgb_islow.jpg)
514
DRC35db75e2014-05-06 22:44:46 +0000515 # CC: null SAMP: fullsize IDCT: islow ENT: huff
516 add_test(djpeg${suffix}-rgb-islow
DRCf9134382016-02-06 14:09:20 -0600517 ${dir}djpeg${suffix} -dct int -ppm
518 -outfile testout_rgb_islow.ppm testout_rgb_islow.jpg)
DRC35db75e2014-05-06 22:44:46 +0000519 add_test(djpeg${suffix}-rgb-islow-cmp
DRCf9134382016-02-06 14:09:20 -0600520 ${MD5CMP} ${MD5_PPM_RGB_ISLOW} testout_rgb_islow.ppm)
521
DRCaee4f722014-08-09 23:06:07 +0000522 if(NOT WITH_12BIT)
523 # CC: RGB->RGB565 SAMP: fullsize IDCT: islow ENT: huff
524 add_test(djpeg${suffix}-rgb-islow-565
525 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
526 -outfile testout_rgb_islow_565.bmp testout_rgb_islow.jpg)
527 add_test(djpeg${suffix}-rgb-islow-565-cmp
DRCf9134382016-02-06 14:09:20 -0600528 ${MD5CMP} ${MD5_BMP_RGB_ISLOW_565} testout_rgb_islow_565.bmp)
529
DRCaee4f722014-08-09 23:06:07 +0000530 # CC: RGB->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
531 add_test(djpeg${suffix}-rgb-islow-565D
532 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
533 -outfile testout_rgb_islow_565D.bmp testout_rgb_islow.jpg)
534 add_test(djpeg${suffix}-rgb-islow-565D-cmp
DRCf9134382016-02-06 14:09:20 -0600535 ${MD5CMP} ${MD5_BMP_RGB_ISLOW_565D} testout_rgb_islow_565D.bmp)
DRCaee4f722014-08-09 23:06:07 +0000536 endif()
DRC35db75e2014-05-06 22:44:46 +0000537
538 # CC: RGB->YCC SAMP: fullsize/h2v1 FDCT: ifast ENT: 2-pass huff
539 add_test(cjpeg${suffix}-422-ifast-opt
540 ${dir}cjpeg${suffix} -sample 2x1 -dct fast -opt
DRCf9134382016-02-06 14:09:20 -0600541 -outfile testout_422_ifast_opt.jpg ${TESTIMAGES}/testorig.ppm)
DRC35db75e2014-05-06 22:44:46 +0000542 add_test(cjpeg${suffix}-422-ifast-opt-cmp
DRCf9134382016-02-06 14:09:20 -0600543 ${MD5CMP} ${MD5_JPEG_422_IFAST_OPT} testout_422_ifast_opt.jpg)
544
DRC35db75e2014-05-06 22:44:46 +0000545 # CC: YCC->RGB SAMP: fullsize/h2v1 fancy IDCT: ifast ENT: huff
546 add_test(djpeg${suffix}-422-ifast
DRCf9134382016-02-06 14:09:20 -0600547 ${dir}djpeg${suffix} -dct fast
548 -outfile testout_422_ifast.ppm testout_422_ifast_opt.jpg)
DRC35db75e2014-05-06 22:44:46 +0000549 add_test(djpeg${suffix}-422-ifast-cmp
DRCf9134382016-02-06 14:09:20 -0600550 ${MD5CMP} ${MD5_PPM_422_IFAST} testout_422_ifast.ppm)
551
DRC35db75e2014-05-06 22:44:46 +0000552 # CC: YCC->RGB SAMP: h2v1 merged IDCT: ifast ENT: huff
553 add_test(djpeg${suffix}-422m-ifast
DRCf9134382016-02-06 14:09:20 -0600554 ${dir}djpeg${suffix} -dct fast -nosmooth
555 -outfile testout_422m_ifast.ppm testout_422_ifast_opt.jpg)
DRC35db75e2014-05-06 22:44:46 +0000556 add_test(djpeg${suffix}-422m-ifast-cmp
DRCf9134382016-02-06 14:09:20 -0600557 ${MD5CMP} ${MD5_PPM_422M_IFAST} testout_422m_ifast.ppm)
558
DRCaee4f722014-08-09 23:06:07 +0000559 if(NOT WITH_12BIT)
560 # CC: YCC->RGB565 SAMP: h2v1 merged IDCT: ifast ENT: huff
561 add_test(djpeg${suffix}-422m-ifast-565
562 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
563 -outfile testout_422m_ifast_565.bmp testout_422_ifast_opt.jpg)
564 add_test(djpeg${suffix}-422m-ifast-565-cmp
DRCf9134382016-02-06 14:09:20 -0600565 ${MD5CMP} ${MD5_BMP_422M_IFAST_565} testout_422m_ifast_565.bmp)
566
DRCaee4f722014-08-09 23:06:07 +0000567 # CC: YCC->RGB565 (dithered) SAMP: h2v1 merged IDCT: ifast ENT: huff
568 add_test(djpeg${suffix}-422m-ifast-565D
569 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -bmp
570 -outfile testout_422m_ifast_565D.bmp testout_422_ifast_opt.jpg)
571 add_test(djpeg${suffix}-422m-ifast-565D-cmp
DRCf9134382016-02-06 14:09:20 -0600572 ${MD5CMP} ${MD5_BMP_422M_IFAST_565D} testout_422m_ifast_565D.bmp)
DRCaee4f722014-08-09 23:06:07 +0000573 endif()
DRC35db75e2014-05-06 22:44:46 +0000574
575 # CC: RGB->YCC SAMP: fullsize/h2v2 FDCT: ifast ENT: prog huff
576 add_test(cjpeg${suffix}-420-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000577 ${dir}cjpeg${suffix} -sample 2x2 -quality 100 -dct fast -prog
DRCf9134382016-02-06 14:09:20 -0600578 -outfile testout_420_q100_ifast_prog.jpg ${TESTIMAGES}/testorig.ppm)
DRC35db75e2014-05-06 22:44:46 +0000579 add_test(cjpeg${suffix}-420-q100-ifast-prog-cmp
DRCf9134382016-02-06 14:09:20 -0600580 ${MD5CMP} ${MD5_JPEG_420_IFAST_Q100_PROG} testout_420_q100_ifast_prog.jpg)
581
DRC35db75e2014-05-06 22:44:46 +0000582 # CC: YCC->RGB SAMP: fullsize/h2v2 fancy IDCT: ifast ENT: prog huff
583 add_test(djpeg${suffix}-420-q100-ifast-prog
DRCf9134382016-02-06 14:09:20 -0600584 ${dir}djpeg${suffix} -dct fast
585 -outfile testout_420_q100_ifast.ppm testout_420_q100_ifast_prog.jpg)
DRC35db75e2014-05-06 22:44:46 +0000586 add_test(djpeg${suffix}-420-q100-ifast-prog-cmp
DRCf9134382016-02-06 14:09:20 -0600587 ${MD5CMP} ${MD5_PPM_420_Q100_IFAST} testout_420_q100_ifast.ppm)
588
DRC35db75e2014-05-06 22:44:46 +0000589 # CC: YCC->RGB SAMP: h2v2 merged IDCT: ifast ENT: prog huff
590 add_test(djpeg${suffix}-420m-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000591 ${dir}djpeg${suffix} -dct fast -nosmooth
DRC35db75e2014-05-06 22:44:46 +0000592 -outfile testout_420m_q100_ifast.ppm testout_420_q100_ifast_prog.jpg)
593 add_test(djpeg${suffix}-420m-q100-ifast-prog-cmp
DRCf9134382016-02-06 14:09:20 -0600594 ${MD5CMP} ${MD5_PPM_420M_Q100_IFAST} testout_420m_q100_ifast.ppm)
DRC35db75e2014-05-06 22:44:46 +0000595
596 # CC: RGB->Gray SAMP: fullsize FDCT: islow ENT: huff
597 add_test(cjpeg${suffix}-gray-islow
DRCf9134382016-02-06 14:09:20 -0600598 ${dir}cjpeg${suffix} -gray -dct int
599 -outfile testout_gray_islow.jpg ${TESTIMAGES}/testorig.ppm)
DRC35db75e2014-05-06 22:44:46 +0000600 add_test(cjpeg${suffix}-gray-islow-cmp
DRCf9134382016-02-06 14:09:20 -0600601 ${MD5CMP} ${MD5_JPEG_GRAY_ISLOW} testout_gray_islow.jpg)
602
DRC78df2e62014-05-12 09:23:57 +0000603 # CC: Gray->Gray SAMP: fullsize IDCT: islow ENT: huff
DRC35db75e2014-05-06 22:44:46 +0000604 add_test(djpeg${suffix}-gray-islow
DRCf9134382016-02-06 14:09:20 -0600605 ${dir}djpeg${suffix} -dct int
606 -outfile testout_gray_islow.ppm testout_gray_islow.jpg)
DRC35db75e2014-05-06 22:44:46 +0000607 add_test(djpeg${suffix}-gray-islow-cmp
DRCf9134382016-02-06 14:09:20 -0600608 ${MD5CMP} ${MD5_PPM_GRAY_ISLOW} testout_gray_islow.ppm)
609
DRC78df2e62014-05-12 09:23:57 +0000610 # CC: Gray->RGB SAMP: fullsize IDCT: islow ENT: huff
611 add_test(djpeg${suffix}-gray-islow-rgb
DRCf9134382016-02-06 14:09:20 -0600612 ${dir}djpeg${suffix} -dct int -rgb
613 -outfile testout_gray_islow_rgb.ppm testout_gray_islow.jpg)
DRC4c773cf2014-12-08 23:23:41 +0000614 add_test(djpeg${suffix}-gray-islow-rgb-cmp
DRCf9134382016-02-06 14:09:20 -0600615 ${MD5CMP} ${MD5_PPM_GRAY_ISLOW_RGB} testout_gray_islow_rgb.ppm)
616
DRCaee4f722014-08-09 23:06:07 +0000617 if(NOT WITH_12BIT)
618 # CC: Gray->RGB565 SAMP: fullsize IDCT: islow ENT: huff
619 add_test(djpeg${suffix}-gray-islow-565
620 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
621 -outfile testout_gray_islow_565.bmp testout_gray_islow.jpg)
622 add_test(djpeg${suffix}-gray-islow-565-cmp
DRCf9134382016-02-06 14:09:20 -0600623 ${MD5CMP} ${MD5_BMP_GRAY_ISLOW_565} testout_gray_islow_565.bmp)
624
DRCaee4f722014-08-09 23:06:07 +0000625 # CC: Gray->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
626 add_test(djpeg${suffix}-gray-islow-565D
627 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
628 -outfile testout_gray_islow_565D.bmp testout_gray_islow.jpg)
629 add_test(djpeg${suffix}-gray-islow-565D-cmp
DRCf9134382016-02-06 14:09:20 -0600630 ${MD5CMP} ${MD5_BMP_GRAY_ISLOW_565D} testout_gray_islow_565D.bmp)
DRCaee4f722014-08-09 23:06:07 +0000631 endif()
DRC35db75e2014-05-06 22:44:46 +0000632
633 # CC: RGB->YCC SAMP: fullsize smooth/h2v2 smooth FDCT: islow
634 # ENT: 2-pass huff
635 add_test(cjpeg${suffix}-420s-ifast-opt
DRCf9134382016-02-06 14:09:20 -0600636 ${dir}cjpeg${suffix} -sample 2x2 -smooth 1 -dct int -opt
637 -outfile testout_420s_ifast_opt.jpg ${TESTIMAGES}/testorig.ppm)
DRC35db75e2014-05-06 22:44:46 +0000638 add_test(cjpeg${suffix}-420s-ifast-opt-cmp
DRCf9134382016-02-06 14:09:20 -0600639 ${MD5CMP} ${MD5_JPEG_420S_IFAST_OPT} testout_420s_ifast_opt.jpg)
DRC35db75e2014-05-06 22:44:46 +0000640
641 # CC: RGB->YCC SAMP: fullsize/int FDCT: float ENT: prog huff
642 add_test(cjpeg${suffix}-3x2-float-prog
643 ${dir}cjpeg${suffix} -sample 3x2 -dct float -prog
DRCf9134382016-02-06 14:09:20 -0600644 -outfile testout_3x2_float_prog.jpg ${TESTIMAGES}/testorig.ppm)
DRC35db75e2014-05-06 22:44:46 +0000645 add_test(cjpeg${suffix}-3x2-float-prog-cmp
DRCf9134382016-02-06 14:09:20 -0600646 ${MD5CMP} ${MD5_JPEG_3x2_FLOAT_PROG} testout_3x2_float_prog.jpg)
647
DRC35db75e2014-05-06 22:44:46 +0000648 # CC: YCC->RGB SAMP: fullsize/int IDCT: float ENT: prog huff
649 add_test(djpeg${suffix}-3x2-float-prog
DRCf9134382016-02-06 14:09:20 -0600650 ${dir}djpeg${suffix} -dct float
651 -outfile testout_3x2_float.ppm testout_3x2_float_prog.jpg)
DRC35db75e2014-05-06 22:44:46 +0000652 add_test(djpeg${suffix}-3x2-float-prog-cmp
DRCf9134382016-02-06 14:09:20 -0600653 ${MD5CMP} ${MD5_PPM_3x2_FLOAT} testout_3x2_float.ppm)
DRC35db75e2014-05-06 22:44:46 +0000654
655 if(WITH_ARITH_ENC)
656 # CC: YCC->RGB SAMP: fullsize/h2v2 FDCT: islow ENT: arith
657 add_test(cjpeg${suffix}-420-islow-ari
658 ${dir}cjpeg${suffix} -dct int -arithmetic
DRCf9134382016-02-06 14:09:20 -0600659 -outfile testout_420_islow_ari.jpg ${TESTIMAGES}/testorig.ppm)
DRC35db75e2014-05-06 22:44:46 +0000660 add_test(cjpeg${suffix}-420-islow-ari-cmp
DRCf9134382016-02-06 14:09:20 -0600661 ${MD5CMP} ${MD5_JPEG_420_ISLOW_ARI} testout_420_islow_ari.jpg)
662
DRC35db75e2014-05-06 22:44:46 +0000663 add_test(jpegtran${suffix}-420-islow-ari
664 ${dir}jpegtran${suffix} -arithmetic
DRCf9134382016-02-06 14:09:20 -0600665 -outfile testout_420_islow_ari.jpg ${TESTIMAGES}/testimgint.jpg)
DRC35db75e2014-05-06 22:44:46 +0000666 add_test(jpegtran${suffix}-420-islow-ari-cmp
DRCf9134382016-02-06 14:09:20 -0600667 ${MD5CMP} ${MD5_JPEG_420_ISLOW_ARI} testout_420_islow_ari.jpg)
668
DRC35db75e2014-05-06 22:44:46 +0000669 # CC: YCC->RGB SAMP: fullsize FDCT: islow ENT: prog arith
670 add_test(cjpeg${suffix}-444-islow-progari
DRC7a7da942015-06-27 08:10:31 +0000671 ${dir}cjpeg${suffix} -sample 1x1 -dct int -prog -arithmetic
DRCf9134382016-02-06 14:09:20 -0600672 -outfile testout_444_islow_progari.jpg ${TESTIMAGES}/testorig.ppm)
DRC35db75e2014-05-06 22:44:46 +0000673 add_test(cjpeg${suffix}-444-islow-progari-cmp
DRCf9134382016-02-06 14:09:20 -0600674 ${MD5CMP} ${MD5_JPEG_444_ISLOW_PROGARI} testout_444_islow_progari.jpg)
DRC35db75e2014-05-06 22:44:46 +0000675 endif()
DRCf9134382016-02-06 14:09:20 -0600676
DRC35db75e2014-05-06 22:44:46 +0000677 if(WITH_ARITH_DEC)
678 # CC: RGB->YCC SAMP: h2v2 merged IDCT: ifast ENT: arith
DRC4c773cf2014-12-08 23:23:41 +0000679 add_test(djpeg${suffix}-420m-ifast-ari
DRCf9134382016-02-06 14:09:20 -0600680 ${dir}djpeg${suffix} -fast -ppm
681 -outfile testout_420m_ifast_ari.ppm ${TESTIMAGES}/testimgari.jpg)
DRC4c773cf2014-12-08 23:23:41 +0000682 add_test(djpeg${suffix}-420m-ifast-ari-cmp
DRCf9134382016-02-06 14:09:20 -0600683 ${MD5CMP} ${MD5_PPM_420M_IFAST_ARI} testout_420m_ifast_ari.ppm)
684
DRC35db75e2014-05-06 22:44:46 +0000685 add_test(jpegtran${suffix}-420-islow
DRCf9134382016-02-06 14:09:20 -0600686 ${dir}jpegtran${suffix}
687 -outfile testout_420_islow.jpg ${TESTIMAGES}/testimgari.jpg)
DRC35db75e2014-05-06 22:44:46 +0000688 add_test(jpegtran${suffix}-420-islow-cmp
DRCf9134382016-02-06 14:09:20 -0600689 ${MD5CMP} ${MD5_JPEG_420_ISLOW} testout_420_islow.jpg)
DRC35db75e2014-05-06 22:44:46 +0000690 endif()
691
692 # 2/1-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 16x16 islow ENT: huff
693 # 15/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 15x15 islow ENT: huff
694 # 13/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 13x13 islow ENT: huff
695 # 11/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 11x11 islow ENT: huff
696 # 9/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 9x9 islow ENT: huff
697 # 7/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 7x7 islow/14x14 islow
698 # ENT: huff
699 # 3/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 6x6 islow/12x12 islow
700 # ENT: huff
701 # 5/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 5x5 islow/10x10 islow
702 # ENT: huff
703 # 1/2-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 4x4 islow/8x8 islow
704 # ENT: huff
705 # 3/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 3x3 islow/6x6 islow
706 # ENT: huff
707 # 1/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 2x2 islow/4x4 islow
708 # ENT: huff
709 # 1/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 1x1 islow/2x2 islow
710 # ENT: huff
711 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)
712 string(REGEX REPLACE "_" "/" scalearg ${scale})
713 add_test(djpeg${suffix}-420m-islow-${scale}
DRC78df2e62014-05-12 09:23:57 +0000714 ${dir}djpeg${suffix} -dct int -scale ${scalearg} -nosmooth -ppm
DRCf9134382016-02-06 14:09:20 -0600715 -outfile testout_420m_islow_${scale}.ppm ${TESTIMAGES}/${TESTORIG})
DRC35db75e2014-05-06 22:44:46 +0000716 add_test(djpeg${suffix}-420m-islow-${scale}-cmp
DRCf9134382016-02-06 14:09:20 -0600717 ${MD5CMP} ${MD5_PPM_420M_ISLOW_${scale}} testout_420m_islow_${scale}.ppm)
DRC35db75e2014-05-06 22:44:46 +0000718 endforeach()
719
DRCaee4f722014-08-09 23:06:07 +0000720 if(NOT WITH_12BIT)
721 # CC: YCC->RGB (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
722 add_test(djpeg${suffix}-420-islow-256
723 ${dir}djpeg${suffix} -dct int -colors 256 -bmp
DRCf9134382016-02-06 14:09:20 -0600724 -outfile testout_420_islow_256.bmp ${TESTIMAGES}/${TESTORIG})
DRCaee4f722014-08-09 23:06:07 +0000725 add_test(djpeg${suffix}-420-islow-256-cmp
DRCf9134382016-02-06 14:09:20 -0600726 ${MD5CMP} ${MD5_BMP_420_ISLOW_256} testout_420_islow_256.bmp)
727
DRCaee4f722014-08-09 23:06:07 +0000728 # CC: YCC->RGB565 SAMP: h2v2 fancy IDCT: islow ENT: huff
729 add_test(djpeg${suffix}-420-islow-565
730 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
DRCf9134382016-02-06 14:09:20 -0600731 -outfile testout_420_islow_565.bmp ${TESTIMAGES}/${TESTORIG})
DRCaee4f722014-08-09 23:06:07 +0000732 add_test(djpeg${suffix}-420-islow-565-cmp
DRCf9134382016-02-06 14:09:20 -0600733 ${MD5CMP} ${MD5_BMP_420_ISLOW_565} testout_420_islow_565.bmp)
734
DRCaee4f722014-08-09 23:06:07 +0000735 # CC: YCC->RGB565 (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
736 add_test(djpeg${suffix}-420-islow-565D
737 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
DRCf9134382016-02-06 14:09:20 -0600738 -outfile testout_420_islow_565D.bmp ${TESTIMAGES}/${TESTORIG})
DRCaee4f722014-08-09 23:06:07 +0000739 add_test(djpeg${suffix}-420-islow-565D-cmp
DRCf9134382016-02-06 14:09:20 -0600740 ${MD5CMP} ${MD5_BMP_420_ISLOW_565D} testout_420_islow_565D.bmp)
741
DRCaee4f722014-08-09 23:06:07 +0000742 # CC: YCC->RGB565 SAMP: h2v2 merged IDCT: islow ENT: huff
743 add_test(djpeg${suffix}-420m-islow-565
744 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
DRCf9134382016-02-06 14:09:20 -0600745 -outfile testout_420m_islow_565.bmp ${TESTIMAGES}/${TESTORIG})
DRCaee4f722014-08-09 23:06:07 +0000746 add_test(djpeg${suffix}-420m-islow-565-cmp
DRCf9134382016-02-06 14:09:20 -0600747 ${MD5CMP} ${MD5_BMP_420M_ISLOW_565} testout_420m_islow_565.bmp)
748
DRCaee4f722014-08-09 23:06:07 +0000749 # 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
DRCf9134382016-02-06 14:09:20 -0600752 -outfile testout_420m_islow_565D.bmp ${TESTIMAGES}/${TESTORIG})
DRCaee4f722014-08-09 23:06:07 +0000753 add_test(djpeg${suffix}-420m-islow-565D-cmp
DRCf9134382016-02-06 14:09:20 -0600754 ${MD5CMP} ${MD5_BMP_420M_ISLOW_565D} testout_420m_islow_565D.bmp)
DRCaee4f722014-08-09 23:06:07 +0000755 endif()
DRC7a7da942015-06-27 08:10:31 +0000756
757 # Partial decode tests. These tests are designed to cover all of the
758 # possible code paths in jpeg_skip_scanlines().
759
760 # Context rows: Yes Intra-iMCU row: Yes iMCU row prefetch: No ENT: huff
761 add_test(djpeg${suffix}-420-islow-skip15_31
762 ${dir}djpeg${suffix} -dct int -skip 15,31 -ppm
DRCf9134382016-02-06 14:09:20 -0600763 -outfile testout_420_islow_skip15,31.ppm ${TESTIMAGES}/${TESTORIG})
DRC7a7da942015-06-27 08:10:31 +0000764 add_test(djpeg${suffix}-420-islow-skip15_31-cmp
DRCf9134382016-02-06 14:09:20 -0600765 ${MD5CMP} ${MD5_PPM_420_ISLOW_SKIP15_31} testout_420_islow_skip15,31.ppm)
766
DRC7a7da942015-06-27 08:10:31 +0000767 # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: Yes ENT: arith
768 if(WITH_ARITH_DEC)
769 add_test(djpeg${suffix}-420-islow-ari-skip16_139
770 ${dir}djpeg${suffix} -dct int -skip 16,139 -ppm
771 -outfile testout_420_islow_ari_skip16,139.ppm
DRCf9134382016-02-06 14:09:20 -0600772 ${TESTIMAGES}/testimgari.jpg)
DRC7a7da942015-06-27 08:10:31 +0000773 add_test(djpeg${suffix}-420-islow-ari_skip16_139-cmp
DRCf9134382016-02-06 14:09:20 -0600774 ${MD5CMP} ${MD5_PPM_420_ISLOW_ARI_SKIP16_139}
775 testout_420_islow_ari_skip16,139.ppm)
DRC7a7da942015-06-27 08:10:31 +0000776 endif()
DRCf9134382016-02-06 14:09:20 -0600777
DRC7a7da942015-06-27 08:10:31 +0000778 # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: No ENT: prog huff
779 add_test(cjpeg${suffix}-420-islow-prog
DRCf9134382016-02-06 14:09:20 -0600780 ${dir}cjpeg${suffix} -dct int -prog
781 -outfile testout_420_islow_prog.jpg ${TESTIMAGES}/testorig.ppm)
DRC3ab68cf2016-02-19 18:32:10 -0600782 add_test(djpeg${suffix}-420-islow-prog-crop62x62_71_71
783 ${dir}djpeg${suffix} -dct int -crop 62x62+71+71 -ppm
784 -outfile testout_420_islow_prog_crop62x62,71,71.ppm
785 testout_420_islow_prog.jpg)
786 add_test(djpeg${suffix}-420-islow-prog-crop62x62_71_71-cmp
787 ${MD5CMP} ${MD5_PPM_420_ISLOW_PROG_CROP62x62_71_71}
788 testout_420_islow_prog_crop62x62,71,71.ppm)
DRCf9134382016-02-06 14:09:20 -0600789
DRC7a7da942015-06-27 08:10:31 +0000790 # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: No ENT: arith
791 if(WITH_ARITH_DEC)
DRC3ab68cf2016-02-19 18:32:10 -0600792 add_test(djpeg${suffix}-420-islow-ari-crop53x53_4_4
793 ${dir}djpeg${suffix} -dct int -crop 53x53+4+4 -ppm
794 -outfile testout_420_islow_ari_crop53x53,4,4.ppm
DRCf9134382016-02-06 14:09:20 -0600795 ${TESTIMAGES}/testimgari.jpg)
DRC3ab68cf2016-02-19 18:32:10 -0600796 add_test(djpeg${suffix}-420-islow-ari-crop53x53_4_4-cmp
797 ${MD5CMP} ${MD5_PPM_420_ISLOW_ARI_CROP53x53_4_4}
798 testout_420_islow_ari_crop53x53,4,4.ppm)
DRC7a7da942015-06-27 08:10:31 +0000799 endif()
DRCf9134382016-02-06 14:09:20 -0600800
DRC7a7da942015-06-27 08:10:31 +0000801 # Context rows: No Intra-iMCU row: Yes ENT: huff
802 add_test(cjpeg${suffix}-444-islow
DRCf9134382016-02-06 14:09:20 -0600803 ${dir}cjpeg${suffix} -dct int -sample 1x1
804 -outfile testout_444_islow.jpg ${TESTIMAGES}/testorig.ppm)
DRC7a7da942015-06-27 08:10:31 +0000805 add_test(djpeg${suffix}-444-islow-skip1_6
806 ${dir}djpeg${suffix} -dct int -skip 1,6 -ppm
807 -outfile testout_444_islow_skip1,6.ppm testout_444_islow.jpg)
808 add_test(djpeg${suffix}-444-islow-skip1_6-cmp
DRCf9134382016-02-06 14:09:20 -0600809 ${MD5CMP} ${MD5_PPM_444_ISLOW_SKIP1_6} testout_444_islow_skip1,6.ppm)
810
DRC7a7da942015-06-27 08:10:31 +0000811 # Context rows: No Intra-iMCU row: No ENT: prog huff
812 add_test(cjpeg${suffix}-444-islow-prog
813 ${dir}cjpeg${suffix} -dct int -prog -sample 1x1
DRCf9134382016-02-06 14:09:20 -0600814 -outfile testout_444_islow_prog.jpg ${TESTIMAGES}/testorig.ppm)
DRC3ab68cf2016-02-19 18:32:10 -0600815 add_test(djpeg${suffix}-444-islow-prog-crop98x98_13_13
816 ${dir}djpeg${suffix} -dct int -crop 98x98+13+13 -ppm
817 -outfile testout_444_islow_prog_crop98x98,13,13.ppm
DRCf9134382016-02-06 14:09:20 -0600818 testout_444_islow_prog.jpg)
DRC3ab68cf2016-02-19 18:32:10 -0600819 add_test(djpeg${suffix}-444-islow-prog_crop98x98_13_13-cmp
820 ${MD5CMP} ${MD5_PPM_444_ISLOW_PROG_CROP98x98_13_13}
821 testout_444_islow_prog_crop98x98,13,13.ppm)
DRCf9134382016-02-06 14:09:20 -0600822
DRC7a7da942015-06-27 08:10:31 +0000823 # Context rows: No Intra-iMCU row: No ENT: arith
824 if(WITH_ARITH_ENC)
825 add_test(cjpeg${suffix}-444-islow-ari
826 ${dir}cjpeg${suffix} -dct int -arithmetic -sample 1x1
DRCf9134382016-02-06 14:09:20 -0600827 -outfile testout_444_islow_ari.jpg ${TESTIMAGES}/testorig.ppm)
DRC7a7da942015-06-27 08:10:31 +0000828 if(WITH_ARITH_DEC)
DRC3ab68cf2016-02-19 18:32:10 -0600829 add_test(djpeg${suffix}-444-islow-ari-crop37x37_0_0
830 ${dir}djpeg${suffix} -dct int -crop 37x37+0+0 -ppm
831 -outfile testout_444_islow_ari_crop37x37,0,0.ppm
DRC7a7da942015-06-27 08:10:31 +0000832 testout_444_islow_ari.jpg)
DRC3ab68cf2016-02-19 18:32:10 -0600833 add_test(djpeg${suffix}-444-islow-ari-crop37x37_0_0-cmp
834 ${MD5CMP} ${MD5_PPM_444_ISLOW_ARI_CROP37x37_0_0}
835 testout_444_islow_ari_crop37x37,0,0.ppm)
DRC7a7da942015-06-27 08:10:31 +0000836 endif()
837 endif()
838
DRC35db75e2014-05-06 22:44:46 +0000839 add_test(jpegtran${suffix}-crop
840 ${dir}jpegtran${suffix} -crop 120x90+20+50 -transpose -perfect
DRCf9134382016-02-06 14:09:20 -0600841 -outfile testout_crop.jpg ${TESTIMAGES}/${TESTORIG})
DRC35db75e2014-05-06 22:44:46 +0000842 add_test(jpegtran${suffix}-crop-cmp
DRCf9134382016-02-06 14:09:20 -0600843 ${MD5CMP} ${MD5_JPEG_CROP} testout_crop.jpg)
DRC35db75e2014-05-06 22:44:46 +0000844
DRC0af8d672012-01-31 11:09:11 +0000845endforeach()
DRC2c0a4e12010-10-16 08:51:43 +0000846
DRCf9134382016-02-06 14:09:20 -0600847add_custom_target(testclean COMMAND ${MD5CMP} -P
DRCa0f878a2011-04-02 04:43:14 +0000848 ${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake)
849
DRC2c0a4e12010-10-16 08:51:43 +0000850
851#
852# Installer
853#
854
DRC2c0a4e12010-10-16 08:51:43 +0000855if(MSVC)
856 set(INST_PLATFORM "Visual C++")
DRCb94f2de2011-03-22 09:31:25 +0000857 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
DRC7175e512013-04-23 22:29:00 +0000858 set(INST_REG_NAME ${CMAKE_PROJECT_NAME})
DRC2c0a4e12010-10-16 08:51:43 +0000859elseif(MINGW)
860 set(INST_PLATFORM GCC)
DRCb94f2de2011-03-22 09:31:25 +0000861 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
DRC7175e512013-04-23 22:29:00 +0000862 set(INST_REG_NAME ${CMAKE_PROJECT_NAME}-gcc)
DRC2c0a4e12010-10-16 08:51:43 +0000863 set(INST_DEFS -DGCC)
864endif()
865
866if(64BIT)
867 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
868 set(INST_NAME ${INST_NAME}64)
DRC7175e512013-04-23 22:29:00 +0000869 set(INST_REG_NAME ${INST_DIR}64)
DRC2c0a4e12010-10-16 08:51:43 +0000870 set(INST_DEFS ${INST_DEFS} -DWIN64)
871endif()
872
DRC957d6232011-04-01 11:13:11 +0000873if(WITH_JAVA)
874 set(INST_DEFS ${INST_DEFS} -DJAVA)
875endif()
876
DRC2c0a4e12010-10-16 08:51:43 +0000877if(MSVC_IDE)
DRC926e01f2011-04-06 06:35:38 +0000878 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
DRC2c0a4e12010-10-16 08:51:43 +0000879else()
880 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
881endif()
882
DRC9fe22da2014-04-16 23:30:38 +0000883STRING(REGEX REPLACE "/" "\\\\" INST_DIR ${CMAKE_INSTALL_PREFIX})
DRC7175e512013-04-23 22:29:00 +0000884
DRC2c0a4e12010-10-16 08:51:43 +0000885configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
886
DRC7175e512013-04-23 22:29:00 +0000887if(WITH_JAVA)
888 set(JAVA_DEPEND java)
889endif()
DRC2c0a4e12010-10-16 08:51:43 +0000890add_custom_target(installer
891 makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
DRCb94f2de2011-03-22 09:31:25 +0000892 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
DRC7175e512013-04-23 22:29:00 +0000893 cjpeg djpeg jpegtran tjbench ${JAVA_DEPEND}
DRC2c0a4e12010-10-16 08:51:43 +0000894 SOURCES libjpeg-turbo.nsi)
DRC7284c9a2010-10-16 21:55:14 +0000895
DRCaee4f722014-08-09 23:06:07 +0000896if(WITH_TURBOJPEG)
DRC665c96e2015-05-15 22:08:21 +0000897 if(ENABLE_SHARED)
898 install(TARGETS turbojpeg tjbench
899 ARCHIVE DESTINATION lib
900 LIBRARY DESTINATION lib
901 RUNTIME DESTINATION bin)
902 endif()
903 if(ENABLE_STATIC)
904 install(TARGETS turbojpeg-static ARCHIVE DESTINATION lib)
905 if(NOT ENABLE_SHARED)
906 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/tjbench-static.exe
907 DESTINATION bin RENAME tjbench.exe)
908 endif()
909 endif()
910 install(FILES ${CMAKE_SOURCE_DIR}/turbojpeg.h DESTINATION include)
DRCaee4f722014-08-09 23:06:07 +0000911endif()
DRC665c96e2015-05-15 22:08:21 +0000912
913if(ENABLE_STATIC)
914 install(TARGETS jpeg-static ARCHIVE DESTINATION lib)
915 if(NOT ENABLE_SHARED)
916 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/cjpeg-static.exe
917 DESTINATION bin RENAME cjpeg.exe)
918 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/djpeg-static.exe
919 DESTINATION bin RENAME djpeg.exe)
920 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/jpegtran-static.exe
921 DESTINATION bin RENAME jpegtran.exe)
922 endif()
923endif()
924
925install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION bin)
DRC7284c9a2010-10-16 21:55:14 +0000926
DRC7e3acc02015-10-10 10:25:46 -0500927install(FILES ${CMAKE_SOURCE_DIR}/README.ijg ${CMAKE_SOURCE_DIR}/README.md
DRC9fe22da2014-04-16 23:30:38 +0000928 ${CMAKE_SOURCE_DIR}/example.c ${CMAKE_SOURCE_DIR}/libjpeg.txt
DRCa1647c82012-02-10 00:39:05 +0000929 ${CMAKE_SOURCE_DIR}/structure.txt ${CMAKE_SOURCE_DIR}/usage.txt
930 ${CMAKE_SOURCE_DIR}/wizard.txt
DRC7284c9a2010-10-16 21:55:14 +0000931 DESTINATION doc)
DRCe2befde2010-10-17 07:28:08 +0000932
933install(FILES ${CMAKE_BINARY_DIR}/jconfig.h ${CMAKE_SOURCE_DIR}/jerror.h
934 ${CMAKE_SOURCE_DIR}/jmorecfg.h ${CMAKE_SOURCE_DIR}/jpeglib.h
DRC665c96e2015-05-15 22:08:21 +0000935 DESTINATION include)