# Copyright © spinorX 2017 - All rights reserved package(default_visibility = ["//visibility:public"]) genrule( name = "config", outs = [ "include/curl_config.h" ], cmd = """ echo '#pragma once ' > $(@) echo '' >> $(@) echo '#include ' >> $(@) echo '#define OPENSSL_IS_BORINGSSL 1' >> $(@) echo '' >> $(@) echo '#define CURL_CA_BUNDLE \"/etc/ssl/certs/ca-certificates.crt\"' >> $(@) echo '#define GETSERVBYPORT_R_ARGS 6' >> $(@) echo '#define GETSERVBYPORT_R_BUFSIZE 4096' >> $(@) echo '#define HAVE_BORINGSSL 1' >> $(@) echo '#define HAVE_CLOCK_GETTIME_MONOTONIC 1' >> $(@) echo '#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1' >> $(@) echo '#define HAVE_FSETXATTR_5 1' >> $(@) echo '#define HAVE_GETHOSTBYADDR_R 1' >> $(@) echo '#define HAVE_GETHOSTBYADDR_R_8 1' >> $(@) echo '#define HAVE_GETHOSTBYNAME_R 1' >> $(@) echo '#define HAVE_GETHOSTBYNAME_R_6 1' >> $(@) echo '#define HAVE_GETSERVBYPORT_R 1' >> $(@) echo '#define HAVE_LIBSSL 1' >> $(@) echo '#define HAVE_MALLOC_H 1' >> $(@) echo '#define HAVE_MSG_NOSIGNAL 1' >> $(@) echo '#define HAVE_OPENSSL_CRYPTO_H 1' >> $(@) echo '#define HAVE_OPENSSL_ERR_H 1' >> $(@) echo '#define HAVE_OPENSSL_PEM_H 1' >> $(@) echo '#define HAVE_OPENSSL_PKCS12_H 1' >> $(@) echo '#define HAVE_OPENSSL_RSA_H 1' >> $(@) echo '#define HAVE_OPENSSL_SSL_H 1' >> $(@) echo '#define HAVE_OPENSSL_X509_H 1' >> $(@) echo '#define HAVE_RAND_EGD 1' >> $(@) echo '#define HAVE_RAND_STATUS 1' >> $(@) echo '#define HAVE_SSL_GET_SHUTDOWN 1' >> $(@) echo '#define HAVE_STROPTS_H 1' >> $(@) echo '#define HAVE_TERMIOS_H 1' >> $(@) echo '#define OS \"x86_64-pc-linux-gnu\"' >> $(@) echo '#define RANDOM_FILE \"/dev/urandom\"' >> $(@) echo '#define USE_OPENSSL 1' >> $(@) echo '' >> $(@) echo '#define CURL_DISABLE_DICT 1' >> $(@) echo '#define CURL_DISABLE_FILE 1' >> $(@) echo '#define CURL_DISABLE_GOPHER 1' >> $(@) echo '#define CURL_DISABLE_IMAP 1' >> $(@) echo '#define CURL_DISABLE_LDAP 1' >> $(@) echo '#define CURL_DISABLE_LDAPS 1' >> $(@) echo '#define CURL_DISABLE_POP3 1' >> $(@) echo '#define CURL_DISABLE_SMTP 1' >> $(@) echo '#define CURL_DISABLE_TELNET 1' >> $(@) echo '#define CURL_DISABLE_TFTP 1' >> $(@) echo '#define CURL_EXTERN_SYMBOL __attribute__ ((__visibility__ (\"default\")))' >> $(@) echo '#define ENABLE_IPV6 1' >> $(@) echo '#define GETHOSTNAME_TYPE_ARG2 size_t' >> $(@) echo '#define GETNAMEINFO_QUAL_ARG1 const' >> $(@) echo '#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *' >> $(@) echo '#define GETNAMEINFO_TYPE_ARG2 socklen_t' >> $(@) echo '#define GETNAMEINFO_TYPE_ARG46 socklen_t' >> $(@) echo '#define GETNAMEINFO_TYPE_ARG7 int' >> $(@) echo '#define HAVE_ALARM 1' >> $(@) echo '#define HAVE_ALLOCA_H 1' >> $(@) echo '#define HAVE_ARPA_INET_H 1' >> $(@) echo '#define HAVE_ARPA_TFTP_H 1' >> $(@) echo '#define HAVE_ASSERT_H 1' >> $(@) echo '#define HAVE_BASENAME 1' >> $(@) echo '#define HAVE_BOOL_T 1' >> $(@) echo '#define HAVE_CONNECT 1' >> $(@) echo '#define HAVE_DLFCN_H 1' >> $(@) echo '#define HAVE_ERRNO_H 1' >> $(@) echo '#define HAVE_FCNTL 1' >> $(@) echo '#define HAVE_FCNTL_H 1' >> $(@) echo '#define HAVE_FCNTL_O_NONBLOCK 1' >> $(@) echo '#define HAVE_FDOPEN 1' >> $(@) echo '#define HAVE_FORK 1' >> $(@) echo '#define HAVE_FREEADDRINFO 1' >> $(@) echo '#define HAVE_FREEIFADDRS 1' >> $(@) echo '#define HAVE_FSETXATTR 1' >> $(@) echo '#define HAVE_FTRUNCATE 1' >> $(@) echo '#define HAVE_GAI_STRERROR 1' >> $(@) echo '#define HAVE_GETADDRINFO 1' >> $(@) echo '#define HAVE_GETADDRINFO_THREADSAFE 1' >> $(@) echo '#define HAVE_GETEUID 1' >> $(@) echo '#define HAVE_GETHOSTBYADDR 1' >> $(@) echo '#define HAVE_GETHOSTBYNAME 1' >> $(@) echo '#define HAVE_GETHOSTNAME 1' >> $(@) echo '#define HAVE_GETIFADDRS 1' >> $(@) echo '#define HAVE_GETNAMEINFO 1' >> $(@) echo '#define HAVE_GETPPID 1' >> $(@) echo '#define HAVE_GETPROTOBYNAME 1' >> $(@) echo '#define HAVE_GETPWUID 1' >> $(@) echo '#define HAVE_GETPWUID_R 1' >> $(@) echo '#define HAVE_GETRLIMIT 1' >> $(@) echo '#define HAVE_GETTIMEOFDAY 1' >> $(@) echo '#define HAVE_GMTIME_R 1' >> $(@) echo '#define HAVE_IFADDRS_H 1' >> $(@) echo '#define HAVE_IF_NAMETOINDEX 1' >> $(@) echo '#define HAVE_INET_ADDR 1' >> $(@) echo '#define HAVE_INET_NTOP 1' >> $(@) echo '#define HAVE_INET_PTON 1' >> $(@) echo '#define HAVE_INTTYPES_H 1' >> $(@) echo '#define HAVE_IOCTL 1' >> $(@) echo '#define HAVE_IOCTL_FIONBIO 1' >> $(@) echo '#define HAVE_IOCTL_SIOCGIFADDR 1' >> $(@) echo '#define HAVE_LIBGEN_H 1' >> $(@) echo '#define HAVE_LIBZ 1' >> $(@) echo '#define HAVE_LIMITS_H 1' >> $(@) echo '#define HAVE_LL 1' >> $(@) echo '#define HAVE_LOCALE_H 1' >> $(@) echo '#define HAVE_LOCALTIME_R 1' >> $(@) echo '#define HAVE_LONGLONG 1' >> $(@) echo '#define HAVE_MEMORY_H 1' >> $(@) echo '#define HAVE_NETDB_H 1' >> $(@) echo '#define HAVE_NETINET_IN_H 1' >> $(@) echo '#define HAVE_NETINET_TCP_H 1' >> $(@) echo '#define HAVE_NET_IF_H 1' >> $(@) echo '#define HAVE_PERROR 1' >> $(@) echo '#define HAVE_PIPE 1' >> $(@) echo '#define HAVE_POLL 1' >> $(@) echo '#define HAVE_POLL_FINE 1' >> $(@) echo '#define HAVE_POLL_H 1' >> $(@) echo '#define HAVE_POSIX_STRERROR_R 1' >> $(@) echo '#define HAVE_PWD_H 1' >> $(@) echo '#define HAVE_RECV 1' >> $(@) echo '#define HAVE_SELECT 1' >> $(@) echo '#define HAVE_SEND 1' >> $(@) echo '#define HAVE_SETJMP_H 1' >> $(@) echo '#define HAVE_SETLOCALE 1' >> $(@) echo '#define HAVE_SETRLIMIT 1' >> $(@) echo '#define HAVE_SETSOCKOPT 1' >> $(@) echo '#define HAVE_SGTTY_H 1' >> $(@) echo '#define HAVE_SIGACTION 1' >> $(@) echo '#define HAVE_SIGINTERRUPT 1' >> $(@) echo '#define HAVE_SIGNAL 1' >> $(@) echo '#define HAVE_SIGNAL_H 1' >> $(@) echo '#define HAVE_SIGSETJMP 1' >> $(@) echo '#define HAVE_SIG_ATOMIC_T 1' >> $(@) echo '#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1' >> $(@) echo '#define HAVE_SOCKET 1' >> $(@) echo '#define HAVE_SOCKETPAIR 1' >> $(@) echo '#define HAVE_STDBOOL_H 1' >> $(@) echo '#define HAVE_STDINT_H 1' >> $(@) echo '#define HAVE_STDIO_H 1' >> $(@) echo '#define HAVE_STDLIB_H 1' >> $(@) echo '#define HAVE_STRCASECMP 1' >> $(@) echo '#define HAVE_STRDUP 1' >> $(@) echo '#define HAVE_STRERROR_R 1' >> $(@) echo '#define HAVE_STRINGS_H 1' >> $(@) echo '#define HAVE_STRING_H 1' >> $(@) echo '#define HAVE_STRNCASECMP 1' >> $(@) echo '#define HAVE_STRSTR 1' >> $(@) echo '#define HAVE_STRTOK_R 1' >> $(@) echo '#define HAVE_STRTOLL 1' >> $(@) echo '#define HAVE_STRUCT_SOCKADDR_STORAGE 1' >> $(@) echo '#define HAVE_STRUCT_TIMEVAL 1' >> $(@) echo '#define HAVE_SYS_IOCTL_H 1' >> $(@) echo '#define HAVE_SYS_PARAM_H 1' >> $(@) echo '#define HAVE_SYS_POLL_H 1' >> $(@) echo '#define HAVE_SYS_RESOURCE_H 1' >> $(@) echo '#define HAVE_SYS_SELECT_H 1' >> $(@) echo '#define HAVE_SYS_SOCKET_H 1' >> $(@) echo '#define HAVE_SYS_STAT_H 1' >> $(@) echo '#define HAVE_SYS_TIME_H 1' >> $(@) echo '#define HAVE_SYS_TYPES_H 1' >> $(@) echo '#define HAVE_SYS_UIO_H 1' >> $(@) echo '#define HAVE_SYS_UN_H 1' >> $(@) echo '#define HAVE_SYS_WAIT_H 1' >> $(@) echo '#define HAVE_SYS_XATTR_H 1' >> $(@) echo '#define HAVE_TIME_H 1' >> $(@) echo '#define HAVE_UNAME 1' >> $(@) echo '#define HAVE_UNISTD_H 1' >> $(@) echo '#define HAVE_UTIME 1' >> $(@) echo '#define HAVE_UTIME_H 1' >> $(@) echo '#define HAVE_VARIADIC_MACROS_C99 1' >> $(@) echo '#define HAVE_VARIADIC_MACROS_GCC 1' >> $(@) echo '#define HAVE_WRITABLE_ARGV 1' >> $(@) echo '#define HAVE_WRITEV 1' >> $(@) echo '#define HAVE_ZLIB_H 1' >> $(@) echo '#define LT_OBJDIR \".libs/\"' >> $(@) echo '#define PACKAGE \"curl\"' >> $(@) echo '#define PACKAGE_BUGREPORT \"a suitable curl mailing list: https://curl.haxx.se/mail/\"' >> $(@) echo '#define PACKAGE_NAME \"curl\"' >> $(@) echo '#define PACKAGE_STRING \"curl -\"' >> $(@) echo '#define PACKAGE_TARNAME \"curl\"' >> $(@) echo '#define PACKAGE_URL \"\"' >> $(@) echo '#define PACKAGE_VERSION \"-\"' >> $(@) echo '#define RECV_TYPE_ARG1 int' >> $(@) echo '#define RECV_TYPE_ARG2 void *' >> $(@) echo '#define RECV_TYPE_ARG3 size_t' >> $(@) echo '#define RECV_TYPE_ARG4 int' >> $(@) echo '#define RECV_TYPE_RETV ssize_t' >> $(@) echo '#define RETSIGTYPE void' >> $(@) echo '#define SELECT_QUAL_ARG5' >> $(@) echo '#define SELECT_TYPE_ARG1 int' >> $(@) echo '#define SELECT_TYPE_ARG234 fd_set *' >> $(@) echo '#define SELECT_TYPE_ARG5 struct timeval *' >> $(@) echo '#define SELECT_TYPE_RETV int' >> $(@) echo '#define SEND_QUAL_ARG2 const' >> $(@) echo '#define SEND_TYPE_ARG1 int' >> $(@) echo '#define SEND_TYPE_ARG2 void *' >> $(@) echo '#define SEND_TYPE_ARG3 size_t' >> $(@) echo '#define SEND_TYPE_ARG4 int' >> $(@) echo '#define SEND_TYPE_RETV ssize_t' >> $(@) echo '#define SIZEOF_INT 4' >> $(@) echo '#define SIZEOF_LONG 8' >> $(@) echo '#define SIZEOF_OFF_T 8' >> $(@) echo '#define SIZEOF_SHORT 2' >> $(@) echo '#define SIZEOF_SIZE_T 8' >> $(@) echo '#define SIZEOF_TIME_T 8' >> $(@) echo '#define SIZEOF_VOIDP 8' >> $(@) echo '#define SIZEOF_CURL_OFF_T 8' >> $(@) echo '#define STDC_HEADERS 1' >> $(@) echo '#define STRERROR_R_TYPE_ARG3 size_t' >> $(@) echo '#define TIME_WITH_SYS_TIME 1' >> $(@) echo '#define VERSION \"-\"' >> $(@) echo '' >> $(@) echo '#endif // EXTERNAL_CURL_INCLUDE_CURL_CONFIG_H_' >> $(@) """ ) cc_library( name = "curl", srcs = [ ":config", ] + glob([ "lib/**/*.h", "lib/**/*.c", ], exclude = [ "lib/config-*.h", ], ), hdrs = glob([ "include/curl/*.h", ]), copts = [ "-Iexternal/com_github_curl_curl/lib", "-D_GNU_SOURCE", "-DHAVE_CONFIG_H", "-DCURL_DISABLE_FTP", "-DCURL_DISABLE_NTLM", # turning it off in configure is not enough "-DHAVE_LIBZ", "-DHAVE_ZLIB_H", "-Wno-string-plus-int", "-DCURL_MAX_WRITE_SIZE=65536", ], includes = [ "include", ], defines = [ "CURL_NO_OLDIES", ], linkopts = [ "-lrt", ], deps = [ "//external:zlib", "//external:ssl", ], )