1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
include(GdalDriverHelper)
add_library(
libtiff OBJECT
tif_dir.c
tif_fax3.c
tif_lzma.c
tif_predict.h
tif_vsi.c
tiffiop.h
t4.h
tif_dir.h
tif_fax3.h
tif_lzw.c
tif_print.c
tif_warning.c
tiffvers.h
tif_aux.c
tif_dirinfo.c
tif_fax3sm.c
tif_next.c
tif_read.c
tif_write.c
uvcode.h
tif_close.c
tif_dirread.c
tif_flush.c
tif_strip.c
tif_zip.c
tif_codec.c
tif_dirwrite.c
tif_getimage.c
tif_open.c
tif_swab.c
tif_zstd.c
tif_webp.c
tif_color.c
tif_dumpmode.c
tif_packbits.c
tif_thunder.c
tiff.h
tif_compress.c
tif_error.c
tif_pixarlog.c
tif_tile.c
tiffconf.h
tif_config.h
tif_extension.c
tif_luv.c
tif_predict.c
tif_version.c
tif_lerc.c
tif_hash_set.c
tiffio.h)
target_include_directories(libtiff PRIVATE $<TARGET_PROPERTY:cpl,SOURCE_DIR> $<TARGET_PROPERTY:cpl,BINARY_DIR>)
target_compile_definitions(libtiff PRIVATE -DDONT_DEPRECATE_SPRINTF -DHOST_FILLORDER=FILLORDER_LSB2MSB)
target_compile_options(libtiff PRIVATE ${GDAL_C_WARNING_FLAGS})
if (MSVC)
# Suppress '<unnamed-tag>': structure was padded due to alignment specifier in tif_jpeg.c
target_compile_options(libtiff PRIVATE /wd4324)
endif ()
target_compile_definitions(libtiff PRIVATE -DPIXARLOG_SUPPORT -DZIP_SUPPORT)
if (GDAL_USE_JPEG_INTERNAL OR GDAL_USE_JPEG)
target_compile_definitions(libtiff PRIVATE -DJPEG_SUPPORT -DOJPEG_SUPPORT)
endif ()
# Include first internal libraries
if (GDAL_USE_ZLIB_INTERNAL)
gdal_add_vendored_lib(libtiff libz)
endif ()
if (GDAL_USE_JPEG_INTERNAL)
target_sources(libtiff PRIVATE tif_jpeg.c tif_ojpeg.c)
gdal_add_vendored_lib(libtiff libjpeg)
endif ()
if (GDAL_USE_LERC_INTERNAL)
target_compile_definitions(libtiff PRIVATE -DLERC_SUPPORT)
gdal_add_vendored_lib(libtiff lerc)
endif ()
# Now external libraries
# Include libjpeg first so that if we want to use jpeg-turbo on homebrew
# /usr/local/opt/jpeg-turbo gets included first, before /usr/local/opt
# that contains libjpeg 9e
if (GDAL_USE_JPEG AND NOT GDAL_USE_JPEG_INTERNAL)
# Use a separate object library so that external libjpeg headers are only applied to tif_jpeg.c and tif_ojpeg.c, but
# not tif_jpeg_12.c !
add_library(libtiff_jpeg OBJECT tif_jpeg.c tif_ojpeg.c)
target_sources(${GDAL_LIB_TARGET_NAME} PRIVATE $<TARGET_OBJECTS:libtiff_jpeg>)
target_compile_options(libtiff_jpeg PRIVATE ${GDAL_C_WARNING_FLAGS})
if (MSVC)
# Suppress '<unnamed-tag>': structure was padded due to alignment specifier in tif_jpeg.c
target_compile_options(libtiff_jpeg PRIVATE /wd4324)
endif ()
set_property(TARGET libtiff_jpeg PROPERTY POSITION_INDEPENDENT_CODE ${GDAL_OBJECT_LIBRARIES_POSITION_INDEPENDENT_CODE})
target_compile_definitions(libtiff_jpeg PRIVATE -DJPEG_SUPPORT -DOJPEG_SUPPORT)
target_include_directories(libtiff_jpeg PRIVATE $<TARGET_PROPERTY:cpl,SOURCE_DIR> $<TARGET_PROPERTY:cpl,BINARY_DIR>)
gdal_target_link_libraries(libtiff_jpeg PRIVATE JPEG::JPEG)
if (GDAL_USE_JPEG12_INTERNAL)
target_compile_definitions(libtiff_jpeg PRIVATE -DJPEG_DUAL_MODE_8_12)
elseif (HAVE_JPEGTURBO_DUAL_MODE_8_12)
target_compile_definitions(libtiff_jpeg PRIVATE HAVE_JPEGTURBO_DUAL_MODE_8_12)
endif ()
if (RENAME_INTERNAL_TIFF_SYMBOLS)
target_compile_definitions(libtiff_jpeg PRIVATE -DRENAME_INTERNAL_LIBTIFF_SYMBOLS)
endif ()
endif ()
if (NOT GDAL_USE_ZLIB_INTERNAL)
gdal_target_link_libraries(libtiff PRIVATE ZLIB::ZLIB)
endif ()
if (GDAL_USE_DEFLATE)
target_compile_definitions(libtiff PRIVATE -DLIBDEFLATE_SUPPORT)
gdal_target_link_libraries(libtiff PRIVATE Deflate::Deflate)
endif ()
if ((GDAL_USE_JPEG OR GDAL_USE_JPEG_INTERNAL) AND GDAL_USE_JPEG12_INTERNAL)
target_sources(libtiff PRIVATE tif_jpeg_12.c)
target_compile_definitions(libtiff PRIVATE -DJPEG_DUAL_MODE_8_12)
target_include_directories(libtiff PRIVATE $<TARGET_PROPERTY:libjpeg12,BINARY_DIR>)
elseif (GDAL_USE_JPEG AND HAVE_JPEGTURBO_DUAL_MODE_8_12)
target_sources(libtiff PRIVATE tif_jpeg_12.c)
target_compile_definitions(libtiff PRIVATE HAVE_JPEGTURBO_DUAL_MODE_8_12)
gdal_target_link_libraries(libtiff PRIVATE JPEG::JPEG)
endif ()
if (GDAL_USE_LIBLZMA)
target_compile_definitions(libtiff PRIVATE -DLZMA_SUPPORT)
gdal_target_link_libraries(libtiff PRIVATE LibLZMA::LibLZMA)
endif ()
if (GDAL_USE_ZSTD)
target_compile_definitions(libtiff PRIVATE -DZSTD_SUPPORT)
gdal_target_link_libraries(libtiff PRIVATE ${ZSTD_TARGET})
endif ()
if (GDAL_USE_WEBP)
target_compile_definitions(libtiff PRIVATE -DWEBP_SUPPORT)
gdal_target_link_libraries(libtiff PRIVATE WEBP::WebP)
endif ()
if (NOT GDAL_USE_LERC_INTERNAL AND GDAL_USE_LERC)
target_compile_definitions(libtiff PRIVATE -DLERC_SUPPORT)
gdal_target_link_libraries(libtiff PRIVATE LERC::LERC)
endif ()
if (RENAME_INTERNAL_TIFF_SYMBOLS)
target_compile_definitions(libtiff PUBLIC -DRENAME_INTERNAL_LIBTIFF_SYMBOLS)
endif ()
set_target_properties(libtiff PROPERTIES CXX_STANDARD 11)
set_property(TARGET libtiff PROPERTY POSITION_INDEPENDENT_CODE ${GDAL_OBJECT_LIBRARIES_POSITION_INDEPENDENT_CODE})
target_sources(${GDAL_LIB_TARGET_NAME} PRIVATE $<TARGET_OBJECTS:libtiff>)
|