const std = @import("std");

pub fn create(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) !*std.Build.Step.Compile {
    const lib = b.addStaticLibrary(.{
        .name = "curl",
        .target = target,
        .optimize = optimize,
    });

    lib.linkLibC();

    const curl_dep = b.dependency("curl", .{
        .target = target,
        .optimize = optimize,
    });

    lib.addCSourceFiles(.{
        .root = curl_dep.path(""),
        .files = srcs,
        .flags = &.{"-std=gnu89"},
    });

    lib.addIncludePath(curl_dep.path("lib"));
    lib.addIncludePath(curl_dep.path("include"));
    lib.installHeadersDirectory(curl_dep.path("include/curl"), "curl", .{});

    lib.root_module.addCMacro("BUILDING_LIBCURL", "1");
    lib.root_module.addCMacro("CURL_STATICLIB", "1");

    lib.root_module.addCMacro("USE_MBEDTLS", "1");

    lib.root_module.addCMacro("CURL_DISABLE_COOKIES", "1"); // fix sterrror_r confusion

    lib.root_module.addCMacro("CURL_DISABLE_DICT", "1");
    lib.root_module.addCMacro("CURL_DISABLE_GOPHER", "1");
    lib.root_module.addCMacro("CURL_DISABLE_HSTS", "1");
    lib.root_module.addCMacro("CURL_DISABLE_IMAP", "1");
    lib.root_module.addCMacro("CURL_DISABLE_LDAP", "1");
    lib.root_module.addCMacro("CURL_DISABLE_LDAPS", "1");
    lib.root_module.addCMacro("CURL_DISABLE_MQTT", "1");
    lib.root_module.addCMacro("CURL_DISABLE_POP3", "1");
    lib.root_module.addCMacro("CURL_DISABLE_RTSP", "1");
    lib.root_module.addCMacro("CURL_DISABLE_SMTP", "1");
    lib.root_module.addCMacro("CURL_DISABLE_TELNET", "1");
    lib.root_module.addCMacro("CURL_DISABLE_TFTP", "1");
    lib.root_module.addCMacro("CURL_EXTERN_SYMBOL", "__attribute__((__visibility__(\"default\")))");
    lib.root_module.addCMacro("CURL_OS", "\"armv7-unknown-linux-gnueabihf\"");
    lib.root_module.addCMacro("GETHOSTNAME_TYPE_ARG2", "unsigned int");
    lib.root_module.addCMacro("HAVE_ALARM", "1");
    lib.root_module.addCMacro("HAVE_ARPA_INET_H", "1");
    lib.root_module.addCMacro("HAVE_ATOMIC", "1");
    lib.root_module.addCMacro("HAVE_BASENAME", "1");
    lib.root_module.addCMacro("HAVE_BOOL_T", "1");
    lib.root_module.addCMacro("HAVE_CLOCK_GETTIME_MONOTONIC", "1");
    lib.root_module.addCMacro("HAVE_CLOCK_GETTIME_MONOTONIC_RAW", "1");
    lib.root_module.addCMacro("HAVE_DECL_FSEEKO", "1");
    lib.root_module.addCMacro("HAVE_DIRENT_H", "1");
    lib.root_module.addCMacro("HAVE_DLFCN_H", "1");
    lib.root_module.addCMacro("HAVE_EVENTFD", "1");
    lib.root_module.addCMacro("HAVE_FCNTL", "1");
    lib.root_module.addCMacro("HAVE_FCNTL_H", "1");
    lib.root_module.addCMacro("HAVE_FCNTL_O_NONBLOCK", "1");
    lib.root_module.addCMacro("HAVE_FNMATCH", "1");
    lib.root_module.addCMacro("HAVE_FREEADDRINFO", "1");
    lib.root_module.addCMacro("HAVE_FSEEKO", "1");
    lib.root_module.addCMacro("HAVE_FSETXATTR", "1");
    lib.root_module.addCMacro("HAVE_FSETXATTR_5", "1");
    lib.root_module.addCMacro("HAVE_FTRUNCATE", "1");
    lib.root_module.addCMacro("HAVE_GETADDRINFO", "1");
    lib.root_module.addCMacro("HAVE_GETADDRINFO_THREADSAFE", "1");
    lib.root_module.addCMacro("HAVE_GETEUID", "1");
    lib.root_module.addCMacro("HAVE_GETHOSTBYNAME_R", "1");
    lib.root_module.addCMacro("HAVE_GETHOSTBYNAME_R_6", "1");
    lib.root_module.addCMacro("HAVE_GETHOSTNAME", "1");
    lib.root_module.addCMacro("HAVE_GETIFADDRS", "1");
    lib.root_module.addCMacro("HAVE_GETPEERNAME", "1");
    lib.root_module.addCMacro("HAVE_GETPPID", "1");
    lib.root_module.addCMacro("HAVE_GETPWUID", "1");
    lib.root_module.addCMacro("HAVE_GETPWUID_R", "1");
    lib.root_module.addCMacro("HAVE_GETRLIMIT", "1");
    lib.root_module.addCMacro("HAVE_GETSOCKNAME", "1");
    lib.root_module.addCMacro("HAVE_GETTIMEOFDAY", "1");
    lib.root_module.addCMacro("HAVE_POSIX_STRERROR_R", "1");
    lib.root_module.addCMacro("HAVE_GMTIME_R", "1");
    lib.root_module.addCMacro("HAVE_IFADDRS_H", "1");
    lib.root_module.addCMacro("HAVE_IF_NAMETOINDEX", "1");
    lib.root_module.addCMacro("HAVE_INET_NTOP", "1");
    lib.root_module.addCMacro("HAVE_INET_PTON", "1");
    lib.root_module.addCMacro("HAVE_INTTYPES_H", "1");
    lib.root_module.addCMacro("HAVE_IOCTL_FIONBIO", "1");
    lib.root_module.addCMacro("HAVE_IOCTL_SIOCGIFADDR", "1");
    lib.root_module.addCMacro("HAVE_LIBGEN_H", "1");
    lib.root_module.addCMacro("HAVE_LINUX_TCP_H", "1");
    lib.root_module.addCMacro("HAVE_LOCALE_H", "1");
    lib.root_module.addCMacro("HAVE_LONGLONG", "1");
    lib.root_module.addCMacro("HAVE_MEMRCHR", "1");
    lib.root_module.addCMacro("HAVE_MSG_NOSIGNAL", "1");
    lib.root_module.addCMacro("HAVE_NETDB_H", "1");
    lib.root_module.addCMacro("HAVE_NETINET_IN_H", "1");
    lib.root_module.addCMacro("HAVE_NETINET_TCP_H", "1");
    lib.root_module.addCMacro("HAVE_NETINET_UDP_H", "1");
    lib.root_module.addCMacro("HAVE_NET_IF_H", "1");
    lib.root_module.addCMacro("HAVE_OPENDIR", "1");
    lib.root_module.addCMacro("HAVE_PIPE", "1");
    lib.root_module.addCMacro("HAVE_POLL", "1");
    lib.root_module.addCMacro("HAVE_POLL_H", "1");
    lib.root_module.addCMacro("HAVE_PTHREAD_H", "1");
    lib.root_module.addCMacro("HAVE_PWD_H", "1");
    lib.root_module.addCMacro("HAVE_REALPATH", "1");
    lib.root_module.addCMacro("HAVE_RECV", "1");
    lib.root_module.addCMacro("HAVE_SA_FAMILY_T", "1");
    lib.root_module.addCMacro("HAVE_SCHED_YIELD", "1");
    lib.root_module.addCMacro("HAVE_SELECT", "1");
    lib.root_module.addCMacro("HAVE_SEND", "1");
    lib.root_module.addCMacro("HAVE_SENDMSG", "1");
    lib.root_module.addCMacro("HAVE_SETLOCALE", "1");
    lib.root_module.addCMacro("HAVE_SETRLIMIT", "1");
    lib.root_module.addCMacro("HAVE_SIGACTION", "1");
    lib.root_module.addCMacro("HAVE_SIGINTERRUPT", "1");
    lib.root_module.addCMacro("HAVE_SIGNAL", "1");
    lib.root_module.addCMacro("HAVE_SIGSETJMP", "1");
    lib.root_module.addCMacro("HAVE_SNPRINTF", "1");
    lib.root_module.addCMacro("HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID", "1");
    lib.root_module.addCMacro("HAVE_SOCKET", "1");
    lib.root_module.addCMacro("HAVE_SOCKETPAIR", "1");
    lib.root_module.addCMacro("HAVE_STDATOMIC_H", "1");
    lib.root_module.addCMacro("HAVE_STDBOOL_H", "1");
    lib.root_module.addCMacro("HAVE_STDINT_H", "1");
    lib.root_module.addCMacro("HAVE_STDIO_H", "1");
    lib.root_module.addCMacro("HAVE_STDLIB_H", "1");
    lib.root_module.addCMacro("HAVE_STRCASECMP", "1");
    lib.root_module.addCMacro("HAVE_STRDUP", "1");
    lib.root_module.addCMacro("HAVE_STRERROR_R", "1");
    lib.root_module.addCMacro("HAVE_STRINGS_H", "1");
    lib.root_module.addCMacro("HAVE_STRING_H", "1");
    lib.root_module.addCMacro("HAVE_STRTOK_R", "1");
    lib.root_module.addCMacro("HAVE_STRTOLL", "1");
    lib.root_module.addCMacro("HAVE_STRUCT_SOCKADDR_STORAGE", "1");
    lib.root_module.addCMacro("HAVE_STRUCT_TIMEVAL", "1");
    lib.root_module.addCMacro("HAVE_SUSECONDS_T", "1");
    lib.root_module.addCMacro("HAVE_SYS_EVENTFD_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_IOCTL_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_PARAM_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_POLL_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_RESOURCE_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_SELECT_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_SOCKET_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_STAT_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_TIME_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_TYPES_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_UN_H", "1");
    lib.root_module.addCMacro("HAVE_SYS_XATTR_H", "1");
    lib.root_module.addCMacro("HAVE_TERMIOS_H", "1");
    lib.root_module.addCMacro("HAVE_TERMIO_H", "1");
    lib.root_module.addCMacro("HAVE_UNISTD_H", "1");
    lib.root_module.addCMacro("HAVE_UTIME", "1");
    lib.root_module.addCMacro("HAVE_UTIMES", "1");
    lib.root_module.addCMacro("HAVE_UTIME_H", "1");
    lib.root_module.addCMacro("LT_OBJDIR", "\".libs/\"");
    lib.root_module.addCMacro("PACKAGE", "\"curl\"");
    lib.root_module.addCMacro("PACKAGE_BUGREPORT", "\"a suitable curl mailing list: https://curl.se/mail/\"");
    lib.root_module.addCMacro("PACKAGE_NAME", "\"curl\"");
    lib.root_module.addCMacro("PACKAGE_STRING", "\"curl -\"");
    lib.root_module.addCMacro("PACKAGE_TARNAME", "\"curl\"");
    lib.root_module.addCMacro("PACKAGE_URL", "\"\"");
    lib.root_module.addCMacro("PACKAGE_VERSION", "\" - \"");
    lib.root_module.addCMacro("SIZEOF_CURL_OFF_T", "8");
    lib.root_module.addCMacro("SIZEOF_CURL_SOCKET_T", "4");
    lib.root_module.addCMacro("SIZEOF_INT", "4");
    lib.root_module.addCMacro("SIZEOF_LONG", "4");
    lib.root_module.addCMacro("SIZEOF_OFF_T", "8");
    lib.root_module.addCMacro("SIZEOF_SIZE_T", "4");
    lib.root_module.addCMacro("SIZEOF_TIME_T", "4");
    lib.root_module.addCMacro("STDC_HEADERS", "1");
    lib.root_module.addCMacro("USE_IPV6", "1");
    lib.root_module.addCMacro("USE_THREADS_POSIX", "1");
    lib.root_module.addCMacro("USE_UNIX_SOCKETS", "1");
    lib.root_module.addCMacro("VERSION", "\"-\"");
    lib.root_module.addCMacro("_FILE_OFFSET_BITS", "64");

    // lib.root_module.addCMacro("CURL_DISABLE_LDAP", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_LDAPS", "1");
    // lib.root_module.addCMacro("USE_MBEDTLS", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_DICT", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_FILE", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_FTP", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_GOPHER", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_IMAP", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_MQTT", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_POP3", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_RTSP", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_SMB", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_SMTP", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_TELNET", "1");
    // lib.root_module.addCMacro("CURL_DISABLE_TFTP", "1");
    // lib.root_module.addCMacro("HAVE_LIBZ", "1");
    // lib.root_module.addCMacro("HAVE_ZLIB_H", "1");

    // lib.root_module.addCMacro("CURL_EXTERN_SYMBOL", "__attribute__ ((__visibility__ (\"default\"))");

    // lib.root_module.addCMacro("ENABLE_IPV6", "1");
    // lib.root_module.addCMacro("HAVE_ALARM", "1");
    // lib.root_module.addCMacro("HAVE_ALLOCA_H", "1");
    // lib.root_module.addCMacro("HAVE_ARPA_INET_H", "1");
    // lib.root_module.addCMacro("HAVE_ARPA_TFTP_H", "1");
    // lib.root_module.addCMacro("HAVE_ASSERT_H", "1");
    // lib.root_module.addCMacro("HAVE_BASENAME", "1");
    // lib.root_module.addCMacro("HAVE_BOOL_T", "1");
    // lib.root_module.addCMacro("HAVE_BUILTIN_AVAILABLE", "1");
    // lib.root_module.addCMacro("HAVE_CLOCK_GETTIME_MONOTONIC", "1");
    // lib.root_module.addCMacro("HAVE_DLFCN_H", "1");
    // lib.root_module.addCMacro("HAVE_ERRNO_H", "1");
    // lib.root_module.addCMacro("HAVE_FCNTL", "1");
    // lib.root_module.addCMacro("HAVE_FCNTL_H", "1");
    // lib.root_module.addCMacro("HAVE_FCNTL_O_NONBLOCK", "1");
    // lib.root_module.addCMacro("HAVE_FREEADDRINFO", "1");
    // lib.root_module.addCMacro("HAVE_FTRUNCATE", "1");
    // lib.root_module.addCMacro("HAVE_GETADDRINFO", "1");
    // lib.root_module.addCMacro("HAVE_GETEUID", "1");
    // lib.root_module.addCMacro("HAVE_GETPPID", "1");
    // lib.root_module.addCMacro("HAVE_GETHOSTBYNAME", "1");
    // lib.root_module.addCMacro("HAVE_GETHOSTBYNAME_R", "1");
    // lib.root_module.addCMacro("HAVE_GETHOSTBYNAME_R_6", "1");
    // lib.root_module.addCMacro("HAVE_GETHOSTNAME", "1");
    // lib.root_module.addCMacro("HAVE_GETPPID", "1");
    // lib.root_module.addCMacro("HAVE_GETPROTOBYNAME", "1");
    // lib.root_module.addCMacro("HAVE_GETPEERNAME", "1");
    // lib.root_module.addCMacro("HAVE_GETSOCKNAME", "1");
    // lib.root_module.addCMacro("HAVE_IF_NAMETOINDEX", "1");
    // lib.root_module.addCMacro("HAVE_GETPWUID", "1");
    // lib.root_module.addCMacro("HAVE_GETPWUID_R", "1");
    // lib.root_module.addCMacro("HAVE_GETRLIMIT", "1");
    // lib.root_module.addCMacro("HAVE_GETTIMEOFDAY", "1");
    // lib.root_module.addCMacro("HAVE_GMTIME_R", "1");
    // lib.root_module.addCMacro("HAVE_IFADDRS_H", "1");
    // lib.root_module.addCMacro("HAVE_INET_ADDR", "1");
    // lib.root_module.addCMacro("HAVE_INET_PTON", "1");
    // lib.root_module.addCMacro("HAVE_SA_FAMILY_T", "1");
    // lib.root_module.addCMacro("HAVE_INTTYPES_H", "1");
    // lib.root_module.addCMacro("HAVE_IOCTL", "1");
    // lib.root_module.addCMacro("HAVE_IOCTL_FIONBIO", "1");
    // lib.root_module.addCMacro("HAVE_IOCTL_SIOCGIFADDR", "1");
    // lib.root_module.addCMacro("HAVE_LDAP_URL_PARSE", "1");
    // lib.root_module.addCMacro("HAVE_LIBGEN_H", "1");
    // lib.root_module.addCMacro("HAVE_IDN2_H", "1");
    // lib.root_module.addCMacro("HAVE_LL", "1");
    // lib.root_module.addCMacro("HAVE_LOCALE_H", "1");
    // lib.root_module.addCMacro("HAVE_LOCALTIME_R", "1");
    // lib.root_module.addCMacro("HAVE_LONGLONG", "1");
    // lib.root_module.addCMacro("HAVE_MALLOC_H", "1");
    // lib.root_module.addCMacro("HAVE_MEMORY_H", "1");
    // lib.root_module.addCMacro("HAVE_MSG_NOSIGNAL", "1");
    // lib.root_module.addCMacro("HAVE_NETDB_H", "1");
    // lib.root_module.addCMacro("HAVE_NETINET_IN_H", "1");
    // lib.root_module.addCMacro("HAVE_NETINET_TCP_H", "1");
    // lib.root_module.addCMacro("HAVE_LINUX_TCP_H", "1");
    // lib.root_module.addCMacro("HAVE_NET_IF_H", "1");
    // lib.root_module.addCMacro("HAVE_PIPE", "1");
    // lib.root_module.addCMacro("HAVE_POLL", "1");
    // lib.root_module.addCMacro("HAVE_POLL_FINE", "1");
    // lib.root_module.addCMacro("HAVE_POLL_H", "1");
    // lib.root_module.addCMacro("HAVE_POSIX_STRERROR_R", "1");
    // lib.root_module.addCMacro("HAVE_PTHREAD_H", "1");
    // lib.root_module.addCMacro("HAVE_PWD_H", "1");
    // lib.root_module.addCMacro("HAVE_RECV", "1");
    // lib.root_module.addCMacro("HAVE_SELECT", "1");
    // lib.root_module.addCMacro("HAVE_SEND", "1");
    // lib.root_module.addCMacro("HAVE_FSETXATTR", "1");
    // lib.root_module.addCMacro("HAVE_FSETXATTR_5", "1");
    // lib.root_module.addCMacro("HAVE_SETJMP_H", "1");
    // lib.root_module.addCMacro("HAVE_SETLOCALE", "1");
    // lib.root_module.addCMacro("HAVE_SETRLIMIT", "1");
    // lib.root_module.addCMacro("HAVE_SETSOCKOPT", "1");
    // lib.root_module.addCMacro("HAVE_SIGACTION", "1");
    // lib.root_module.addCMacro("HAVE_SIGINTERRUPT", "1");
    // lib.root_module.addCMacro("HAVE_SIGNAL", "1");
    // lib.root_module.addCMacro("HAVE_SIGNAL_H", "1");
    // lib.root_module.addCMacro("HAVE_SIGSETJMP", "1");
    // lib.root_module.addCMacro("HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID", "1");
    // lib.root_module.addCMacro("HAVE_SOCKET", "1");
    // lib.root_module.addCMacro("HAVE_STDBOOL_H", "1");
    // lib.root_module.addCMacro("HAVE_STDINT_H", "1");
    // lib.root_module.addCMacro("HAVE_STDIO_H", "1");
    // lib.root_module.addCMacro("HAVE_STDLIB_H", "1");
    // lib.root_module.addCMacro("HAVE_STRCASECMP", "1");
    // lib.root_module.addCMacro("HAVE_STRDUP", "1");
    // lib.root_module.addCMacro("HAVE_STRERROR_R", "1");
    // lib.root_module.addCMacro("HAVE_STRINGS_H", "1");
    // lib.root_module.addCMacro("HAVE_STRING_H", "1");
    // lib.root_module.addCMacro("HAVE_STRSTR", "1");
    // lib.root_module.addCMacro("HAVE_STRTOK_R", "1");
    // lib.root_module.addCMacro("HAVE_STRTOLL", "1");
    // lib.root_module.addCMacro("HAVE_STRUCT_SOCKADDR_STORAGE", "1");
    // lib.root_module.addCMacro("HAVE_STRUCT_TIMEVAL", "1");
    // lib.root_module.addCMacro("HAVE_SYS_IOCTL_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_PARAM_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_POLL_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_RESOURCE_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_SELECT_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_SOCKET_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_STAT_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_TIME_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_TYPES_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_UIO_H", "1");
    // lib.root_module.addCMacro("HAVE_SYS_UN_H", "1");
    // lib.root_module.addCMacro("HAVE_TERMIOS_H", "1");
    // lib.root_module.addCMacro("HAVE_TERMIO_H", "1");
    // lib.root_module.addCMacro("HAVE_TIME_H", "1");
    // lib.root_module.addCMacro("HAVE_UNAME", "1");
    // lib.root_module.addCMacro("HAVE_UNISTD_H", "1");
    // lib.root_module.addCMacro("HAVE_UTIME", "1");
    // lib.root_module.addCMacro("HAVE_UTIMES", "1");
    // lib.root_module.addCMacro("HAVE_UTIME_H", "1");
    // lib.root_module.addCMacro("HAVE_VARIADIC_MACROS_C99", "1");
    // lib.root_module.addCMacro("HAVE_VARIADIC_MACROS_GCC", "1");
    // lib.root_module.addCMacro("OS", "\"Linux\"");
    // lib.root_module.addCMacro("RANDOM_FILE", "\"/dev/urandom\"");
    // lib.root_module.addCMacro("RECV_TYPE_ARG1", "int");
    // lib.root_module.addCMacro("RECV_TYPE_ARG2", "void *");
    // lib.root_module.addCMacro("RECV_TYPE_ARG3", "size_t");
    // lib.root_module.addCMacro("RECV_TYPE_ARG4", "int");
    // lib.root_module.addCMacro("RECV_TYPE_RETV", "ssize_t");
    // lib.root_module.addCMacro("SEND_QUAL_ARG2", "const");
    // lib.root_module.addCMacro("SEND_TYPE_ARG1", "int");
    // lib.root_module.addCMacro("SEND_TYPE_ARG2", "void *");
    // lib.root_module.addCMacro("SEND_TYPE_ARG3", "size_t");
    // lib.root_module.addCMacro("SEND_TYPE_ARG4", "int");
    // lib.root_module.addCMacro("SEND_TYPE_RETV", "ssize_t");

    // var buf: [2]u8 = undefined;

    // lib.root_module.addCMacro(
    //     "SIZEOF_INT",
    //     try std.fmt.bufPrint(&buf, "{d}", .{target.result.c_type_byte_size(.int)}),
    // );
    // lib.root_module.addCMacro(
    //     "SIZEOF_SHORT",
    //     try std.fmt.bufPrint(&buf, "{d}", .{target.result.c_type_byte_size(.short)}),
    // );

    // const long = try std.fmt.bufPrint(&buf, "{d}", .{target.result.c_type_byte_size(.long)});
    // lib.root_module.addCMacro(
    //     "SIZEOF_LONG",
    //     long,
    // );
    // lib.root_module.addCMacro("SIZEOF_OFF_T", "8");
    // lib.root_module.addCMacro("SIZEOF_CURL_OFF_T", "8");
    // lib.root_module.addCMacro("SIZEOF_SIZE_T", "8");
    // lib.root_module.addCMacro("SIZEOF_TIME_T", "8");

    // lib.root_module.addCMacro("STDC_HEADERS", "1");
    // lib.root_module.addCMacro("TIME_WITH_SYS_TIME", "1");
    // lib.root_module.addCMacro("USE_THREADS_POSIX", "1");
    // lib.root_module.addCMacro("USE_UNIX_SOCKETS", "1");
    // lib.root_module.addCMacro("_FILE_OFFSET_BITS", "64");

    return lib;
}

