SET(LIB_NAME libcurl)
IF(CURL_STATICLIB)
	SET(CURL_USER_DEFINED_DYNAMIC_OR_STATIC STATIC)
ELSE()
	SET(CURL_USER_DEFINED_DYNAMIC_OR_STATIC SHARED)
ENDIF()

SET(HEADERS
	${CURL_CONFIG_HEADER}
	arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h
	progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h
	if2ip.h speedcheck.h urldata.h curl_ldap.h ssluse.h escape.h telnet.h
	getinfo.h strequal.h krb4.h memdebug.h http_chunks.h
	strtok.h connect.h llist.h hash.h content_encoding.h share.h
	curl_md5.h http_digest.h http_negotiate.h http_ntlm.h inet_pton.h
	strtoofft.h strerror.h inet_ntop.h curlx.h memory.h setup.h
	transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h
	tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h
	curl_base64.h rawstr.h curl_addrinfo.h curl_sspi.h
)

SET(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
	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 md5.c
	http_negotiate.c http_ntlm.c inet_pton.c strtoofft.c strerror.c
	hostares.c hostasyn.c hostip4.c hostip6.c hostsyn.c hostthre.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
)

IF(MSVC)
	LIST(APPEND SOURCE libcurl.rc)
ENDIF()

ADD_LIBRARY(
	${LIB_NAME}
	${CURL_USER_DEFINED_DYNAMIC_OR_STATIC}
    ${HEADERS}
	${SOURCE}
)


# Setup dependencies

SET(DEPENDENCIES_NAMES )

IF(UNIX)
	LIST(APPEND DEPENDENCIES_NAMES MATH_LIBRARY)
ENDIF()

IF(WIN32)
	ADD_DEFINITIONS( -D_USRDLL )
ENDIF()

IF(CURL_ZLIB AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
	LIST(APPEND DEPENDENCIES_NAMES ZLIB)
	ADD_DEFINITIONS( -DHAVE_ZLIB_H -DHAVE_ZLIB -DHAVE_LIBZ )
ENDIF()
IF(CURL_SSL AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
	LIST(APPEND DEPENDENCIES_NAMES OpenSSL)
	ADD_DEFINITIONS( -DUSE_SSLEAY )
ENDIF()

IF(NOT CURL_STATICLIB)
	# DLL / so dynamic lib
	#ADD_DEFINITIONS( -DCURL_DYNAMICLIB )
	LINK_WITH_VARIABLES( ${LIB_NAME} ${DEPENDENCIES_NAMES} )
ELSE()
	# Static lib
	ADD_DEFINITIONS( -DCURL_STATICLIB )
	INCLUDE_WITH_VARIABLES( ${LIB_NAME} ${DEPENDENCIES_NAMES} )
ENDIF()

ADD_DEFINITIONS(
	-DBUILDING_LIBCURL
	#-DHAVE_CONFIG_H
)

################################################################################
# Configuration
# TODO: REPLACE THIS WITH A GENERATED HEADER #

IF(WIN32 AND CURL_WINDOWS_SSPI)
	ADD_DEFINITIONS( -DUSE_WINDOWS_SSPI )
ENDIF()
IF (HTTP_ONLY)
	ADD_DEFINITIONS( -DHTTP_ONLY )
ENDIF()
IF (CURL_DISABLE_FTP)
	ADD_DEFINITIONS( -DCURL_DISABLE_FTP )
ENDIF()
IF (CURL_DISABLE_LDAP)
	ADD_DEFINITIONS( -DCURL_DISABLE_LDAP )
ENDIF()
IF (CURL_DISABLE_TELNET)
	ADD_DEFINITIONS( -DCURL_DISABLE_TELNET )
ENDIF()
IF (CURL_DISABLE_DICT)
	ADD_DEFINITIONS( -DCURL_DISABLE_DICT )
ENDIF()
IF (CURL_DISABLE_FILE)
	ADD_DEFINITIONS( -DCURL_DISABLE_FILE )
ENDIF()
IF (CURL_DISABLE_TFTP)
	ADD_DEFINITIONS( -DCURL_DISABLE_TFTP )
ENDIF()
IF (CURL_DISABLE_HTTP)
	ADD_DEFINITIONS( -DCURL_DISABLE_HTTP )
ENDIF()

################################################################################

#SET_TARGET_PROPERTIES(${LIB_NAME} ARCHIVE_OUTPUT_DIRECTORY "blah blah blah")
#SET_TARGET_PROPERTIES(${LIB_NAME} RUNTIME_OUTPUT_DIRECTORY "blah blah blah")
#SET_TARGET_PROPERTIES(${LIB_NAME} LIBRARY_OUTPUT_DIRECTORY "blah blah blah")

IF(MSVC)
	IF(NOT BUILD_RELEASE_DEBUG_DIRS)
		# Ugly workaround to remove the "/debug" or "/release" in each output
		SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES PREFIX "../")
		SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES IMPORT_PREFIX "../")
	ENDIF()
	# Add "_imp" as a suffix before the extension
	SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES IMPORT_SUFFIX "_imp.lib")
ENDIF()

#INCLUDE(ModuleInstall OPTIONAL)
