# This file defines the optional packages that can be added to the Haiku image.
# It is directly included from HaikuImage -- all variables defined there can
# be used

# Detect a hybrid GCC2/GCC4 image and disable the checks for unavailable GCC4
# packages. (It does not matter if a package was built with either compiler,
# the system should have the respective other system libs.)
local isHybridBuild ;
if $(HAIKU_ADD_ALTERNATIVE_GCC_LIBS) && $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) {
	isHybridBuild = 1 ;
}


# Available Optional Packages:
#	APR					- support libraries used for example by Subversion
#	APR-util
#	Beam				- powerful native e-mail client
#	BeBook				- the classic BeOS API documentation
#	BeHappy				- special documentation (i.e. BeBook) browser
#	BeOSCompatibility	- creates links within the system to support old apps
#	BePDF				- native PDF reader
#	Bluetooth			- experimental Haiku components for Bluetooth
#	CDRecord			- the command line CD writing tools
#	Clockwerk			- native audio/video compositing
#	CLucene				- indexed file search
#	Curl				- a client that groks URLs
#	CVS					- the version control system
#	Development			- more complete dev environment (including autotools)
#	DevelopmentBase		- basic development environment (gcc, headers, libs,...)
#	DevelopmentMin		- development headers, libs, tools, from sources only
#	Expat				- XML parsing libraries
#	Firefox				- the webbrowser
#	Git					- the distributed version control system
#	KeymapSwitcher		- Desktop utility
#	LibIconv			- text encoding conversion library
#	LibLayout			- GCC2 package needed by some BeOS apps to compile
#	LibXML2				- the XML support libary
#	Links				- the web browser
#	Mercurial			- the distributed version control system
#	Nano				- the command line text editor
#	Neon				- support libraries used for example by SVN
#	NetSurf				- the web browser
#	OpenSound			- additional audio driver package
#	OpenSSH				- the secure shell
#	OpenSSL				- secure sockets library
#	P7zip				- file archiving utility
#	Pe					- the powerful native Programmer's Editor
#	Perl				- the scripting language
#	Python				- the scripting language
#	Rsync				- remote directory synchronization
#	SQLite				- the database implementation
#	Subversion			- the version control system
#	Tar					- archiving utility
#	UserlandFS			- aids native file system development (like FUSE)
#	Vim					- the command line text editor
#	Vision				- powerful native IRC client
#	VLC					- the multi media player with native interface
#	Welcome				- introductory documentation to Haiku
#	WonderBrush			- native graphics application
#	Yasm				- the assembler utility


rule ObsoleteOptionalPackageWarning package
{
	Echo "WARNING: Optional package $(package) needs to be rebuilt for"
		"Haiku R1 alpha 1!" ;
}

rule IsObsoleteOptionalHaikuImagePackageAdded package
{
	if [ IsOptionalHaikuImagePackageAdded $(package) ] {
		ObsoleteOptionalPackageWarning $(package) ;
		return 1 ;
	}

	return ;
}


local baseURL = http://haiku-files.org/files/optional-packages ;


# APR
if [ IsOptionalHaikuImagePackageAdded APR ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package APR available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage apr-1.3.8-r1a1-x86-gcc2-2009-08-29
			: $(baseURL)/apr-1.3.8-r1a1-x86-gcc2-2009-08-29.zip
			:
			: true
		;
	}
}


# APR-util
if [ IsOptionalHaikuImagePackageAdded APR-util ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package APR-util available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage apr-util-1.3.9-r1a1-x86-gcc2-2009-08-29
			: $(baseURL)/apr-util-1.3.9-r1a1-x86-gcc2-2009-08-29.zip
			:
			: true
		;
	}
}


# Beam
if [ IsObsoleteOptionalHaikuImagePackageAdded Beam ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Beam available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package Beam available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage Beam-1.1.2
			: $(baseURL)/Beam-1.1.2-x86-gcc2-2008-03-27.zip
			: apps
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/beam-1-1-2-r5-with-libs/Beam ;
	}
}


