# This file contains setup for features that can optionally be used for the
# build. For features that require downloading a zip file from somewhere it is
# likely the same file use for an optional package.


# SSL

# Automatically enable the SSL feature, when the optional OpenSSL optional
# package is enabled.
if [ IsOptionalHaikuImagePackageAdded OpenSSL ] {
	HAIKU_BUILD_FEATURE_SSL = 1 ;
}

if $(HAIKU_GCC_VERSION[1]) >= 4 {
	HAIKU_OPENSSL_PACKAGE = openssl-1.0.0d-r1a3-x86-gcc4-2011-05-20.zip ;
} else {
	HAIKU_OPENSSL_PACKAGE = openssl-1.0.0d-r1a3-x86-gcc2-2011-05-17.zip ;
}

local baseURL = http://haiku-files.org/files/optional-packages ;
HAIKU_OPENSSL_URL = $(baseURL)/$(HAIKU_OPENSSL_PACKAGE) ;

if $(HAIKU_BUILD_FEATURE_SSL) {
	if $(TARGET_ARCH) != x86 {
		Echo "SSL build feature not available for $(TARGET_ARCH)" ;
	} else {
		# Download the zip archive.
		local zipFile = [ DownloadFile $(HAIKU_OPENSSL_PACKAGE)
			: $(HAIKU_OPENSSL_URL) ] ;

		# zip file and output directory
		HAIKU_OPENSSL_ZIP_FILE = $(zipFile) ;
		HAIKU_OPENSSL_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
			$(HAIKU_OPENSSL_PACKAGE:B) ] ;

		# extract headers and libraries
		HAIKU_OPENSSL_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_OPENSSL_DIR)
			: common/include/ : $(zipFile)
		] ;

		HAIKU_OPENSSL_LIBS = [ ExtractArchive $(HAIKU_OPENSSL_DIR)
			:
			common/lib/libcrypto.so
			common/lib/libssl.so
			: $(zipFile)
		] ;

		HAIKU_OPENSSL_ENABLED = 1 ;
		HAIKU_OPENSSL_HEADERS
			= [ FDirName $(HAIKU_OPENSSL_DIR) common include ] ;
	}
}


# ICU

# Note ICU isn't actually optional, but is still an external package
HAIKU_ICU_GCC_2_PACKAGE = icu-4.4.1-r1a3-x86-gcc2-2011-05-29.zip ;
HAIKU_ICU_GCC_4_PACKAGE = icu-4.4.1-r1a3-x86-gcc4-2011-05-29.zip ;
HAIKU_ICU_PPC_PACKAGE = icu-4.4.1-ppc-2010-08-17.zip ;
HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.4.1-2010-07-26.zip ;

if $(TARGET_ARCH) = ppc {
	local icu_package = $(HAIKU_ICU_PPC_PACKAGE) ;
	local zipFile = [ DownloadFile $(icu_package)
		: $(baseURL)/$(icu_package) ] ;

	# zip file and output directory
	HAIKU_ICU_ZIP_FILE = $(zipFile) ;
	HAIKU_ICU_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
		$(icu_package:B) ] ;

	# extract libraries
	HAIKU_ICU_LIBS = [ ExtractArchive $(HAIKU_ICU_DIR)
		:
		libicudata.so.44.1
		libicui18n.so.44.1
		libicuio.so.44.1
		libicule.so.44.1
		libiculx.so.44.1
		libicutu.so.44.1
		libicuuc.so.44.1
		: $(zipFile)
	] ;
} else if $(TARGET_ARCH) != x86 {
	Echo "ICU not available for $(TARGET_ARCH)" ;
} else {
	local icu_package ;
	if $(HAIKU_GCC_VERSION[1]) = 2 {
		icu_package = $(HAIKU_ICU_GCC_2_PACKAGE) ;
	} else {
		icu_package = $(HAIKU_ICU_GCC_4_PACKAGE) ;
	}

	local zipFile = [ DownloadFile $(icu_package)
		: $(baseURL)/$(icu_package) ] ;

	# zip file and output directory
	HAIKU_ICU_ZIP_FILE = $(zipFile) ;
	HAIKU_ICU_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
		$(icu_package:B) ] ;

	# extract libraries
	HAIKU_ICU_LIBS = [ ExtractArchive $(HAIKU_ICU_DIR)
		:
		libicudata.so.44
		libicui18n.so.44
		libicuio.so.44
		libicule.so.44
		libiculx.so.44
		libicutu.so.44
		libicuuc.so.44
		: $(zipFile)
	] ;
}


