279 lines
7.7 KiB
CMake
279 lines
7.7 KiB
CMake
cmake_minimum_required(VERSION 2.6)
|
|
project(libtiff C)
|
|
# This convenient copy of libtiff does not support encapsulated zlib or jpeg
|
|
# stream. see ZIP_SUPPORT and JPEG_SUPPORT values
|
|
|
|
include_directories(BEFORE "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
set(TARGET_FILES
|
|
t4.h
|
|
tiffiop.h
|
|
tif_aux.c
|
|
tif_close.c
|
|
tif_codec.c
|
|
tif_color.c
|
|
tif_compress.c
|
|
tif_dir.c
|
|
tif_dir.h
|
|
tif_dirinfo.c
|
|
tif_dirread.c
|
|
tif_dirwrite.c
|
|
tif_dumpmode.c
|
|
tif_error.c
|
|
tif_extension.c
|
|
tif_fax3.c
|
|
tif_fax3.h
|
|
tif_fax3sm.c
|
|
tif_flush.c
|
|
tif_getimage.c
|
|
tif_jbig.c
|
|
tif_jpeg.c
|
|
tif_luv.c
|
|
tif_lzw.c
|
|
tif_next.c
|
|
tif_ojpeg.c
|
|
tif_open.c
|
|
tif_packbits.c
|
|
tif_pixarlog.c
|
|
tif_predict.c
|
|
tif_predict.h
|
|
tif_print.c
|
|
tif_read.c
|
|
tif_strip.c
|
|
tif_swab.c
|
|
tif_thunder.c
|
|
tif_tile.c
|
|
tif_version.c
|
|
tif_warning.c
|
|
tif_write.c
|
|
tif_zip.c
|
|
tif_jpeg_12.c
|
|
tif_lzma.c
|
|
uvcode.h
|
|
)
|
|
|
|
if(UNIX)
|
|
set(TARGET_FILES ${TARGET_FILES} tif_unix.c)
|
|
# Large file support
|
|
# This might not catch every possibility catered for by
|
|
# AC_SYS_LARGEFILE.
|
|
add_definitions(-D_FILE_OFFSET_BITS=64)
|
|
set(_FILE_OFFSET_BITS 64)
|
|
else()
|
|
set(TARGET_FILES ${TARGET_FILES} tif_win32.c)
|
|
endif()
|
|
|
|
include(${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
|
|
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
|
|
set(HOST_BIGENDIAN ${WORDS_BIGENDIAN})
|
|
if(HOST_BIGENDIAN)
|
|
set(HOST_FILLORDER "FILLORDER_MSB2LSB")
|
|
else()
|
|
set(HOST_FILLORDER "FILLORDER_LSB2MSB")
|
|
endif()
|
|
include(CheckIncludeFiles)
|
|
include(CheckSymbolExists)
|
|
include(CheckFunctionExists)
|
|
include(CheckCSourceCompiles)
|
|
|
|
CHECK_INCLUDE_FILES("zlib.h" HAVE_ZLIB_H)
|
|
CHECK_INCLUDE_FILES("jpeglib.h" HAVE_JPEGLIB_H)
|
|
if(HAVE_JPEGLIB_H)
|
|
set(JPEG_SUPPORT 1)
|
|
endif()
|
|
if(HAVE_ZLIB_H)
|
|
include_directories(
|
|
${ZLIB_INCLUDE_DIR}
|
|
)
|
|
set(ZIP_SUPPORT 1)
|
|
set(PIXARLOG_SUPPORT 1) # require zlib
|
|
endif()
|
|
CHECK_INCLUDE_FILES("assert.h" HAVE_ASSERT_H)
|
|
CHECK_INCLUDE_FILES("dlfcn.h" HAVE_DLFCN_H)
|
|
CHECK_INCLUDE_FILES("fcntl.h" HAVE_FCNTL_H)
|
|
CHECK_INCLUDE_FILES("inttypes.h" HAVE_INTTYPES_H)
|
|
CHECK_INCLUDE_FILES("io.h" HAVE_IO_H)
|
|
CHECK_INCLUDE_FILES("limits.h" HAVE_LIMITS_H)
|
|
CHECK_INCLUDE_FILES("malloc.h" HAVE_MALLOC_H)
|
|
CHECK_INCLUDE_FILES("memory.h" HAVE_MEMORY_H)
|
|
CHECK_INCLUDE_FILES("search.h" HAVE_SEARCH_H)
|
|
CHECK_INCLUDE_FILES("stdint.h" HAVE_STDINT_H)
|
|
CHECK_INCLUDE_FILES("stdlib.h" HAVE_STDLIB_H)
|
|
CHECK_INCLUDE_FILES("string.h" HAVE_STRING_H)
|
|
CHECK_INCLUDE_FILES("strings.h" HAVE_STRINGS_H)
|
|
CHECK_INCLUDE_FILES("sys/stat.h" HAVE_SYS_STAT_H)
|
|
CHECK_INCLUDE_FILES("sys/time.h" HAVE_SYS_TIME_H)
|
|
CHECK_INCLUDE_FILES("time.h" HAVE_TIME_H)
|
|
CHECK_INCLUDE_FILES("sys/types.h" HAVE_SYS_TYPES_H)
|
|
CHECK_INCLUDE_FILES("unistd.h" HAVE_UNISTD_H)
|
|
CHECK_INCLUDE_FILES("windows.h" HAVE_WINDOWS_H)
|
|
CHECK_INCLUDE_FILES("strings.h" HAVE_STRINGS_H)
|
|
CHECK_INCLUDE_FILES("ieeefp.h" HAVE_IEEEFP_H)
|
|
|
|
# wotsit ?
|
|
if( HAVE_TIME_H AND HAVE_SYS_TIME_H )
|
|
set(TIME_WITH_SYS_TIME 1)
|
|
endif()
|
|
set(LZMA_SUPPORT 0) # ?
|
|
set(MDI_SUPPORT 1) # ?
|
|
set(STDC_HEADERS 1) # why not ?
|
|
set(DEFAULT_EXTRASAMPLE_AS_ALPHA 1)
|
|
set(CHECK_JPEG_YCBCR_SUBSAMPLING 1)
|
|
set(CCITT_SUPPORT 1)
|
|
set(DEFER_STRILE_LOAD 0)
|
|
set(HAVE_JBG_NEWLEN 0) # FIXME: jbigkit stuff
|
|
set(STRIPCHOP_DEFAULT "TIFF_STRIPCHOP")
|
|
set(STRIP_SIZE_DEFAULT 8192)
|
|
set(SUBIFD_SUPPORT 1)
|
|
set(THUNDER_SUPPORT 1)
|
|
|
|
CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT)
|
|
CHECK_FUNCTION_EXISTS(isascii HAVE_ISASCII)
|
|
CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE)
|
|
CHECK_FUNCTION_EXISTS(memset HAVE_MEMSET)
|
|
CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP)
|
|
CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
|
|
CHECK_FUNCTION_EXISTS(strchr HAVE_STRCHR)
|
|
CHECK_FUNCTION_EXISTS(strrchr HAVE_STRRCHR)
|
|
CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR)
|
|
CHECK_FUNCTION_EXISTS(strtol HAVE_STRTOL)
|
|
CHECK_FUNCTION_EXISTS(strtoul HAVE_STRTOUL)
|
|
CHECK_FUNCTION_EXISTS(strtoull HAVE_STRTOULL)
|
|
|
|
# May be inlined, so check it compiles:
|
|
check_c_source_compiles("
|
|
#include <stdio.h>
|
|
int main(void) {
|
|
char buf[10];
|
|
snprintf(buf, 10, \"Test %d\", 1);
|
|
return 0;
|
|
}" HAVE_SNPRINTF)
|
|
|
|
if(NOT HAVE_SNPRINTF)
|
|
set(TARGET_FILES ${TARGET_FILES} snprintf.c)
|
|
endif()
|
|
|
|
include(CheckTypeSize)
|
|
|
|
CHECK_TYPE_SIZE("signed int" SIZEOF_SIGNED_INT)
|
|
CHECK_TYPE_SIZE("signed long" SIZEOF_SIGNED_LONG)
|
|
CHECK_TYPE_SIZE("signed long long" SIZEOF_SIGNED_LONG_LONG)
|
|
CHECK_TYPE_SIZE("signed short" SIZEOF_SIGNED_SHORT)
|
|
CHECK_TYPE_SIZE("unsigned int" SIZEOF_UNSIGNED_INT)
|
|
CHECK_TYPE_SIZE("unsigned long" SIZEOF_UNSIGNED_LONG)
|
|
CHECK_TYPE_SIZE("unsigned long long" SIZEOF_UNSIGNED_LONG_LONG)
|
|
CHECK_TYPE_SIZE("unsigned short" SIZEOF_UNSIGNED_SHORT)
|
|
CHECK_TYPE_SIZE("unsigned char*" SIZEOF_UNSIGNED_CHAR_P)
|
|
# check platform has ssize_t:
|
|
CHECK_TYPE_SIZE(ssize_t SSIZE_T)
|
|
|
|
if(HAVE_STDINT_H)
|
|
set(TIFF_INT8_T int8_t)
|
|
set(TIFF_INT16_T int16_t)
|
|
set(TIFF_INT32_T int32_t)
|
|
set(TIFF_INT64_T int64_t)
|
|
set(TIFF_UINT8_T uint8_t)
|
|
set(TIFF_UINT16_T uint16_t)
|
|
set(TIFF_UINT32_T uint32_t)
|
|
set(TIFF_UINT64_T uint64_t)
|
|
set(TIFF_PTRDIFF_T ptrdiff_t)
|
|
if(NOT HAVE_SSIZE_T)
|
|
if("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
|
|
set(TIFF_SSIZE_T int64_t)
|
|
set(TIFF_SSIZE_FORMAT "%lld")
|
|
set(TIFF_SIZE_FORMAT "%llu")
|
|
elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
|
|
set(TIFF_SSIZE_T int32_t)
|
|
set(TIFF_SSIZE_FORMAT "%d")
|
|
set(TIFF_SIZE_FORMAT "%u")
|
|
else()
|
|
message(FATAL_ERROR "unknown ssize_t")
|
|
endif()
|
|
else()
|
|
set(TIFF_SSIZE_T ssize_t)
|
|
endif()
|
|
set(TIFF_INT32_FORMAT "%d")
|
|
set(TIFF_UINT32_FORMAT "%u")
|
|
set(TIFF_INT64_FORMAT "%lld")
|
|
set(TIFF_UINT64_FORMAT "%llu")
|
|
set(TIFF_PTRDIFF_FORMAT "%ld")
|
|
else()
|
|
set(TIFF_INT8_T "signed __int8")
|
|
set(TIFF_INT16_T "signed __int16")
|
|
set(TIFF_INT32_T "signed __int32")
|
|
set(TIFF_INT64_T "signed __int64")
|
|
set(TIFF_UINT8_T "unsigned __int8")
|
|
set(TIFF_UINT16_T "unsigned __int16")
|
|
set(TIFF_UINT32_T "unsigned __int32")
|
|
set(TIFF_UINT64_T "unsigned __int64")
|
|
set(TIFF_PTRDIFF_T ptrdiff_t)
|
|
if(NOT HAVE_SSIZE_T)
|
|
if("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
|
|
set(TIFF_SSIZE_T "signed __int64")
|
|
set(TIFF_SSIZE_FORMAT "%lld")
|
|
set(TIFF_SIZE_FORMAT "%llu")
|
|
elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
|
|
set(TIFF_SSIZE_T "signed __int32")
|
|
set(TIFF_SSIZE_FORMAT "%d")
|
|
set(TIFF_SIZE_FORMAT "%u")
|
|
else()
|
|
message(FATAL_ERROR "unknown ssize_t")
|
|
endif()
|
|
else()
|
|
set(TIFF_SSIZE_T ssize_t)
|
|
endif()
|
|
set(TIFF_INT32_FORMAT "%d")
|
|
set(TIFF_UINT32_FORMAT "%u")
|
|
set(TIFF_INT64_FORMAT "%lld")
|
|
set(TIFF_UINT64_FORMAT "%llu")
|
|
set(TIFF_PTRDIFF_FORMAT "%ld")
|
|
endif()
|
|
|
|
#
|
|
set(VERSION "\"4.0.6\"")
|
|
set(PACKAGE_VERSION ${VERSION})
|
|
set(PACKAGE "\"tiff\"")
|
|
|
|
# universal build ?
|
|
if(APPLE)
|
|
set(AC_APPLE_UNIVERSAL_BUILD 1)
|
|
endif()
|
|
if(UNIX)
|
|
set(CMAKE_REQUIRED_LIBRARIES m)
|
|
set(HAVE_LIBM 1)
|
|
endif()
|
|
CHECK_SYMBOL_EXISTS(floor "math.h" HAVE_FLOOR)
|
|
CHECK_SYMBOL_EXISTS(sqrt "math.h" HAVE_SQRT)
|
|
CHECK_SYMBOL_EXISTS(pow "math.h" HAVE_POW)
|
|
CHECK_SYMBOL_EXISTS(lfind "search.h" HAVE_LFIND)
|
|
CHECK_SYMBOL_EXISTS(setmod "io.h" HAVE_SETMODE)
|
|
|
|
# http://www.cmake.org/pipermail/cmake/2007-September/016285.html
|
|
foreach(KEYWORD "inline" "__inline__" "__inline")
|
|
if(NOT DEFINED C_INLINE)
|
|
try_compile(C_HAS_${KEYWORD} "${CMAKE_CURRENT_BINARY_DIR}"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_inline.c"
|
|
COMPILE_DEFINITIONS "-Dinline=${KEYWORD}")
|
|
if(C_HAS_${KEYWORD})
|
|
set(C_INLINE TRUE)
|
|
set(INLINE_KEYWORD "${KEYWORD}")
|
|
endif(C_HAS_${KEYWORD})
|
|
endif(NOT DEFINED C_INLINE)
|
|
endforeach(KEYWORD)
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tiffconf.h.cmake.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/tiffconf.h @ONLY)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tif_config.h.cmake.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/tif_config.h @ONLY)
|
|
|
|
set(LIBTARGET "tiff")
|
|
#
|
|
add_library(${LIBTARGET} STATIC ${TARGET_FILES})
|
|
#
|
|
set_target_properties(${LIBTARGET}
|
|
PROPERTIES
|
|
OUTPUT_NAME "${LIBTARGET}"
|
|
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/thirdparty/lib
|
|
)
|