# BeBook
if [ IsOptionalHaikuImagePackageAdded BeBook ] {
	InstallOptionalHaikuImagePackage bebook_20081026
		: $(baseURL)/bebook_20081026.zip
		: system documentation
	;
	AddSymlinkToHaikuImage home Desktop
		: /boot/system/documentation/bebook/index.html : BeBook ;
}


# BeHappy
if [ IsObsoleteOptionalHaikuImagePackageAdded BeHappy ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package BeHappy available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package BeHappy available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage BeHappy-1.0.6-x86-gcc2-2008-10-16
			: $(baseURL)/BeHappy-1.0.6-x86-gcc2-2008-10-16.zip
			:
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/BeHappy/BeHappy ;
	}
}


# BeOSCompatibility
if [ IsOptionalHaikuImagePackageAdded BeOSCompatibility ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package BeOSCompatibility available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package BeOSCompatibility available for gcc4" ;
	} else {
		Echo "Warning: Adding BeOS compatibility symlinks. This will go away. Please fix your apps!" ;
		AddSymlinkToHaikuImage beos : ../system/apps ;
		AddSymlinkToHaikuImage beos : ../system/bin ;
		AddSymlinkToHaikuImage beos : ../system/documentation ;
		AddSymlinkToHaikuImage beos : ../system/etc ;
		AddSymlinkToHaikuImage beos : ../system/preferences ;
		AddSymlinkToHaikuImage beos : ../system ;
	}
}


# BePDF
if [ IsOptionalHaikuImagePackageAdded BePDF ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package BePDF available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package BePDF available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage BePDF-1.1.1b2-r1a1-x86-gcc2-2009-09-03
			: $(baseURL)/BePDF-1.1.1b2-r1a1-x86-gcc2-2009-09-03.zip
			: apps
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/BePDF/BePDF ;
	}
}


# Bluetooth stack
if [ IsOptionalHaikuImagePackageAdded Bluetooth ] {
	local bluetoothDrivers = h2generic ;
	AddDriversToHaikuImage bluetooth : $(bluetoothDrivers) ;
	AddFilesToHaikuImage system servers : bluetooth_server ;
	AddFilesToHaikuImage system lib : libbluetooth.so ;
	AddFilesToHaikuImage system add-ons kernel network devices : bluetooth ;
	AddFilesToHaikuImage system add-ons kernel network protocols : l2cap ;
	AddFilesToHaikuImage system add-ons kernel bluetooth : btCoreData ;
	AddFilesToHaikuImage system preferences : Bluetooth ;
	AddFilesToHaikuImage system bin : bt_dev_info bt_discovery ;
	AddSymlinkToHaikuImage home config be Preferences
		: /boot/system/preferences/Bluetooth ;
	if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ]
		&& $(HAIKU_GCC_VERSION[1]) in 2 4 {
		local arch = $(TARGET_ARCH) ;
		local abi = gcc$(HAIKU_GCC_VERSION[1]) ;
		AddSymlinkToHaikuHybridImage develop abi $(arch) $(abi) lib
			: /system/lib libbluetooth.so : : true ;
	}
}


# CDRecord
if [ IsOptionalHaikuImagePackageAdded CDRecord ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package CDRecord available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage cdrecord-2.01.01a63-r1a1-x86-gcc2-2009-08-28
			: $(baseURL)/cdrecord-2.01.01a63-r1a1-x86-gcc2-2009-08-28.zip
			:
		;
	}
}


# Clockwerk
if [ IsObsoleteOptionalHaikuImagePackageAdded Clockwerk ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Clockwerk available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 {
		InstallOptionalHaikuImagePackage Clockwerk-0.0.1-x86-gcc4-2009-08-06
			: $(baseURL)/Clockwerk-0.0.1-x86-gcc4-2009-08-06.zip
			:
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/Clockwerk/Clockwerk ;
	} else {
		InstallOptionalHaikuImagePackage Clockwerk-0.0.1-x86-gcc2-2009-08-06
			: $(baseURL)/Clockwerk-0.0.1-x86-gcc2-2009-08-06.zip
			:
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/Clockwerk/Clockwerk ;
	}
}


