//
// 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_SSLEAY
#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 ssluse.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 curl_ntlm_msgs.c inet_pton.c strtoofft.c strerror.c	\
  hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c	\
  select.c gtls.c sslgen.c tftp.c splay.c strdup.c socks.c ssh.c nss.c	\
  qssl.c rawstr.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 polarssl.c		\
  curl_rtmp.c openldap.c curl_gethostname.c gopher.c axtls.c		\
  idn_win32.c http_negotiate_sspi.c cyassl.c http_proxy.c non-ascii.c	\
  asyn-ares.c asyn-thread.c curl_ntlm.c curl_ntlm_wb.c curl_ntlm_core.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
