xref: /aosp_15_r20/external/sandboxed-api/contrib/uriparser/CMakeLists.txt (revision ec63e07ab9515d95e79c211197c445ef84cefa6a)
1# Copyright 2022 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.13..3.26)
16
17project(sapi_uriparser CXX)
18include(CTest)
19
20set(CMAKE_CXX_STANDARD 17)
21set(CMAKE_CXX_STANDARD_REQUIRED True)
22
23if(NOT TARGET sapi::sapi)
24  set(SAPI_ROOT "../.." CACHE PATH "Path to the Sandboxed API source tree")
25  add_subdirectory("${SAPI_ROOT}"
26                   "${CMAKE_BINARY_DIR}/sandboxed-api-build"
27                   EXCLUDE_FROM_ALL)
28endif()
29
30set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
31set(URIPARSER_BUILD_DOCS OFF CACHE BOOL "" FORCE)
32set(URIPARSER_BUILD_TESTS OFF CACHE BOOL "" FORCE)
33set(URIPARSER_BUILD_TOOLS OFF CACHE BOOL "" FORCE)
34FetchContent_Declare(uriparser
35  GIT_REPOSITORY https://github.com/uriparser/uriparser
36  GIT_TAG        a259209a57f7123d4bc422336ce0d420d41f4f5e
37)
38FetchContent_MakeAvailable(uriparser)
39
40configure_file(uri.gen.h.in uri.gen.h)
41
42add_sapi_library(
43  sapi_uriparser
44
45  FUNCTIONS
46    uriParseUriA
47    uriEscapeA
48
49    uriAddBaseUriA
50    uriRemoveBaseUriA
51
52    uriToStringA
53    uriToStringCharsRequiredA
54
55    uriNormalizeSyntaxMaskRequiredA
56    uriNormalizeSyntaxExA
57
58    uriDissectQueryMallocA
59    uriFreeQueryListA
60
61    uriFreeUriMembersA
62
63  INPUTS
64    "${CMAKE_CURRENT_BINARY_DIR}/uri.gen.h"
65
66  LIBRARY uriparser
67  LIBRARY_NAME Uriparser
68  NAMESPACE ""
69)
70add_library(sapi_contrib::uriparser ALIAS sapi_uriparser)
71target_include_directories(sapi_uriparser INTERFACE
72  "${PROJECT_BINARY_DIR}"
73  "${SAPI_SOURCE_DIR}"
74)
75
76if(SAPI_BUILD_EXAMPLES)
77  add_subdirectory(example)
78endif()
79
80if(BUILD_TESTING AND SAPI_BUILD_TESTING)
81  add_subdirectory(test)
82endif()
83