blob: 3d6c82aa0e6347716f31978f41b33dc343a9a90d [file] [log] [blame]
# 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 = [
"include",
"$target_gen_dir",
"$target_gen_dir/curl",
]
defines = [ "CURL_NO_OLDIES" ]
}
copy("copy_curl_config") {
visibility = [ ":*" ]
if (is_fuchsia) {
sources = [ "lib/curl_config.h.fuchsia" ]
} else {
sources = [ "lib/curl_config.h.host" ]
}
outputs = [ "$target_gen_dir/curl_config.h" ]
}
target(default_library_type, "libcurl") {
output_name = "curl"
sources = [
"lib/altsvc.c",
"lib/altsvc.h",
"lib/amigaos.c",
"lib/amigaos.h",
"lib/arpa_telnet.h",
"lib/asyn-ares.c",
"lib/asyn-thread.c",
"lib/asyn.h",
"lib/base64.c",
"lib/bufq.c",
"lib/bufq.h",
"lib/bufref.c",
"lib/bufref.h",
"lib/c-hyper.c",
"lib/c-hyper.h",
"lib/cf-h1-proxy.c",
"lib/cf-h1-proxy.h",
"lib/cf-h2-proxy.c",
"lib/cf-h2-proxy.h",
"lib/cf-haproxy.c",
"lib/cf-haproxy.h",
"lib/cf-https-connect.c",
"lib/cf-https-connect.h",
"lib/cf-socket.c",
"lib/cf-socket.h",
"lib/cfilters.c",
"lib/cfilters.h",
"lib/config-amigaos.h",
"lib/config-dos.h",
"lib/config-mac.h",
"lib/config-os400.h",
"lib/config-plan9.h",
"lib/config-riscos.h",
"lib/config-win32.h",
"lib/config-win32ce.h",
"lib/conncache.c",
"lib/conncache.h",
"lib/connect.c",
"lib/connect.h",
"lib/content_encoding.c",
"lib/content_encoding.h",
"lib/cookie.c",
"lib/cookie.h",
"lib/curl_addrinfo.c",
"lib/curl_addrinfo.h",
"lib/curl_base64.h",
"lib/curl_config.h",
"lib/curl_ctype.h",
"lib/curl_des.c",
"lib/curl_des.h",
"lib/curl_endian.c",
"lib/curl_endian.h",
"lib/curl_fnmatch.c",
"lib/curl_fnmatch.h",
"lib/curl_get_line.c",
"lib/curl_get_line.h",
"lib/curl_gethostname.c",
"lib/curl_gethostname.h",
"lib/curl_gssapi.c",
"lib/curl_gssapi.h",
"lib/curl_hmac.h",
"lib/curl_krb5.h",
"lib/curl_ldap.h",
"lib/curl_md4.h",
"lib/curl_md5.h",
"lib/curl_memory.h",
"lib/curl_memrchr.c",
"lib/curl_memrchr.h",
"lib/curl_multibyte.c",
"lib/curl_multibyte.h",
"lib/curl_ntlm_core.c",
"lib/curl_ntlm_core.h",
"lib/curl_ntlm_wb.c",
"lib/curl_ntlm_wb.h",
"lib/curl_path.c",
"lib/curl_path.h",
"lib/curl_printf.h",
"lib/curl_range.c",
"lib/curl_range.h",
"lib/curl_rtmp.c",
"lib/curl_rtmp.h",
"lib/curl_sasl.c",
"lib/curl_sasl.h",
"lib/curl_setup.h",
"lib/curl_setup_once.h",
"lib/curl_sha256.h",
"lib/curl_sspi.c",
"lib/curl_sspi.h",
"lib/curl_threads.c",
"lib/curl_threads.h",
"lib/curl_trc.c",
"lib/curl_trc.h",
"lib/curlx.h",
"lib/dict.c",
"lib/dict.h",
"lib/doh.c",
"lib/doh.h",
"lib/dynbuf.c",
"lib/dynbuf.h",
"lib/dynhds.c",
"lib/dynhds.h",
"lib/easy.c",
"lib/easy_lock.h",
"lib/easygetopt.c",
"lib/easyif.h",
"lib/easyoptions.c",
"lib/easyoptions.h",
"lib/escape.c",
"lib/escape.h",
"lib/file.c",
"lib/file.h",
"lib/fileinfo.c",
"lib/fileinfo.h",
"lib/fopen.c",
"lib/fopen.h",
"lib/formdata.c",
"lib/formdata.h",
"lib/ftp.c",
"lib/ftp.h",
"lib/ftplistparser.c",
"lib/ftplistparser.h",
"lib/functypes.h",
"lib/getenv.c",
"lib/getinfo.c",
"lib/getinfo.h",
"lib/gopher.c",
"lib/gopher.h",
"lib/hash.c",
"lib/hash.h",
"lib/headers.c",
"lib/headers.h",
"lib/hmac.c",
"lib/hostasyn.c",
"lib/hostip.c",
"lib/hostip.h",
"lib/hostip4.c",
"lib/hostip6.c",
"lib/hostsyn.c",
"lib/hsts.c",
"lib/hsts.h",
"lib/http.c",
"lib/http.h",
"lib/http1.c",
"lib/http1.h",
"lib/http2.c",
"lib/http2.h",
"lib/http_aws_sigv4.c",
"lib/http_aws_sigv4.h",
"lib/http_chunks.c",
"lib/http_chunks.h",
"lib/http_digest.c",
"lib/http_digest.h",
"lib/http_negotiate.c",
"lib/http_negotiate.h",
"lib/http_ntlm.c",
"lib/http_ntlm.h",
"lib/http_proxy.c",
"lib/http_proxy.h",
"lib/idn.c",
"lib/idn.h",
"lib/if2ip.c",
"lib/if2ip.h",
"lib/imap.c",
"lib/imap.h",
"lib/inet_ntop.c",
"lib/inet_ntop.h",
"lib/inet_pton.c",
"lib/inet_pton.h",
"lib/krb5.c",
"lib/ldap.c",
"lib/llist.c",
"lib/llist.h",
"lib/macos.c",
"lib/macos.h",
"lib/md4.c",
"lib/md5.c",
"lib/memdebug.c",
"lib/memdebug.h",
"lib/mime.c",
"lib/mime.h",
"lib/mprintf.c",
"lib/mqtt.c",
"lib/mqtt.h",
"lib/multi.c",
"lib/multihandle.h",
"lib/multiif.h",
"lib/netrc.c",
"lib/netrc.h",
"lib/nonblock.c",
"lib/nonblock.h",
"lib/noproxy.c",
"lib/noproxy.h",
"lib/openldap.c",
"lib/parsedate.c",
"lib/parsedate.h",
"lib/pingpong.c",
"lib/pingpong.h",
"lib/pop3.c",
"lib/pop3.h",
"lib/progress.c",
"lib/progress.h",
"lib/psl.c",
"lib/psl.h",
"lib/rand.c",
"lib/rand.h",
"lib/rename.c",
"lib/rename.h",
"lib/rtsp.c",
"lib/rtsp.h",
"lib/select.c",
"lib/select.h",
"lib/sendf.c",
"lib/sendf.h",
"lib/setopt.c",
"lib/setopt.h",
"lib/setup-os400.h",
"lib/setup-vms.h",
"lib/setup-win32.h",
"lib/sha256.c",
"lib/share.c",
"lib/share.h",
"lib/sigpipe.h",
"lib/slist.c",
"lib/slist.h",
"lib/smb.c",
"lib/smb.h",
"lib/smtp.c",
"lib/smtp.h",
"lib/sockaddr.h",
"lib/socketpair.c",
"lib/socketpair.h",
"lib/socks.c",
"lib/socks.h",
"lib/socks_gssapi.c",
"lib/socks_sspi.c",
"lib/speedcheck.c",
"lib/speedcheck.h",
"lib/splay.c",
"lib/splay.h",
"lib/strcase.c",
"lib/strcase.h",
"lib/strdup.c",
"lib/strdup.h",
"lib/strerror.c",
"lib/strerror.h",
"lib/strtok.c",
"lib/strtok.h",
"lib/strtoofft.c",
"lib/strtoofft.h",
"lib/system_win32.c",
"lib/system_win32.h",
"lib/telnet.c",
"lib/telnet.h",
"lib/tftp.c",
"lib/tftp.h",
"lib/timediff.c",
"lib/timediff.h",
"lib/timeval.c",
"lib/timeval.h",
"lib/transfer.c",
"lib/transfer.h",
"lib/url.c",
"lib/url.h",
"lib/urlapi-int.h",
"lib/urlapi.c",
"lib/urldata.h",
"lib/vauth/cleartext.c",
"lib/vauth/cram.c",
"lib/vauth/digest.c",
"lib/vauth/digest.h",
"lib/vauth/digest_sspi.c",
"lib/vauth/gsasl.c",
"lib/vauth/krb5_gssapi.c",
"lib/vauth/krb5_sspi.c",
"lib/vauth/ntlm.c",
"lib/vauth/ntlm.h",
"lib/vauth/ntlm_sspi.c",
"lib/vauth/oauth2.c",
"lib/vauth/spnego_gssapi.c",
"lib/vauth/spnego_sspi.c",
"lib/vauth/vauth.c",
"lib/vauth/vauth.h",
"lib/version.c",
"lib/version_win32.c",
"lib/version_win32.h",
"lib/vquic/curl_msh3.c",
"lib/vquic/curl_msh3.h",
"lib/vquic/curl_ngtcp2.c",
"lib/vquic/curl_ngtcp2.h",
"lib/vquic/curl_quiche.c",
"lib/vquic/curl_quiche.h",
"lib/vquic/vquic.c",
"lib/vquic/vquic.h",
"lib/vquic/vquic_int.h",
"lib/vssh/libssh.c",
"lib/vssh/libssh2.c",
"lib/vssh/ssh.h",
"lib/vssh/wolfssh.c",
"lib/vtls/bearssl.c",
"lib/vtls/bearssl.h",
"lib/vtls/gtls.c",
"lib/vtls/gtls.h",
"lib/vtls/hostcheck.c",
"lib/vtls/hostcheck.h",
"lib/vtls/keylog.c",
"lib/vtls/keylog.h",
"lib/vtls/mbedtls.c",
"lib/vtls/mbedtls.h",
"lib/vtls/mbedtls_threadlock.c",
"lib/vtls/mbedtls_threadlock.h",
"lib/vtls/openssl.c",
"lib/vtls/openssl.h",
"lib/vtls/rustls.c",
"lib/vtls/rustls.h",
"lib/vtls/schannel.c",
"lib/vtls/schannel.h",
"lib/vtls/schannel_int.h",
"lib/vtls/schannel_verify.c",
"lib/vtls/sectransp.c",
"lib/vtls/sectransp.h",
"lib/vtls/vtls.c",
"lib/vtls/vtls.h",
"lib/vtls/vtls_int.h",
"lib/vtls/wolfssl.c",
"lib/vtls/wolfssl.h",
"lib/vtls/x509asn1.c",
"lib/vtls/x509asn1.h",
"lib/warnless.c",
"lib/warnless.h",
"lib/ws.c",
"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" ]
} else if (is_mac) {
frameworks = [ "SystemConfiguration.framework" ]
}
include_dirs = [ "lib" ]
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",
]
}
executable("curl_bin") {
output_name = "curl"
sources = [
"lib/base64.c",
"lib/curl_base64.h",
"lib/curl_ctype.h",
"lib/curl_setup.h",
"lib/dynbuf.c",
"lib/dynbuf.h",
"lib/nonblock.c",
"lib/nonblock.h",
"lib/strtoofft.c",
"lib/strtoofft.h",
"lib/warnless.c",
"lib/warnless.h",
"src/slist_wc.c",
"src/slist_wc.h",
"src/tool_binmode.c",
"src/tool_binmode.h",
"src/tool_bname.c",
"src/tool_bname.h",
"src/tool_cb_dbg.c",
"src/tool_cb_dbg.h",
"src/tool_cb_hdr.c",
"src/tool_cb_hdr.h",
"src/tool_cb_prg.c",
"src/tool_cb_prg.h",
"src/tool_cb_rea.c",
"src/tool_cb_rea.h",
"src/tool_cb_see.c",
"src/tool_cb_see.h",
"src/tool_cb_wrt.c",
"src/tool_cb_wrt.h",
"src/tool_cfgable.c",
"src/tool_cfgable.h",
"src/tool_dirhie.c",
"src/tool_dirhie.h",
"src/tool_doswin.c",
"src/tool_doswin.h",
"src/tool_easysrc.c",
"src/tool_easysrc.h",
"src/tool_filetime.c",
"src/tool_filetime.h",
"src/tool_findfile.c",
"src/tool_findfile.h",
"src/tool_formparse.c",
"src/tool_formparse.h",
"src/tool_getparam.c",
"src/tool_getparam.h",
"src/tool_getpass.c",
"src/tool_getpass.h",
"src/tool_help.c",
"src/tool_help.h",
"src/tool_helpers.c",
"src/tool_helpers.h",
"src/tool_hugehelp.c",
"src/tool_hugehelp.h",
"src/tool_ipfs.c",
"src/tool_ipfs.h",
"src/tool_libinfo.c",
"src/tool_libinfo.h",
"src/tool_listhelp.c",
"src/tool_main.c",
"src/tool_main.h",
"src/tool_msgs.c",
"src/tool_msgs.h",
"src/tool_operate.c",
"src/tool_operate.h",
"src/tool_operhlp.c",
"src/tool_operhlp.h",
"src/tool_paramhlp.c",
"src/tool_paramhlp.h",
"src/tool_parsecfg.c",
"src/tool_parsecfg.h",
"src/tool_progress.c",
"src/tool_progress.h",
"src/tool_sdecls.h",
"src/tool_setopt.c",
"src/tool_setopt.h",
"src/tool_setup.h",
"src/tool_sleep.c",
"src/tool_sleep.h",
"src/tool_stderr.c",
"src/tool_stderr.h",
"src/tool_strdup.c",
"src/tool_strdup.h",
"src/tool_urlglob.c",
"src/tool_urlglob.h",
"src/tool_util.c",
"src/tool_util.h",
"src/tool_version.h",
"src/tool_vms.c",
"src/tool_vms.h",
"src/tool_writeout.c",
"src/tool_writeout.h",
"src/tool_writeout_json.c",
"src/tool_writeout_json.h",
"src/tool_xattr.c",
"src/tool_xattr.h",
"src/var.c",
"src/var.h",
]
deps = [
":copy_curl_config",
":libcurl",
"//third_party/zlib",
]
defines = [ "HAVE_CONFIG_H" ]
if (is_linux) {
defines += [ "_GNU_SOURCE" ]
} else if (is_mac) {
frameworks = [ "SystemConfiguration.framework" ]
}
include_dirs = [ "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" ]
}