blob: 8aed7b5244b6f059482458c1edeeb71573712a66 [file] [edit]
# Copyright 2017 The Fuchsia Authors. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
if (is_fuchsia) {
import("//build/components.gni")
fuchsia_package("curl_pkg") {
package_name = "curl"
deps = [ ":curl_bin" ]
}
}
config("curl_config") {
include_dirs = [
"src/include",
"$target_gen_dir",
"$target_gen_dir/curl",
]
defines = [ "CURL_NO_OLDIES" ]
}
copy("copy_curl_config") {
visibility = [ ":*" ]
if (is_fuchsia) {
sources = [ "curl_config.h.fuchsia" ]
} else {
sources = [ "curl_config.h.host" ]
}
outputs = [ "$target_gen_dir/curl_config.h" ]
}
target(default_library_type, "libcurl") {
output_name = "curl"
sources = [
"src/lib/altsvc.c",
"src/lib/altsvc.h",
"src/lib/amigaos.c",
"src/lib/amigaos.h",
"src/lib/arpa_telnet.h",
"src/lib/asyn-ares.c",
"src/lib/asyn-base.c",
"src/lib/asyn-thrdd.c",
"src/lib/asyn.h",
"src/lib/bufq.c",
"src/lib/bufq.h",
"src/lib/bufref.c",
"src/lib/bufref.h",
"src/lib/cf-h1-proxy.c",
"src/lib/cf-h1-proxy.h",
"src/lib/cf-h2-proxy.c",
"src/lib/cf-h2-proxy.h",
"src/lib/cf-haproxy.c",
"src/lib/cf-haproxy.h",
"src/lib/cf-https-connect.c",
"src/lib/cf-https-connect.h",
"src/lib/cf-ip-happy.c",
"src/lib/cf-ip-happy.h",
"src/lib/cf-socket.c",
"src/lib/cf-socket.h",
"src/lib/cfilters.c",
"src/lib/cfilters.h",
"src/lib/config-mac.h",
"src/lib/config-os400.h",
"src/lib/config-plan9.h",
"src/lib/config-riscos.h",
"src/lib/config-win32.h",
"src/lib/conncache.c",
"src/lib/conncache.h",
"src/lib/connect.c",
"src/lib/connect.h",
"src/lib/content_encoding.c",
"src/lib/content_encoding.h",
"src/lib/cookie.c",
"src/lib/cookie.h",
"src/lib/cshutdn.c",
"src/lib/cshutdn.h",
"src/lib/curl_addrinfo.c",
"src/lib/curl_addrinfo.h",
"src/lib/curl_config.h",
"src/lib/curl_ctype.h",
"src/lib/curl_endian.c",
"src/lib/curl_endian.h",
"src/lib/curl_fnmatch.c",
"src/lib/curl_fnmatch.h",
"src/lib/curl_fopen.c",
"src/lib/curl_fopen.h",
"src/lib/curl_get_line.c",
"src/lib/curl_get_line.h",
"src/lib/curl_gethostname.c",
"src/lib/curl_gethostname.h",
"src/lib/curl_gssapi.c",
"src/lib/curl_gssapi.h",
"src/lib/curl_hmac.h",
"src/lib/curl_ldap.h",
"src/lib/curl_md4.h",
"src/lib/curl_md5.h",
"src/lib/curl_memory.h",
"src/lib/curl_memrchr.c",
"src/lib/curl_memrchr.h",
"src/lib/curl_multibyte.h",
"src/lib/curl_ntlm_core.c",
"src/lib/curl_ntlm_core.h",
"src/lib/curl_printf.h",
"src/lib/curl_range.c",
"src/lib/curl_range.h",
"src/lib/curl_rtmp.c",
"src/lib/curl_rtmp.h",
"src/lib/curl_sasl.c",
"src/lib/curl_sasl.h",
"src/lib/curl_setup.h",
"src/lib/curl_setup_once.h",
"src/lib/curl_sha256.h",
"src/lib/curl_sha512_256.c",
"src/lib/curl_sha512_256.h",
"src/lib/curl_share.c",
"src/lib/curl_share.h",
"src/lib/curl_sspi.c",
"src/lib/curl_sspi.h",
"src/lib/curl_threads.c",
"src/lib/curl_threads.h",
"src/lib/curl_trc.c",
"src/lib/curl_trc.h",
"src/lib/curlx/base64.c",
"src/lib/curlx/base64.h",
"src/lib/curlx/binmode.h",
"src/lib/curlx/curlx.h",
"src/lib/curlx/dynbuf.c",
"src/lib/curlx/dynbuf.h",
"src/lib/curlx/fopen.c",
"src/lib/curlx/fopen.h",
"src/lib/curlx/inet_ntop.c",
"src/lib/curlx/inet_ntop.h",
"src/lib/curlx/inet_pton.c",
"src/lib/curlx/inet_pton.h",
"src/lib/curlx/multibyte.c",
"src/lib/curlx/multibyte.h",
"src/lib/curlx/nonblock.c",
"src/lib/curlx/nonblock.h",
"src/lib/curlx/strcopy.c",
"src/lib/curlx/strcopy.h",
"src/lib/curlx/strerr.c",
"src/lib/curlx/strerr.h",
"src/lib/curlx/strparse.c",
"src/lib/curlx/strparse.h",
"src/lib/curlx/timediff.c",
"src/lib/curlx/timediff.h",
"src/lib/curlx/timeval.c",
"src/lib/curlx/timeval.h",
"src/lib/curlx/version_win32.c",
"src/lib/curlx/version_win32.h",
"src/lib/curlx/wait.c",
"src/lib/curlx/wait.h",
"src/lib/curlx/warnless.c",
"src/lib/curlx/warnless.h",
"src/lib/curlx/winapi.c",
"src/lib/curlx/winapi.h",
"src/lib/cw-out.c",
"src/lib/cw-out.h",
"src/lib/cw-pause.c",
"src/lib/cw-pause.h",
"src/lib/dict.c",
"src/lib/dict.h",
"src/lib/doh.c",
"src/lib/doh.h",
"src/lib/dynhds.c",
"src/lib/dynhds.h",
"src/lib/easy.c",
"src/lib/easy_lock.h",
"src/lib/easygetopt.c",
"src/lib/easyif.h",
"src/lib/easyoptions.c",
"src/lib/easyoptions.h",
"src/lib/escape.c",
"src/lib/escape.h",
"src/lib/fake_addrinfo.c",
"src/lib/fake_addrinfo.h",
"src/lib/file.c",
"src/lib/file.h",
"src/lib/fileinfo.c",
"src/lib/fileinfo.h",
"src/lib/formdata.c",
"src/lib/formdata.h",
"src/lib/ftp.c",
"src/lib/ftp.h",
"src/lib/ftplistparser.c",
"src/lib/ftplistparser.h",
"src/lib/functypes.h",
"src/lib/getenv.c",
"src/lib/getinfo.c",
"src/lib/getinfo.h",
"src/lib/gopher.c",
"src/lib/gopher.h",
"src/lib/hash.c",
"src/lib/hash.h",
"src/lib/headers.c",
"src/lib/headers.h",
"src/lib/hmac.c",
"src/lib/hostip.c",
"src/lib/hostip.h",
"src/lib/hostip4.c",
"src/lib/hostip6.c",
"src/lib/hsts.c",
"src/lib/hsts.h",
"src/lib/http.c",
"src/lib/http.h",
"src/lib/http1.c",
"src/lib/http1.h",
"src/lib/http2.c",
"src/lib/http2.h",
"src/lib/http_aws_sigv4.c",
"src/lib/http_aws_sigv4.h",
"src/lib/http_chunks.c",
"src/lib/http_chunks.h",
"src/lib/http_digest.c",
"src/lib/http_digest.h",
"src/lib/http_negotiate.c",
"src/lib/http_negotiate.h",
"src/lib/http_ntlm.c",
"src/lib/http_ntlm.h",
"src/lib/http_proxy.c",
"src/lib/http_proxy.h",
"src/lib/httpsrr.c",
"src/lib/httpsrr.h",
"src/lib/idn.c",
"src/lib/idn.h",
"src/lib/if2ip.c",
"src/lib/if2ip.h",
"src/lib/imap.c",
"src/lib/imap.h",
"src/lib/ldap.c",
"src/lib/llist.c",
"src/lib/llist.h",
"src/lib/macos.c",
"src/lib/macos.h",
"src/lib/md4.c",
"src/lib/md5.c",
"src/lib/memdebug.c",
"src/lib/memdebug.h",
"src/lib/mime.c",
"src/lib/mime.h",
"src/lib/mprintf.c",
"src/lib/mqtt.c",
"src/lib/mqtt.h",
"src/lib/multi.c",
"src/lib/multi_ev.c",
"src/lib/multi_ev.h",
"src/lib/multi_ntfy.c",
"src/lib/multi_ntfy.h",
"src/lib/multihandle.h",
"src/lib/multiif.h",
"src/lib/netrc.c",
"src/lib/netrc.h",
"src/lib/noproxy.c",
"src/lib/noproxy.h",
"src/lib/openldap.c",
"src/lib/parsedate.c",
"src/lib/parsedate.h",
"src/lib/pingpong.c",
"src/lib/pingpong.h",
"src/lib/pop3.c",
"src/lib/pop3.h",
"src/lib/progress.c",
"src/lib/progress.h",
"src/lib/psl.c",
"src/lib/psl.h",
"src/lib/rand.c",
"src/lib/rand.h",
"src/lib/ratelimit.c",
"src/lib/ratelimit.h",
"src/lib/request.c",
"src/lib/request.h",
"src/lib/rtsp.c",
"src/lib/rtsp.h",
"src/lib/select.c",
"src/lib/select.h",
"src/lib/sendf.c",
"src/lib/sendf.h",
"src/lib/setopt.c",
"src/lib/setopt.h",
"src/lib/setup-os400.h",
"src/lib/setup-vms.h",
"src/lib/setup-win32.h",
"src/lib/sha256.c",
"src/lib/sigpipe.h",
"src/lib/slist.c",
"src/lib/slist.h",
"src/lib/smb.c",
"src/lib/smb.h",
"src/lib/smtp.c",
"src/lib/smtp.h",
"src/lib/sockaddr.h",
"src/lib/socketpair.c",
"src/lib/socketpair.h",
"src/lib/socks.c",
"src/lib/socks.h",
"src/lib/socks_gssapi.c",
"src/lib/socks_sspi.c",
"src/lib/splay.c",
"src/lib/splay.h",
"src/lib/strcase.c",
"src/lib/strcase.h",
"src/lib/strdup.c",
"src/lib/strdup.h",
"src/lib/strequal.c",
"src/lib/strequal.h",
"src/lib/strerror.c",
"src/lib/strerror.h",
"src/lib/system_win32.c",
"src/lib/system_win32.h",
"src/lib/telnet.c",
"src/lib/telnet.h",
"src/lib/tftp.c",
"src/lib/tftp.h",
"src/lib/transfer.c",
"src/lib/transfer.h",
"src/lib/uint-bset.c",
"src/lib/uint-bset.h",
"src/lib/uint-hash.c",
"src/lib/uint-hash.h",
"src/lib/uint-spbset.c",
"src/lib/uint-spbset.h",
"src/lib/uint-table.c",
"src/lib/uint-table.h",
"src/lib/url.c",
"src/lib/url.h",
"src/lib/urlapi-int.h",
"src/lib/urlapi.c",
"src/lib/urldata.h",
"src/lib/vauth/cleartext.c",
"src/lib/vauth/cram.c",
"src/lib/vauth/digest.c",
"src/lib/vauth/digest.h",
"src/lib/vauth/digest_sspi.c",
"src/lib/vauth/gsasl.c",
"src/lib/vauth/krb5_gssapi.c",
"src/lib/vauth/krb5_sspi.c",
"src/lib/vauth/ntlm.c",
"src/lib/vauth/ntlm_sspi.c",
"src/lib/vauth/oauth2.c",
"src/lib/vauth/spnego_gssapi.c",
"src/lib/vauth/spnego_sspi.c",
"src/lib/vauth/vauth.c",
"src/lib/vauth/vauth.h",
"src/lib/version.c",
"src/lib/vquic/curl_ngtcp2.c",
"src/lib/vquic/curl_ngtcp2.h",
"src/lib/vquic/curl_quiche.c",
"src/lib/vquic/curl_quiche.h",
"src/lib/vquic/vquic.c",
"src/lib/vquic/vquic.h",
"src/lib/vquic/vquic_int.h",
"src/lib/vssh/libssh.c",
"src/lib/vssh/libssh2.c",
"src/lib/vssh/ssh.h",
"src/lib/vtls/gtls.c",
"src/lib/vtls/gtls.h",
"src/lib/vtls/hostcheck.c",
"src/lib/vtls/hostcheck.h",
"src/lib/vtls/keylog.c",
"src/lib/vtls/keylog.h",
"src/lib/vtls/mbedtls.c",
"src/lib/vtls/mbedtls.h",
"src/lib/vtls/openssl.c",
"src/lib/vtls/openssl.h",
"src/lib/vtls/rustls.c",
"src/lib/vtls/rustls.h",
"src/lib/vtls/schannel.c",
"src/lib/vtls/schannel.h",
"src/lib/vtls/schannel_int.h",
"src/lib/vtls/schannel_verify.c",
"src/lib/vtls/vtls.c",
"src/lib/vtls/vtls.h",
"src/lib/vtls/vtls_int.h",
"src/lib/vtls/vtls_scache.c",
"src/lib/vtls/vtls_scache.h",
"src/lib/vtls/vtls_spack.c",
"src/lib/vtls/vtls_spack.h",
"src/lib/vtls/wolfssl.c",
"src/lib/vtls/wolfssl.h",
"src/lib/vtls/x509asn1.c",
"src/lib/vtls/x509asn1.h",
"src/lib/ws.c",
"src/lib/ws.h",
]
deps = [
":copy_curl_config",
"//third_party/boringssl",
"//third_party/zlib",
]
defines = [
"BUILDING_LIBCURL",
"CURL_HIDDEN_SYMBOLS",
"HAVE_CONFIG_H",
]
if (is_linux) {
defines += [ "_GNU_SOURCE" ]
}
public_configs = [ ":curl_config" ]
configs += [ ":suppress_warnings" ]
}
config("suppress_warnings") {
visibility = [ ":*" ]
cflags = [
"-Wno-string-plus-int",
"-Wno-conversion",
"-Wno-implicit-fallthrough",
"-Wno-unused-but-set-variable",
# TODO(https://fxbug.dev/432038197): update library to resolve this warning.
"-Wno-uninitialized-const-pointer",
]
}
executable("curl_bin") {
output_name = "curl"
sources = [
"src/lib/curl_ctype.h",
"src/lib/curl_setup.h",
"src/lib/curlx/base64.c",
"src/lib/curlx/base64.h",
"src/lib/curlx/binmode.h",
"src/lib/curlx/dynbuf.c",
"src/lib/curlx/dynbuf.h",
"src/lib/curlx/fopen.c",
"src/lib/curlx/fopen.h",
"src/lib/curlx/nonblock.c",
"src/lib/curlx/nonblock.h",
"src/lib/curlx/strcopy.c",
"src/lib/curlx/strcopy.h",
"src/lib/curlx/strerr.c",
"src/lib/curlx/strerr.h",
"src/lib/curlx/strparse.c",
"src/lib/curlx/strparse.h",
"src/lib/curlx/timediff.c",
"src/lib/curlx/timediff.h",
"src/lib/curlx/timeval.c",
"src/lib/curlx/timeval.h",
"src/lib/curlx/wait.c",
"src/lib/curlx/wait.h",
"src/lib/curlx/warnless.c",
"src/lib/curlx/warnless.h",
"src/src/config2setopts.c",
"src/src/config2setopts.h",
"src/src/slist_wc.c",
"src/src/slist_wc.h",
"src/src/terminal.c",
"src/src/terminal.h",
"src/src/tool_bname.c",
"src/src/tool_bname.h",
"src/src/tool_cb_dbg.c",
"src/src/tool_cb_dbg.h",
"src/src/tool_cb_hdr.c",
"src/src/tool_cb_hdr.h",
"src/src/tool_cb_prg.c",
"src/src/tool_cb_prg.h",
"src/src/tool_cb_rea.c",
"src/src/tool_cb_rea.h",
"src/src/tool_cb_see.c",
"src/src/tool_cb_see.h",
"src/src/tool_cb_soc.c",
"src/src/tool_cb_soc.h",
"src/src/tool_cb_wrt.c",
"src/src/tool_cb_wrt.h",
"src/src/tool_cfgable.c",
"src/src/tool_cfgable.h",
"src/src/tool_dirhie.c",
"src/src/tool_dirhie.h",
"src/src/tool_doswin.c",
"src/src/tool_doswin.h",
"src/src/tool_easysrc.c",
"src/src/tool_easysrc.h",
"src/src/tool_filetime.c",
"src/src/tool_filetime.h",
"src/src/tool_findfile.c",
"src/src/tool_findfile.h",
"src/src/tool_formparse.c",
"src/src/tool_formparse.h",
"src/src/tool_getparam.c",
"src/src/tool_getparam.h",
"src/src/tool_getpass.c",
"src/src/tool_getpass.h",
"src/src/tool_help.c",
"src/src/tool_help.h",
"src/src/tool_helpers.c",
"src/src/tool_helpers.h",
"src/src/tool_hugehelp.h",
"src/src/tool_ipfs.c",
"src/src/tool_ipfs.h",
"src/src/tool_libinfo.c",
"src/src/tool_libinfo.h",
"src/src/tool_listhelp.c",
"src/src/tool_main.c",
"src/src/tool_main.h",
"src/src/tool_msgs.c",
"src/src/tool_msgs.h",
"src/src/tool_operate.c",
"src/src/tool_operate.h",
"src/src/tool_operhlp.c",
"src/src/tool_operhlp.h",
"src/src/tool_paramhlp.c",
"src/src/tool_paramhlp.h",
"src/src/tool_parsecfg.c",
"src/src/tool_parsecfg.h",
"src/src/tool_progress.c",
"src/src/tool_progress.h",
"src/src/tool_sdecls.h",
"src/src/tool_setopt.c",
"src/src/tool_setopt.h",
"src/src/tool_setup.h",
"src/src/tool_ssls.c",
"src/src/tool_ssls.h",
"src/src/tool_stderr.c",
"src/src/tool_stderr.h",
"src/src/tool_strdup.c",
"src/src/tool_strdup.h",
"src/src/tool_urlglob.c",
"src/src/tool_urlglob.h",
"src/src/tool_util.c",
"src/src/tool_util.h",
"src/src/tool_version.h",
"src/src/tool_vms.c",
"src/src/tool_vms.h",
"src/src/tool_writeout.c",
"src/src/tool_writeout.h",
"src/src/tool_writeout_json.c",
"src/src/tool_writeout_json.h",
"src/src/tool_xattr.c",
"src/src/tool_xattr.h",
"src/src/toolx/tool_time.c",
"src/src/toolx/tool_time.h",
"src/src/var.c",
"src/src/var.h",
]
deps = [
":copy_curl_config",
":libcurl",
":tool_hugehelp",
"//third_party/zlib",
]
defines = [ "HAVE_CONFIG_H" ]
if (is_linux) {
defines += [ "_GNU_SOURCE" ]
}
include_dirs = [ "src/lib" ]
configs += [ ":suppress_warnings" ]
# Note that the curl binary explicitly defines CURL_NO_OLDIES in one of its
# headers, so to ensure we don't redefine it in that header, make sure we
# undefine the define implicitly added via curl_config via libcurl's
# public_configs.
cflags = [ "-UCURL_NO_OLDIES" ]
}
# See README.fuchsia for how to generate this file.
source_set("tool_hugehelp") {
sources = [ "tool_hugehelp.c" ]
# Because we check this in directly to fuchsia.git instead of generating it
# during the build, we have to tell it where to find the headers that it
# expects to be generated alongside.
include_dirs = [
"src/lib",
"src/src",
]
deps = [ ":libcurl" ]
defines = [ "HAVE_CONFIG_H" ]
configs += [ ":suppress_warnings" ]
}