const srcs = &.{
    "lib/ws.c",
    "lib/warnless.c",
    "lib/vtls/x509asn1.c",
    "lib/vtls/wolfssl.c",
    "lib/vtls/vtls_spack.c",
    "lib/vtls/vtls_scache.c",
    "lib/vtls/vtls.c",
    "lib/vtls/sectransp.c",
    "lib/vtls/schannel_verify.c",
    "lib/vtls/schannel.c",
    "lib/vtls/rustls.c",
    "lib/vtls/openssl.c",
    "lib/vtls/mbedtls_threadlock.c",
    "lib/vtls/mbedtls.c",
    "lib/vtls/keylog.c",
    "lib/vtls/hostcheck.c",
    "lib/vtls/gtls.c",
    "lib/vtls/cipher_suite.c",
    "lib/vtls/bearssl.c",
    "lib/vssh/wolfssh.c",
    "lib/vssh/libssh2.c",
    "lib/vssh/libssh.c",
    "lib/vssh/curl_path.c",
    "lib/vquic/vquic.c",
    "lib/vquic/vquic-tls.c",
    "lib/vquic/curl_quiche.c",
    "lib/vquic/curl_osslq.c",
    "lib/vquic/curl_ngtcp2.c",
    "lib/vquic/curl_msh3.c",
    "lib/version_win32.c",
    "lib/version.c",
    "lib/vauth/vauth.c",
    "lib/vauth/spnego_sspi.c",
    "lib/vauth/spnego_gssapi.c",
    "lib/vauth/oauth2.c",
    "lib/vauth/ntlm_sspi.c",
    "lib/vauth/ntlm.c",
    "lib/vauth/krb5_sspi.c",
    "lib/vauth/krb5_gssapi.c",
    "lib/vauth/gsasl.c",
    "lib/vauth/digest_sspi.c",
    "lib/vauth/digest.c",
    "lib/vauth/cram.c",
    "lib/vauth/cleartext.c",
    "lib/urlapi.c",
    "lib/url.c",
    "lib/transfer.c",
    "lib/timeval.c",
    "lib/timediff.c",
    "lib/tftp.c",
    "lib/telnet.c",
    "lib/system_win32.c",
    "lib/strtoofft.c",
    "lib/strtok.c",
    "lib/strparse.c",
    "lib/strerror.c",
    "lib/strdup.c",
    "lib/strcase.c",
    "lib/splay.c",
    "lib/speedcheck.c",
    "lib/socks_sspi.c",
    "lib/socks_gssapi.c",
    "lib/socks.c",
    "lib/socketpair.c",
    "lib/smtp.c",
    "lib/smb.c",
    "lib/slist.c",
    "lib/share.c",
    "lib/sha256.c",
    "lib/setopt.c",
    "lib/sendf.c",
    "lib/select.c",
    "lib/rtsp.c",
    "lib/request.c",
    "lib/rename.c",
    "lib/rand.c",
    "lib/psl.c",
    "lib/progress.c",
    "lib/pop3.c",
    "lib/pingpong.c",
    "lib/parsedate.c",
    "lib/openldap.c",
    "lib/noproxy.c",
    "lib/nonblock.c",
    "lib/netrc.c",
    "lib/multi.c",
    "lib/mqtt.c",
    "lib/mprintf.c",
    "lib/mime.c",
    "lib/memdebug.c",
    "lib/md5.c",
    "lib/md4.c",
    "lib/macos.c",
    "lib/llist.c",
    "lib/ldap.c",
    "lib/krb5.c",
    "lib/inet_pton.c",
    "lib/inet_ntop.c",
    "lib/imap.c",
    "lib/if2ip.c",
    "lib/idn.c",
    "lib/httpsrr.c",
    "lib/http_proxy.c",
    "lib/http_ntlm.c",
    "lib/http_negotiate.c",
    "lib/http_digest.c",
    "lib/http_chunks.c",
    "lib/http_aws_sigv4.c",
    "lib/http2.c",
    "lib/http1.c",
    "lib/http.c",
    "lib/hsts.c",
    "lib/hostsyn.c",
    "lib/hostip6.c",
    "lib/hostip4.c",
    "lib/hostip.c",
    "lib/hostasyn.c",
    "lib/hmac.c",
    "lib/headers.c",
    "lib/hash.c",
    "lib/gopher.c",
    "lib/getinfo.c",
    "lib/getenv.c",
    "lib/ftplistparser.c",
    "lib/ftp.c",
    "lib/formdata.c",
    "lib/fopen.c",
    "lib/fileinfo.c",
    "lib/file.c",
    "lib/escape.c",
    "lib/easyoptions.c",
    "lib/easygetopt.c",
    "lib/easy.c",
    "lib/dynhds.c",
    "lib/dynbuf.c",
    "lib/doh.c",
    "lib/dllmain.c",
    "lib/dict.c",
    "lib/cw-out.c",
    "lib/curl_trc.c",
    "lib/curl_threads.c",
    "lib/curl_sspi.c",
    "lib/curl_sha512_256.c",
    "lib/curl_sasl.c",
    "lib/curl_rtmp.c",
    "lib/curl_range.c",
    "lib/curl_ntlm_core.c",
    "lib/curl_multibyte.c",
    "lib/curl_memrchr.c",
    "lib/curl_gssapi.c",
    "lib/curl_gethostname.c",
    "lib/curl_get_line.c",
    "lib/curl_fnmatch.c",
    "lib/curl_endian.c",
    "lib/curl_des.c",
    "lib/curl_addrinfo.c",
    "lib/cookie.c",
    "lib/content_encoding.c",
    "lib/connect.c",
    "lib/conncache.c",
    "lib/cfilters.c",
    "lib/cf-socket.c",
    "lib/cf-https-connect.c",
    "lib/cf-haproxy.c",
    "lib/cf-h2-proxy.c",
    "lib/cf-h1-proxy.c",
    "lib/bufref.c",
    "lib/bufq.c",
    "lib/base64.c",
    "lib/asyn-thread.c",
    "lib/asyn-ares.c",
    "lib/amigaos.c",
    "lib/altsvc.c",
};
