blob: 8e3d9a817c4e36b0fea1c507f9cc291453ab9ea1 [file] [log] [blame]
DRC84697032010-10-15 03:43:24 +00001#
2# Setup
3#
4
5cmake_minimum_required(VERSION 2.6)
6
DRC5d6f8582011-02-18 23:08:58 +00007project(libjpeg-turbo C)
DRC0caa0b42011-02-06 16:11:41 +00008set(VERSION 1.1.90)
DRC84697032010-10-15 03:43:24 +00009
DRC378da4d2010-10-15 19:11:11 +000010if(MINGW OR CYGWIN)
DRC84697032010-10-15 03:43:24 +000011 execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
12 string(REGEX REPLACE "\n" "" BUILD ${BUILD})
13elseif(WIN32)
14 execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmakescripts/getdate.bat"
15 OUTPUT_VARIABLE BUILD)
16 string(REGEX REPLACE "\n" "" BUILD ${BUILD})
17else()
DRC378da4d2010-10-15 19:11:11 +000018 message(FATAL_ERROR "Platform not supported by this build system. Use autotools instead.")
DRC84697032010-10-15 03:43:24 +000019endif()
20
21if(NOT CMAKE_BUILD_TYPE)
22 set(CMAKE_BUILD_TYPE Release)
23endif()
24
25message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
26
27# This only works if building from the command line. There is currently no way
28# to set a variable's value based on the build type when using the MSVC IDE.
29if(CMAKE_BUILD_TYPE STREQUAL "Debug")
30 set(BUILD "${BUILD}d")
31endif()
32
DRCeb2b9d62010-10-15 04:55:13 +000033message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}")
34
DRC84697032010-10-15 03:43:24 +000035if(NOT DEFINED WITH_SIMD)
36 set(WITH_SIMD 1)
37endif()
38
DRC245cfdf2010-11-23 17:11:06 +000039if(NOT DEFINED WITH_ARITH_ENC)
40 set(WITH_ARITH_ENC 1)
41endif()
42
43if(NOT DEFINED WITH_ARITH_DEC)
44 set(WITH_ARITH_DEC 1)
45endif()
46
47if(WITH_ARITH_ENC)
48 set(C_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000049 message(STATUS "Arithmetic encoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000050else()
DRC990e28d2011-01-04 21:40:11 +000051 message(STATUS "Arithmetic encoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000052endif()
53
54if(WITH_ARITH_DEC)
55 set(D_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000056 message(STATUS "Arithmetic decoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000057else()
DRC990e28d2011-01-04 21:40:11 +000058 message(STATUS "Arithmetic decoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000059endif()
60
DRC957d6232011-04-01 11:13:11 +000061if(NOT DEFINED WITH_JAVA)
62 set(WITH_JAVA 0)
DRC218c0c12011-02-05 06:01:18 +000063endif()
64
DRC957d6232011-04-01 11:13:11 +000065if(WITH_JAVA)
66 message(STATUS "TurboJPEG/OSS Java wrapper enabled")
DRC218c0c12011-02-05 06:01:18 +000067else()
DRC957d6232011-04-01 11:13:11 +000068 message(STATUS "TurboJPEG/OSS Java wrapper disabled")
DRC218c0c12011-02-05 06:01:18 +000069endif()
70
DRC84697032010-10-15 03:43:24 +000071set(JPEG_LIB_VERSION 62)
72set(DLL_VERSION ${JPEG_LIB_VERSION})
DRCa9d5b252010-10-15 06:42:45 +000073set(FULLVERSION ${DLL_VERSION}.0.0)
DRC84697032010-10-15 03:43:24 +000074if(WITH_JPEG8)
75 set(JPEG_LIB_VERSION 80)
76 set(DLL_VERSION 8)
DRCa9d5b252010-10-15 06:42:45 +000077 set(FULLVERSION ${DLL_VERSION}.0.2)
DRCf38eee02011-02-18 07:00:38 +000078 message(STATUS "Emulating libjpeg v8 API/ABI")
DRC84697032010-10-15 03:43:24 +000079elseif(WITH_JPEG7)
80 set(JPEG_LIB_VERSION 70)
81 set(DLL_VERSION 7)
DRCa9d5b252010-10-15 06:42:45 +000082 set(FULLVERSION ${DLL_VERSION}.0.0)
DRC84697032010-10-15 03:43:24 +000083 message(STATUS "Emulating libjpeg v7 API/ABI")
84endif(WITH_JPEG8)
85
86if(MSVC)
87 # Use the static C library for all build types
88 foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
DRC2e4d0442011-02-08 01:18:37 +000089 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
DRC84697032010-10-15 03:43:24 +000090 if(${var} MATCHES "/MD")
91 string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
92 endif()
93 endforeach()
94
95 add_definitions(-W3 -wd4996)
96endif()
97
98# Detect whether compiler is 64-bit
99if(MSVC AND CMAKE_CL_64)
100 set(SIMD_X86_64 1)
101 set(64BIT 1)
102elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
103 set(SIMD_X86_64 1)
104 set(64BIT 1)
105endif()
106
107if(64BIT)
108 message(STATUS "64-bit build")
109else()
110 message(STATUS "32-bit build")
111endif()
112
113configure_file(win/jconfig.h.in jconfig.h)
114configure_file(win/config.h.in config.h)
115
116include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
117
DRC957d6232011-04-01 11:13:11 +0000118if(WITH_JAVA)
119 find_package(Java)
120 find_package(JNI)
DRC218c0c12011-02-05 06:01:18 +0000121endif()
122
DRC84697032010-10-15 03:43:24 +0000123
124#
125# Targets
126#
127
DRC245cfdf2010-11-23 17:11:06 +0000128set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
129 jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
130 jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
131 jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
132 jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
133 jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
134 jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
135
136if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
137 set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
138endif()
139
140if(WITH_ARITH_ENC)
141 set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
142endif()
143
144if(WITH_ARITH_DEC)
145 set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
146endif()
DRC84697032010-10-15 03:43:24 +0000147
148if(WITH_SIMD)
149 add_definitions(-DWITH_SIMD)
150 add_subdirectory(simd)
151 if(SIMD_X86_64)
152 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
153 else()
154 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
155 endif()
156 # This tells CMake that the "source" files haven't been generated yet
157 set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
158else()
159 set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
DRC6f4ba612010-10-16 21:27:38 +0000160 message(STATUS "Not using SIMD acceleration")
DRC84697032010-10-15 03:43:24 +0000161endif()
162
DRC957d6232011-04-01 11:13:11 +0000163if(WITH_JAVA)
164 add_subdirectory(java)
165endif()
166
DRC84697032010-10-15 03:43:24 +0000167add_subdirectory(sharedlib)
168
169add_library(jpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
DRC84697032010-10-15 03:43:24 +0000170if(NOT MSVC)
171 set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
172endif()
173if(WITH_SIMD)
174 add_dependencies(jpeg-static simd)
175endif()
176
DRCda5220a2011-03-02 02:17:30 +0000177set(TURBOJPEG_SOURCES turbojpegl.c transupp.c)
DRC957d6232011-04-01 11:13:11 +0000178if(WITH_JAVA)
DRC218c0c12011-02-05 06:01:18 +0000179 set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
DRC957d6232011-04-01 11:13:11 +0000180 include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
DRC218c0c12011-02-05 06:01:18 +0000181endif()
182
183add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
DRC84697032010-10-15 03:43:24 +0000184set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
DRC389c4722011-02-06 18:48:13 +0000185if(MINGW)
186 set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
187endif()
DRC84697032010-10-15 03:43:24 +0000188target_link_libraries(turbojpeg jpeg-static)
189set_target_properties(turbojpeg PROPERTIES LINK_INTERFACE_LIBRARIES "")
190
191add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS}
DRCda5220a2011-03-02 02:17:30 +0000192 turbojpegl.c transupp.c)
DRC84697032010-10-15 03:43:24 +0000193if(NOT MSVC)
194 set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
195endif()
196if(WITH_SIMD)
197 add_dependencies(turbojpeg-static simd)
198endif()
199
200add_executable(jpegut jpegut.c)
201target_link_libraries(jpegut turbojpeg)
202
203add_executable(jpegut-static jpegut.c)
204target_link_libraries(jpegut-static turbojpeg-static)
205
DRC2e4d0442011-02-08 01:18:37 +0000206add_executable(jpgtest jpgtest.c bmp.c)
DRC84697032010-10-15 03:43:24 +0000207target_link_libraries(jpgtest turbojpeg)
208
DRC2e4d0442011-02-08 01:18:37 +0000209add_executable(jpgtest-static jpgtest.c bmp.c)
DRC84697032010-10-15 03:43:24 +0000210target_link_libraries(jpgtest-static turbojpeg-static)
211
212add_executable(cjpeg-static cjpeg.c cdjpeg.c rdbmp.c rdgif.c rdppm.c rdswitch.c
213 rdtarga.c)
214set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS
215 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED")
216target_link_libraries(cjpeg-static jpeg-static)
217
218add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrbmp.c wrgif.c
219 wrppm.c wrtarga.c)
220set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS
221 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED")
222target_link_libraries(djpeg-static jpeg-static)
223
224add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
225target_link_libraries(jpegtran-static jpeg-static)
226
227add_executable(rdjpgcom rdjpgcom.c)
228
229add_executable(wrjpgcom rdjpgcom.c)
230
231
232#
233# Tests
234#
235
DRC957d6232011-04-01 11:13:11 +0000236if(MSVC_IDE)
237 set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/")
238else()
239 set(OBJDIR "")
240endif()
241
DRC84697032010-10-15 03:43:24 +0000242enable_testing()
DRC957d6232011-04-01 11:13:11 +0000243if(WITH_JAVA)
244add_test(TJUnitTest ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest)
245add_test(TJUnitTest-yuv ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -yuv)
246add_test(TJUnitTest-bi ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -bi)
247add_test(TJUnitTest-bi-yuv ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -bi -yuv)
248endif()
DRC84697032010-10-15 03:43:24 +0000249add_test(jpegut jpegut)
DRCfbb67472010-11-24 04:02:37 +0000250add_test(jpegut-yuv jpegut -yuv)
DRC84697032010-10-15 03:43:24 +0000251add_test(cjpeg-int sharedlib/cjpeg -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000252add_test(cjpeg-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testoutint.jpg)
DRC84697032010-10-15 03:43:24 +0000253add_test(cjpeg-fast sharedlib/cjpeg -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000254add_test(cjpeg-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst.jpg testoutfst.jpg)
DRCc4ef01f2011-02-18 05:06:58 +0000255add_test(cjpeg-fast-100 sharedlib/cjpeg -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
256add_test(cjpeg-fast-100-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst100.jpg testoutfst100.jpg)
DRC84697032010-10-15 03:43:24 +0000257add_test(cjpeg-float sharedlib/cjpeg -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
258if(WITH_SIMD)
DRCb42a48c2010-10-18 01:06:36 +0000259add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt.jpg testoutflt.jpg)
DRC84697032010-10-15 03:43:24 +0000260else()
DRCb42a48c2010-10-18 01:06:36 +0000261add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt-nosimd.jpg testoutflt.jpg)
DRC84697032010-10-15 03:43:24 +0000262endif()
DRCda5220a2011-03-02 02:17:30 +0000263add_test(cjpeg-int-gray sharedlib/cjpeg -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
264add_test(cjpeg-int-gray-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimggray.jpg testoutgray.jpg)
DRC84697032010-10-15 03:43:24 +0000265add_test(djpeg-int sharedlib/djpeg -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000266add_test(djpeg-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.ppm testoutint.ppm)
DRC84697032010-10-15 03:43:24 +0000267add_test(djpeg-fast sharedlib/djpeg -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000268add_test(djpeg-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst.ppm testoutfst.ppm)
DRC84697032010-10-15 03:43:24 +0000269add_test(djpeg-float sharedlib/djpeg -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
270if(WITH_SIMD)
DRCb42a48c2010-10-18 01:06:36 +0000271add_test(djpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt.ppm testoutflt.ppm)
DRC84697032010-10-15 03:43:24 +0000272else()
DRCb42a48c2010-10-18 01:06:36 +0000273add_test(djpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testorig.ppm testoutflt.ppm)
DRC84697032010-10-15 03:43:24 +0000274endif()
275add_test(djpeg-256 sharedlib/djpeg -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000276add_test(djpeg-256-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimg.bmp testout.bmp)
DRC84697032010-10-15 03:43:24 +0000277add_test(cjpeg-prog sharedlib/cjpeg -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000278add_test(cjpeg-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgp.jpg testoutp.jpg)
DRC84697032010-10-15 03:43:24 +0000279add_test(jpegtran-prog sharedlib/jpegtran -outfile testoutt.jpg testoutp.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000280add_test(jpegtran-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testoutt.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000281if(WITH_ARITH_ENC)
DRC66f97e62010-11-23 05:49:54 +0000282add_test(cjpeg-ari sharedlib/cjpeg -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
283add_test(cjpeg-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.jpg testoutari.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000284add_test(jpegtran-toari sharedlib/jpegtran -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimgint.jpg)
285add_test(jpegtran-toari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.jpg testouta.jpg)
286endif()
287if(WITH_ARITH_DEC)
DRC66f97e62010-11-23 05:49:54 +0000288add_test(djpeg-ari sharedlib/djpeg -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimgari.jpg)
289add_test(djpeg-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.ppm testoutari.ppm)
DRC245cfdf2010-11-23 17:11:06 +0000290add_test(jpegtran-fromari sharedlib/jpegtran -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimgari.jpg)
DRC66f97e62010-11-23 05:49:54 +0000291add_test(jpegtran-fromari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testouta.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000292endif()
DRC84697032010-10-15 03:43:24 +0000293add_test(jpegtran-crop sharedlib/jpegtran -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000294add_test(jpegtran-crop-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgcrop.jpg testoutcrop.jpg)
DRC84697032010-10-15 03:43:24 +0000295
296add_test(jpegut-static jpegut-static)
DRCfbb67472010-11-24 04:02:37 +0000297add_test(jpegut-static-yuv jpegut-static -yuv)
DRC84697032010-10-15 03:43:24 +0000298add_test(cjpeg-static-int cjpeg-static -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000299add_test(cjpeg-static-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testoutint.jpg)
DRC84697032010-10-15 03:43:24 +0000300add_test(cjpeg-static-fast cjpeg-static -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000301add_test(cjpeg-static-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst.jpg testoutfst.jpg)
DRCc4ef01f2011-02-18 05:06:58 +0000302add_test(cjpeg-static-fast-100 cjpeg-static -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
303add_test(cjpeg-static-fast-100-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst100.jpg testoutfst100.jpg)
DRC84697032010-10-15 03:43:24 +0000304add_test(cjpeg-static-float cjpeg-static -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
305if(WITH_SIMD)
DRCb42a48c2010-10-18 01:06:36 +0000306add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt.jpg testoutflt.jpg)
DRC84697032010-10-15 03:43:24 +0000307else()
DRCb42a48c2010-10-18 01:06:36 +0000308add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt-nosimd.jpg testoutflt.jpg)
DRC84697032010-10-15 03:43:24 +0000309endif()
DRCda5220a2011-03-02 02:17:30 +0000310add_test(cjpeg-static-int-gray cjpeg-static -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
311add_test(cjpeg-static-int-gray-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimggray.jpg testoutgray.jpg)
DRC84697032010-10-15 03:43:24 +0000312add_test(djpeg-static-int djpeg-static -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000313add_test(djpeg-static-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.ppm testoutint.ppm)
DRC84697032010-10-15 03:43:24 +0000314add_test(djpeg-static-fast djpeg-static -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000315add_test(djpeg-static-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst.ppm testoutfst.ppm)
DRC84697032010-10-15 03:43:24 +0000316add_test(djpeg-static-float djpeg-static -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
317if(WITH_SIMD)
DRCb42a48c2010-10-18 01:06:36 +0000318add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt.ppm testoutflt.ppm)
DRC84697032010-10-15 03:43:24 +0000319else()
DRCb42a48c2010-10-18 01:06:36 +0000320add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testorig.ppm testoutflt.ppm)
DRC84697032010-10-15 03:43:24 +0000321endif()
322add_test(djpeg-static-256 djpeg-static -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000323add_test(djpeg-static-256-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimg.bmp testout.bmp)
DRC84697032010-10-15 03:43:24 +0000324add_test(cjpeg-static-prog cjpeg-static -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000325add_test(cjpeg-static-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgp.jpg testoutp.jpg)
DRC84697032010-10-15 03:43:24 +0000326add_test(jpegtran-static-prog jpegtran-static -outfile testoutt.jpg testoutp.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000327add_test(jpegtran-static-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testoutt.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000328if(WITH_ARITH_ENC)
DRC66f97e62010-11-23 05:49:54 +0000329add_test(cjpeg-static-ari cjpeg-static -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
330add_test(cjpeg-static-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.jpg testoutari.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000331add_test(jpegtran-static-toari jpegtran-static -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimgint.jpg)
332add_test(jpegtran-static-toari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.jpg testouta.jpg)
333endif()
334if(WITH_ARITH_DEC)
DRC66f97e62010-11-23 05:49:54 +0000335add_test(djpeg-static-ari djpeg-static -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimgari.jpg)
336add_test(djpeg-static-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.ppm testoutari.ppm)
DRC245cfdf2010-11-23 17:11:06 +0000337add_test(jpegtran-static-fromari jpegtran-static -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimgari.jpg)
DRC66f97e62010-11-23 05:49:54 +0000338add_test(jpegtran-static-fromari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testouta.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000339endif()
DRC84697032010-10-15 03:43:24 +0000340add_test(jpegtran-static-crop jpegtran-static -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000341add_test(jpegtran-static-crop-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgcrop.jpg testoutcrop.jpg)
DRC2c0a4e12010-10-16 08:51:43 +0000342
DRCa0f878a2011-04-02 04:43:14 +0000343add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P
344 ${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake)
345
DRC2c0a4e12010-10-16 08:51:43 +0000346
347#
348# Installer
349#
350
DRC2c0a4e12010-10-16 08:51:43 +0000351if(MSVC)
352 set(INST_PLATFORM "Visual C++")
DRCb94f2de2011-03-22 09:31:25 +0000353 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
354 set(INST_DIR ${CMAKE_PROJECT_NAME})
DRC2c0a4e12010-10-16 08:51:43 +0000355elseif(MINGW)
356 set(INST_PLATFORM GCC)
DRCb94f2de2011-03-22 09:31:25 +0000357 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
358 set(INST_DIR ${CMAKE_PROJECT_NAME}-gcc)
DRC2c0a4e12010-10-16 08:51:43 +0000359 set(INST_DEFS -DGCC)
360endif()
361
362if(64BIT)
363 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
364 set(INST_NAME ${INST_NAME}64)
DRCb94f2de2011-03-22 09:31:25 +0000365 set(INST_DIR ${INST_DIR}64)
DRC2c0a4e12010-10-16 08:51:43 +0000366 set(INST_DEFS ${INST_DEFS} -DWIN64)
367endif()
368
DRC957d6232011-04-01 11:13:11 +0000369if(WITH_JAVA)
370 set(INST_DEFS ${INST_DEFS} -DJAVA)
371endif()
372
DRC2c0a4e12010-10-16 08:51:43 +0000373if(MSVC_IDE)
374 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=$(OutDir)\\")
375else()
376 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
377endif()
378
379configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
380
381add_custom_target(installer
382 makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
DRCb94f2de2011-03-22 09:31:25 +0000383 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
384 cjpeg djpeg jpegtran jpgtest
DRC2c0a4e12010-10-16 08:51:43 +0000385 SOURCES libjpeg-turbo.nsi)
DRC7284c9a2010-10-16 21:55:14 +0000386
DRC8569c2f2011-02-18 23:49:42 +0000387install(TARGETS jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom jpgtest
DRC7284c9a2010-10-16 21:55:14 +0000388 ARCHIVE DESTINATION lib
389 LIBRARY DESTINATION lib
390 RUNTIME DESTINATION bin
391)
392
393install(FILES ${CMAKE_SOURCE_DIR}/LGPL.txt ${CMAKE_SOURCE_DIR}/LICENSE.txt
394 ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/README-turbo.txt
395 ${CMAKE_SOURCE_DIR}/libjpeg.txt ${CMAKE_SOURCE_DIR}/usage.txt
396 DESTINATION doc)
DRCe2befde2010-10-17 07:28:08 +0000397
398install(FILES ${CMAKE_BINARY_DIR}/jconfig.h ${CMAKE_SOURCE_DIR}/jerror.h
399 ${CMAKE_SOURCE_DIR}/jmorecfg.h ${CMAKE_SOURCE_DIR}/jpeglib.h
400 ${CMAKE_SOURCE_DIR}/turbojpeg.h DESTINATION include)