haiku/build/jam/OptionalPackages
Ingo Weinhold a27d687e2a Name the generated HPKG files properly
* rule AddPackageFilesToHaikuImage: Add "flags" parameter. The only
  supported flag is "nameFromMetaInfo". It causes the packages to be
  copied under their canonical file name onto the image.
* Use the new flag for all generated packages save haiku_loader.hpkg.
2013-10-09 03:48:26 +02:00

350 lines
11 KiB
Plaintext

# 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.
# Available Optional Packages:
# BeOSCompatibility - creates links within the system to support old apps
# Bluetooth - experimental Haiku components for Bluetooth
# Development - more complete dev environment (including autotools)
# DevelopmentBase - basic development environment (gcc, headers, libs,...)
# DevelopmentJava - JamVM, a Java Virtual machine, GNU Classpath, ECJ
# DevelopmentMin - development headers, libs, tools, from sources only
# DevelopmentPowerPC - Cross compiling environment for PowerPC
# FFMpeg - audio/video library
# FFMpeg-devel - FFMpeg development files
# Git - the distributed version control system
# NetFS - the native networked file system components
# UserlandFS - aids native file system development (like FUSE)
# WebPositive - native, WebKit-based web browser
# Welcome - introductory documentation to Haiku
# WifiFirmwareScriptData - data files needed by install-wifi-firmwares.sh
# dependencies between optional packages
OptionalPackageDependencies Development : DevelopmentBase ;
OptionalPackageDependencies DevelopmentBase : DevelopmentMin ;
OptionalPackageDependencies DevelopmentPowerPC : DevelopmentMin ;
OptionalPackageDependencies NetFS : UserlandFS ;
local baseURL = http://haiku-files.org/files/optional-packages ;
local hpkgBaseURL = http://haiku-files.org/files/hpkg ;
local baseSourceURL = http://haiku-files.org/files/sources ;
# BeBook
if [ IsOptionalHaikuImagePackageAdded BeBook ] {
AddHaikuImagePackages be_book ;
AddSymlinkToHaikuImage home Desktop
: /boot/system/documentation/BeBook/index.html
: BeBook ;
}
# BeOSCompatibility
if [ IsOptionalHaikuImagePackageAdded BeOSCompatibility ] {
if $(TARGET_ARCH) != x86 {
Echo "No optional package BeOSCompatibility available for"
"$(TARGET_ARCH)" ;
} else if $(TARGET_GCC_VERSION_$(TARGET_PACKAGING_ARCH)[1]) >= 4 {
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/settings/etc ;
AddSymlinkToHaikuImage beos : ../system/preferences ;
AddSymlinkToHaikuImage beos : ../system ;
AddDirectoryToHaikuImage var ;
AddSymlinkToHaikuImage var : /boot/system/var/log ;
AddSymlinkToHaikuImage var : /boot/system/cache/tmp ;
}
}
# Bluetooth stack
if [ IsOptionalHaikuImagePackageAdded Bluetooth ] {
# TODO: Make this an actual package!
# local bluetoothDrivers = h2generic ;
# AddDriversToHaikuImage bluetooth : $(bluetoothDrivers) ;
# AddFilesToHaikuImage system servers : bluetooth_server ;
# AddFilesToHaikuImage system lib : libbluetooth.so ;
# AddFilesToHaikuImage
# system add-ons kernel network protocols : l2cap ;
# AddFilesToHaikuImage system add-ons kernel bluetooth
# : btCoreData hci ;
# AddFilesToHaikuImage system preferences : Bluetooth ;
# AddFilesToHaikuImage system bin : bt_dev_info bt_discovery ;
# AddSymlinkToHaikuImage home config settings deskbar menu Preferences
# : /boot/system/preferences/Bluetooth ;
# if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ]
# && $(TARGET_GCC_VERSION_$(TARGET_PACKAGING_ARCH)[1]) in 2 4 {
# local arch = $(TARGET_ARCH) ;
# local abi = gcc$(TARGET_GCC_VERSION_$(TARGET_PACKAGING_ARCH)[1]) ;
# AddSymlinkToHaikuImage system develop lib
# : /system/lib libbluetooth.so ;
# }
}
# Development
if [ IsOptionalHaikuImagePackageAdded Development ] {
# auto tools and perl
AddHaikuImagePackages autoconf automake libtool perl texinfo ;
# some other build tools
AddHaikuImagePackages cmake pkgconfig scons ;
# devel packages for mandatory packages
local architectureObject ;
for architectureObject in [ MultiArchSubDirSetup ] {
on $(architectureObject) {
AddHaikuImagePackages curl_devel ffmpeg_devel freetype_devel
glu_devel jpeg_devel libpng_devel zlib_devel ;
}
}
}
# DevelopmentBase
if [ IsOptionalHaikuImagePackageAdded DevelopmentBase ] {
# gcc and binutils (for all target architectures)
local architectureObject ;
for architectureObject in [ MultiArchSubDirSetup ] {
on $(architectureObject) {
AddHaikuImagePackages binutils gcc ;
}
}
# other commonly used tools
AddHaikuImagePackages bison cdrtools flex jam m4 make mkdepend yasm ;
}
# DevelopmentJava
if [ IsOptionalHaikuImagePackageAdded DevelopmentJava ] {
# TODO: Build actual packages!
# InstallOptionalHaikuImagePackage
# $(baseURL)/gnu-classpath-0.98-r1a3-x86-gcc4-2011-06-08.zip ;
# InstallOptionalHaikuImagePackage
# $(baseURL)/jamvm-1.5.4-r1a3-x86-gcc4-2011-06-08.zip ;
# AddSymlinkToHaikuImage common bin
# : /boot/common/bin/jamvm : java ;
# InstallOptionalHaikuImagePackage
# $(baseURL)/ecj-3.6.2-haiku-2011-06-08.zip ;
}
# DevelopmentMin
if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ]
&& ( $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 ) {
AddPackageFilesToHaikuImage system
:
haiku_devel.hpkg
haiku_$(TARGET_PACKAGING_ARCHS[2-])_devel.hpkg
makefile_engine.hpkg
:
nameFromMetaInfo
;
}
# DevelopmentPowerPC
if [ IsOptionalHaikuImagePackageAdded DevelopmentPowerPC ] {
# TODO: Build actual packages!
# InstallOptionalHaikuImagePackage
# $(baseURL)/gcc-ppc-4.6.2-x86-gcc4-2012-03-17.zip ;
# InstallOptionalHaikuImagePackage
# $(baseURL)/haiku-devlibs-ppc-gcc4-2012-03-18.zip ;
}
# FFMpeg
if [ IsOptionalHaikuImagePackageAdded FFMpeg ] {
local packages = ffmpeg speex libtheora libvorbis libogg libvpx ;
AddHaikuImagePackages $(packages) ;
}
# FFMpeg-devel
if [ IsOptionalHaikuImagePackageAdded FFMpeg-devel ] {
local packages = ffmpeg speex libtheora libvorbis libogg libvpx ;
AddHaikuImagePackages $(packages)_devel ;
}
# Git
if [ IsOptionalHaikuImagePackageAdded Git ] {
AddHaikuImagePackages git git_arch git_cvs git_daemon git_email git_svn ;
}
# NetFS network file system
if [ IsOptionalHaikuImagePackageAdded NetFS ] {
# TODO: Make this an actual package!
# # userlandfs module
# AddFilesToHaikuImage home config add-ons userlandfs
# : netfs ;
#
# # servers
# AddFilesToHaikuImage system servers : netfs_server ;
# AddFilesToHaikuImage system servers
# : authentication_server ;
#
# # tools
# AddFilesToHaikuImage system bin : netfs_config ;
# AddFilesToHaikuImage system bin : netfs_server_prefs ;
#
# #example settings for netfs_server
# local netfsServerSettingsFiles = <driver-settings>netfs-server ;
# SEARCH on $(netfsServerSettingsFiles)
# = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems netfs ] ;
# AddFilesToHaikuImage home config settings kernel drivers
# : $(netfsServerSettingsFiles) ;
#
# #userlandfs settings are needed for netfs_config to work (ioctls)
# local userlandfsServerSettingsFiles = <driver-settings>userlandfs ;
# SEARCH on $(userlandfsServerSettingsFiles)
# = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems userlandfs ] ;
# AddFilesToHaikuImage home config settings kernel drivers
# : $(userlandfsServerSettingsFiles) ;
}
# UserlandFS
if [ IsOptionalHaikuImagePackageAdded UserlandFS ] {
# TODO: Make this an actual package!
# local arch = $(TARGET_ARCH) ;
# local abi = gcc$(TARGET_GCC_VERSION_$(TARGET_PACKAGING_ARCH)[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
# ;
# AddFilesToHaikuImage system lib : $(userlandfsLibs) ;
#
# # development goodies
# if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] {
# if ! ( $(TARGET_GCC_VERSION_$(TARGET_PACKAGING_ARCH)[1]) in 2 4 ) {
# Exit "Optional package UserlandFS: Unsupported GCC version:"
# $(TARGET_GCC_VERSION_$(TARGET_PACKAGING_ARCH)[1]) ;
# }
#
# # library symlinks
# local lib ;
# for lib in $(userlandfsLibs) {
# AddSymlinkToHaikuImage develop abi $(arch) $(abi) lib
# : /system/lib/$(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) ;
# }
}
# WebPositive
if [ IsOptionalHaikuImagePackageAdded WebPositive ] {
local architectureObject ;
for architectureObject in [ MultiArchSubDirSetup ] {
on $(architectureObject) {
if [ FIsBuildFeatureEnabled webpositive ] {
AddPackageFilesToHaikuImage system : webpositive.hpkg
: nameFromMetaInfo ;
InstallOptionalHaikuImagePackage
$(baseURL)/WebPositiveBookmarks-2012-02-18.zip
: home config settings WebPositive ;
break ;
}
}
}
}
# Welcome
if [ IsOptionalHaikuImagePackageAdded Welcome ] {
AddPackageFilesToHaikuImage system : haiku_userguide.hpkg
: nameFromMetaInfo ;
AddPackageFilesToHaikuImage system : haiku_welcome.hpkg : nameFromMetaInfo ;
AddSymlinkToHaikuImage home Desktop : /boot/system/bin/welcome
: Welcome ;
AddSymlinkToHaikuImage home Desktop : /boot/system/bin/userguide
: User\ Guide ;
}
# WifiFirmwareScriptData
# This optional package is for people who build their own images & have wifi
# hardware that requires install-wifi-firmwares.sh & have no active network
# connection. This is not to be added to default images.
if [ IsOptionalHaikuImagePackageAdded WifiFirmwareScriptData ] {
# TODO: Make this an actual package!
# if $(TARGET_ARCH) != x86 {
# Echo "No optional package WifiFirmwareScriptData available for"
# $(TARGET_ARCH) ;
# } else {
# # broadcom43xx
# # firmware cutter
# local broadcomFWCutterArchive = b43-fwcutter-012.tar.bz2 ;
# local broadcomFWCutterURL =
# http://www.haiku-files.org/files/wifi-firmwares/b43/fwcutter/$(broadcomFWCutterArchive) ;
# local broadcomFWCutterFile = [ DownloadFile $(broadcomFWCutterArchive)
# : $(broadcomFWCutterURL) ] ;
# AddFilesToHaikuImage
# system data firmware broadcom43xx b43-fwcutter
# : $(broadcomFWCutterFile) ;
#
# # headers needed to compile firmware cutter
# local glibcDir = [ FDirName
# $(HAIKU_TOP) src system libroot posix glibc ] ;
# local byteswapHeader = [ FDirName $(glibcDir) string byteswap.h ] ;
# AddFilesToHaikuImage
# system data firmware broadcom43xx b43-fwcutter
# : $(byteswapHeader) ;
# local bitByteswapHeader = [ FDirName
# $(glibcDir) include arch x86 bits byteswap.h ] ;
# AddFilesToHaikuImage
# system data firmware broadcom43xx b43-fwcutter bits
# : $(bitByteswapHeader) ;
#
# # file containing firmware
# local broadcom43xxFile ;
# broadcom43xxFile = [ DownloadFile wl_apsta-3.130.20.0.o
# : http://www.haiku-files.org/files/wifi-firmwares/b43/wl_apsta-3.130.20.0.o ] ;
# AddFilesToHaikuImage system data firmware broadcom43xx
# : $(broadcom43xxFile) ;
#
# # marvell88w8335
# local marvellArchive = malo-firmware-1.4.tgz ;
# local marvellURL = http://www.haiku-files.org/files/wifi-firmwares/marvell/$(marvellArchive) ;
# local marvellFile = [ DownloadFile $(marvellArchive) : $(marvellURL) ] ;
# AddFilesToHaikuImage system data firmware marvell88w8335
# : $(marvellFile) ;
# }
}