1*ec63e07aSXin Li# Copyright 2020 Google LLC 2*ec63e07aSXin Li# 3*ec63e07aSXin Li# Licensed under the Apache License, Version 2.0 (the "License"); 4*ec63e07aSXin Li# you may not use this file except in compliance with the License. 5*ec63e07aSXin Li# You may obtain a copy of the License at 6*ec63e07aSXin Li# 7*ec63e07aSXin Li# https://www.apache.org/licenses/LICENSE-2.0 8*ec63e07aSXin Li# 9*ec63e07aSXin Li# Unless required by applicable law or agreed to in writing, software 10*ec63e07aSXin Li# distributed under the License is distributed on an "AS IS" BASIS, 11*ec63e07aSXin Li# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*ec63e07aSXin Li# See the License for the specific language governing permissions and 13*ec63e07aSXin Li# limitations under the License. 14*ec63e07aSXin Li 15*ec63e07aSXin Licmake_minimum_required(VERSION 3.13..3.26) 16*ec63e07aSXin Li 17*ec63e07aSXin Liproject(sandboxed_libtiff CXX) 18*ec63e07aSXin Liinclude(CTest) 19*ec63e07aSXin Liinclude(GoogleTest) 20*ec63e07aSXin Li 21*ec63e07aSXin Liset(CMAKE_CXX_STANDARD 17) 22*ec63e07aSXin Liset(CMAKE_CXX_STANDARD_REQUIRED True) 23*ec63e07aSXin Li 24*ec63e07aSXin Liif(NOT TARGET sapi::sapi) 25*ec63e07aSXin Li set(SAPI_ROOT "../.." CACHE PATH "Path to the Sandboxed API source tree") 26*ec63e07aSXin Li add_subdirectory("${SAPI_ROOT}" 27*ec63e07aSXin Li "${CMAKE_BINARY_DIR}/sandboxed-api-build" 28*ec63e07aSXin Li EXCLUDE_FROM_ALL) 29*ec63e07aSXin Liendif() 30*ec63e07aSXin Li 31*ec63e07aSXin LiFetchContent_Declare(libtiff 32*ec63e07aSXin Li GIT_REPOSITORY https://gitlab.com/libtiff/libtiff 33*ec63e07aSXin Li GIT_TAG v4.4.0 # 2022-05-20 34*ec63e07aSXin Li) 35*ec63e07aSXin LiFetchContent_MakeAvailable(libtiff) 36*ec63e07aSXin Li 37*ec63e07aSXin Liadd_subdirectory(wrapper) 38*ec63e07aSXin Li 39*ec63e07aSXin Liadd_sapi_library(tiff_sapi 40*ec63e07aSXin Li # List of functions that we want to include in the 41*ec63e07aSXin Li # generated sandboxed API class 42*ec63e07aSXin Li FUNCTIONS TIFFOpen 43*ec63e07aSXin Li TIFFClose 44*ec63e07aSXin Li 45*ec63e07aSXin Li TIFFGetField1 46*ec63e07aSXin Li TIFFGetField2 47*ec63e07aSXin Li TIFFGetField3 48*ec63e07aSXin Li 49*ec63e07aSXin Li TIFFSetFieldUChar1 50*ec63e07aSXin Li TIFFSetFieldUChar2 51*ec63e07aSXin Li TIFFSetFieldUChar3 52*ec63e07aSXin Li TIFFSetFieldSChar1 53*ec63e07aSXin Li TIFFSetFieldSChar2 54*ec63e07aSXin Li TIFFSetFieldSChar3 55*ec63e07aSXin Li TIFFSetFieldU1 56*ec63e07aSXin Li TIFFSetFieldU2 57*ec63e07aSXin Li TIFFSetFieldU3 58*ec63e07aSXin Li TIFFSetFieldS1 59*ec63e07aSXin Li TIFFSetFieldS2 60*ec63e07aSXin Li TIFFSetFieldS3 61*ec63e07aSXin Li TIFFSetFieldUShort1 62*ec63e07aSXin Li TIFFSetFieldUShort2 63*ec63e07aSXin Li TIFFSetFieldUShort3 64*ec63e07aSXin Li TIFFSetFieldSShort1 65*ec63e07aSXin Li TIFFSetFieldSShort2 66*ec63e07aSXin Li TIFFSetFieldSShort3 67*ec63e07aSXin Li TIFFSetFieldULLong1 68*ec63e07aSXin Li TIFFSetFieldULLong2 69*ec63e07aSXin Li TIFFSetFieldULLong3 70*ec63e07aSXin Li TIFFSetFieldSLLong1 71*ec63e07aSXin Li TIFFSetFieldSLLong2 72*ec63e07aSXin Li TIFFSetFieldSLLong3 73*ec63e07aSXin Li TIFFSetFieldFloat1 74*ec63e07aSXin Li TIFFSetFieldFloat2 75*ec63e07aSXin Li TIFFSetFieldFloat3 76*ec63e07aSXin Li TIFFSetFieldDouble1 77*ec63e07aSXin Li TIFFSetFieldDouble2 78*ec63e07aSXin Li TIFFSetFieldDouble3 79*ec63e07aSXin Li 80*ec63e07aSXin Li TIFFReadRGBATile 81*ec63e07aSXin Li TIFFReadRGBATileExt 82*ec63e07aSXin Li TIFFReadEncodedTile 83*ec63e07aSXin Li TIFFReadEncodedStrip 84*ec63e07aSXin Li TIFFReadFromUserBuffer 85*ec63e07aSXin Li 86*ec63e07aSXin Li TIFFTileSize 87*ec63e07aSXin Li TIFFSetDirectory 88*ec63e07aSXin Li TIFFFreeDirectory 89*ec63e07aSXin Li TIFFCreateDirectory 90*ec63e07aSXin Li 91*ec63e07aSXin Li TIFFForceStrileArrayWriting 92*ec63e07aSXin Li TIFFDeferStrileArrayWriting 93*ec63e07aSXin Li 94*ec63e07aSXin Li TIFFWriteCheck 95*ec63e07aSXin Li TIFFWriteScanline 96*ec63e07aSXin Li TIFFWriteDirectory 97*ec63e07aSXin Li TIFFWriteEncodedTile 98*ec63e07aSXin Li TIFFWriteEncodedStrip 99*ec63e07aSXin Li 100*ec63e07aSXin Li TIFFGetStrileOffsetWithErr 101*ec63e07aSXin Li TIFFGetStrileByteCountWithErr 102*ec63e07aSXin Li 103*ec63e07aSXin Li TIFFCreateEXIFDirectory 104*ec63e07aSXin Li TIFFWriteCustomDirectory 105*ec63e07aSXin Li 106*ec63e07aSXin Li INPUTS "${libtiff_SOURCE_DIR}/libtiff/tiffio.h" 107*ec63e07aSXin Li wrapper/func.h 108*ec63e07aSXin Li # Header files or .cc files that should be parsed 109*ec63e07aSXin Li LIBRARY wrapped_tiff # Library dependency from the add_library() above 110*ec63e07aSXin Li LIBRARY_NAME Tiff # Name prefix for the generated header. Will be 111*ec63e07aSXin Li # suffixed with "Api" and "Sandbox" as needed. 112*ec63e07aSXin Li NAMESPACE "" # Optional C++ namespace to wrap the generated code 113*ec63e07aSXin Li) 114*ec63e07aSXin Liadd_library(sapi_contrib::libtiff ALIAS tiff_sapi) 115*ec63e07aSXin Litarget_include_directories(tiff_sapi INTERFACE 116*ec63e07aSXin Li "${PROJECT_BINARY_DIR}" # To find the generated SAPI header 117*ec63e07aSXin Li) 118*ec63e07aSXin Li 119*ec63e07aSXin Liif (SAPI_BUILD_EXAMPLES) 120*ec63e07aSXin Li add_subdirectory(example) 121*ec63e07aSXin Liendif() 122*ec63e07aSXin Li 123*ec63e07aSXin Liif (BUILD_TESTING AND SAPI_BUILD_TESTING) 124*ec63e07aSXin Li add_subdirectory(test) 125*ec63e07aSXin Liendif() 126