# CLucene
if [ IsObsoleteOptionalHaikuImagePackageAdded CLucene ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package CLucene available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) < 4 && ! $(isHybridBuild) {
		Echo "No optional package CLucene available for GCC2" ;
	} else {
		InstallOptionalHaikuImagePackage
			clucene-0.9.21svn-x86-gcc4-haiku-2009-08-11
			: $(baseURL)/clucene-0.9.21-x86-gcc4-haiku-2009-08-11.zip
			:
			: true
		;
	}
}


# Curl
if [ IsOptionalHaikuImagePackageAdded Curl ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Curl available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage curl-7.19.6-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/curl-7.19.6-r1a1-x86-gcc2-2009-08-30.zip
			:
			: true
		;
	}
}


# CVS
if [ IsOptionalHaikuImagePackageAdded CVS ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package CVS available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage cvs-1.12.13-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/cvs-1.12.13-r1a1-x86-gcc2-2009-08-30.zip
			:
			: true
		;
	}
}


# Development
if [ IsOptionalHaikuImagePackageAdded Development ] && $(TARGET_ARCH) = x86 {
	# autotools
	InstallOptionalHaikuImagePackage autoconf-2.64-r1a1-x86-gcc2-2009-08-27
		: $(baseURL)/autoconf-2.64-r1a1-x86-gcc2-2009-08-27.zip
		:
		: true ;
	InstallOptionalHaikuImagePackage automake-1.11-r1a1-x86-gcc2-2009-08-27
		: $(baseURL)/automake-1.11-r1a1-x86-gcc2-2009-08-27.zip
		:
		: true ;
	InstallOptionalHaikuImagePackage libtool-2.2.6a-r1a1-x86-gcc2-2009-08-28
		: $(baseURL)/libtool-2.2.6a-r1a1-x86-gcc2-2009-08-28.zip
		:
		: true ;
	InstallOptionalHaikuImagePackage texinfo-4.13a-r1a1-x86-gcc2-2009-08-30
		: $(baseURL)/texinfo-4.13a-r1a1-x86-gcc2-2009-08-30.zip
		:
		: true ;
}


# DevelopmentBase
if [ IsOptionalHaikuImagePackageAdded DevelopmentBase ]
		&& $(TARGET_ARCH) = x86 {
	# gcc and binutils
	if $(HAIKU_GCC_VERSION[1]) = 2 || $(isHybridBuild) {
		InstallOptionalHaikuImagePackage gcc-2.95.3-r1a1-x86-gcc2-2009-08-26
			: $(baseURL)/gcc-2.95.3-r1a1-x86-gcc2-2009-08-26.zip ;
	}

	if $(HAIKU_GCC_VERSION[1]) = 4 || $(isHybridBuild) {
		InstallOptionalHaikuImagePackage gcc-4.3.3-r1a1-x86-gcc4-2009-06-29
			: $(baseURL)/gcc-4.3.3-r1a1-x86-gcc4-2009-06-29.zip ;

		# symlink cpp to g++'s headers
		AddSymlinkToHaikuImage develop abi x86 gcc4 headers
			: ../tools/current/include/g++ : cpp ;
	}

	# other commonly used tools
	InstallOptionalHaikuImagePackage bison-2.4.1-r1a1-x86-gcc2-2009-08-31
		: $(baseURL)/bison-2.4.1-r1a1-x86-gcc2-2009-08-31.zip ;
	InstallOptionalHaikuImagePackage m4-1.4.13-r1a1-x86-gcc2-2009-08-28
		: $(baseURL)/m4-1.4.13-r1a1-x86-gcc2-2009-08-28.zip ;
	InstallOptionalHaikuImagePackage flex-2.5.35-r1a1-x86-gcc2-2009-08-31
		: $(baseURL)/flex-2.5.35-r1a1-x86-gcc2-2009-08-31.zip ;
	InstallOptionalHaikuImagePackage jam-2.5-r1a1-x86-gcc2-2009-08-31
		: $(baseURL)/jam-2.5-r1a1-x86-gcc2-2009-08-31.zip ;

}


