blob: 307c495e8819742e280d157fac9ccaee893a945f [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)
DRC17745dd2013-04-25 09:45:50 +000012set(VERSION 1.3.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)
DRC5039d732013-01-21 23:42:12 +000053option(WITH_JAVA "Build Java wrapper for the TurboJPEG library" FALSE)
DRC245cfdf2010-11-23 17:11:06 +000054
55if(WITH_ARITH_ENC)
56 set(C_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000057 message(STATUS "Arithmetic encoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000058else()
DRC990e28d2011-01-04 21:40:11 +000059 message(STATUS "Arithmetic encoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000060endif()
61
62if(WITH_ARITH_DEC)
63 set(D_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000064 message(STATUS "Arithmetic decoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000065else()
DRC990e28d2011-01-04 21:40:11 +000066 message(STATUS "Arithmetic decoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000067endif()
68
DRC957d6232011-04-01 11:13:11 +000069if(WITH_JAVA)
DRC5039d732013-01-21 23:42:12 +000070 message(STATUS "TurboJPEG Java wrapper enabled")
DRC218c0c12011-02-05 06:01:18 +000071else()
DRC5039d732013-01-21 23:42:12 +000072 message(STATUS "TurboJPEG Java wrapper disabled")
DRC218c0c12011-02-05 06:01:18 +000073endif()
74
DRCab706232013-01-18 23:42:31 +000075set(SO_AGE 0)
76if(WITH_MEM_SRCDST)
77 set(SO_AGE 1)
78endif()
79
DRC84697032010-10-15 03:43:24 +000080set(JPEG_LIB_VERSION 62)
81set(DLL_VERSION ${JPEG_LIB_VERSION})
DRCab706232013-01-18 23:42:31 +000082set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +000083if(WITH_JPEG8)
84 set(JPEG_LIB_VERSION 80)
85 set(DLL_VERSION 8)
DRCa9d5b252010-10-15 06:42:45 +000086 set(FULLVERSION ${DLL_VERSION}.0.2)
DRCf38eee02011-02-18 07:00:38 +000087 message(STATUS "Emulating libjpeg v8 API/ABI")
DRC84697032010-10-15 03:43:24 +000088elseif(WITH_JPEG7)
89 set(JPEG_LIB_VERSION 70)
90 set(DLL_VERSION 7)
DRCab706232013-01-18 23:42:31 +000091 set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +000092 message(STATUS "Emulating libjpeg v7 API/ABI")
93endif(WITH_JPEG8)
94
DRCab706232013-01-18 23:42:31 +000095if(WITH_MEM_SRCDST)
96 set(MEM_SRCDST_SUPPORTED 1)
97 message(STATUS "In-memory source/destination managers enabled")
98else()
99 message(STATUS "In-memory source/destination managers disabled")
100endif()
101
DRC84697032010-10-15 03:43:24 +0000102if(MSVC)
103 # Use the static C library for all build types
104 foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
DRC2e4d0442011-02-08 01:18:37 +0000105 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
DRC84697032010-10-15 03:43:24 +0000106 if(${var} MATCHES "/MD")
107 string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
108 endif()
109 endforeach()
110
111 add_definitions(-W3 -wd4996)
112endif()
113
114# Detect whether compiler is 64-bit
115if(MSVC AND CMAKE_CL_64)
116 set(SIMD_X86_64 1)
117 set(64BIT 1)
118elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
119 set(SIMD_X86_64 1)
120 set(64BIT 1)
121endif()
122
123if(64BIT)
124 message(STATUS "64-bit build")
125else()
126 message(STATUS "32-bit build")
127endif()
128
DRC7175e512013-04-23 22:29:00 +0000129if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
130 if(MSVC)
131 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME})
132 else()
133 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME}-gcc)
134 endif()
135 if(64BIT)
136 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_INSTALL_PREFIX_DEFAULT}64)
137 endif()
138 set(CMAKE_INSTALL_PREFIX "c:/${CMAKE_INSTALL_PREFIX_DEFAULT}" CACHE PATH
139 "Directory into which to install libjpeg-turbo (default: c:/${CMAKE_INSTALL_PREFIX_DEFAULT})"
140 FORCE)
141endif()
142
143message(STATUS "Install directory = ${CMAKE_INSTALL_PREFIX}")
144
DRC84697032010-10-15 03:43:24 +0000145configure_file(win/jconfig.h.in jconfig.h)
DRCff6961f2014-04-20 09:17:11 +0000146configure_file(win/jconfigint.h.in jconfigint.h)
DRC84697032010-10-15 03:43:24 +0000147
148include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
149
DRC957d6232011-04-01 11:13:11 +0000150if(WITH_JAVA)
151 find_package(Java)
152 find_package(JNI)
DRCdb425062011-04-03 06:10:18 +0000153 if(DEFINED JAVACFLAGS)
154 message(STATUS "Java compiler flags = ${JAVACFLAGS}")
155 endif()
DRC218c0c12011-02-05 06:01:18 +0000156endif()
157
DRC84697032010-10-15 03:43:24 +0000158
159#
160# Targets
161#
162
DRC245cfdf2010-11-23 17:11:06 +0000163set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
164 jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
165 jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
166 jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
167 jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
168 jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
169 jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
170
171if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
172 set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
173endif()
174
175if(WITH_ARITH_ENC)
176 set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
177endif()
178
179if(WITH_ARITH_DEC)
180 set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
181endif()
DRC84697032010-10-15 03:43:24 +0000182
183if(WITH_SIMD)
184 add_definitions(-DWITH_SIMD)
185 add_subdirectory(simd)
186 if(SIMD_X86_64)
187 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
188 else()
189 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
190 endif()
191 # This tells CMake that the "source" files haven't been generated yet
192 set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
193else()
194 set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
DRC6f4ba612010-10-16 21:27:38 +0000195 message(STATUS "Not using SIMD acceleration")
DRC84697032010-10-15 03:43:24 +0000196endif()
197
DRC957d6232011-04-01 11:13:11 +0000198if(WITH_JAVA)
199 add_subdirectory(java)
200endif()
201
DRC84697032010-10-15 03:43:24 +0000202add_subdirectory(sharedlib)
203
204add_library(jpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
DRC84697032010-10-15 03:43:24 +0000205if(NOT MSVC)
206 set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
207endif()
208if(WITH_SIMD)
209 add_dependencies(jpeg-static simd)
210endif()
211
DRC418dbdf2011-05-26 10:45:06 +0000212set(TURBOJPEG_SOURCES turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
DRC957d6232011-04-01 11:13:11 +0000213if(WITH_JAVA)
DRC218c0c12011-02-05 06:01:18 +0000214 set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
DRC957d6232011-04-01 11:13:11 +0000215 include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
DRC218c0c12011-02-05 06:01:18 +0000216endif()
217
218add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
DRC84697032010-10-15 03:43:24 +0000219set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
DRC389c4722011-02-06 18:48:13 +0000220if(MINGW)
221 set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
222endif()
DRC84697032010-10-15 03:43:24 +0000223target_link_libraries(turbojpeg jpeg-static)
224set_target_properties(turbojpeg PROPERTIES LINK_INTERFACE_LIBRARIES "")
225
226add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS}
DRC418dbdf2011-05-26 10:45:06 +0000227 turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
DRC84697032010-10-15 03:43:24 +0000228if(NOT MSVC)
229 set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
230endif()
231if(WITH_SIMD)
232 add_dependencies(turbojpeg-static simd)
233endif()
234
DRC3185cb92011-05-25 03:52:22 +0000235add_executable(tjunittest tjunittest.c tjutil.c)
236target_link_libraries(tjunittest turbojpeg)
DRC84697032010-10-15 03:43:24 +0000237
DRC3185cb92011-05-25 03:52:22 +0000238add_executable(tjunittest-static tjunittest.c tjutil.c)
239target_link_libraries(tjunittest-static turbojpeg-static)
DRC84697032010-10-15 03:43:24 +0000240
DRC3185cb92011-05-25 03:52:22 +0000241add_executable(tjbench tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
DRC43484642011-05-24 17:03:51 +0000242 wrppm.c)
DRC4ad60032011-09-20 05:41:54 +0000243target_link_libraries(tjbench turbojpeg jpeg-static)
DRC3185cb92011-05-25 03:52:22 +0000244set_property(TARGET tjbench PROPERTY COMPILE_FLAGS
DRC43484642011-05-24 17:03:51 +0000245 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
DRC84697032010-10-15 03:43:24 +0000246
DRC3185cb92011-05-25 03:52:22 +0000247add_executable(tjbench-static tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
DRC43484642011-05-24 17:03:51 +0000248 wrppm.c)
DRC3185cb92011-05-25 03:52:22 +0000249target_link_libraries(tjbench-static turbojpeg-static jpeg-static)
250set_property(TARGET tjbench-static PROPERTY COMPILE_FLAGS
DRC43484642011-05-24 17:03:51 +0000251 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
DRC84697032010-10-15 03:43:24 +0000252
253add_executable(cjpeg-static cjpeg.c cdjpeg.c rdbmp.c rdgif.c rdppm.c rdswitch.c
254 rdtarga.c)
255set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS
DRC5ee81f42011-05-02 00:35:50 +0000256 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000257target_link_libraries(cjpeg-static jpeg-static)
258
259add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrbmp.c wrgif.c
260 wrppm.c wrtarga.c)
261set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS
DRC5ee81f42011-05-02 00:35:50 +0000262 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000263target_link_libraries(djpeg-static jpeg-static)
264
265add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
266target_link_libraries(jpegtran-static jpeg-static)
DRC7e3fd2f2011-05-25 06:04:43 +0000267set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "-DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000268
269add_executable(rdjpgcom rdjpgcom.c)
270
271add_executable(wrjpgcom rdjpgcom.c)
272
273
274#
275# Tests
276#
277
DRC957d6232011-04-01 11:13:11 +0000278if(MSVC_IDE)
279 set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/")
280else()
281 set(OBJDIR "")
282endif()
283
DRC84697032010-10-15 03:43:24 +0000284enable_testing()
DRC211d1e72013-01-13 11:25:20 +0000285
DRC35db75e2014-05-06 22:44:46 +0000286set(MD5_JPEG_RGB_ISLOW 768e970dd57b340ff1b83c9d3d47c77b)
287set(MD5_PPM_RGB_ISLOW 00a257f5393fef8821f2b88ac7421291)
DRC78df2e62014-05-12 09:23:57 +0000288set(MD5_BMP_RGB_ISLOW_565 f07d2e75073e4bb10f6c6f4d36e2e3be)
289set(MD5_BMP_RGB_ISLOW_565D 4cfa0928ef3e6bb626d7728c924cfda4)
DRC35db75e2014-05-06 22:44:46 +0000290set(MD5_JPEG_422_IFAST_OPT 2540287b79d913f91665e660303ab2c8)
291set(MD5_PPM_422_IFAST 35bd6b3f833bad23de82acea847129fa)
292set(MD5_PPM_422M_IFAST 8dbc65323d62cca7c91ba02dd1cfa81d)
DRC78df2e62014-05-12 09:23:57 +0000293set(MD5_BMP_422M_IFAST_565 3294bd4d9a1f2b3d08ea6020d0db7065)
294set(MD5_BMP_422M_IFAST_565D da98c9c7b6039511be4a79a878a9abc1)
DRC35db75e2014-05-06 22:44:46 +0000295set(MD5_JPEG_420_IFAST_Q100_PROG 990cbe0329c882420a2094da7e5adade)
296set(MD5_PPM_420_Q100_IFAST 5a732542015c278ff43635e473a8a294)
297set(MD5_PPM_420M_Q100_IFAST ff692ee9323a3b424894862557c092f1)
298set(MD5_JPEG_GRAY_ISLOW 72b51f894b8f4a10b3ee3066770aa38d)
299set(MD5_PPM_GRAY_ISLOW 8d3596c56eace32f205deccc229aa5ed)
DRC78df2e62014-05-12 09:23:57 +0000300set(MD5_PPM_GRAY_ISLOW_RGB 116424ac07b79e5e801f00508eab48ec)
301set(MD5_BMP_GRAY_ISLOW_565 12f78118e56a2f48b966f792fedf23cc)
302set(MD5_BMP_GRAY_ISLOW_565D bdbbd616441a24354c98553df5dc82db)
DRC35db75e2014-05-06 22:44:46 +0000303set(MD5_JPEG_420S_IFAST_OPT 388708217ac46273ca33086b22827ed8)
304if(WITH_SIMD)
305set(MD5_JPEG_3x2_FLOAT_PROG 343e3f8caf8af5986ebaf0bdc13b5c71)
306set(MD5_PPM_3x2_FLOAT 1a75f36e5904d6fc3a85a43da9ad89bb)
307else()
308set(MD5_JPEG_3x2_FLOAT_PROG 9bca803d2042bd1eb03819e2bf92b3e5)
DRC715bb412014-05-11 10:09:07 +0000309set(MD5_PPM_3x2_FLOAT f6bfab038438ed8f5522fbd33595dcdc)
DRC35db75e2014-05-06 22:44:46 +0000310endif()
311set(MD5_JPEG_420_ISLOW_ARI e986fb0a637a8d833d96e8a6d6d84ea1)
312set(MD5_JPEG_444_ISLOW_PROGARI 0a8f1c8f66e113c3cf635df0a475a617)
313set(MD5_PPM_420M_IFAST_ARI 72b59a99bcf1de24c5b27d151bde2437)
314set(MD5_JPEG_420_ISLOW 9a68f56bc76e466aa7e52f415d0f4a5f)
315set(MD5_PPM_420M_ISLOW_2_1 9f9de8c0612f8d06869b960b05abf9c9)
316set(MD5_PPM_420M_ISLOW_15_8 b6875bc070720b899566cc06459b63b7)
317set(MD5_PPM_420M_ISLOW_13_8 bc3452573c8152f6ae552939ee19f82f)
318set(MD5_PPM_420M_ISLOW_11_8 d8cc73c0aaacd4556569b59437ba00a5)
319set(MD5_PPM_420M_ISLOW_9_8 d25e61bc7eac0002f5b393aa223747b6)
320set(MD5_PPM_420M_ISLOW_7_8 ddb564b7c74a09494016d6cd7502a946)
321set(MD5_PPM_420M_ISLOW_3_4 8ed8e68808c3fbc4ea764fc9d2968646)
322set(MD5_PPM_420M_ISLOW_5_8 a3363274999da2366a024efae6d16c9b)
323set(MD5_PPM_420M_ISLOW_1_2 e692a315cea26b988c8e8b29a5dbcd81)
324set(MD5_PPM_420M_ISLOW_3_8 79eca9175652ced755155c90e785a996)
325set(MD5_PPM_420M_ISLOW_1_4 79cd778f8bf1a117690052cacdd54eca)
326set(MD5_PPM_420M_ISLOW_1_8 391b3d4aca640c8567d6f8745eb2142f)
327set(MD5_BMP_420_ISLOW_256 4980185e3776e89bd931736e1cddeee6)
DRC78df2e62014-05-12 09:23:57 +0000328set(MD5_BMP_420_ISLOW_565 bf9d13e16c4923b92e1faa604d7922cb)
329set(MD5_BMP_420_ISLOW_565D 6bde71526acc44bcff76f696df8638d2)
330set(MD5_BMP_420M_ISLOW_565 8dc0185245353cfa32ad97027342216f)
331set(MD5_BMP_420M_ISLOW_565D d1be3a3339166255e76fa50a0d70d73e)
DRC211d1e72013-01-13 11:25:20 +0000332set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d)
333
DRC957d6232011-04-01 11:13:11 +0000334if(WITH_JAVA)
DRC35db75e2014-05-06 22:44:46 +0000335 add_test(TJUnitTest
336 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
337 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
338 TJUnitTest)
339 add_test(TJUnitTest-yuv
340 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
341 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
342 TJUnitTest -yuv)
343 add_test(TJUnitTest-yuv-nopad
344 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
345 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
346 TJUnitTest -yuv -noyuvpad)
347 add_test(TJUnitTest-bi
348 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
349 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
350 TJUnitTest -bi)
351 add_test(TJUnitTest-bi-yuv
352 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
353 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
354 TJUnitTest -bi -yuv)
355 add_test(TJUnitTest-bi-yuv-nopad
356 ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar
357 -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
358 TJUnitTest -bi -yuv -noyuvpad)
DRC957d6232011-04-01 11:13:11 +0000359endif()
DRC84697032010-10-15 03:43:24 +0000360
DRC35db75e2014-05-06 22:44:46 +0000361foreach(libtype shared static)
362 if(libtype STREQUAL "shared")
363 set(dir sharedlib/)
364 else()
365 set(dir "")
366 set(suffix -static)
367 endif()
368 add_test(tjunittest${suffix} tjunittest${suffix})
369 add_test(tjunittest${suffix}-alloc tjunittest${suffix} -alloc)
370 add_test(tjunittest${suffix}-yuv tjunittest${suffix} -yuv)
371 add_test(tjunittest${suffix}-yuv-alloc tjunittest${suffix} -yuv -alloc)
372 add_test(tjunittest${suffix}-yuv-nopad tjunittest${suffix} -yuv -noyuvpad)
373
374 # These tests are carefully chosen to provide full coverage of as many of the
375 # underlying algorithms as possible (including all of the SIMD-accelerated
376 # ones.)
377
378 # CC: null SAMP: fullsize FDCT: islow ENT: huff
379 add_test(cjpeg${suffix}-rgb-islow
380 ${dir}cjpeg${suffix} -rgb -dct int -outfile testout_rgb_islow.jpg
381 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
382 add_test(cjpeg${suffix}-rgb-islow-cmp
383 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_RGB_ISLOW} -DFILE=testout_rgb_islow.jpg
384 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
385 # CC: null SAMP: fullsize IDCT: islow ENT: huff
386 add_test(djpeg${suffix}-rgb-islow
387 ${dir}djpeg${suffix} -dct int -ppm -outfile testout_rgb_islow.ppm
388 testout_rgb_islow.jpg)
389 add_test(djpeg${suffix}-rgb-islow-cmp
390 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_RGB_ISLOW} -DFILE=testout_rgb_islow.ppm
391 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000392 # CC: RGB->RGB565 SAMP: fullsize IDCT: islow ENT: huff
393 add_test(djpeg${suffix}-rgb-islow-565
394 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
395 -outfile testout_rgb_islow_565.bmp testout_rgb_islow.jpg)
396 add_test(djpeg${suffix}-rgb-islow-565-cmp
397 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_RGB_ISLOW_565}
398 -DFILE=testout_rgb_islow_565.bmp
399 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
400 # CC: RGB->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
401 add_test(djpeg${suffix}-rgb-islow-565D
402 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
403 -outfile testout_rgb_islow_565D.bmp testout_rgb_islow.jpg)
404 add_test(djpeg${suffix}-rgb-islow-565D-cmp
405 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_RGB_ISLOW_565D}
406 -DFILE=testout_rgb_islow_565D.bmp
407 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC35db75e2014-05-06 22:44:46 +0000408
409 # CC: RGB->YCC SAMP: fullsize/h2v1 FDCT: ifast ENT: 2-pass huff
410 add_test(cjpeg${suffix}-422-ifast-opt
411 ${dir}cjpeg${suffix} -sample 2x1 -dct fast -opt
412 -outfile testout_422_ifast_opt.jpg
413 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
414 add_test(cjpeg${suffix}-422-ifast-opt-cmp
415 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_422_IFAST_OPT}
416 -DFILE=testout_422_ifast_opt.jpg
417 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
418 # CC: YCC->RGB SAMP: fullsize/h2v1 fancy IDCT: ifast ENT: huff
419 add_test(djpeg${suffix}-422-ifast
420 ${dir}djpeg${suffix} -dct fast -outfile testout_422_ifast.ppm
421 testout_422_ifast_opt.jpg)
422 add_test(djpeg${suffix}-422-ifast-cmp
423 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_422_IFAST} -DFILE=testout_422_ifast.ppm
424 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
425 # CC: YCC->RGB SAMP: h2v1 merged IDCT: ifast ENT: huff
426 add_test(djpeg${suffix}-422m-ifast
DRC78df2e62014-05-12 09:23:57 +0000427 ${dir}djpeg${suffix} -dct fast -nosmooth -outfile testout_422m_ifast.ppm
DRC35db75e2014-05-06 22:44:46 +0000428 testout_422_ifast_opt.jpg)
429 add_test(djpeg${suffix}-422m-ifast-cmp
430 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_422M_IFAST} -DFILE=testout_422m_ifast.ppm
431 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000432 # CC: YCC->RGB565 SAMP: h2v1 merged IDCT: ifast ENT: huff
433 add_test(djpeg${suffix}-422m-ifast-565
434 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
435 -outfile testout_422m_ifast_565.bmp testout_422_ifast_opt.jpg)
436 add_test(djpeg${suffix}-422m-ifast-565-cmp
437 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_422M_IFAST_565}
438 -DFILE=testout_422m_ifast_565.bmp
439 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
440 # CC: YCC->RGB565 (dithered) SAMP: h2v1 merged IDCT: ifast ENT: huff
441 add_test(djpeg${suffix}-422m-ifast-565D
442 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -bmp
443 -outfile testout_422m_ifast_565D.bmp testout_422_ifast_opt.jpg)
444 add_test(djpeg${suffix}-422m-ifast-565D-cmp
445 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_422M_IFAST_565D}
446 -DFILE=testout_422m_ifast_565D.bmp
447 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC35db75e2014-05-06 22:44:46 +0000448
449 # CC: RGB->YCC SAMP: fullsize/h2v2 FDCT: ifast ENT: prog huff
450 add_test(cjpeg${suffix}-420-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000451 ${dir}cjpeg${suffix} -sample 2x2 -quality 100 -dct fast -prog
DRC35db75e2014-05-06 22:44:46 +0000452 -outfile testout_420_q100_ifast_prog.jpg
453 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
454 add_test(cjpeg${suffix}-420-q100-ifast-prog-cmp
455 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_IFAST_Q100_PROG}
456 -DFILE=testout_420_q100_ifast_prog.jpg
457 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
458 # CC: YCC->RGB SAMP: fullsize/h2v2 fancy IDCT: ifast ENT: prog huff
459 add_test(djpeg${suffix}-420-q100-ifast-prog
460 ${dir}djpeg${suffix} -dct fast -outfile testout_420_q100_ifast.ppm
461 testout_420_q100_ifast_prog.jpg)
462 add_test(djpeg${suffix}-420-q100-ifast-prog-cmp
463 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420_Q100_IFAST}
464 -DFILE=testout_420_q100_ifast.ppm
465 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
466 # CC: YCC->RGB SAMP: h2v2 merged IDCT: ifast ENT: prog huff
467 add_test(djpeg${suffix}-420m-q100-ifast-prog
DRC78df2e62014-05-12 09:23:57 +0000468 ${dir}djpeg${suffix} -dct fast -nosmooth
DRC35db75e2014-05-06 22:44:46 +0000469 -outfile testout_420m_q100_ifast.ppm testout_420_q100_ifast_prog.jpg)
470 add_test(djpeg${suffix}-420m-q100-ifast-prog-cmp
471 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_Q100_IFAST}
472 -DFILE=testout_420m_q100_ifast.ppm
473 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
474
475 # CC: RGB->Gray SAMP: fullsize FDCT: islow ENT: huff
476 add_test(cjpeg${suffix}-gray-islow
477 ${dir}cjpeg${suffix} -gray -dct int -outfile testout_gray_islow.jpg
478 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
479 add_test(cjpeg${suffix}-gray-islow-cmp
480 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_GRAY_ISLOW}
481 -DFILE=testout_gray_islow.jpg
482 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000483 # CC: Gray->Gray SAMP: fullsize IDCT: islow ENT: huff
DRC35db75e2014-05-06 22:44:46 +0000484 add_test(djpeg${suffix}-gray-islow
485 ${dir}djpeg${suffix} -dct int -outfile testout_gray_islow.ppm
486 testout_gray_islow.jpg)
487 add_test(djpeg${suffix}-gray-islow-cmp
488 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_GRAY_ISLOW}
489 -DFILE=testout_gray_islow.ppm
490 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000491 # CC: Gray->RGB SAMP: fullsize IDCT: islow ENT: huff
492 add_test(djpeg${suffix}-gray-islow-rgb
493 ${dir}djpeg${suffix} -dct int -rgb -outfile testout_gray_islow_rgb.ppm
DRC35db75e2014-05-06 22:44:46 +0000494 testout_gray_islow.jpg)
DRC78df2e62014-05-12 09:23:57 +0000495 add_test(cjpeg${suffix}-gray-islow-rgb-cmp
496 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_GRAY_ISLOW_RGB}
497 -DFILE=testout_gray_islow_rgb.ppm
498 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
499 # CC: Gray->RGB565 SAMP: fullsize IDCT: islow ENT: huff
500 add_test(djpeg${suffix}-gray-islow-565
501 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
502 -outfile testout_gray_islow_565.bmp testout_gray_islow.jpg)
503 add_test(djpeg${suffix}-gray-islow-565-cmp
504 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_GRAY_ISLOW_565}
505 -DFILE=testout_gray_islow_565.bmp
506 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
507 # CC: Gray->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff
508 add_test(djpeg${suffix}-gray-islow-565D
509 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
510 -outfile testout_gray_islow_565D.bmp testout_gray_islow.jpg)
511 add_test(djpeg${suffix}-gray-islow-565D-cmp
512 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_GRAY_ISLOW_565D}
513 -DFILE=testout_gray_islow_565D.bmp
DRC35db75e2014-05-06 22:44:46 +0000514 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
515
516 # CC: RGB->YCC SAMP: fullsize smooth/h2v2 smooth FDCT: islow
517 # ENT: 2-pass huff
518 add_test(cjpeg${suffix}-420s-ifast-opt
519 ${dir}cjpeg${suffix} -sample 2x2 -smooth 1 -dct int -opt -outfile
520 testout_420s_ifast_opt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
521 add_test(cjpeg${suffix}-420s-ifast-opt-cmp
522 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420S_IFAST_OPT}
523 -DFILE=testout_420s_ifast_opt.jpg
524 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
525
526 # CC: RGB->YCC SAMP: fullsize/int FDCT: float ENT: prog huff
527 add_test(cjpeg${suffix}-3x2-float-prog
528 ${dir}cjpeg${suffix} -sample 3x2 -dct float -prog
529 -outfile testout_3x2_float_prog.jpg
530 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
531 add_test(cjpeg${suffix}-3x2-float-prog-cmp
532 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_3x2_FLOAT_PROG}
533 -DFILE=testout_3x2_float_prog.jpg
534 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
535 # CC: YCC->RGB SAMP: fullsize/int IDCT: float ENT: prog huff
536 add_test(djpeg${suffix}-3x2-float-prog
537 ${dir}djpeg${suffix} -dct float -outfile testout_3x2_float.ppm
538 testout_3x2_float_prog.jpg)
539 add_test(djpeg${suffix}-3x2-float-prog-cmp
540 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_3x2_FLOAT} -DFILE=testout_3x2_float.ppm
541 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
542
543 if(WITH_ARITH_ENC)
544 # CC: YCC->RGB SAMP: fullsize/h2v2 FDCT: islow ENT: arith
545 add_test(cjpeg${suffix}-420-islow-ari
546 ${dir}cjpeg${suffix} -dct int -arithmetic
547 -outfile testout_420_islow_ari.jpg
548 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
549 add_test(cjpeg${suffix}-420-islow-ari-cmp
550 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW_ARI}
551 -DFILE=testout_420_islow_ari.jpg
552 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
553 add_test(jpegtran${suffix}-420-islow-ari
554 ${dir}jpegtran${suffix} -arithmetic
555 -outfile testout_420_islow_ari.jpg
556 ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
557 add_test(jpegtran${suffix}-420-islow-ari-cmp
558 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW_ARI}
559 -DFILE=testout_420_islow_ari.jpg
560 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
561 # CC: YCC->RGB SAMP: fullsize FDCT: islow ENT: prog arith
562 add_test(cjpeg${suffix}-444-islow-progari
DRC78df2e62014-05-12 09:23:57 +0000563 ${dir}cjpeg${suffix} -sample 1x1 -dct int -progressive -arithmetic
DRC35db75e2014-05-06 22:44:46 +0000564 -outfile testout_444_islow_progari.jpg
565 ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
566 add_test(cjpeg${suffix}-444-islow-progari-cmp
567 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_444_ISLOW_PROGARI}
568 -DFILE=testout_444_islow_progari.jpg
569 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
570 endif()
571 if(WITH_ARITH_DEC)
572 # CC: RGB->YCC SAMP: h2v2 merged IDCT: ifast ENT: arith
573 add_test(cjpeg${suffix}-420m-ifast-ari
574 ${dir}djpeg${suffix} -fast -ppm -outfile testout_420m_ifast_ari.ppm
575 ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
576 add_test(cjpeg${suffix}-420m-ifast-ari-cmp
577 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_IFAST_ARI}
578 -DFILE=testout_420m_ifast_ari.ppm
579 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
580 add_test(jpegtran${suffix}-420-islow
581 ${dir}jpegtran${suffix} -outfile testout_420_islow.jpg
582 ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
583 add_test(jpegtran${suffix}-420-islow-cmp
584 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_420_ISLOW}
585 -DFILE=testout_420_islow.jpg
586 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
587 endif()
588
589 # 2/1-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 16x16 islow ENT: huff
590 # 15/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 15x15 islow ENT: huff
591 # 13/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 13x13 islow ENT: huff
592 # 11/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 11x11 islow ENT: huff
593 # 9/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 9x9 islow ENT: huff
594 # 7/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 7x7 islow/14x14 islow
595 # ENT: huff
596 # 3/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 6x6 islow/12x12 islow
597 # ENT: huff
598 # 5/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 5x5 islow/10x10 islow
599 # ENT: huff
600 # 1/2-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 4x4 islow/8x8 islow
601 # ENT: huff
602 # 3/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 3x3 islow/6x6 islow
603 # ENT: huff
604 # 1/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 2x2 islow/4x4 islow
605 # ENT: huff
606 # 1/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 1x1 islow/2x2 islow
607 # ENT: huff
608 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)
609 string(REGEX REPLACE "_" "/" scalearg ${scale})
610 add_test(djpeg${suffix}-420m-islow-${scale}
DRC78df2e62014-05-12 09:23:57 +0000611 ${dir}djpeg${suffix} -dct int -scale ${scalearg} -nosmooth -ppm
DRC35db75e2014-05-06 22:44:46 +0000612 -outfile testout_420m_islow_${scale}.ppm
613 ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
614 add_test(djpeg${suffix}-420m-islow-${scale}-cmp
615 ${CMAKE_COMMAND} -DMD5=${MD5_PPM_420M_ISLOW_${scale}}
616 -DFILE=testout_420m_islow_${scale}.ppm
617 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
618 endforeach()
619
620 # CC: YCC->RGB (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
621 add_test(djpeg${suffix}-420-islow-256
DRC78df2e62014-05-12 09:23:57 +0000622 ${dir}djpeg${suffix} -dct int -colors 256 -bmp
DRC35db75e2014-05-06 22:44:46 +0000623 -outfile testout_420_islow_256.bmp
624 ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
625 add_test(djpeg${suffix}-420-islow-256-cmp
626 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_256}
627 -DFILE=testout_420_islow_256.bmp
628 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC78df2e62014-05-12 09:23:57 +0000629 # CC: YCC->RGB565 SAMP: h2v2 fancy IDCT: islow ENT: huff
630 add_test(djpeg${suffix}-420-islow-565
631 ${dir}djpeg${suffix} -dct int -rgb565 -dither none -bmp
632 -outfile testout_420_islow_565.bmp
633 ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
634 add_test(djpeg${suffix}-420-islow-565-cmp
635 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_565}
636 -DFILE=testout_420_islow_565.bmp
637 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
638 # CC: YCC->RGB565 (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff
639 add_test(djpeg${suffix}-420-islow-565D
640 ${dir}djpeg${suffix} -dct int -rgb565 -bmp
641 -outfile testout_420_islow_565D.bmp
642 ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
643 add_test(djpeg${suffix}-420-islow-565D-cmp
644 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420_ISLOW_565D}
645 -DFILE=testout_420_islow_565D.bmp
646 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
647 # CC: YCC->RGB565 SAMP: h2v2 merged IDCT: islow ENT: huff
648 add_test(djpeg${suffix}-420m-islow-565
649 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -dither none -bmp
650 -outfile testout_420m_islow_565.bmp
651 ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
652 add_test(djpeg${suffix}-420m-islow-565-cmp
653 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420M_ISLOW_565}
654 -DFILE=testout_420m_islow_565.bmp
655 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
656 # CC: YCC->RGB565 (dithered) SAMP: h2v2 merged IDCT: islow ENT: huff
657 add_test(djpeg${suffix}-420m-islow-565D
658 ${dir}djpeg${suffix} -dct int -nosmooth -rgb565 -bmp
659 -outfile testout_420m_islow_565D.bmp
660 ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
661 add_test(djpeg${suffix}-420m-islow-565D-cmp
662 ${CMAKE_COMMAND} -DMD5=${MD5_BMP_420M_ISLOW_565D}
663 -DFILE=testout_420m_islow_565D.bmp
664 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC35db75e2014-05-06 22:44:46 +0000665
666 add_test(jpegtran${suffix}-crop
667 ${dir}jpegtran${suffix} -crop 120x90+20+50 -transpose -perfect
668 -outfile testout_crop.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
669 add_test(jpegtran${suffix}-crop-cmp
670 ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testout_crop.jpg
671 -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
672
DRC0af8d672012-01-31 11:09:11 +0000673endforeach()
DRC2c0a4e12010-10-16 08:51:43 +0000674
DRCa0f878a2011-04-02 04:43:14 +0000675add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P
676 ${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake)
677
DRC2c0a4e12010-10-16 08:51:43 +0000678
679#
680# Installer
681#
682
DRC2c0a4e12010-10-16 08:51:43 +0000683if(MSVC)
684 set(INST_PLATFORM "Visual C++")
DRCb94f2de2011-03-22 09:31:25 +0000685 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
DRC7175e512013-04-23 22:29:00 +0000686 set(INST_REG_NAME ${CMAKE_PROJECT_NAME})
DRC2c0a4e12010-10-16 08:51:43 +0000687elseif(MINGW)
688 set(INST_PLATFORM GCC)
DRCb94f2de2011-03-22 09:31:25 +0000689 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
DRC7175e512013-04-23 22:29:00 +0000690 set(INST_REG_NAME ${CMAKE_PROJECT_NAME}-gcc)
DRC2c0a4e12010-10-16 08:51:43 +0000691 set(INST_DEFS -DGCC)
692endif()
693
694if(64BIT)
695 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
696 set(INST_NAME ${INST_NAME}64)
DRC7175e512013-04-23 22:29:00 +0000697 set(INST_REG_NAME ${INST_DIR}64)
DRC2c0a4e12010-10-16 08:51:43 +0000698 set(INST_DEFS ${INST_DEFS} -DWIN64)
699endif()
700
DRC957d6232011-04-01 11:13:11 +0000701if(WITH_JAVA)
702 set(INST_DEFS ${INST_DEFS} -DJAVA)
703endif()
704
DRC2c0a4e12010-10-16 08:51:43 +0000705if(MSVC_IDE)
DRC926e01f2011-04-06 06:35:38 +0000706 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
DRC2c0a4e12010-10-16 08:51:43 +0000707else()
708 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
709endif()
710
DRC9fe22da2014-04-16 23:30:38 +0000711STRING(REGEX REPLACE "/" "\\\\" INST_DIR ${CMAKE_INSTALL_PREFIX})
DRC7175e512013-04-23 22:29:00 +0000712
DRC2c0a4e12010-10-16 08:51:43 +0000713configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
714
DRC7175e512013-04-23 22:29:00 +0000715if(WITH_JAVA)
716 set(JAVA_DEPEND java)
717endif()
DRC2c0a4e12010-10-16 08:51:43 +0000718add_custom_target(installer
719 makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
DRCb94f2de2011-03-22 09:31:25 +0000720 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
DRC7175e512013-04-23 22:29:00 +0000721 cjpeg djpeg jpegtran tjbench ${JAVA_DEPEND}
DRC2c0a4e12010-10-16 08:51:43 +0000722 SOURCES libjpeg-turbo.nsi)
DRC7284c9a2010-10-16 21:55:14 +0000723
DRC3185cb92011-05-25 03:52:22 +0000724install(TARGETS jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom tjbench
DRC7284c9a2010-10-16 21:55:14 +0000725 ARCHIVE DESTINATION lib
726 LIBRARY DESTINATION lib
727 RUNTIME DESTINATION bin
728)
729
DRCa1647c82012-02-10 00:39:05 +0000730install(FILES ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/README-turbo.txt
DRC9fe22da2014-04-16 23:30:38 +0000731 ${CMAKE_SOURCE_DIR}/example.c ${CMAKE_SOURCE_DIR}/libjpeg.txt
DRCa1647c82012-02-10 00:39:05 +0000732 ${CMAKE_SOURCE_DIR}/structure.txt ${CMAKE_SOURCE_DIR}/usage.txt
733 ${CMAKE_SOURCE_DIR}/wizard.txt
DRC7284c9a2010-10-16 21:55:14 +0000734 DESTINATION doc)
DRCe2befde2010-10-17 07:28:08 +0000735
736install(FILES ${CMAKE_BINARY_DIR}/jconfig.h ${CMAKE_SOURCE_DIR}/jerror.h
737 ${CMAKE_SOURCE_DIR}/jmorecfg.h ${CMAKE_SOURCE_DIR}/jpeglib.h
738 ${CMAKE_SOURCE_DIR}/turbojpeg.h DESTINATION include)