haiku/build/jam/OptionalPackages
Ingo Weinhold b0944c78b0 More work towards hybrid support
* All packaging architecture dependent variables do now have a
  respective suffix and are set up for each configured packaging
  architecture, save for the kernel and boot loader variables, which
  are still only set up for the primary architecture.
  For convenience TARGET_PACKAGING_ARCH, TARGET_ARCH, TARGET_LIBSUPC++,
  and TARGET_LIBSTDC++ are set to the respective values for the primary
  packaging architecture by default.
* Introduce a set of MultiArch* rules to help with building targets for
  multiple packaging architectures. Generally the respective targets are
  (additionally) gristed with the packaging architecture. For libraries
  the additional grist is usually omitted for the primary architecture
  (e.g. libroot.so and <x86>libroot.so for x86_gcc2/x86 hybrid), so that
  Jamfiles for targets built only for the primary architecture don't
  need to be changed.
* Add multi-arch build support for all targets needed for the stage 1
  cross devel package as well as for libbe (untested).
2013-08-01 08:54:06 +02:00

343 lines
12 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
# WebPositiveBookmarks - bookmarks for WebPositive
# 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 ;
OptionalPackageDependencies WebPositive : WebPositiveBookmarks ;
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 : system ;
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 : ../common/settings/etc ;
AddSymlinkToHaikuImage beos : ../system/preferences ;
AddSymlinkToHaikuImage beos : ../system ;
AddDirectoryToHaikuImage var ;
AddSymlinkToHaikuImage var : /boot/common/var/log ;
AddSymlinkToHaikuImage var : /boot/common/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 ;
# devel packages for mandatory packages
AddHaikuImagePackages ffmpeg_devel freetype_devel glu_devel jpeg_devel
libpng_devel zlib_devel : system ;
}
# DevelopmentBase
if [ IsOptionalHaikuImagePackageAdded DevelopmentBase ] {
# gcc and binutils
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 ;
AddPackageFilesToHaikuImage common : makefile_engine.hpkg ;
}
# 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 ] {
# TODO: Make this an actual package!
# if $(TARGET_ARCH) != x86 && $(TARGET_ARCH) != x86_64 {
# Echo "No optional package WebPositive available for $(TARGET_ARCH)" ;
# } else if $(TARGET_GCC_VERSION_$(TARGET_PACKAGING_ARCH)[1]) < 4 {
# Echo "No optional package WebPositive available for gcc2" ;
# } else if $(TARGET_GCC_VERSION_$(TARGET_PACKAGING_ARCH)[1]) >= 4 {
# # TODO: Either we build a separate package for WebPositive or we
# # incorporate it in haiku.hpkg.
# AddFilesToHaikuHybridImage apps : WebPositive ;
# AddSymlinkToHaikuHybridImage
# home config settings deskbar menu Applications
# : /boot/common/apps/WebPositive ;
# }
#
# AddHaikuImagePackages curl libxml2 sqlite webkit ;
# TODO: Should be properly declared requires in the webpositive package.
}
# WebPositiveBookmarks
if [ IsOptionalHaikuImagePackageAdded WebPositiveBookmarks ] {
InstallOptionalHaikuImagePackage
$(baseURL)/WebPositiveBookmarks-2012-02-18.zip
: home config settings WebPositive ;
}
# Welcome
if [ IsOptionalHaikuImagePackageAdded Welcome ] {
AddPackageFilesToHaikuImage system : haiku_userguide.hpkg ;
AddPackageFilesToHaikuImage system : haiku_welcome.hpkg ;
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) ;
# }
}