# zip file and output directory
HAIKU_ICU_DEVEL_ZIP_FILE = [ DownloadFile $(HAIKU_ICU_DEVEL_PACKAGE)
		: $(baseURL)/$(HAIKU_ICU_DEVEL_PACKAGE) ] ;
HAIKU_ICU_DEVEL_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
	$(HAIKU_ICU_DEVEL_PACKAGE:B) ] ;

# extract headers
HAIKU_ICU_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_ICU_DEVEL_DIR)
	: develop/headers/3rdparty : $(HAIKU_ICU_DEVEL_ZIP_FILE) ] ;

HAIKU_ICU_HEADERS
	= [ FDirName $(HAIKU_ICU_DEVEL_DIR) develop headers 3rdparty ] ;


# CLucene

# Automatically install the CLucene feature, when the optional CLucene optional
# package is enabled.
if [ IsOptionalHaikuImagePackageAdded CLucene ] {
	HAIKU_BUILD_FEATURE_CLUCENE = 1 ;
}

local baseURL = http://haiku-files.org/files/optional-packages ;
HAIKU_CLUCENE_PACKAGE = clucene-0.9.21-x86-gcc4-haiku-2009-08-11.zip ;
HAIKU_CLUCENE_URL = $(baseURL)/$(HAIKU_CLUCENE_PACKAGE) ;

if $(HAIKU_BUILD_FEATURE_CLUCENE) {
	if $(TARGET_ARCH) != x86 {
		Echo "CLucene build feature not available for $(TARGET_ARCH)" ;
	} else {
		# Download the zip archive.
		local zipFile = [ DownloadFile $(HAIKU_CLUCENE_PACKAGE)
			: $(HAIKU_CLUCENE_URL) ] ;

		# zip file and output directory
		HAIKU_CLUCENE_ZIP_FILE = $(zipFile) ;
		HAIKU_CLUCENE_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
			$(HAIKU_CLUCENE_PACKAGE:B) ] ;

		# extract headers and libraries
		HAIKU_CLUCENE_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_CLUCENE_DIR)
			: common/include/ : $(zipFile)
		] ;

		HAIKU_CLUCENE_LIBS = [ ExtractArchive $(HAIKU_CLUCENE_DIR)
			:
			common/lib/libclucene.a
			: $(zipFile)
		] ;

		HAIKU_CLUCENE_HEADERS
			= [ FDirName $(HAIKU_CLUCENE_DIR) common include ] ;
	}
}


# TagLib

# Automatically install the TagLib feature, when the optional TagLib optional
# package is enabled.
if [ IsOptionalHaikuImagePackageAdded TagLib ] {
	HAIKU_BUILD_FEATURE_TAGLIB = 1 ;
}

local baseURL = http://haiku-files.org/files/optional-packages ;
HAIKU_TAGLIB_PACKAGE = taglib-1.6.3-r1a2-x86-gcc2-2010-04-25.zip ;
HAIKU_TAGLIB_URL = $(baseURL)/$(HAIKU_TAGLIB_PACKAGE) ;

if $(HAIKU_BUILD_FEATURE_TAGLIB) {
	if $(TARGET_ARCH) != x86 {
		Echo "TagLib build feature not available for $(TARGET_ARCH)" ;
	} else {
		# Download the zip archive.
		local zipFile = [ DownloadFile $(HAIKU_TAGLIB_PACKAGE)
			: $(HAIKU_TAGLIB_URL) ] ;

		# zip file and output directory
		HAIKU_TAGLIB_ZIP_FILE = $(zipFile) ;
		HAIKU_TAGLIB_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
			$(HAIKU_TAGLIB_PACKAGE:B) ] ;

		# extract headers and libraries
		HAIKU_TAGLIB_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_TAGLIB_DIR)
			: common/include/ : $(zipFile)
		] ;

		HAIKU_TAGLIB_LIBS = [ ExtractArchive $(HAIKU_TAGLIB_DIR)
			:
			common/lib/libtag.so
			common/lib/libtag_c.so
			: $(zipFile)
		] ;

		HAIKU_TAGLIB_HEADERS
			= [ FDirName $(HAIKU_TAGLIB_DIR) common include taglib ] ;
	}
}

