blob: f1515d0e05b78a91b1b9bf246e19b42cde3a9ad5 [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)
DRC5e96c9b2013-02-22 06:58:31 +00008set(VERSION 1.2.91)
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
DRC2ffcb8e2011-04-04 04:56:24 +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
DRC2ffcb8e2011-04-04 04:56:24 +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
DRCddcd5a12011-04-15 00:24:02 +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)
DRCab706232013-01-18 23:42:31 +000048option(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 +000049option(WITH_JAVA "Build Java wrapper for the TurboJPEG library" FALSE)
DRC245cfdf2010-11-23 17:11:06 +000050
51if(WITH_ARITH_ENC)
52 set(C_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000053 message(STATUS "Arithmetic encoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000054else()
DRC990e28d2011-01-04 21:40:11 +000055 message(STATUS "Arithmetic encoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000056endif()
57
58if(WITH_ARITH_DEC)
59 set(D_ARITH_CODING_SUPPORTED 1)
DRC990e28d2011-01-04 21:40:11 +000060 message(STATUS "Arithmetic decoding support enabled")
DRC245cfdf2010-11-23 17:11:06 +000061else()
DRC990e28d2011-01-04 21:40:11 +000062 message(STATUS "Arithmetic decoding support disabled")
DRC245cfdf2010-11-23 17:11:06 +000063endif()
64
DRC957d6232011-04-01 11:13:11 +000065if(WITH_JAVA)
DRC5039d732013-01-21 23:42:12 +000066 message(STATUS "TurboJPEG Java wrapper enabled")
DRC218c0c12011-02-05 06:01:18 +000067else()
DRC5039d732013-01-21 23:42:12 +000068 message(STATUS "TurboJPEG Java wrapper disabled")
DRC218c0c12011-02-05 06:01:18 +000069endif()
70
DRCab706232013-01-18 23:42:31 +000071set(SO_AGE 0)
72if(WITH_MEM_SRCDST)
73 set(SO_AGE 1)
74endif()
75
DRC84697032010-10-15 03:43:24 +000076set(JPEG_LIB_VERSION 62)
77set(DLL_VERSION ${JPEG_LIB_VERSION})
DRCab706232013-01-18 23:42:31 +000078set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +000079if(WITH_JPEG8)
80 set(JPEG_LIB_VERSION 80)
81 set(DLL_VERSION 8)
DRCa9d5b252010-10-15 06:42:45 +000082 set(FULLVERSION ${DLL_VERSION}.0.2)
DRCf38eee02011-02-18 07:00:38 +000083 message(STATUS "Emulating libjpeg v8 API/ABI")
DRC84697032010-10-15 03:43:24 +000084elseif(WITH_JPEG7)
85 set(JPEG_LIB_VERSION 70)
86 set(DLL_VERSION 7)
DRCab706232013-01-18 23:42:31 +000087 set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
DRC84697032010-10-15 03:43:24 +000088 message(STATUS "Emulating libjpeg v7 API/ABI")
89endif(WITH_JPEG8)
90
DRCab706232013-01-18 23:42:31 +000091if(WITH_MEM_SRCDST)
92 set(MEM_SRCDST_SUPPORTED 1)
93 message(STATUS "In-memory source/destination managers enabled")
94else()
95 message(STATUS "In-memory source/destination managers disabled")
96endif()
97
DRC84697032010-10-15 03:43:24 +000098if(MSVC)
99 # Use the static C library for all build types
100 foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
DRC2e4d0442011-02-08 01:18:37 +0000101 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
DRC84697032010-10-15 03:43:24 +0000102 if(${var} MATCHES "/MD")
103 string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
104 endif()
105 endforeach()
106
107 add_definitions(-W3 -wd4996)
108endif()
109
110# Detect whether compiler is 64-bit
111if(MSVC AND CMAKE_CL_64)
112 set(SIMD_X86_64 1)
113 set(64BIT 1)
114elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
115 set(SIMD_X86_64 1)
116 set(64BIT 1)
117endif()
118
119if(64BIT)
120 message(STATUS "64-bit build")
121else()
122 message(STATUS "32-bit build")
123endif()
124
125configure_file(win/jconfig.h.in jconfig.h)
126configure_file(win/config.h.in config.h)
127
128include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
129
DRC957d6232011-04-01 11:13:11 +0000130if(WITH_JAVA)
131 find_package(Java)
132 find_package(JNI)
DRCdb425062011-04-03 06:10:18 +0000133 if(DEFINED JAVACFLAGS)
134 message(STATUS "Java compiler flags = ${JAVACFLAGS}")
135 endif()
DRC218c0c12011-02-05 06:01:18 +0000136endif()
137
DRC84697032010-10-15 03:43:24 +0000138
139#
140# Targets
141#
142
DRC245cfdf2010-11-23 17:11:06 +0000143set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
144 jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c jcphuff.c
145 jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c jdatasrc.c
146 jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c
147 jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c
148 jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c
149 jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
150
151if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
152 set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
153endif()
154
155if(WITH_ARITH_ENC)
156 set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
157endif()
158
159if(WITH_ARITH_DEC)
160 set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
161endif()
DRC84697032010-10-15 03:43:24 +0000162
163if(WITH_SIMD)
164 add_definitions(-DWITH_SIMD)
165 add_subdirectory(simd)
166 if(SIMD_X86_64)
167 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_x86_64.c)
168 else()
169 set(JPEG_SOURCES ${JPEG_SOURCES} simd/jsimd_i386.c)
170 endif()
171 # This tells CMake that the "source" files haven't been generated yet
172 set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
173else()
174 set(JPEG_SOURCES ${JPEG_SOURCES} jsimd_none.c)
DRC6f4ba612010-10-16 21:27:38 +0000175 message(STATUS "Not using SIMD acceleration")
DRC84697032010-10-15 03:43:24 +0000176endif()
177
DRC957d6232011-04-01 11:13:11 +0000178if(WITH_JAVA)
179 add_subdirectory(java)
180endif()
181
DRC84697032010-10-15 03:43:24 +0000182add_subdirectory(sharedlib)
183
184add_library(jpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS})
DRC84697032010-10-15 03:43:24 +0000185if(NOT MSVC)
186 set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
187endif()
188if(WITH_SIMD)
189 add_dependencies(jpeg-static simd)
190endif()
191
DRC418dbdf2011-05-26 10:45:06 +0000192set(TURBOJPEG_SOURCES turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
DRC957d6232011-04-01 11:13:11 +0000193if(WITH_JAVA)
DRC218c0c12011-02-05 06:01:18 +0000194 set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
DRC957d6232011-04-01 11:13:11 +0000195 include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
DRC218c0c12011-02-05 06:01:18 +0000196endif()
197
198add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
DRC84697032010-10-15 03:43:24 +0000199set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
DRC389c4722011-02-06 18:48:13 +0000200if(MINGW)
201 set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
202endif()
DRC84697032010-10-15 03:43:24 +0000203target_link_libraries(turbojpeg jpeg-static)
204set_target_properties(turbojpeg PROPERTIES LINK_INTERFACE_LIBRARIES "")
205
206add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_OBJS}
DRC418dbdf2011-05-26 10:45:06 +0000207 turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c)
DRC84697032010-10-15 03:43:24 +0000208if(NOT MSVC)
209 set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
210endif()
211if(WITH_SIMD)
212 add_dependencies(turbojpeg-static simd)
213endif()
214
DRC3185cb92011-05-25 03:52:22 +0000215add_executable(tjunittest tjunittest.c tjutil.c)
216target_link_libraries(tjunittest turbojpeg)
DRC84697032010-10-15 03:43:24 +0000217
DRC3185cb92011-05-25 03:52:22 +0000218add_executable(tjunittest-static tjunittest.c tjutil.c)
219target_link_libraries(tjunittest-static turbojpeg-static)
DRC84697032010-10-15 03:43:24 +0000220
DRC3185cb92011-05-25 03:52:22 +0000221add_executable(tjbench tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
DRC43484642011-05-24 17:03:51 +0000222 wrppm.c)
DRC4ad60032011-09-20 05:41:54 +0000223target_link_libraries(tjbench turbojpeg jpeg-static)
DRC3185cb92011-05-25 03:52:22 +0000224set_property(TARGET tjbench PROPERTY COMPILE_FLAGS
DRC43484642011-05-24 17:03:51 +0000225 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
DRC84697032010-10-15 03:43:24 +0000226
DRC3185cb92011-05-25 03:52:22 +0000227add_executable(tjbench-static tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c
DRC43484642011-05-24 17:03:51 +0000228 wrppm.c)
DRC3185cb92011-05-25 03:52:22 +0000229target_link_libraries(tjbench-static turbojpeg-static jpeg-static)
230set_property(TARGET tjbench-static PROPERTY COMPILE_FLAGS
DRC43484642011-05-24 17:03:51 +0000231 "-DBMP_SUPPORTED -DPPM_SUPPORTED")
DRC84697032010-10-15 03:43:24 +0000232
233add_executable(cjpeg-static cjpeg.c cdjpeg.c rdbmp.c rdgif.c rdppm.c rdswitch.c
234 rdtarga.c)
235set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS
DRC5ee81f42011-05-02 00:35:50 +0000236 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000237target_link_libraries(cjpeg-static jpeg-static)
238
239add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrbmp.c wrgif.c
240 wrppm.c wrtarga.c)
241set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS
DRC5ee81f42011-05-02 00:35:50 +0000242 "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED -DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000243target_link_libraries(djpeg-static jpeg-static)
244
245add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
246target_link_libraries(jpegtran-static jpeg-static)
DRC7e3fd2f2011-05-25 06:04:43 +0000247set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "-DUSE_SETMODE")
DRC84697032010-10-15 03:43:24 +0000248
249add_executable(rdjpgcom rdjpgcom.c)
250
251add_executable(wrjpgcom rdjpgcom.c)
252
253
254#
255# Tests
256#
257
DRC957d6232011-04-01 11:13:11 +0000258if(MSVC_IDE)
259 set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/")
260else()
261 set(OBJDIR "")
262endif()
263
DRC84697032010-10-15 03:43:24 +0000264enable_testing()
DRC211d1e72013-01-13 11:25:20 +0000265
266set(MD5_JPEG_INT 9a68f56bc76e466aa7e52f415d0f4a5f)
267set(MD5_JPEG_FAST 0e1502e7fa421835e376a314fac2a39f)
268set(MD5_JPEG_FAST_100 7bf72a8e741d64eecb960c97323af77c)
269set(MD5_JPEG_FLOAT d1623885ffafcd40c684af09e3d65cd5)
270set(MD5_JPEG_FLOAT_NOSIMD fb4884c35f8273f498cb32879de5c455)
271set(MD5_JPEG_INT_GRAY 72b51f894b8f4a10b3ee3066770aa38d)
272set(MD5_PPM_INT d1ed0d11f076b842525271647716aeb8)
273set(MD5_PPM_FAST 048298a2d2410261c0533cb97bcfef23)
274set(MD5_PPM_FLOAT 7f5b446ee36b2630e06785b8d42af15f)
275set(MD5_PPM_FLOAT_NOSIMD 64072f1dbdc5b3a187777788604971a5)
276set(MD5_PPM_INT_2_1 9f9de8c0612f8d06869b960b05abf9c9)
277set(MD5_PPM_INT_15_8 b6875bc070720b899566cc06459b63b7)
278set(MD5_PPM_INT_7_4 06a177eae05f164fac57f7a2c346ee87)
279set(MD5_PPM_INT_13_8 bc3452573c8152f6ae552939ee19f82f)
280set(MD5_PPM_INT_3_2 f5a8b88a8a7f96016f04d259cf82ed67)
281set(MD5_PPM_INT_11_8 d8cc73c0aaacd4556569b59437ba00a5)
282set(MD5_PPM_INT_5_4 32775dd9ad2ab90f4c5b219b53e0c86c)
283set(MD5_PPM_INT_9_8 d25e61bc7eac0002f5b393aa223747b6)
284set(MD5_PPM_INT_7_8 ddb564b7c74a09494016d6cd7502a946)
285set(MD5_PPM_INT_3_4 8ed8e68808c3fbc4ea764fc9d2968646)
286set(MD5_PPM_INT_5_8 a3363274999da2366a024efae6d16c9b)
287set(MD5_PPM_INT_1_2 e692a315cea26b988c8e8b29a5dbcd81)
288set(MD5_PPM_INT_3_8 79eca9175652ced755155c90e785a996)
289set(MD5_PPM_INT_1_4 79cd778f8bf1a117690052cacdd54eca)
290set(MD5_PPM_INT_1_8 391b3d4aca640c8567d6f8745eb2142f)
291set(MD5_PPM_FAST_1_2 f30bcf6d32ccd44cbdd9aeaacbd9454f)
292set(MD5_BMP_256 4980185e3776e89bd931736e1cddeee6)
293set(MD5_JPEG_ARI e986fb0a637a8d833d96e8a6d6d84ea1)
294set(MD5_PPM_ARI 72b59a99bcf1de24c5b27d151bde2437)
295set(MD5_JPEG_PROG 1c4afddc05c0a43489ee54438a482d92)
296set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d)
297
DRC957d6232011-04-01 11:13:11 +0000298if(WITH_JAVA)
299add_test(TJUnitTest ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest)
300add_test(TJUnitTest-yuv ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -yuv)
301add_test(TJUnitTest-bi ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -bi)
302add_test(TJUnitTest-bi-yuv ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -bi -yuv)
303endif()
DRC3185cb92011-05-25 03:52:22 +0000304add_test(tjunittest tjunittest)
305add_test(tjunittest-alloc tjunittest -alloc)
306add_test(tjunittest-yuv tjunittest -yuv)
DRC7ab03642012-01-31 05:47:07 +0000307add_test(cjpeg-int sharedlib/cjpeg -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000308add_test(cjpeg-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutint.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000309add_test(cjpeg-fast sharedlib/cjpeg -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000310add_test(cjpeg-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST} -DFILE=testoutfst.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000311add_test(cjpeg-fast-100 sharedlib/cjpeg -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000312add_test(cjpeg-fast-100-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST_100} -DFILE=testoutfst100.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000313add_test(cjpeg-float sharedlib/cjpeg -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC84697032010-10-15 03:43:24 +0000314if(WITH_SIMD)
DRC211d1e72013-01-13 11:25:20 +0000315add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000316else()
DRC211d1e72013-01-13 11:25:20 +0000317add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT_NOSIMD} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000318endif()
DRC7ab03642012-01-31 05:47:07 +0000319add_test(cjpeg-int-gray sharedlib/cjpeg -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000320add_test(cjpeg-int-gray-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT_GRAY} -DFILE=testoutgray.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000321add_test(djpeg-int sharedlib/djpeg -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000322add_test(djpeg-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT} -DFILE=testoutint.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000323add_test(djpeg-fast sharedlib/djpeg -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000324add_test(djpeg-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST} -DFILE=testoutfst.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000325add_test(djpeg-float sharedlib/djpeg -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC84697032010-10-15 03:43:24 +0000326if(WITH_SIMD)
DRC211d1e72013-01-13 11:25:20 +0000327add_test(djpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000328else()
DRC211d1e72013-01-13 11:25:20 +0000329add_test(djpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT_NOSIMD} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000330endif()
DRC0af8d672012-01-31 11:09:11 +0000331foreach(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)
332string(REGEX REPLACE "_" "/" scalearg ${scale})
DRCcf775bf2012-02-01 02:49:10 +0000333add_test(djpeg-int-${scale} sharedlib/djpeg -dct int -nosmooth -scale ${scalearg} -ppm -outfile testoutint${scale}.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000334add_test(djpeg-int-${scale}-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT_${scale}} -DFILE=testoutint${scale}.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC0af8d672012-01-31 11:09:11 +0000335endforeach()
DRC7ab03642012-01-31 05:47:07 +0000336add_test(djpeg-fast-1_2 sharedlib/djpeg -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000337add_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)
DRC7ab03642012-01-31 05:47:07 +0000338add_test(djpeg-256 sharedlib/djpeg -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000339add_test(djpeg-256-cmp ${CMAKE_COMMAND} -DMD5=${MD5_BMP_256} -DFILE=testout.bmp -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000340add_test(cjpeg-prog sharedlib/cjpeg -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000341add_test(cjpeg-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG} -DFILE=testoutp.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000342add_test(jpegtran-prog sharedlib/jpegtran -outfile testoutt.jpg testoutp.jpg)
DRC211d1e72013-01-13 11:25:20 +0000343add_test(jpegtran-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC245cfdf2010-11-23 17:11:06 +0000344if(WITH_ARITH_ENC)
DRC7ab03642012-01-31 05:47:07 +0000345add_test(cjpeg-ari sharedlib/cjpeg -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000346add_test(cjpeg-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testoutari.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
DRC7ab03642012-01-31 05:47:07 +0000347add_test(jpegtran-toari sharedlib/jpegtran -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
DRC211d1e72013-01-13 11:25:20 +0000348add_test(jpegtran-toari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC245cfdf2010-11-23 17:11:06 +0000349endif()
350if(WITH_ARITH_DEC)
DRC7ab03642012-01-31 05:47:07 +0000351add_test(djpeg-ari sharedlib/djpeg -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
DRC211d1e72013-01-13 11:25:20 +0000352add_test(djpeg-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_ARI} -DFILE=testoutari.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000353add_test(jpegtran-fromari sharedlib/jpegtran -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
DRC211d1e72013-01-13 11:25:20 +0000354add_test(jpegtran-fromari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC245cfdf2010-11-23 17:11:06 +0000355endif()
DRC7ab03642012-01-31 05:47:07 +0000356add_test(jpegtran-crop sharedlib/jpegtran -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000357add_test(jpegtran-crop-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testoutcrop.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000358
DRC3185cb92011-05-25 03:52:22 +0000359add_test(tjunittest-static tjunittest-static)
360add_test(tjunittest-static-alloc tjunittest-static -alloc)
361add_test(tjunittest-static-yuv tjunittest-static -yuv)
DRC7ab03642012-01-31 05:47:07 +0000362add_test(cjpeg-static-int cjpeg-static -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000363add_test(cjpeg-static-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutint.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000364add_test(cjpeg-static-fast cjpeg-static -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000365add_test(cjpeg-static-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST} -DFILE=testoutfst.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000366add_test(cjpeg-static-fast-100 cjpeg-static -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000367add_test(cjpeg-static-fast-100-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST_100} -DFILE=testoutfst100.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000368add_test(cjpeg-static-float cjpeg-static -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC84697032010-10-15 03:43:24 +0000369if(WITH_SIMD)
DRC211d1e72013-01-13 11:25:20 +0000370add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000371else()
DRC211d1e72013-01-13 11:25:20 +0000372add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT_NOSIMD} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000373endif()
DRC7ab03642012-01-31 05:47:07 +0000374add_test(cjpeg-static-int-gray cjpeg-static -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000375add_test(cjpeg-static-int-gray-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT_GRAY} -DFILE=testoutgray.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000376add_test(djpeg-static-int djpeg-static -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000377add_test(djpeg-static-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT} -DFILE=testoutint.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000378add_test(djpeg-static-fast djpeg-static -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000379add_test(djpeg-static-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST} -DFILE=testoutfst.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000380add_test(djpeg-static-float djpeg-static -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC84697032010-10-15 03:43:24 +0000381if(WITH_SIMD)
DRC211d1e72013-01-13 11:25:20 +0000382add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000383else()
DRC211d1e72013-01-13 11:25:20 +0000384add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT_NOSIMD} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000385endif()
DRC0af8d672012-01-31 11:09:11 +0000386foreach(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)
387string(REGEX REPLACE "_" "/" scalearg ${scale})
DRCcf775bf2012-02-01 02:49:10 +0000388add_test(djpeg-static-int-${scale} djpeg-static -dct int -nosmooth -scale ${scalearg} -ppm -outfile testoutint${scale}.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000389add_test(djpeg-static-int-${scale}-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT_${scale}} -DFILE=testoutint${scale}.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC0af8d672012-01-31 11:09:11 +0000390endforeach()
DRC7ab03642012-01-31 05:47:07 +0000391add_test(djpeg-static-fast-1_2 djpeg-static -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000392add_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)
DRC7ab03642012-01-31 05:47:07 +0000393add_test(djpeg-static-256 djpeg-static -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000394add_test(djpeg-static-256-cmp ${CMAKE_COMMAND} -DMD5=${MD5_BMP_256} -DFILE=testout.bmp -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000395add_test(cjpeg-static-prog cjpeg-static -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000396add_test(cjpeg-static-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG} -DFILE=testoutp.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC84697032010-10-15 03:43:24 +0000397add_test(jpegtran-static-prog jpegtran-static -outfile testoutt.jpg testoutp.jpg)
DRC211d1e72013-01-13 11:25:20 +0000398add_test(jpegtran-static-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC245cfdf2010-11-23 17:11:06 +0000399if(WITH_ARITH_ENC)
DRC7ab03642012-01-31 05:47:07 +0000400add_test(cjpeg-static-ari cjpeg-static -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
DRC211d1e72013-01-13 11:25:20 +0000401add_test(cjpeg-static-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testoutari.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
DRC7ab03642012-01-31 05:47:07 +0000402add_test(jpegtran-static-toari jpegtran-static -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
DRC211d1e72013-01-13 11:25:20 +0000403add_test(jpegtran-static-toari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC245cfdf2010-11-23 17:11:06 +0000404endif()
405if(WITH_ARITH_DEC)
DRC7ab03642012-01-31 05:47:07 +0000406add_test(djpeg-static-ari djpeg-static -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
DRC211d1e72013-01-13 11:25:20 +0000407add_test(djpeg-static-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_ARI} -DFILE=testoutari.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC7ab03642012-01-31 05:47:07 +0000408add_test(jpegtran-static-fromari jpegtran-static -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
DRC211d1e72013-01-13 11:25:20 +0000409add_test(jpegtran-static-fromari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC245cfdf2010-11-23 17:11:06 +0000410endif()
DRC7ab03642012-01-31 05:47:07 +0000411add_test(jpegtran-static-crop jpegtran-static -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
DRC211d1e72013-01-13 11:25:20 +0000412add_test(jpegtran-static-crop-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testoutcrop.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
DRC2c0a4e12010-10-16 08:51:43 +0000413
DRCa0f878a2011-04-02 04:43:14 +0000414add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P
415 ${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake)
416
DRC2c0a4e12010-10-16 08:51:43 +0000417
418#
419# Installer
420#
421
DRC2c0a4e12010-10-16 08:51:43 +0000422if(MSVC)
423 set(INST_PLATFORM "Visual C++")
DRCb94f2de2011-03-22 09:31:25 +0000424 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
425 set(INST_DIR ${CMAKE_PROJECT_NAME})
DRC2c0a4e12010-10-16 08:51:43 +0000426elseif(MINGW)
427 set(INST_PLATFORM GCC)
DRCb94f2de2011-03-22 09:31:25 +0000428 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
429 set(INST_DIR ${CMAKE_PROJECT_NAME}-gcc)
DRC2c0a4e12010-10-16 08:51:43 +0000430 set(INST_DEFS -DGCC)
431endif()
432
433if(64BIT)
434 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
435 set(INST_NAME ${INST_NAME}64)
DRCb94f2de2011-03-22 09:31:25 +0000436 set(INST_DIR ${INST_DIR}64)
DRC2c0a4e12010-10-16 08:51:43 +0000437 set(INST_DEFS ${INST_DEFS} -DWIN64)
438endif()
439
DRC957d6232011-04-01 11:13:11 +0000440if(WITH_JAVA)
441 set(INST_DEFS ${INST_DEFS} -DJAVA)
442endif()
443
DRC2c0a4e12010-10-16 08:51:43 +0000444if(MSVC_IDE)
DRC926e01f2011-04-06 06:35:38 +0000445 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
DRC2c0a4e12010-10-16 08:51:43 +0000446else()
447 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
448endif()
449
450configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
451
452add_custom_target(installer
453 makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
DRCb94f2de2011-03-22 09:31:25 +0000454 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
DRC3185cb92011-05-25 03:52:22 +0000455 cjpeg djpeg jpegtran tjbench
DRC2c0a4e12010-10-16 08:51:43 +0000456 SOURCES libjpeg-turbo.nsi)
DRC7284c9a2010-10-16 21:55:14 +0000457
DRC3185cb92011-05-25 03:52:22 +0000458install(TARGETS jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom tjbench
DRC7284c9a2010-10-16 21:55:14 +0000459 ARCHIVE DESTINATION lib
460 LIBRARY DESTINATION lib
461 RUNTIME DESTINATION bin
462)
463
DRCa1647c82012-02-10 00:39:05 +0000464install(FILES ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/README-turbo.txt
465 ${CMAKE_SOURCE_DIR}/example.c ${CMAKE_SOURCE_DIR}/libjpeg.txt
466 ${CMAKE_SOURCE_DIR}/structure.txt ${CMAKE_SOURCE_DIR}/usage.txt
467 ${CMAKE_SOURCE_DIR}/wizard.txt
DRC7284c9a2010-10-16 21:55:14 +0000468 DESTINATION doc)
DRCe2befde2010-10-17 07:28:08 +0000469
470install(FILES ${CMAKE_BINARY_DIR}/jconfig.h ${CMAKE_SOURCE_DIR}/jerror.h
471 ${CMAKE_SOURCE_DIR}/jmorecfg.h ${CMAKE_SOURCE_DIR}/jpeglib.h
472 ${CMAKE_SOURCE_DIR}/turbojpeg.h DESTINATION include)