# DevelopmentMin
if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] && $(TARGET_ARCH) = x86 {
	if ! ( $(HAIKU_GCC_VERSION[1]) in 2 4 ) {
		Exit "Optional package DevelopmentMin: Unsupported GCC version:"
			$(HAIKU_GCC_VERSION[1]) ;
	}

	local arch = $(TARGET_ARCH) ;
	local abi = gcc$(HAIKU_GCC_VERSION[1]) ;
	local abiDirTokens = develop abi $(arch) $(abi) ;

	# glue code
	AddFilesToHaikuHybridImage $(abiDirTokens) lib :
		<src!system!glue!arch!$(arch)>crti.o
		<src!system!glue!arch!$(arch)>crtn.o
		<src!system!glue>init_term_dyn.o
		<src!system!glue>start_dyn.o
		<src!system!glue>haiku_version_glue.o
	;

	# kernel
	AddFilesToHaikuHybridImage $(abiDirTokens) lib : kernel.so : _KERNEL_ ;

	# library symlinks
	local lib ;
	for lib in $(SYSTEM_LIBS) $(SYSTEM_LIBS_LIBGL_ALIASES) {
		AddSymlinkToHaikuHybridImage $(abiDirTokens) lib
			: /system/lib $(lib:BS) : : true ;
	}

	# static libraries
	AddFilesToHaikuHybridImage $(abiDirTokens) lib : libncurses.a ;

	# the POSIX error code mapper library
	AddFilesToHaikuHybridImage $(abiDirTokens) lib : libposix_error_mapper.a ;

	# symlinks for ABI abstraction
	AddSymlinkToHaikuImage develop abi : $(arch)/$(abi) : current ;
	AddSymlinkToHaikuImage develop lib : /boot/develop/abi/current/lib
		: $(arch) ;
	AddSymlinkToHaikuImage develop tools
		: /boot/develop/abi/current/tools/current : gnupro ;
	AddSymlinkToHaikuImage develop headers
		: /boot/develop/abi/current/headers/cpp ;
	AddSymlinkToHaikuHybridImage $(abiDirTokens) library-paths
		: /boot/common/lib : common : true ;
	AddSymlinkToHaikuHybridImage $(abiDirTokens) library-paths
		: /boot/home/config/lib : home : true ;

	# ABI independent stuff

	# scripts: cc and c++ wrapper, freetype-config, setgcc
	local scripts = cc c++ freetype-config setgcc ;
	SEARCH on $(scripts) = [ FDirName $(HAIKU_TOP) data bin ] ;
	AddFilesToHaikuImage system bin : $(scripts) ;

	# make and mkdepend build tool, which are part of the Haiku source tree
	# TODO: Both should be removed from the tree, made download packages
	# and moved to the DevelopmentBase package.
	AddFilesToHaikuImage system bin : make mkdepend ;

	# skeleton makefile and makefile-engine
	local makefileEngineFiles =
		<makefile-engine>makefile
		<makefile-engine>makefile-engine
	;
	SEARCH on $(makefileEngineFiles)
		= [ FDirName $(HAIKU_TOP) data develop ] ;
	AddFilesToHaikuImage develop etc : $(makefileEngineFiles) ;

	# headers
	AddHeaderDirectoryToHaikuImage glibc ;
	AddHeaderDirectoryToHaikuImage os ;
	AddHeaderDirectoryToHaikuImage posix ;

	# create be -> os symlink for now
	AddSymlinkToHaikuImage develop headers : os : be ;

	# BSD and GNU compatibility headers
	AddHeaderDirectoryToHaikuImage compatibility bsd : bsd ;
	AddHeaderDirectoryToHaikuImage compatibility gnu : gnu ;

	# third party libs headers
	AddHeaderDirectoryToHaikuImage libs freetype2 : 3rdparty ;
	AddHeaderDirectoryToHaikuImage libs jpeg : 3rdparty ;
	AddHeaderDirectoryToHaikuImage libs ncurses : 3rdparty ;
	AddHeaderDirectoryToHaikuImage libs png : 3rdparty ;
	AddHeaderDirectoryToHaikuImage libs termcap : 3rdparty ;
	AddHeaderDirectoryToHaikuImage libs zlib : 3rdparty ;

	# cpp headers
	if $(HAIKU_GCC_VERSION[1]) = 2 {
		# GCC 2 only -- for GCC 4 they come with the DevelopmentBase package
		CopyDirectoryToHaikuImage $(abiDirTokens) headers
			: [ FDirName $(HAIKU_TOP) headers cpp ] : : -x .svn ;
		CopyDirectoryToAlternativeGCCArchive $(abiDirTokens) headers
			: [ FDirName $(HAIKU_TOP) headers cpp ] : : -x .svn ;
	}
}


