//
// libcurl.dll curl network retrieval client library
//

// Build-time options (uncomment these to enable)
#define ENABLE_ZLIB     // Enable gzip/deflate decompression
//#define ENABLE_SSL      // Enable SSL for HTTPS/FTPS (requires S60 Open C SDK)

TARGET        libcurl.dll
TARGETTYPE    dll
UID    0x1000008d 0xF0206D00

MACRO       BUILDING_LIBCURL

#ifdef ENABLE_ZLIB
MACRO       HAVE_LIBZ
#endif
#ifdef ENABLE_SSL
MACRO       USE_OPENSSL
#endif

SOURCEPATH  ../../../lib
SOURCE \
  file.c timeval.c base64.c hostip.c progress.c formdata.c             \
  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c      \
  ldap.c vtls/openssl.c version.c getenv.c escape.c mprintf.c telnet.c \
  netrc.c getinfo.c transfer.c strequal.c easy.c security.c krb4.c     \
  curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c          \
  memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c multi.c   \
  content_encoding.c share.c http_digest.c md4.c md5.c curl_rand.c     \
  http_negotiate.c inet_pton.c strtoofft.c strerror.c amigaos.c        \
  hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c     \
  select.c vtls/gtls.c vtls/vtls.c tftp.c splay.c strdup.c socks.c     \
  ssh.c vtls/nss.c strcase.c curl_addrinfo.c socks_gssapi.c             \
  socks_sspi.c curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c    \
  pop3.c smtp.c pingpong.c rtsp.c curl_threads.c warnless.c hmac.c     \
  vtls/polarssl.c curl_rtmp.c openldap.c curl_gethostname.c gopher.c   \
  vtls/axtls.c idn_win32.c vtls/cyassl.c http_proxy.c non-ascii.c      \
  asyn-ares.c asyn-thread.c curl_gssapi.c http_ntlm.c curl_ntlm_wb.c   \
  curl_ntlm_core.c curl_sasl.c vtls/schannel.c curl_multibyte.c        \
  vtls/darwinssl.c conncache.c curl_sasl_sspi.c smb.c curl_endian.c    \
  curl_des.c system_win32.c                                            \
  vauth/vauth.c vauth/cleartext.c vauth/cram.c vauth/digest.c          \
  vauth/digest_sspi.c vauth/krb5_gssapi.c vauth/krb5_sspi.c            \
  vauth/ntlm.c vauth/ntlm_sspi.c vauth/oauth2.c vauth/spnego_gssapi.c  \
  vauth/spnego_sspi.c

USERINCLUDE   ../../../lib ../../../include/curl
#ifdef ENABLE_SSL
SYSTEMINCLUDE /epoc32/include/osextensions/stdapis
// Older versions of the SDK need this instead:
//USERINCLUDE /epoc32/include/stdapis/openssl
#endif

SYSTEMINCLUDE ../../../include /epoc32/include/stdapis /epoc32/include

LIBRARY       euser.lib libc.lib
#ifdef ENABLE_ZLIB
LIBRARY       ezlib.lib
#endif
#ifdef ENABLE_SSL
LIBRARY       libssl.lib libcrypto.lib
#endif

CAPABILITY NetworkServices

EPOCALLOWDLLDATA
