1# Copyright 2020 Google LLC 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# https://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15cmake_minimum_required(VERSION 3.12) 16 17project(GDALSandbox CXX C) 18 19set(CMAKE_CXX_STANDARD 17) 20set(CMAKE_CXX_STANDARD_REQUIRED True) 21 22set(SAPI_ROOT "" CACHE PATH "Path to the Sandboxed API source tree") 23set(ENABLE_TESTS OFF CACHE BOOL "Enable GDAL sandbox tests") 24set(GDAL_HEADER_PREFIX "/usr/local/include" CACHE PATH "Prefix of the path to gdal.h") 25set(LIBGDAL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/lib" CACHE PATH "Prefix of the path to libgdal.a") 26set(LIBPROJ_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/lib" CACHE PATH "Prefix of the path to libproj.a") 27 28add_subdirectory("${SAPI_ROOT}" 29 "${CMAKE_BINARY_DIR}/sandboxed-api-build" 30 EXCLUDE_FROM_ALL) 31 32add_library(libgdal STATIC IMPORTED) 33set_property(TARGET libgdal PROPERTY IMPORTED_LOCATION 34 "${LIBGDAL_PREFIX}/libgdal.a") 35 36add_library(libproj STATIC IMPORTED) 37set_property(TARGET libproj PROPERTY IMPORTED_LOCATION 38 "${LIBPROJ_PREFIX}/libproj.a") 39 40target_link_libraries(libgdal INTERFACE 41 crypto 42 expat 43 jpeg 44 libproj 45 sqlite3 46 tiff 47 z 48 pthread 49 m 50 rt 51 dl 52 curl 53) 54 55add_sapi_library(gdal_sapi 56 FUNCTIONS 57 GDALOpen 58 GDALAllRegister 59 GDALGetDatasetDriver 60 GDALCreate 61 GDALGetDriverByName 62 GDALGetRasterBand 63 GDALSetRasterColorInterpretation 64 GDALSetProjection 65 GDALSetGeoTransform 66 GDALSetRasterNoDataValue 67 GDALRasterIO 68 GDALClose 69 70 INPUTS "${GDAL_HEADER_PREFIX}/gdal.h" 71 LIBRARY libgdal 72 LIBRARY_NAME Gdal 73 74 NAMESPACE "gdal::sandbox" 75) 76 77target_include_directories(gdal_sapi INTERFACE 78 "${PROJECT_BINARY_DIR}" 79) 80 81add_library(data_retriever STATIC 82 get_raster_data.h get_raster_data.cc 83) 84 85target_link_libraries(data_retriever 86 libgdal 87) 88 89add_library(utils STATIC 90 utils.h utils.cc 91) 92 93target_link_libraries(utils PUBLIC 94 sapi::sapi 95 sapi::temp_file 96 sapi::fileops 97 sandbox2::util 98 sapi::file_base 99) 100 101add_library(gtiff_converter STATIC 102 gtiff_converter.h gtiff_converter.cc 103) 104 105target_link_libraries(gtiff_converter PUBLIC 106 data_retriever 107 gdal_sapi 108 sapi::sapi 109) 110 111add_executable(raster_to_gtiff 112 raster_to_gtiff.cc 113) 114 115target_link_libraries(raster_to_gtiff 116 data_retriever 117 utils 118 gtiff_converter 119) 120 121if (ENABLE_TESTS) 122 include(GoogleTest) 123 enable_testing() 124 125 add_executable(tests tests.cc) 126 target_link_libraries(tests PRIVATE 127 data_retriever 128 gtiff_converter 129 utils 130 gtest 131 gtest_main 132 sapi::testing 133 sapi::file_base 134 ) 135 136 gtest_discover_tests(tests PROPERTIES 137 ENVIRONMENT "TEST_TMPDIR=/tmp/" 138 ENVIRONMENT "TEST_SRCDIR=${PROJECT_SOURCE_DIR}" 139 ) 140 141endif() 142