# Expat
if [ IsOptionalHaikuImagePackageAdded Expat ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Expat available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage expat-2.0.1-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/expat-2.0.1-r1a1-x86-gcc2-2009-08-30.zip
			:
			: true
		;
	}
}


# Firefox web browser
if [ IsOptionalHaikuImagePackageAdded Firefox ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Firefox available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4  && ! $(isHybridBuild) {
		Echo "No optional package Firefox available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage
			BeZillaBrowser-2.0.0.22pre-r1a1-x86-gcc2-2009-09-08
			: $(baseURL)/BeZillaBrowser-2.0.0.22pre-r1a1-x86-gcc2-2009-09-08.zip
 			:
 		;
 		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/BeZillaBrowser/BeZillaBrowser ;
	}
}


# Git
if [ IsOptionalHaikuImagePackageAdded Git ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Git available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage git-1.6.4.2-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/git-1.6.4.2-r1a1-x86-gcc2-2009-08-30.zip
			:
			: true
		;
	}
}


# KeymapSwitcher
if [ IsOptionalHaikuImagePackageAdded KeymapSwitcher ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package KeymapSwitcher available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 {
		InstallOptionalHaikuImagePackage
			KeymapSwitcher-1.2.3-x86-gcc4-2009-05-31
			: $(baseURL)/KeymapSwitcher-1.2.3-x86-gcc4-2009-05-31.zip
			:
		;
		AddSymlinkToHaikuImage home config be Desktop\ Applets
			: /boot/common/bin/KeymapSwitcher ;
	} else {
		InstallOptionalHaikuImagePackage
			KeymapSwitcher-1.2.4-r1a1-x86-gcc2-2009-09-06
			: $(baseURL)/KeymapSwitcher-1.2.4-r1a1-x86-gcc2-2009-09-06.zip
			:
		;
		AddSymlinkToHaikuImage home config be Desktop\ Applets
			: /boot/common/bin/KeymapSwitcher ;
	}
}


# LibIconv
if [ IsOptionalHaikuImagePackageAdded LibIconv ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package LibIconv available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage libiconv-1.13.1-r1a1-x86-gcc2-2009-09-08
			: $(baseURL)/libiconv-1.13.1-r1a1-x86-gcc2-2009-09-08.zip
			:
		;
	}
}


# LibLayout library
if [ IsOptionalHaikuImagePackageAdded LibLayout ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package LibLayout available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package LibLayout available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage liblayout-1.4.0-gcc2-2009-03-08
			: $(baseURL)/liblayout-1.4.0-gcc2-2009-03-08.zip
			:
		;
	}
}


