xref: /aosp_15_r20/external/sandboxed-api/oss-internship-2020/curl/CMakeLists.txt (revision ec63e07ab9515d95e79c211197c445ef84cefa6a)
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.12)
16*ec63e07aSXin Li
17*ec63e07aSXin Liproject(libcurl_sandbox)
18*ec63e07aSXin Li
19*ec63e07aSXin Liset(CMAKE_CXX_STANDARD 17)
20*ec63e07aSXin Liset(CMAKE_CXX_STANDARD_REQUIRED True)
21*ec63e07aSXin Li
22*ec63e07aSXin Lioption(SAPI_CURL_ENABLE_EXAMPLES "" ON)
23*ec63e07aSXin Lioption(SAPI_CURL_ENABLE_TESTS "" ON)
24*ec63e07aSXin Li
25*ec63e07aSXin Li# Add callbacks used by examples and tests
26*ec63e07aSXin Liif (SAPI_CURL_ENABLE_EXAMPLES OR SAPI_CURL_ENABLE_TESTS)
27*ec63e07aSXin Li  list(APPEND CURL_SAPI_CALLBACKS
28*ec63e07aSXin Li    "${CMAKE_CURRENT_SOURCE_DIR}/callbacks/callbacks.h"
29*ec63e07aSXin Li    "${CMAKE_CURRENT_SOURCE_DIR}/callbacks/callbacks.cc"
30*ec63e07aSXin Li  )
31*ec63e07aSXin Liendif()
32*ec63e07aSXin Li
33*ec63e07aSXin Li# Add folder containing the non-sandboxed custom curl library
34*ec63e07aSXin Liadd_subdirectory(curl_wrapper)
35*ec63e07aSXin Li
36*ec63e07aSXin Li# Setup Sandboxed API
37*ec63e07aSXin Liset(SAPI_ROOT "../.." CACHE PATH "Path to the Sandboxed API source tree")
38*ec63e07aSXin Liset(SAPI_BUILD_EXAMPLES ${SAPI_CURL_ENABLE_EXAMPLES} CACHE BOOL "" FORCE)
39*ec63e07aSXin Liset(SAPI_BUILD_TESTING ${SAPI_CURL_ENABLE_TESTS} CACHE BOOL "" FORCE)
40*ec63e07aSXin Liadd_subdirectory(
41*ec63e07aSXin Li  "${SAPI_ROOT}"
42*ec63e07aSXin Li  "${CMAKE_BINARY_DIR}/sandboxed-api-build"
43*ec63e07aSXin Li  EXCLUDE_FROM_ALL
44*ec63e07aSXin Li)
45*ec63e07aSXin Li
46*ec63e07aSXin Li# Generate SAPI header
47*ec63e07aSXin Liadd_sapi_library(curl_sapi
48*ec63e07aSXin Li  SOURCES sandbox.h
49*ec63e07aSXin Li
50*ec63e07aSXin Li  # List of all the methods in https://curl.haxx.se/libcurl/c/allfuncs.html
51*ec63e07aSXin Li  # Some are added or modified because the original ones are not supported
52*ec63e07aSXin Li  # by Sandboxed API (details can be found in curl_wrapper.h)
53*ec63e07aSXin Li  FUNCTIONS curl_easy_cleanup
54*ec63e07aSXin Li            curl_easy_duphandle
55*ec63e07aSXin Li            curl_easy_escape
56*ec63e07aSXin Li            curl_easy_getinfo
57*ec63e07aSXin Li            curl_easy_getinfo_ptr
58*ec63e07aSXin Li            curl_easy_init
59*ec63e07aSXin Li            curl_easy_pause
60*ec63e07aSXin Li            curl_easy_perform
61*ec63e07aSXin Li            curl_easy_recv
62*ec63e07aSXin Li            curl_easy_reset
63*ec63e07aSXin Li            curl_easy_send
64*ec63e07aSXin Li            curl_easy_setopt
65*ec63e07aSXin Li            curl_easy_setopt_ptr
66*ec63e07aSXin Li            curl_easy_setopt_long
67*ec63e07aSXin Li            curl_easy_setopt_curl_off_t
68*ec63e07aSXin Li            curl_easy_strerror
69*ec63e07aSXin Li            curl_easy_unescape
70*ec63e07aSXin Li            curl_easy_upkeep
71*ec63e07aSXin Li            curl_free
72*ec63e07aSXin Li            curl_getdate_sapi
73*ec63e07aSXin Li            curl_global_cleanup
74*ec63e07aSXin Li            curl_global_init
75*ec63e07aSXin Li            curl_global_init_mem
76*ec63e07aSXin Li            curl_global_sslset
77*ec63e07aSXin Li            curl_mime_addpart
78*ec63e07aSXin Li            curl_mime_data
79*ec63e07aSXin Li            curl_mime_data_cb
80*ec63e07aSXin Li            curl_mime_encoder
81*ec63e07aSXin Li            curl_mime_filedata
82*ec63e07aSXin Li            curl_mime_filename
83*ec63e07aSXin Li            curl_mime_free
84*ec63e07aSXin Li            curl_mime_headers
85*ec63e07aSXin Li            curl_mime_init
86*ec63e07aSXin Li            curl_mime_name
87*ec63e07aSXin Li            curl_mime_subparts
88*ec63e07aSXin Li            curl_mime_type
89*ec63e07aSXin Li            curl_multi_add_handle
90*ec63e07aSXin Li            curl_multi_assign
91*ec63e07aSXin Li            curl_multi_cleanup
92*ec63e07aSXin Li            curl_multi_fdset_sapi
93*ec63e07aSXin Li            curl_multi_info_read
94*ec63e07aSXin Li            curl_multi_init
95*ec63e07aSXin Li            curl_multi_perform
96*ec63e07aSXin Li            curl_multi_remove_handle
97*ec63e07aSXin Li            curl_multi_setopt
98*ec63e07aSXin Li            curl_multi_setopt_ptr
99*ec63e07aSXin Li            curl_multi_setopt_long
100*ec63e07aSXin Li            curl_multi_setopt_curl_off_t
101*ec63e07aSXin Li            curl_multi_socket_action
102*ec63e07aSXin Li            curl_multi_strerror
103*ec63e07aSXin Li            curl_multi_timeout
104*ec63e07aSXin Li            curl_multi_poll_sapi
105*ec63e07aSXin Li            curl_multi_wait_sapi
106*ec63e07aSXin Li            curl_multi_wakeup
107*ec63e07aSXin Li            curl_share_init
108*ec63e07aSXin Li            curl_share_setopt
109*ec63e07aSXin Li            curl_share_setopt_ptr
110*ec63e07aSXin Li            curl_share_setopt_long
111*ec63e07aSXin Li            curl_share_strerror
112*ec63e07aSXin Li            curl_slist_append
113*ec63e07aSXin Li            curl_slist_free_all
114*ec63e07aSXin Li            curl_url
115*ec63e07aSXin Li            curl_url_cleanup
116*ec63e07aSXin Li            curl_url_dup
117*ec63e07aSXin Li            curl_url_get
118*ec63e07aSXin Li            curl_url_set
119*ec63e07aSXin Li            curl_version
120*ec63e07aSXin Li            curl_version_info
121*ec63e07aSXin Li
122*ec63e07aSXin Li  INPUTS curl_wrapper/curl/include/curl/curl.h
123*ec63e07aSXin Li         curl_wrapper/curl_wrapper.h
124*ec63e07aSXin Li
125*ec63e07aSXin Li  LIBRARY curl_wrapper_and_callbacks
126*ec63e07aSXin Li
127*ec63e07aSXin Li  LIBRARY_NAME Curl
128*ec63e07aSXin Li
129*ec63e07aSXin Li  NAMESPACE curl
130*ec63e07aSXin Li)
131*ec63e07aSXin Litarget_include_directories(curl_sapi INTERFACE
132*ec63e07aSXin Li  "${PROJECT_BINARY_DIR}" # Include generated SAPI header
133*ec63e07aSXin Li)
134*ec63e07aSXin Li
135*ec63e07aSXin Liadd_library(curl_util STATIC
136*ec63e07aSXin Li  curl_util.cc
137*ec63e07aSXin Li  curl_util.h
138*ec63e07aSXin Li)
139*ec63e07aSXin Litarget_link_libraries(curl_util PUBLIC
140*ec63e07aSXin Li  curl_sapi
141*ec63e07aSXin Li)
142*ec63e07aSXin Li
143*ec63e07aSXin Li# Add examples
144*ec63e07aSXin Liif (SAPI_CURL_ENABLE_EXAMPLES)
145*ec63e07aSXin Li  add_subdirectory(examples)
146*ec63e07aSXin Liendif()
147*ec63e07aSXin Li
148*ec63e07aSXin Li# Add tests
149*ec63e07aSXin Liif (SAPI_CURL_ENABLE_TESTS)
150*ec63e07aSXin Li  add_subdirectory(tests)
151*ec63e07aSXin Liendif()
152