5 cmake_minimum_required(VERSION 2.8.8)
6 cmake_policy(SET CMP0022 OLD)
8 project(libjpeg-turbo C)
12 execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
13 string(REGEX REPLACE "\n" "" BUILD ${BUILD})
15 execute_process(COMMAND "wmic.exe" "os" "get" "LocalDateTime" OUTPUT_VARIABLE
17 string(REGEX REPLACE "[^0-9]" "" BUILD "${BUILD}")
18 if (BUILD STREQUAL "")
19 execute_process(COMMAND "cmd.exe" "/C" "DATE" "/T" OUTPUT_VARIABLE BUILD)
20 string(REGEX REPLACE ".*[ ]([0-9]*)[/.]([0-9]*)[/.]([0-9]*).*" "\\3\\2\\1" BUILD "${BUILD}")
22 string(SUBSTRING "${BUILD}" 0 8 BUILD)
25 message(FATAL_ERROR "Platform not supported by this build system. Use autotools instead.")
28 # This does nothing except when using MinGW. CMAKE_BUILD_TYPE has no meaning
29 # in Visual Studio, and it always defaults to Debug when using NMake.
30 if(NOT CMAKE_BUILD_TYPE)
31 set(CMAKE_BUILD_TYPE Release)
34 message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
36 # This only works if building from the command line. There is currently no way
37 # to set a variable's value based on the build type when using Visual Studio.
38 if(CMAKE_BUILD_TYPE STREQUAL "Debug")
39 set(BUILD "${BUILD}d")
42 message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}")
44 option(WITH_SIMD "Include SIMD extensions" TRUE)
45 option(WITH_ARITH_ENC "Include arithmetic encoding support" TRUE)
46 option(WITH_ARITH_DEC "Include arithmetic decoding support" TRUE)
47 option(WITH_JPEG7 "Emulate libjpeg v7 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
48 option(WITH_JPEG8 "Emulate libjpeg v8 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
49 option(WITH_MEM_SRCDST "Include in-memory source/destination manager functions when emulating the libjpeg v6b or v7 API/ABI" TRUE)
50 option(WITH_JAVA "Build Java wrapper for the TurboJPEG library" FALSE)
53 set(C_ARITH_CODING_SUPPORTED 1)
54 message(STATUS "Arithmetic encoding support enabled")
56 message(STATUS "Arithmetic encoding support disabled")
60 set(D_ARITH_CODING_SUPPORTED 1)
61 message(STATUS "Arithmetic decoding support enabled")
63 message(STATUS "Arithmetic decoding support disabled")
67 message(STATUS "TurboJPEG Java wrapper enabled")
69 message(STATUS "TurboJPEG Java wrapper disabled")
77 set(JPEG_LIB_VERSION 62)
78 set(DLL_VERSION ${JPEG_LIB_VERSION})
79 set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
81 set(JPEG_LIB_VERSION 80)
83 set(FULLVERSION ${DLL_VERSION}.0.2)
84 message(STATUS "Emulating libjpeg v8 API/ABI")
86 set(JPEG_LIB_VERSION 70)
88 set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
89 message(STATUS "Emulating libjpeg v7 API/ABI")
93 set(MEM_SRCDST_SUPPORTED 1)
94 message(STATUS "In-memory source/destination managers enabled")
96 message(STATUS "In-memory source/destination managers disabled")
100 # Use the static C library for all build types
101 foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
102 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
103 if(${var} MATCHES "/MD")
104 string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
108 add_definitions(-W3 -wd4996)
111 # Detect whether compiler is 64-bit
112 if(MSVC AND CMAKE_CL_64)
115 elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
121 message(STATUS "64-bit build")
123 message(STATUS "32-bit build")
126 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
128 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME})
130 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME}-gcc)
133 set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_INSTALL_PREFIX_DEFAULT}64)
135 set(CMAKE_INSTALL_PREFIX "c:/${CMAKE_INSTALL_PREFIX_DEFAULT}" CACHE PATH
136 "Directory into which to install libjpeg-turbo (default: c:/${CMAKE_INSTALL_PREFIX_DEFAULT})"
140 message(STATUS "Install directory = ${CMAKE_INSTALL_PREFIX}")
142 configure_file(win/jconfig.h.in jconfig.h)
143 configure_file(win/config.h.in config.h)
145 include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
150 if(DEFINED JAVACFLAGS)
151 message(STATUS "Java compiler flags = ${JAVACFLAGS}")
160 set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
161 jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
162 jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
163 jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
164 jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
165 jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
166 jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
168 if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
169 set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
173 set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
177 set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
181 add_definitions(-DWITH_SIMD)
182 add_subdirectory(simd)
184 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
186 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
188 # This tells CMake that the "source" files haven't been generated yet
189 set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
191 set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
192 message(STATUS "Not using SIMD acceleration")
196 add_subdirectory(java)
199 add_subdirectory(sharedlib)
201 add_library(jpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
203 set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
206 add_dependencies(jpeg-static simd)
209 set(TURBOJPEG_SOURCES turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
211 set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
212 include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
215 add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
216 set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
218 set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
220 target_link_libraries(turbojpeg jpeg-static)
221 set_target_properties(turbojpeg PROPERTIES LINK_INTERFACE_LIBRARIES "")
223 add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS}
224 turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
226 set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
229 add_dependencies(turbojpeg-static simd)
232 add_executable(tjunittest tjunittest.c tjutil.c)
233 target_link_libraries(tjunittest turbojpeg)
235 add_executable(tjunittest-static tjunittest.c tjutil.c)
236 target_link_libraries(tjunittest-static turbojpeg-static)
238 add_executable(tjbench tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
240 target_link_libraries(tjbench turbojpeg jpeg-static)
241 set_property(TARGET tjbench PROPERTY COMPILE_FLAGS
242 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
244 add_executable(tjbench-static tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
246 target_link_libraries(tjbench-static turbojpeg-static jpeg-static)
247 set_property(TARGET tjbench-static PROPERTY COMPILE_FLAGS
248 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
250 add_executable(cjpeg-static cjpeg.c cdjpeg.c rdbmp.c rdgif.c rdppm.c rdswitch.c
252 set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS
253 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
254 target_link_libraries(cjpeg-static jpeg-static)
256 add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrbmp.c wrgif.c
258 set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS
259 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
260 target_link_libraries(djpeg-static jpeg-static)
262 add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
263 target_link_libraries(jpegtran-static jpeg-static)
264 set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "-DUSE_SETMODE")
266 add_executable(rdjpgcom rdjpgcom.c)
268 add_executable(wrjpgcom rdjpgcom.c)
276 set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/")
283 set(MD5_JPEG_INT 9a68f56bc76e466aa7e52f415d0f4a5f)
284 set(MD5_JPEG_FAST 0e1502e7fa421835e376a314fac2a39f)
285 set(MD5_JPEG_FAST_100 7bf72a8e741d64eecb960c97323af77c)
286 set(MD5_JPEG_FLOAT d1623885ffafcd40c684af09e3d65cd5)
287 set(MD5_JPEG_FLOAT_NOSIMD fb4884c35f8273f498cb32879de5c455)
288 set(MD5_JPEG_INT_GRAY 72b51f894b8f4a10b3ee3066770aa38d)
289 set(MD5_PPM_INT d1ed0d11f076b842525271647716aeb8)
290 set(MD5_PPM_FAST 048298a2d2410261c0533cb97bcfef23)
291 set(MD5_PPM_FLOAT 7f5b446ee36b2630e06785b8d42af15f)
292 set(MD5_PPM_FLOAT_NOSIMD 64072f1dbdc5b3a187777788604971a5)
293 set(MD5_PPM_INT_2_1 9f9de8c0612f8d06869b960b05abf9c9)
294 set(MD5_PPM_INT_15_8 b6875bc070720b899566cc06459b63b7)
295 set(MD5_PPM_INT_7_4 06a177eae05f164fac57f7a2c346ee87)
296 set(MD5_PPM_INT_13_8 bc3452573c8152f6ae552939ee19f82f)
297 set(MD5_PPM_INT_3_2 f5a8b88a8a7f96016f04d259cf82ed67)
298 set(MD5_PPM_INT_11_8 d8cc73c0aaacd4556569b59437ba00a5)
299 set(MD5_PPM_INT_5_4 32775dd9ad2ab90f4c5b219b53e0c86c)
300 set(MD5_PPM_INT_9_8 d25e61bc7eac0002f5b393aa223747b6)
301 set(MD5_PPM_INT_7_8 ddb564b7c74a09494016d6cd7502a946)
302 set(MD5_PPM_INT_3_4 8ed8e68808c3fbc4ea764fc9d2968646)
303 set(MD5_PPM_INT_5_8 a3363274999da2366a024efae6d16c9b)
304 set(MD5_PPM_INT_1_2 e692a315cea26b988c8e8b29a5dbcd81)
305 set(MD5_PPM_INT_3_8 79eca9175652ced755155c90e785a996)
306 set(MD5_PPM_INT_1_4 79cd778f8bf1a117690052cacdd54eca)
307 set(MD5_PPM_INT_1_8 391b3d4aca640c8567d6f8745eb2142f)
308 set(MD5_PPM_FAST_1_2 f30bcf6d32ccd44cbdd9aeaacbd9454f)
309 set(MD5_BMP_256 4980185e3776e89bd931736e1cddeee6)
310 set(MD5_JPEG_ARI e986fb0a637a8d833d96e8a6d6d84ea1)
311 set(MD5_PPM_ARI 72b59a99bcf1de24c5b27d151bde2437)
312 set(MD5_JPEG_PROG 1c4afddc05c0a43489ee54438a482d92)
313 set(MD5_JPEG_PROG_ARI 0a8f1c8f66e113c3cf635df0a475a617)
314 set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d)
317 add_test(TJUnitTest ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest)
318 add_test(TJUnitTest-yuv ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -yuv)
319 add_test(TJUnitTest-bi ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -bi)
320 add_test(TJUnitTest-bi-yuv ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -bi -yuv)
322 add_test(tjunittest tjunittest)
323 add_test(tjunittest-alloc tjunittest -alloc)
324 add_test(tjunittest-yuv tjunittest -yuv)
325 add_test(cjpeg-int sharedlib/cjpeg -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
326 add_test(cjpeg-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutint.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
327 add_test(cjpeg-fast sharedlib/cjpeg -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
328 add_test(cjpeg-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST} -DFILE=testoutfst.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
329 add_test(cjpeg-fast-100 sharedlib/cjpeg -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
330 add_test(cjpeg-fast-100-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST_100} -DFILE=testoutfst100.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
331 add_test(cjpeg-float sharedlib/cjpeg -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
333 add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
335 add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT_NOSIMD} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
337 add_test(cjpeg-int-gray sharedlib/cjpeg -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
338 add_test(cjpeg-int-gray-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT_GRAY} -DFILE=testoutgray.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
339 add_test(djpeg-int sharedlib/djpeg -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
340 add_test(djpeg-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT} -DFILE=testoutint.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
341 add_test(djpeg-fast sharedlib/djpeg -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
342 add_test(djpeg-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST} -DFILE=testoutfst.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
343 add_test(djpeg-float sharedlib/djpeg -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
345 add_test(djpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
347 add_test(djpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT_NOSIMD} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
349 foreach(scale 2_1 15_8 7_4 13_8 3_2 11_8 5_4 9_8 7_8 3_4 5_8 1_2 3_8 1_4 1_8)
350 string(REGEX REPLACE "_" "/" scalearg ${scale})
351 add_test(djpeg-int-${scale} sharedlib/djpeg -dct int -nosmooth -scale ${scalearg} -ppm -outfile testoutint${scale}.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
352 add_test(djpeg-int-${scale}-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT_${scale}} -DFILE=testoutint${scale}.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
354 add_test(djpeg-fast-1_2 sharedlib/djpeg -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
355 add_test(djpeg-fast-1_2-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST_1_2} -DFILE=testoutfst1_2.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
356 add_test(djpeg-256 sharedlib/djpeg -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
357 add_test(djpeg-256-cmp ${CMAKE_COMMAND} -DMD5=${MD5_BMP_256} -DFILE=testout.bmp -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
358 add_test(cjpeg-prog sharedlib/cjpeg -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
359 add_test(cjpeg-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG} -DFILE=testoutp.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
360 add_test(jpegtran-prog sharedlib/jpegtran -outfile testoutt.jpg testoutp.jpg)
361 add_test(jpegtran-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
363 add_test(cjpeg-ari sharedlib/cjpeg -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
364 add_test(cjpeg-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testoutari.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
365 add_test(jpegtran-toari sharedlib/jpegtran -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
366 add_test(jpegtran-toari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
367 add_test(cjpeg-prog-ari sharedlib/cjpeg -dct int -progressive -arithmetic -sample 1x1 -outfile testoutpa.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
368 add_test(cjpeg-prog-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG_ARI} -DFILE=testoutpa.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
371 add_test(djpeg-ari sharedlib/djpeg -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
372 add_test(djpeg-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_ARI} -DFILE=testoutari.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
373 add_test(jpegtran-fromari sharedlib/jpegtran -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
374 add_test(jpegtran-fromari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
376 add_test(jpegtran-crop sharedlib/jpegtran -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
377 add_test(jpegtran-crop-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testoutcrop.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
379 add_test(tjunittest-static tjunittest-static)
380 add_test(tjunittest-static-alloc tjunittest-static -alloc)
381 add_test(tjunittest-static-yuv tjunittest-static -yuv)
382 add_test(cjpeg-static-int cjpeg-static -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
383 add_test(cjpeg-static-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutint.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
384 add_test(cjpeg-static-fast cjpeg-static -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
385 add_test(cjpeg-static-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST} -DFILE=testoutfst.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
386 add_test(cjpeg-static-fast-100 cjpeg-static -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
387 add_test(cjpeg-static-fast-100-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST_100} -DFILE=testoutfst100.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
388 add_test(cjpeg-static-float cjpeg-static -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
390 add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
392 add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT_NOSIMD} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
394 add_test(cjpeg-static-int-gray cjpeg-static -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
395 add_test(cjpeg-static-int-gray-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT_GRAY} -DFILE=testoutgray.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
396 add_test(djpeg-static-int djpeg-static -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
397 add_test(djpeg-static-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT} -DFILE=testoutint.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
398 add_test(djpeg-static-fast djpeg-static -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
399 add_test(djpeg-static-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST} -DFILE=testoutfst.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
400 add_test(djpeg-static-float djpeg-static -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
402 add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
404 add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT_NOSIMD} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
406 foreach(scale 2_1 15_8 7_4 13_8 3_2 11_8 5_4 9_8 7_8 3_4 5_8 1_2 3_8 1_4 1_8)
407 string(REGEX REPLACE "_" "/" scalearg ${scale})
408 add_test(djpeg-static-int-${scale} djpeg-static -dct int -nosmooth -scale ${scalearg} -ppm -outfile testoutint${scale}.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
409 add_test(djpeg-static-int-${scale}-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT_${scale}} -DFILE=testoutint${scale}.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
411 add_test(djpeg-static-fast-1_2 djpeg-static -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
412 add_test(djpeg-static-fast-1_2-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST_1_2} -DFILE=testoutfst1_2.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
413 add_test(djpeg-static-256 djpeg-static -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
414 add_test(djpeg-static-256-cmp ${CMAKE_COMMAND} -DMD5=${MD5_BMP_256} -DFILE=testout.bmp -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
415 add_test(cjpeg-static-prog cjpeg-static -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
416 add_test(cjpeg-static-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG} -DFILE=testoutp.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
417 add_test(jpegtran-static-prog jpegtran-static -outfile testoutt.jpg testoutp.jpg)
418 add_test(jpegtran-static-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
420 add_test(cjpeg-static-ari cjpeg-static -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
421 add_test(cjpeg-static-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testoutari.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
422 add_test(jpegtran-static-toari jpegtran-static -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
423 add_test(jpegtran-static-toari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
424 add_test(cjpeg-static-prog-ari cjpeg-static -dct int -progressive -arithmetic -sample 1x1 -outfile testoutpa.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
425 add_test(cjpeg-static-prog-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG_ARI} -DFILE=testoutpa.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
428 add_test(djpeg-static-ari djpeg-static -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
429 add_test(djpeg-static-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_ARI} -DFILE=testoutari.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
430 add_test(jpegtran-static-fromari jpegtran-static -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
431 add_test(jpegtran-static-fromari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
433 add_test(jpegtran-static-crop jpegtran-static -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
434 add_test(jpegtran-static-crop-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testoutcrop.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
436 add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P
437 ${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake)
445 set(INST_PLATFORM "Visual C++")
446 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
447 set(INST_REG_NAME ${CMAKE_PROJECT_NAME})
449 set(INST_PLATFORM GCC)
450 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
451 set(INST_REG_NAME ${CMAKE_PROJECT_NAME}-gcc)
456 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
457 set(INST_NAME ${INST_NAME}64)
458 set(INST_REG_NAME ${INST_DIR}64)
459 set(INST_DEFS ${INST_DEFS} -DWIN64)
463 set(INST_DEFS ${INST_DEFS} -DJAVA)
467 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
469 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
472 STRING(REGEX REPLACE "/" "\\\\" INST_DIR ${CMAKE_INSTALL_PREFIX})
474 configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
477 set(JAVA_DEPEND java)
479 add_custom_target(installer
480 makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
481 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
482 cjpeg djpeg jpegtran tjbench ${JAVA_DEPEND}
483 SOURCES libjpeg-turbo.nsi)
485 install(TARGETS jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom tjbench
486 ARCHIVE DESTINATION lib
487 LIBRARY DESTINATION lib
488 RUNTIME DESTINATION bin
491 install(FILES ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/README-turbo.txt
492 ${CMAKE_SOURCE_DIR}/example.c ${CMAKE_SOURCE_DIR}/libjpeg.txt
493 ${CMAKE_SOURCE_DIR}/structure.txt ${CMAKE_SOURCE_DIR}/usage.txt
494 ${CMAKE_SOURCE_DIR}/wizard.txt
497 install(FILES ${CMAKE_BINARY_DIR}/jconfig.h ${CMAKE_SOURCE_DIR}/jerror.h
498 ${CMAKE_SOURCE_DIR}/jmorecfg.h ${CMAKE_SOURCE_DIR}/jpeglib.h
499 ${CMAKE_SOURCE_DIR}/turbojpeg.h DESTINATION include)