xref: /aosp_15_r20/external/sandboxed-api/oss-internship-2020/gdal/raster_to_gtiff/CMakeLists.txt (revision ec63e07ab9515d95e79c211197c445ef84cefa6a)
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