Update kdu copy
[openjpeg.git] / thirdparty / libtiff / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 project(libtiff C)
3 # This convenient copy of libtiff does not support encapsulated zlib or jpeg
4 # stream. see ZIP_SUPPORT and JPEG_SUPPORT values
5
6 INCLUDE_DIRECTORIES(BEFORE "${CMAKE_CURRENT_SOURCE_DIR}")
7 INCLUDE_DIRECTORIES(BEFORE "${CMAKE_CURRENT_BINARY_DIR}")
8
9 SET(TARGET_FILES
10   t4.h
11   tiffiop.h
12   tif_aux.c
13   tif_close.c
14   tif_codec.c
15   tif_color.c
16   tif_compress.c
17   tif_dir.c
18   tif_dir.h
19   tif_dirinfo.c
20   tif_dirread.c
21   tif_dirwrite.c
22   tif_dumpmode.c
23   tif_error.c
24   tif_extension.c
25   tif_fax3.c
26   tif_fax3.h
27   tif_fax3sm.c
28   tif_flush.c
29   tif_getimage.c
30   tif_jbig.c
31   tif_jpeg.c
32   tif_luv.c
33   tif_lzw.c
34   tif_next.c
35   tif_ojpeg.c
36   tif_open.c
37   tif_packbits.c
38   tif_pixarlog.c
39   tif_predict.c
40   tif_predict.h
41   tif_print.c
42   tif_read.c
43   tif_strip.c
44   tif_swab.c
45   tif_thunder.c
46   tif_tile.c
47   tif_version.c
48   tif_warning.c
49   tif_write.c
50   tif_zip.c
51   tif_jpeg_12.c
52   tif_lzma.c
53   uvcode.h
54   )
55
56 IF(UNIX)
57   SET(TARGET_FILES ${TARGET_FILES} tif_unix.c)
58 ELSE()
59   SET(TARGET_FILES ${TARGET_FILES} tif_win32.c)
60 ENDIF()
61
62 include(${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
63 TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
64 set(HOST_BIGENDIAN ${WORDS_BIGENDIAN})
65 if(HOST_BIGENDIAN)
66 set(HOST_FILLORDER "FILLORDER_MSB2LSB")
67 else()
68 set(HOST_FILLORDER "FILLORDER_LSB2MSB")
69 endif()
70 include(CheckIncludeFiles)
71 include(CheckSymbolExists)
72 include(CheckFunctionExists)
73
74 CHECK_INCLUDE_FILES("zlib.h" HAVE_ZLIB_H)
75 CHECK_INCLUDE_FILES("jpeglib.h" HAVE_JPEGLIB_H)
76 if(HAVE_JPEGLIB_H)
77   set(JPEG_SUPPORT 1)
78 endif()
79 if(HAVE_ZLIB_H)
80   include_directories(
81     ${ZLIB_INCLUDE_DIR}
82     )
83   set(ZIP_SUPPORT 1)
84   set(PIXARLOG_SUPPORT 1) # require zlib
85 endif()
86 CHECK_INCLUDE_FILES("assert.h" HAVE_ASSERT_H)
87 CHECK_INCLUDE_FILES("dlfcn.h" HAVE_DLFCN_H)
88 CHECK_INCLUDE_FILES("fcntl.h" HAVE_FCNTL_H)
89 CHECK_INCLUDE_FILES("inttypes.h" HAVE_INTTYPES_H)
90 CHECK_INCLUDE_FILES("io.h" HAVE_IO_H)
91 CHECK_INCLUDE_FILES("limits.h" HAVE_LIMITS_H)
92 CHECK_INCLUDE_FILES("malloc.h" HAVE_MALLOC_H)
93 CHECK_INCLUDE_FILES("memory.h" HAVE_MEMORY_H)
94 CHECK_INCLUDE_FILES("search.h" HAVE_SEARCH_H)
95 CHECK_INCLUDE_FILES("stdint.h" HAVE_STDINT_H)
96 CHECK_INCLUDE_FILES("stdlib.h" HAVE_STDLIB_H)
97 CHECK_INCLUDE_FILES("string.h" HAVE_STRING_H)
98 CHECK_INCLUDE_FILES("strings.h" HAVE_STRINGS_H)
99 CHECK_INCLUDE_FILES("sys/stat.h" HAVE_SYS_STAT_H)
100 CHECK_INCLUDE_FILES("sys/time.h" HAVE_SYS_TIME_H)
101 CHECK_INCLUDE_FILES("time.h" HAVE_TIME_H)
102 CHECK_INCLUDE_FILES("sys/types.h" HAVE_SYS_TYPES_H)
103 CHECK_INCLUDE_FILES("unistd.h" HAVE_UNISTD_H)
104 CHECK_INCLUDE_FILES("windows.h" HAVE_WINDOWS_H)
105 CHECK_INCLUDE_FILES("strings.h" HAVE_STRINGS_H)
106 CHECK_INCLUDE_FILES("ieeefp.h" HAVE_IEEEFP_H)
107
108 # wotsit ?
109 if( HAVE_TIME_H AND HAVE_SYS_TIME_H )
110  set(TIME_WITH_SYS_TIME 1)
111 endif()
112 set(LZMA_SUPPORT 0) # ?
113 set(MDI_SUPPORT 1) # ?
114 set(STDC_HEADERS 1) # why not ?
115 set(DEFAULT_EXTRASAMPLE_AS_ALPHA 1)
116 set(CHECK_JPEG_YCBCR_SUBSAMPLING 1)
117 set(CCITT_SUPPORT 1)
118 set(DEFER_STRILE_LOAD 0)
119 set(HAVE_JBG_NEWLEN 0) # FIXME: jbigkit stuff
120 set(STRIPCHOP_DEFAULT "TIFF_STRIPCHOP")
121 set(STRIP_SIZE_DEFAULT 8192)
122 set(SUBIFD_SUPPORT 1)
123 set(THUNDER_SUPPORT 1)
124
125 CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT)
126 CHECK_FUNCTION_EXISTS(isascii HAVE_ISASCII)
127 CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE)
128 CHECK_FUNCTION_EXISTS(memset HAVE_MEMSET)
129 CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP)
130 CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
131 CHECK_FUNCTION_EXISTS(strchr HAVE_STRCHR)
132 CHECK_FUNCTION_EXISTS(strrchr HAVE_STRRCHR)
133 CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR)
134 CHECK_FUNCTION_EXISTS(strtol HAVE_STRTOL)
135 CHECK_FUNCTION_EXISTS(strtoul HAVE_STRTOUL)
136 CHECK_FUNCTION_EXISTS(strtoull HAVE_STRTOULL)
137
138 include(CheckTypeSize)
139
140 CHECK_TYPE_SIZE("signed int"         SIZEOF_SIGNED_INT)
141 CHECK_TYPE_SIZE("signed long"        SIZEOF_SIGNED_LONG)
142 CHECK_TYPE_SIZE("signed long long"   SIZEOF_SIGNED_LONG_LONG)
143 CHECK_TYPE_SIZE("signed short"       SIZEOF_SIGNED_SHORT)
144 CHECK_TYPE_SIZE("unsigned int"       SIZEOF_UNSIGNED_INT)
145 CHECK_TYPE_SIZE("unsigned long"      SIZEOF_UNSIGNED_LONG)
146 CHECK_TYPE_SIZE("unsigned long long" SIZEOF_UNSIGNED_LONG_LONG)
147 CHECK_TYPE_SIZE("unsigned short"     SIZEOF_UNSIGNED_SHORT)
148 CHECK_TYPE_SIZE("unsigned char*"     SIZEOF_UNSIGNED_CHAR_P)
149 # check platform has ssize_t:
150 CHECK_TYPE_SIZE(ssize_t     SSIZE_T)
151
152 if(HAVE_STDINT_H)
153   set(TIFF_INT8_T    int8_t)
154   set(TIFF_INT16_T   int16_t)
155   set(TIFF_INT32_T   int32_t)
156   set(TIFF_INT64_T   int64_t)
157   set(TIFF_UINT8_T   uint8_t)
158   set(TIFF_UINT16_T  uint16_t)
159   set(TIFF_UINT32_T  uint32_t)
160   set(TIFF_UINT64_T  uint64_t)
161   set(TIFF_PTRDIFF_T ptrdiff_t)
162   if(NOT HAVE_SSIZE_T)
163     if("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
164       set(TIFF_SSIZE_T   int64_t)
165     elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
166       set(TIFF_SSIZE_T   int32_t)
167     else()
168       message(FATAL_ERROR "unknown ssize_t")
169     endif()
170   else()
171     set(TIFF_SSIZE_T   ssize_t)
172   endif()
173   set(TIFF_INT32_FORMAT "\"%d\"")
174   set(TIFF_UINT32_FORMAT "\"%u\"")
175   set(TIFF_INT64_FORMAT "\"%ld\"")
176   set(TIFF_UINT64_FORMAT "\"%lu\"")
177   set(TIFF_PTRDIFF_FORMAT "\"%ld\"")
178   set(TIFF_SSIZE_FORMAT "\"%ld\"")
179 else()
180   set(TIFF_INT8_T    "signed __int8")
181   set(TIFF_INT16_T   "signed __int16")
182   set(TIFF_INT32_T   "signed __int32")
183   set(TIFF_INT64_T   "signed __int64")
184   set(TIFF_UINT8_T   "unsigned __int8")
185   set(TIFF_UINT16_T  "unsigned __int16")
186   set(TIFF_UINT32_T  "unsigned __int32")
187   set(TIFF_UINT64_T  "unsigned __int64")
188   set(TIFF_PTRDIFF_T ptrdiff_t)
189   if(NOT HAVE_SSIZE_T)
190     if("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
191       set(TIFF_SSIZE_T   "signed __int64")
192     elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
193       set(TIFF_SSIZE_T   "signed __int32")
194     else()
195       message(FATAL_ERROR "unknown ssize_t")
196     endif()
197   else()
198     set(TIFF_SSIZE_T   ssize_t)
199   endif()
200   set(TIFF_INT32_FORMAT "\"%d\"")
201   set(TIFF_UINT32_FORMAT "\"%u\"")
202   set(TIFF_INT64_FORMAT "\"%ld\"")
203   set(TIFF_UINT64_FORMAT "\"%lu\"")
204   set(TIFF_PTRDIFF_FORMAT "\"%ld\"")
205   set(TIFF_SSIZE_FORMAT "\"%ld\"")
206 endif()
207
208 #
209 set(VERSION "\"4.0.1\"")
210 set(PACKAGE_VERSION ${VERSION})
211 set(PACKAGE "\"tiff\"")
212
213 # universal build ?
214 if(APPLE)
215   set(AC_APPLE_UNIVERSAL_BUILD 1)
216 endif()
217 if(UNIX)
218   set(CMAKE_REQUIRED_LIBRARIES m)
219   set(HAVE_LIBM 1)
220 endif()
221 CHECK_SYMBOL_EXISTS(floor "math.h" HAVE_FLOOR)
222 CHECK_SYMBOL_EXISTS(sqrt "math.h" HAVE_SQRT)
223 CHECK_SYMBOL_EXISTS(pow "math.h" HAVE_POW)
224 CHECK_SYMBOL_EXISTS(lfind "search.h" HAVE_LFIND)
225 CHECK_SYMBOL_EXISTS(setmod "io.h" HAVE_SETMODE)
226
227 # http://www.cmake.org/pipermail/cmake/2007-September/016285.html
228 FOREACH(KEYWORD "inline" "__inline__" "__inline")
229   IF(NOT DEFINED C_INLINE)
230     TRY_COMPILE(C_HAS_${KEYWORD} "${CMAKE_CURRENT_BINARY_DIR}"
231        "${CMAKE_CURRENT_SOURCE_DIR}/test_inline.c"
232        COMPILE_DEFINITIONS "-Dinline=${KEYWORD}")
233     IF(C_HAS_${KEYWORD})
234       SET(C_INLINE TRUE)
235       SET(INLINE "${KEYWORD}")
236     ENDIF(C_HAS_${KEYWORD})
237   ENDIF(NOT DEFINED C_INLINE)
238 ENDFOREACH(KEYWORD)
239
240 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tiffconf.h.cmake.in
241   ${CMAKE_CURRENT_BINARY_DIR}/tiffconf.h @ONLY)
242 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tif_config.h.cmake.in
243   ${CMAKE_CURRENT_BINARY_DIR}/tif_config.h @ONLY)
244
245 SET(LIBTARGET "tiff")
246 #
247 ADD_LIBRARY(${LIBTARGET} STATIC ${TARGET_FILES})
248 #
249 SET_TARGET_PROPERTIES(${LIBTARGET}
250   PROPERTIES
251   OUTPUT_NAME "${LIBTARGET}"
252   ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/thirdparty/lib
253 )