# LibXML2
if [ IsOptionalHaikuImagePackageAdded LibXML2 ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package LibXML2 available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage libxml2-2.7.3-r1a1-x86-gcc2-2009-09-08
			: $(baseURL)/libxml2-2.7.3-r1a1-x86-gcc2-2009-09-08.zip
			:
			: true
		;
	}
}


# Links web browser
if [ IsObsoleteOptionalHaikuImagePackageAdded Links ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Links available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package Links available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage Links
			: $(baseURL)/links-x86-gcc2-2008-05-03.zip
			:
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/home/config/bin/links ;
	}
}


# Mercurial
if [ IsOptionalHaikuImagePackageAdded Mercurial ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Mercurial available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage mercurial-1.3.1-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/mercurial-1.3.1-r1a1-x86-gcc2-2009-08-30.zip
			:
			: true
		;
	}
}


# Nano
if [ IsOptionalHaikuImagePackageAdded Nano ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Nano available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage nano-2.0.9-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/nano-2.0.9-r1a1-x86-gcc2-2009-08-30.zip
			:
		;
	}
}


# Neon
if [ IsOptionalHaikuImagePackageAdded Neon ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Neon available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage neon-0.28.6-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/neon-0.28.6-r1a1-x86-gcc2-2009-08-30.zip
			:
			: true
		;
	}
}


# NetSurf web browser
if [ IsObsoleteOptionalHaikuImagePackageAdded NetSurf ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package NetSurf available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package NetSurf available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage NetSurf-r7117
			: $(baseURL)/NetSurf-r7117-x86-gcc2-2009-04-17.zip
			:
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/netsurf/NetSurf ;
	}
}


# OpenSound drivers
if [ IsObsoleteOptionalHaikuImagePackageAdded OpenSound ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package OpenSound available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage OpenSound
			: $(baseURL)/OpenSound-x86-gcc2-2008-06-21.zip
			:
		;
	}
	#UnzipArchiveToHaikuImage home : data/vv.mp3.zip : 0 ;
}


# OpenSSH
if [ IsOptionalHaikuImagePackageAdded OpenSSH ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package OpenSSH available for $(TARGET_ARCH)" ;
	} else {
		if ! $(HAIKU_IMAGE_HOST_NAME) && ! $(HAIKU_IGNORE_USER_BUILD_CONFIG) {
			Exit "Optional package OpenSSH requires the HAIKU_IMAGE_HOST_NAME"
				"variable to be set!" ;
		}

		InstallOptionalHaikuImagePackage openssh-5.2p1-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/openssh-5.2p1-r1a1-x86-gcc2-2009-08-30.zip
			:
		;

		AddUserToHaikuImage sshd : 1001 : 100 : /var/empty : /bin/true
			: "sshd user" ;
	}
}


# OpenSSL
if [ IsOptionalHaikuImagePackageAdded OpenSSL ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package OpenSSL available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage $(HAIKU_OPENSSL_PACKAGE)
			: $(HAIKU_OPENSSL_URL)
			:
		;
	}
}


# P7zip
if [ IsOptionalHaikuImagePackageAdded P7zip ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package P7zip available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package P7zip available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage p7zip-9.04-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/p7zip-9.04-r1a1-x86-gcc2-2009-08-30.zip
			:
		;

		actions BuildHaikuImageExpanderRules
		{
			echo -e "\"application/x-7z-compressed\"\t.7z\t\"7za l \0045s\"\t\"7za x -y \0045s\"" > $(1)
		}

		Always expander.rules ;
		MakeLocate expander.rules : $(HAIKU_COMMON_PLATFORM_OBJECT_DIR) ;
		BuildHaikuImageExpanderRules expander.rules ;
		AddFilesToHaikuImage home config etc : expander.rules ;
	}
}


