blob: 6229ea00693d0776d45e691176c45ae37a90cb6a [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)
DRCcf137ac2011-05-31 20:23:07 +00008set(VERSION 1.1.2)
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)
DRC5e3bb3e2012-10-12 10:19:09 +000014 execute_process(COMMAND "wmic.exe" "os" "get" "LocalDateTime" OUTPUT_VARIABLE
15 BUILD)
16 string(REGEX REPLACE "[^0-9]" "" BUILD "${BUILD}")
17 if (BUILD STREQUAL "")
18 execute_process(COMMAND "cmd.exe" "/C" "DATE" "/T" OUTPUT_VARIABLE BUILD)
19 string(REGEX REPLACE ".*[ ]([0-9]*)[/.]([0-9]*)[/.]([0-9]*).*" "\\3\\2\\1" BUILD "${BUILD}")
20 else()
21 string(SUBSTRING "${BUILD}" 0 8 BUILD)
22 endif()
DRC84697032010-10-15 03:43:24 +000023else()
DRC378da4d2010-10-15 19:11:11 +000024 message(FATAL_ERROR "Platform not supported by this build system. Use autotools instead.")
DRC84697032010-10-15 03:43:24 +000025endif()
26
DRC760ea8d2012-02-07 23:25:19 +000027# This does nothing except when using MinGW. CMAKE_BUILD_TYPE has no meaning
28# in Visual Studio, and it always defaults to Debug when using NMake.
DRC84697032010-10-15 03:43:24 +000029if(NOT CMAKE_BUILD_TYPE)
30 set(CMAKE_BUILD_TYPE Release)
31endif()
32
33message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
34
35# This only works if building from the command line. There is currently no way
DRC760ea8d2012-02-07 23:25:19 +000036# to set a variable's value based on the build type when using Visual Studio.
DRC84697032010-10-15 03:43:24 +000037if(CMAKE_BUILD_TYPE STREQUAL "Debug")
38 set(BUILD "${BUILD}d")
39endif()
40
DRCeb2b9d62010-10-15 04:55:13 +000041message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}")
42
DRC98b85292011-04-15 00:20:15 +000043option(WITH_SIMD "Include SIMD extensions" TRUE)
44option(WITH_ARITH_ENC "Include arithmetic encoding support" TRUE)
45option(WITH_ARITH_DEC "Include arithmetic decoding support" TRUE)
46option(WITH_JPEG7 "Emulate libjpeg v7 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
47option(WITH_JPEG8 "Emulate libjpeg v8 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
DRC245cfdf2010-11-23 17:11:06 +000048
49if(WITH_ARITH_ENC)
50 set(C_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000051 message(STATUS "Arithmetic encoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000052else()
DRC990e28d2011-01-04 21:40:11 +000053 message(STATUS "Arithmetic encoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000054endif()
55
56if(WITH_ARITH_DEC)
57 set(D_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000058 message(STATUS "Arithmetic decoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000059else()
DRC990e28d2011-01-04 21:40:11 +000060 message(STATUS "Arithmetic decoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000061endif()
62
DRC84697032010-10-15 03:43:24 +000063set(JPEG_LIB_VERSION 62)
64set(DLL_VERSION ${JPEG_LIB_VERSION})
DRCa9d5b252010-10-15 06:42:45 +000065set(FULLVERSION ${DLL_VERSION}.0.0)
DRC84697032010-10-15 03:43:24 +000066if(WITH_JPEG8)
67 set(JPEG_LIB_VERSION 80)
68 set(DLL_VERSION 8)
DRCa9d5b252010-10-15 06:42:45 +000069 set(FULLVERSION ${DLL_VERSION}.0.2)
DRCf38eee02011-02-18 07:00:38 +000070 message(STATUS "Emulating libjpeg v8 API/ABI")
DRC84697032010-10-15 03:43:24 +000071elseif(WITH_JPEG7)
72 set(JPEG_LIB_VERSION 70)
73 set(DLL_VERSION 7)
DRCa9d5b252010-10-15 06:42:45 +000074 set(FULLVERSION ${DLL_VERSION}.0.0)
DRC84697032010-10-15 03:43:24 +000075 message(STATUS "Emulating libjpeg v7 API/ABI")
76endif(WITH_JPEG8)
77
78if(MSVC)
79 # Use the static C library for all build types
80 foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
DRC2e4d0442011-02-08 01:18:37 +000081 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
DRC84697032010-10-15 03:43:24 +000082 if(${var} MATCHES "/MD")
83 string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
84 endif()
85 endforeach()
86
87 add_definitions(-W3 -wd4996)
88endif()
89
90# Detect whether compiler is 64-bit
91if(MSVC AND CMAKE_CL_64)
92 set(SIMD_X86_64 1)
93 set(64BIT 1)
94elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
95 set(SIMD_X86_64 1)
96 set(64BIT 1)
97endif()
98
99if(64BIT)
100 message(STATUS "64-bit build")
101else()
102 message(STATUS "32-bit build")
103endif()
104
105configure_file(win/jconfig.h.in jconfig.h)
106configure_file(win/config.h.in config.h)
107
108include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
109
110
111#
112# Targets
113#
114
DRC245cfdf2010-11-23 17:11:06 +0000115set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
116 jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
117 jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
118 jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
119 jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
120 jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
121 jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
122
123if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
124 set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
125endif()
126
127if(WITH_ARITH_ENC)
128 set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
129endif()
130
131if(WITH_ARITH_DEC)
132 set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
133endif()
DRC84697032010-10-15 03:43:24 +0000134
135if(WITH_SIMD)
136 add_definitions(-DWITH_SIMD)
137 add_subdirectory(simd)
138 if(SIMD_X86_64)
139 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
140 else()
141 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
142 endif()
143 # This tells CMake that the "source" files haven't been generated yet
144 set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
145else()
146 set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
DRC6f4ba612010-10-16 21:27:38 +0000147 message(STATUS "Not using SIMD acceleration")
DRC84697032010-10-15 03:43:24 +0000148endif()
149
150add_subdirectory(sharedlib)
151
152add_library(jpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
DRC84697032010-10-15 03:43:24 +0000153if(NOT MSVC)
154 set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
155endif()
156if(WITH_SIMD)
157 add_dependencies(jpeg-static simd)
158endif()
159
160add_library(turbojpeg SHARED turbojpegl.c)
161set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
162target_link_libraries(turbojpeg jpeg-static)
163set_target_properties(turbojpeg PROPERTIES LINK_INTERFACE_LIBRARIES "")
164
165add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS}
166 turbojpegl.c)
DRC84697032010-10-15 03:43:24 +0000167if(NOT MSVC)
168 set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
169endif()
170if(WITH_SIMD)
171 add_dependencies(turbojpeg-static simd)
172endif()
173
174add_executable(jpegut jpegut.c)
175target_link_libraries(jpegut turbojpeg)
176
177add_executable(jpegut-static jpegut.c)
178target_link_libraries(jpegut-static turbojpeg-static)
179
DRC2e4d0442011-02-08 01:18:37 +0000180add_executable(jpgtest jpgtest.c bmp.c)
DRC84697032010-10-15 03:43:24 +0000181target_link_libraries(jpgtest turbojpeg)
182
DRC2e4d0442011-02-08 01:18:37 +0000183add_executable(jpgtest-static jpgtest.c bmp.c)
DRC84697032010-10-15 03:43:24 +0000184target_link_libraries(jpgtest-static turbojpeg-static)
185
186add_executable(cjpeg-static cjpeg.c cdjpeg.c rdbmp.c rdgif.c rdppm.c rdswitch.c
187 rdtarga.c)
188set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS
DRC5ee81f42011-05-02 00:35:50 +0000189 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000190target_link_libraries(cjpeg-static jpeg-static)
191
192add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrbmp.c wrgif.c
193 wrppm.c wrtarga.c)
194set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS
DRC5ee81f42011-05-02 00:35:50 +0000195 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000196target_link_libraries(djpeg-static jpeg-static)
197
198add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
199target_link_libraries(jpegtran-static jpeg-static)
DRC7e3fd2f2011-05-25 06:04:43 +0000200set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "-DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000201
202add_executable(rdjpgcom rdjpgcom.c)
203
204add_executable(wrjpgcom rdjpgcom.c)
205
206
207#
208# Tests
209#
210
211enable_testing()
212add_test(jpegut jpegut)
DRCfbb67472010-11-24 04:02:37 +0000213add_test(jpegut-yuv jpegut -yuv)
DRC84697032010-10-15 03:43:24 +0000214add_test(cjpeg-int sharedlib/cjpeg -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000215add_test(cjpeg-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testoutint.jpg)
DRC84697032010-10-15 03:43:24 +0000216add_test(cjpeg-fast sharedlib/cjpeg -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000217add_test(cjpeg-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst.jpg testoutfst.jpg)
DRCc4ef01f2011-02-18 05:06:58 +0000218add_test(cjpeg-fast-100 sharedlib/cjpeg -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
219add_test(cjpeg-fast-100-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst100.jpg testoutfst100.jpg)
DRC84697032010-10-15 03:43:24 +0000220add_test(cjpeg-float sharedlib/cjpeg -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
221if(WITH_SIMD)
DRCb42a48c2010-10-18 01:06:36 +0000222add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt.jpg testoutflt.jpg)
DRC84697032010-10-15 03:43:24 +0000223else()
DRCb42a48c2010-10-18 01:06:36 +0000224add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt-nosimd.jpg testoutflt.jpg)
DRC84697032010-10-15 03:43:24 +0000225endif()
226add_test(djpeg-int sharedlib/djpeg -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000227add_test(djpeg-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.ppm testoutint.ppm)
DRC84697032010-10-15 03:43:24 +0000228add_test(djpeg-fast sharedlib/djpeg -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000229add_test(djpeg-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst.ppm testoutfst.ppm)
DRC84697032010-10-15 03:43:24 +0000230add_test(djpeg-float sharedlib/djpeg -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
231if(WITH_SIMD)
DRCb42a48c2010-10-18 01:06:36 +0000232add_test(djpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt.ppm testoutflt.ppm)
DRC84697032010-10-15 03:43:24 +0000233else()
DRCb42a48c2010-10-18 01:06:36 +0000234add_test(djpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testorig.ppm testoutflt.ppm)
DRC84697032010-10-15 03:43:24 +0000235endif()
236add_test(djpeg-256 sharedlib/djpeg -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000237add_test(djpeg-256-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimg.bmp testout.bmp)
DRC84697032010-10-15 03:43:24 +0000238add_test(cjpeg-prog sharedlib/cjpeg -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000239add_test(cjpeg-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgp.jpg testoutp.jpg)
DRC84697032010-10-15 03:43:24 +0000240add_test(jpegtran-prog sharedlib/jpegtran -outfile testoutt.jpg testoutp.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000241add_test(jpegtran-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testoutt.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000242if(WITH_ARITH_ENC)
DRC66f97e62010-11-23 05:49:54 +0000243add_test(cjpeg-ari sharedlib/cjpeg -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
244add_test(cjpeg-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.jpg testoutari.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000245add_test(jpegtran-toari sharedlib/jpegtran -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimgint.jpg)
246add_test(jpegtran-toari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.jpg testouta.jpg)
247endif()
248if(WITH_ARITH_DEC)
DRC66f97e62010-11-23 05:49:54 +0000249add_test(djpeg-ari sharedlib/djpeg -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimgari.jpg)
250add_test(djpeg-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.ppm testoutari.ppm)
DRC245cfdf2010-11-23 17:11:06 +0000251add_test(jpegtran-fromari sharedlib/jpegtran -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimgari.jpg)
DRC66f97e62010-11-23 05:49:54 +0000252add_test(jpegtran-fromari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testouta.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000253endif()
DRC84697032010-10-15 03:43:24 +0000254add_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 +0000255add_test(jpegtran-crop-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgcrop.jpg testoutcrop.jpg)
DRC84697032010-10-15 03:43:24 +0000256
257add_test(jpegut-static jpegut-static)
DRCfbb67472010-11-24 04:02:37 +0000258add_test(jpegut-static-yuv jpegut-static -yuv)
DRC84697032010-10-15 03:43:24 +0000259add_test(cjpeg-static-int cjpeg-static -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000260add_test(cjpeg-static-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testoutint.jpg)
DRC84697032010-10-15 03:43:24 +0000261add_test(cjpeg-static-fast cjpeg-static -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000262add_test(cjpeg-static-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst.jpg testoutfst.jpg)
DRCc4ef01f2011-02-18 05:06:58 +0000263add_test(cjpeg-static-fast-100 cjpeg-static -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
264add_test(cjpeg-static-fast-100-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst100.jpg testoutfst100.jpg)
DRC84697032010-10-15 03:43:24 +0000265add_test(cjpeg-static-float cjpeg-static -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
266if(WITH_SIMD)
DRCb42a48c2010-10-18 01:06:36 +0000267add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt.jpg testoutflt.jpg)
DRC84697032010-10-15 03:43:24 +0000268else()
DRCb42a48c2010-10-18 01:06:36 +0000269add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt-nosimd.jpg testoutflt.jpg)
DRC84697032010-10-15 03:43:24 +0000270endif()
271add_test(djpeg-static-int djpeg-static -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000272add_test(djpeg-static-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.ppm testoutint.ppm)
DRC84697032010-10-15 03:43:24 +0000273add_test(djpeg-static-fast djpeg-static -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000274add_test(djpeg-static-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgfst.ppm testoutfst.ppm)
DRC84697032010-10-15 03:43:24 +0000275add_test(djpeg-static-float djpeg-static -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testorig.jpg)
276if(WITH_SIMD)
DRCb42a48c2010-10-18 01:06:36 +0000277add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgflt.ppm testoutflt.ppm)
DRC84697032010-10-15 03:43:24 +0000278else()
DRCb42a48c2010-10-18 01:06:36 +0000279add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testorig.ppm testoutflt.ppm)
DRC84697032010-10-15 03:43:24 +0000280endif()
281add_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 +0000282add_test(djpeg-static-256-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimg.bmp testout.bmp)
DRC84697032010-10-15 03:43:24 +0000283add_test(cjpeg-static-prog cjpeg-static -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
DRCb42a48c2010-10-18 01:06:36 +0000284add_test(cjpeg-static-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgp.jpg testoutp.jpg)
DRC84697032010-10-15 03:43:24 +0000285add_test(jpegtran-static-prog jpegtran-static -outfile testoutt.jpg testoutp.jpg)
DRCb42a48c2010-10-18 01:06:36 +0000286add_test(jpegtran-static-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testoutt.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000287if(WITH_ARITH_ENC)
DRC66f97e62010-11-23 05:49:54 +0000288add_test(cjpeg-static-ari cjpeg-static -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testorig.ppm)
289add_test(cjpeg-static-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.jpg testoutari.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000290add_test(jpegtran-static-toari jpegtran-static -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimgint.jpg)
291add_test(jpegtran-static-toari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.jpg testouta.jpg)
292endif()
293if(WITH_ARITH_DEC)
DRC66f97e62010-11-23 05:49:54 +0000294add_test(djpeg-static-ari djpeg-static -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimgari.jpg)
295add_test(djpeg-static-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgari.ppm testoutari.ppm)
DRC245cfdf2010-11-23 17:11:06 +0000296add_test(jpegtran-static-fromari jpegtran-static -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimgari.jpg)
DRC66f97e62010-11-23 05:49:54 +0000297add_test(jpegtran-static-fromari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgint.jpg testouta.jpg)
DRC245cfdf2010-11-23 17:11:06 +0000298endif()
DRC84697032010-10-15 03:43:24 +0000299add_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 +0000300add_test(jpegtran-static-crop-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimgcrop.jpg testoutcrop.jpg)
DRC2c0a4e12010-10-16 08:51:43 +0000301
302
303#
304# Installer
305#
306
DRC2c0a4e12010-10-16 08:51:43 +0000307if(MSVC)
308 set(INST_PLATFORM "Visual C++")
DRC1c87e452011-03-22 06:49:31 +0000309 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
310 set(INST_DIR ${CMAKE_PROJECT_NAME})
DRC2c0a4e12010-10-16 08:51:43 +0000311elseif(MINGW)
312 set(INST_PLATFORM GCC)
DRC1c87e452011-03-22 06:49:31 +0000313 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
314 set(INST_DIR ${CMAKE_PROJECT_NAME}-gcc)
DRC2c0a4e12010-10-16 08:51:43 +0000315 set(INST_DEFS -DGCC)
316endif()
317
318if(64BIT)
319 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
320 set(INST_NAME ${INST_NAME}64)
DRC1c87e452011-03-22 06:49:31 +0000321 set(INST_DIR ${INST_DIR}64)
DRC2c0a4e12010-10-16 08:51:43 +0000322 set(INST_DEFS ${INST_DEFS} -DWIN64)
323endif()
324
325if(MSVC_IDE)
DRC926e01f2011-04-06 06:35:38 +0000326 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
DRC2c0a4e12010-10-16 08:51:43 +0000327else()
328 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
329endif()
330
331configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
332
333add_custom_target(installer
334 makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
DRC95db4f42011-03-22 00:20:43 +0000335 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
336 cjpeg djpeg jpegtran jpgtest
DRC2c0a4e12010-10-16 08:51:43 +0000337 SOURCES libjpeg-turbo.nsi)
DRC7284c9a2010-10-16 21:55:14 +0000338
DRC8569c2f2011-02-18 23:49:42 +0000339install(TARGETS jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom jpgtest
DRC7284c9a2010-10-16 21:55:14 +0000340 ARCHIVE DESTINATION lib
341 LIBRARY DESTINATION lib
342 RUNTIME DESTINATION bin
343)
344
345install(FILES ${CMAKE_SOURCE_DIR}/LGPL.txt ${CMAKE_SOURCE_DIR}/LICENSE.txt
346 ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/README-turbo.txt
347 ${CMAKE_SOURCE_DIR}/libjpeg.txt ${CMAKE_SOURCE_DIR}/usage.txt
348 DESTINATION doc)
DRCe2befde2010-10-17 07:28:08 +0000349
350install(FILES ${CMAKE_BINARY_DIR}/jconfig.h ${CMAKE_SOURCE_DIR}/jerror.h
351 ${CMAKE_SOURCE_DIR}/jmorecfg.h ${CMAKE_SOURCE_DIR}/jpeglib.h
352 ${CMAKE_SOURCE_DIR}/turbojpeg.h DESTINATION include)