SUMMARY="A commandline-tool and library for downloading data from URLs"
DESCRIPTION="Curl is a command line tool for transferring data with URL \
syntax, supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, \
LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP.
curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form \
based upload, proxies, cookies, user+password authentication (Basic, Digest, \
NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a \
busload of other useful tricks."
HOMEPAGE="https://curl.haxx.se/"
COPYRIGHT="1996-2021 Daniel Stenberg"
LICENSE="Curl"
REVISION="1"
SOURCE_URI="https://curl.haxx.se/download/curl-$portVersion.tar.bz2"
CHECKSUM_SHA256="1e7a38d7018ec060f1f16df839854f0889e94e122c4cfa5d3a37c2dc56f1e258"
ADDITIONAL_FILES="curl.rdef"

ARCHITECTURES="all ?arm ?ppc"
SECONDARY_ARCHITECTURES="x86_gcc2 x86"

libVersion="4.7.0"
libVersionCompat="$libVersion compat >= ${libVersion%%.*}"
portVersionCompat="$portVersion compat >= 7.16"

PROVIDES="
	curl$secondaryArchSuffix = $portVersion
	lib:libcurl$secondaryArchSuffix = $libVersionCompat
	cmd:curl$secondaryArchSuffix = $portVersionCompat
	"
REQUIRES="
	haiku$secondaryArchSuffix
	ca_root_certificates
	lib:libnghttp2$secondaryArchSuffix
	lib:libssh2$secondaryArchSuffix
	lib:libssl$secondaryArchSuffix
	lib:libz$secondaryArchSuffix
	"

PROVIDES_devel="
	curl${secondaryArchSuffix}_devel = $portVersion
	cmd:curl_config$secondaryArchSuffix = $portVersionCompat
	devel:libcurl$secondaryArchSuffix = $libVersionCompat
	"
REQUIRES_devel="
	curl$secondaryArchSuffix == $portVersion base
	devel:libnghttp2$secondaryArchSuffix
	devel:libssl$secondaryArchSuffix
	devel:libz$secondaryArchSuffix
	"

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	devel:libnghttp2$secondaryArchSuffix
	devel:libssh2$secondaryArchSuffix
	devel:libssl$secondaryArchSuffix
	devel:libz$secondaryArchSuffix
	"
BUILD_PREREQUIRES="
	cmd:aclocal
	cmd:autoconf
	cmd:automake
	cmd:autoheader
	cmd:cut
	cmd:gcc$secondaryArchSuffix
	cmd:ld$secondaryArchSuffix
	cmd:libtoolize$secondaryArchSuffix
	cmd:make
	cmd:nroff
	cmd:pkg_config$secondaryArchSuffix
	cmd:sed
	"

TEST_REQUIRES="
	cmd:id
	cmd:perl
	cmd:python3
	cmd:sftp_server
	cmd:sshd
	"

defineDebugInfoPackage curl$secondaryArchSuffix \
	$binDir/curl \
	$libDir/libcurl.so.$libVersion

BUILD()
{
	certsInstallDir="$portPackageLinksDir/ca_root_certificates"
	certsDir="$certsInstallDir/$relativeDataRootDir/ssl"

	autoreconf -vfi
	autoconf
	CPPFLAGS=-D_BSD_SOURCE runConfigure ./configure \
		--enable-ipv6 --enable-manual \
		--with-openssl --with-libssh2 \
		--with-ca-bundle="$certsDir/CARootCertificates.pem"
	make $jobArgs
}

INSTALL()
{
	make install

	# remove libtool file
	rm $libDir/libcurl.la

	local MAJOR="`echo "$portVersion" | cut -d. -f1`"
	local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
	local MINOR="`echo "$portVersion" | cut -d. -f3`"
	sed \
		-e "s|@MAJOR@|$MAJOR|" \
		-e "s|@MIDDLE@|$MIDDLE|" \
		-e "s|@MINOR@|$MINOR|" \
		$portDir/additional-files/curl.rdef > curl.rdef

	addResourcesToBinaries curl.rdef \
		$binDir/curl

	# prepare develop/lib
	prepareInstalledDevelLib libcurl
	fixPkgconfig

	# fix curl-config
	fixDevelopLibDirReferences $binDir/curl-config
	sed -i \
		-e "s,--libexecdir=$developLibDir,--libexecdir=$libExecDir,g" \
		-e "s,--libdir=$developLibDir,--libdir=$libDir,g" \
		$binDir/curl-config

	if [ -n "$secondaryArchSuffix" ]; then
		maybe_manDir_man1_curl_config=
		maybe_manDir_man3=
	else
		maybe_manDir_man1_curl_config=$manDir/man1/curl-config.1
		maybe_manDir_man3=$manDir/man3
	fi

	# devel package
	packageEntries devel \
		$binDir/curl-config \
		$dataDir/aclocal \
		$developDir \
		$maybe_manDir_man1_curl_config \
		$maybe_manDir_man3

	# Remove stuff we don't need in the secondary architecture base package.
	if [ -n "$secondaryArchSuffix" ]; then
		rm -rf $documentationDir
	fi
}

TEST()
{
	PATH="`finddir B_SYSTEM_LIB_DIRECTORY`/openssh:$PATH" \
	USER="`id -n -u`" make check
}