# Pe text editor
if [ IsOptionalHaikuImagePackageAdded Pe ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Pe available for $(TARGET_ARCH)" ;
	} else {
		if $(HAIKU_GCC_VERSION[1]) >= 4 {
			InstallOptionalHaikuImagePackage Pe-2.4.2-x86-gcc4-2009-08-04
				: $(baseURL)/Pe-2.4.2-x86-gcc4-2009-08-04.zip
			;
		} else {
			InstallOptionalHaikuImagePackage Pe-2.4.2-r593-r1a1-x86-gcc2-2009-09-08
				: $(baseURL)/Pe-2.4.2-r593-r1a1-x86-gcc2-2009-09-08.zip
			;
		}

		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/Pe/Pe ;
		AddSymlinkToHaikuImage common bin
			: /boot/apps/Pe/lpe ;
	}
}


# Perl
if [ IsOptionalHaikuImagePackageAdded Perl ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Perl available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage perl-5.10.1-r1a1-x86-gcc2-2009-09-08
			: $(baseURL)/perl-5.10.1-r1a1-x86-gcc2-2009-09-08.zip
			:
			: true
		;
	}
}


# Python
if [ IsOptionalHaikuImagePackageAdded Python ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Python available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage python-2.6.2-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/python-2.6.2-r1a1-x86-gcc2-2009-08-30.zip
			:
			: true
		;
	}
}


# Rsync
if [ IsOptionalHaikuImagePackageAdded Rsync ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Rsync available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage rsync-3.0.6-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/rsync-3.0.6-r1a1-x86-gcc2-2009-08-30.zip
			:
		;
	}
}


# SQLite
if [ IsOptionalHaikuImagePackageAdded SQLite ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package SQLite available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage sqlite-3.6.17-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/sqlite-3.6.17-r1a1-x86-gcc2-2009-08-30.zip
			:
			: true
		;
	}
}


# Subversion
if [ IsOptionalHaikuImagePackageAdded Subversion ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Subversion available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage subversion-1.6.5-r1a1-x86-gcc2-2009-09-02
			: $(baseURL)/subversion-1.6.5-r1a1-x86-gcc2-2009-09-02.zip
			:
			: true
		;
	}
}


# Tar
if [ IsObsoleteOptionalHaikuImagePackageAdded Tar ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Tar available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage tar-1.21-gcc2-2009-02-08
			: $(baseURL)/tar-1.21-gcc2-2009-02-08.zip
			:
		;
	}
}


# UserlandFS
if [ IsOptionalHaikuImagePackageAdded UserlandFS ] {
	local arch = $(TARGET_ARCH) ;
	local abi = gcc$(HAIKU_GCC_VERSION[1]) ;

	# kernel module
	AddFilesToHaikuImage system add-ons kernel file_systems : userlandfs ;

	# server
	AddFilesToHaikuImage system servers : userlandfs_server ;

	# libs
	local userlandfsLibs =
		libuserlandfs_beos_kernel.so
		libuserlandfs_haiku_kernel.so
		libuserlandfs_fuse.so
	;
	AddFilesToHaikuHybridImage system lib : $(userlandfsLibs) : : true ;

	# development goodies
	if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] {
		if ! ( $(HAIKU_GCC_VERSION[1]) in 2 4 ) {
			Exit "Optional package UserlandFS: Unsupported GCC version:"
				$(HAIKU_GCC_VERSION[1]) ;
		}

		# library symlinks
		local lib ;
		for lib in $(userlandfsLibs) {
			AddSymlinkToHaikuImage develop abi $(arch) $(abi) lib
				: /system/lib/$(lib:BS) ;
			AddSymlinkToAlternativeGCCArchive develop abi $(arch) $(abi) lib
				: /system/lib/$(arch)/$(lib:BS) ;
		}

		# FUSE headers
		local fuseHeaders =
			fuse_common_compat.h
			fuse_common.h
			fuse_compat.h
			fuse.h
			fuse_lowlevel_compat.h
			fuse_lowlevel.h
			fuse_opt.h
		;
		fuseHeaders = $(fuseHeaders:G=userlandfs!fuse) ;
		SEARCH on $(fuseHeaders)
			= [ FDirName $(HAIKU_TOP) headers private userlandfs fuse ] ;
		AddFilesToHaikuImage develop headers userlandfs fuse : $(fuseHeaders) ;
	}
}


# Vim
if [ IsOptionalHaikuImagePackageAdded Vim ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Vim available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 {
		InstallOptionalHaikuImagePackage vim-7.2-x86-gcc4-2009-05-31
			:  $(baseURL)/vim-7.2-x86-gcc4-2009-05-31.zip
			:
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/common/bin/gvim ;
	} else {
		InstallOptionalHaikuImagePackage vim-7.2-r1a1-x86-gcc2-2009-09-06
			:  $(baseURL)/vim-7.2-r1a1-x86-gcc2-2009-09-06.zip
			:
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/common/bin/gvim ;
	}
}


# Vision
if [ IsObsoleteOptionalHaikuImagePackageAdded Vision ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Vision available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 {
		InstallOptionalHaikuImagePackage Vision-0.9.7-H-090826-1
			: $(baseURL)/Vision-0.9.7-H-x86-gcc4-2009-08-26.zip
			: apps
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/Vision-0.9.7-H-090423/Vision ;
	} else {
		InstallOptionalHaikuImagePackage Vision-0.9.7-H-090826-1
			: $(baseURL)/Vision-0.9.7-H-x86-gcc2-2009-08-26.zip
			: apps
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/Vision-0.9.7-H-090826/Vision ;
	}
}


# VLC media player
if [ IsObsoleteOptionalHaikuImagePackageAdded VLC ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package VLC available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package VLC available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage VLC-0.8.6d
			: $(baseURL)/vlc-0.8.6d-gcc2-2009-04-18.zip
			: apps
		;
		AddSymlinkToHaikuImage home config be Applications
			: "/boot/apps/vlc-0.8.6d/VLC media player" ;
		AddSymlinkToHaikuImage common bin
			: "/boot/apps/vlc-0.8.6d/VLC media player" : vlc ;
	}
}


# Welcome
if [ IsOptionalHaikuImagePackageAdded Welcome ] {
	CopyDirectoryToHaikuImage system documentation
		: [ FDirName $(HAIKU_TOP) docs welcome ]
		: welcome : -x .svn ;
	CopyDirectoryToHaikuImage system documentation
		: [ FDirName $(HAIKU_TOP) docs userguide ]
		: userguide : -x .svn ;
	AddFilesToHaikuImage system documentation
		: [ FDirName $(HAIKU_TOP) docs Haiku-doc.css ]
		: Haiku-doc.css ;
	AddSymlinkToHaikuImage home Desktop
		: /boot/system/documentation/welcome/welcome.html : Welcome ;
}


# WonderBrush
if [ IsObsoleteOptionalHaikuImagePackageAdded WonderBrush ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package WonderBrush available for $(TARGET_ARCH)" ;
	} else if $(HAIKU_GCC_VERSION[1]) >= 4 && ! $(isHybridBuild) {
		Echo "No optional package WonderBrush available for gcc4" ;
	} else {
		InstallOptionalHaikuImagePackage WonderBrush-2.1.2
			: $(baseURL)/WonderBrush-2.1.2-x86-gcc2-2008-11-08.zip
			: apps
		;
		AddSymlinkToHaikuImage home config be Applications
			: /boot/apps/WonderBrush/WonderBrush ;
	}
}


# Yasm
if [ IsOptionalHaikuImagePackageAdded Yasm ] {
	if $(TARGET_ARCH) != x86 {
		Echo "No optional package Yasm available for $(TARGET_ARCH)" ;
	} else {
		InstallOptionalHaikuImagePackage yasm-0.8.0-r1a1-x86-gcc2-2009-08-30
			: $(baseURL)/yasm-0.8.0-r1a1-x86-gcc2-2009-08-30.zip
			:
		;
	}
}
