haiku/build/jam/HaikuImage
Ingo Weinhold b39c8d3711 * Refactored the image creation rules. There are now generalized rules that
work on arbitrary "containers". The image rules are just
  specializations.
* Added rules, a definition file (build/jam/NetBootArchive), and a shell
  script for creating a gzipped tar archive containing kernel and modules
  required for network booting (the contents may need some fine-tuning).
  ATM it can be built via the haiku-netboot-archive pseudo target. It is
  generated in the output directory (e.g. "generated").


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21591 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-11 01:04:35 +00:00

487 lines
20 KiB
Plaintext

# This file defines what ends up on the Haiku image (respectively in the Haiku
# installation directory) and it executes the rules building the image
# (respectively installing the files in the installation directory).
# create directories that will remain empty
AddDirectoryToHaikuImage home Desktop ;
AddDirectoryToHaikuImage home config bin ;
AddDirectoryToHaikuImage home config lib ;
AddDirectoryToHaikuImage var log ;
AddDirectoryToHaikuImage var tmp ;
local X86_ONLY = ;
local PPC_ONLY = ;
if $(TARGET_ARCH) = x86 {
X86_ONLY = "" ;
} else if $(TARGET_ARCH) = ppc {
X86_ONLY = ;
}
local GPL_ONLY = ;
if $(INCLUDE_GPL_ADDONS) = 1 {
GPL_ONLY = "" ;
}
BEOS_BIN = "[" addattr alert arp basename bc beep bzip2 cat cardctl catattr chgrp
chmod chop chown cksum clear clockconfig cmp comm compress cp copyattr
$(X86_ONLY)CortexAddOnHost
csplit ctags cut date dc dd desklink df diff diff3 dircolors dirname
driveinfo dstcheck du dump_cis dump_cisreg echo eject env error expand
expr factor false fdinfo ffm find finddir fmt fold fortune frcode ftp funzip gawk
$(X86_ONLY)gdb grep groups gzip gzexe hd head hey hostname id ident ideinfo
idestatus ifconfig <bin>install installsound iroster isvolume join keymap
kill less lessecho lesskey link listarea listattr listdev listimage
listport listres listsem ln locate logger login logname ls lsindex m4 make
makebootable md5sum merge mimeset mkdos mkdir mkindex modifiers mount
mount_nfs mountvolume mv nc netstat nl od open pack_cis paste patch pathchk pc
ping play playfile playsound playwav pr prio printenv printf ps ptx pwd
query quit release renice rescan rlog rm rmattr rmindex rmdir roster route
safemode screen_blanker sed setdecor settype setversion setvolume seq sh shar
shutdown sleep sort split strace stty su sum sync sysinfo tac tail tar
tcpdump tcptester tee telnet telnetd test top touch tput tr traceroute
translate true tsort tty uname unchop unexpand unmount uniq unrar unshar
unzip unzipsfx <bin>updatedb uptime urlwrapper usb_dev_info uudecode uuencode vdir
version vim waitfor wc wget whoami xargs xres yes zdiff zforce zgrep zip
zipcloak zipgrep zipnote zipsplit zmore znew
;
BEOS_APPS = AboutSystem DeskCalc DiskProbe CDPlayer Expander Icon-O-Matic
Installer LaunchBox Magnify Mail MediaPlayer MidiPlayer NetworkStatus
People PowerStatus ProcessController ShowImage SoundRecorder StyledEdit
Terminal TV Workspaces
;
BEOS_PREFERENCES = Appearance Backgrounds DataTranslations E-mail FileTypes
Fonts Keyboard Keymap Media Menu Mouse Printers Screen ScreenSaver Sounds
Time VirtualMemory
;
BEOS_DEMOS = BitmapDrawing Chart Clock $(X86_ONLY)Cortex FontDemo
$(X86_ONLY)GLDirectMode $(X86_ONLY)GLTeapot Mandelbrot PictureTest
Playground Pulse
;
BEOS_SYSTEM_LIB = libbe.so $(HAIKU_LIBSTDC++) libmedia.so libtracker.so
libtranslation.so libnetwork.so libdebug.so libbsd.so libmail.so
libtextencoding.so libz.so libfreetype.so libpng.so libmidi.so libmidi2.so
libdevice.so libgame.so libscreensaver.so <revisioned>libroot.so
$(X86_ONLY)libGL.so libfluidsynth.so libqoca.so
;
BEOS_SYSTEM_SERVERS = registrar debug_server syslog_daemon media_server
net_server media_addon_server input_server app_server fake_app_server
midi_server print_server mail_daemon
;
BEOS_NETWORK_DEVICES = ethernet loopback ;
BEOS_NETWORK_DATALINK_PROTOCOLS = ethernet_frame <module>arp loopback_frame ipv4_datagram ;
#BEOS_NETWORK_PPP = ipcp modem pap pppoe ;
BEOS_NETWORK_PROTOCOLS = ipv4 tcp udp icmp ;
BEOS_ADD_ONS_ACCELERANTS = $(X86_ONLY)radeon.accelerant $(X86_ONLY)nvidia.accelerant
$(X86_ONLY)matrox.accelerant $(X86_ONLY)neomagic.accelerant
$(X86_ONLY)intel_extreme.accelerant $(X86_ONLY)s3savage.accelerant vesa.accelerant
#$(X86_ONLY)vmware.accelerant
;
BEOS_ADD_ONS_TRANSLATORS = BMPTranslator GIFTranslator JPEGTranslator
JPEG2000Translator TIFFTranslator PNGTranslator PPMTranslator
RTF-Translator SGITranslator STXTTranslator TGATranslator
WonderBrushTranslator
;
BEOS_ADD_ONS_MEDIA = mixer.media_addon
hmulti_audio.media_addon tone_producer_demo.media_addon
video_producer_demo.media_addon
usb_webcam.media_addon
dvb.media_addon
#legacy.media_addon
;
BEOS_ADD_ONS_MEDIA_PLUGINS = $(GPL_ONLY)ac3_decoder
aiff_reader au_reader $(X86_ONLY)avcodec avi_reader
matroska mov_reader
mp3_decoder mp3_reader
mp4_reader musepack
ogg raw_decoder speex
# theora
vorbis wav_reader
;
BEOS_ADD_ONS_PRINT = Canon\ LIPS3\ Compatible Canon\ LIPS4\ Compatible
PCL5\ Compatible PCL6\ Compatible PDF\ Writer PS\ Compatible Preview
;
BEOS_ADD_ONS_PRINT_TRANSPORT = HP\ JetDirect IPP LPR Parallel\ Port
Print\ To\ File Serial\ Port USB\ Port
;
BEOS_ADD_ONS_SCREENSAVERS = Haiku IFS ;
BEOS_ADD_ONS_DRIVERS_AUDIO = auich auvia emuxki hda ;
BEOS_ADD_ONS_DRIVERS_GRAPHICS = $(X86_ONLY)radeon $(X86_ONLY)nvidia
$(X86_ONLY)neomagic $(X86_ONLY)matrox $(X86_ONLY)intel_extreme
$(X86_ONLY)s3savage vesa #$(X86_ONLY)vmware
;
BEOS_ADD_ONS_DRIVERS_MIDI = emuxki ;
BEOS_ADD_ONS_DRIVERS_NET = etherpci ipro1000 rtl8139 rtl8169 sis900
via-rhine wb840 net_stack vlance
$(GPL_ONLY)bcm440x $(GPL_ONLY)bcm570x
;
#BEOS_ADD_ONS_DRIVERS_ACPI = $(X86_ONLY)acpi_button ;
BEOS_ADD_ONS_BUS_MANAGERS = pci $(X86_ONLY)ps2 $(X86_ONLY)isa ide scsi
config_manager $(X86_ONLY)agp usb
;
BEOS_ADD_ONS_FILE_SYSTEMS = bfs cdda dos googlefs iso9660 nfs ;
# modules
AddFilesToHaikuImage beos system add-ons kernel bus_managers
: $(BEOS_ADD_ONS_BUS_MANAGERS) ;
AddFilesToHaikuImage beos system add-ons kernel busses ide
: ahci generic_ide_pci $(X86_ONLY)ide_isa silicon_image_3112 ;
AddFilesToHaikuImage beos system add-ons kernel busses usb
: <usb>uhci <usb>ohci <usb>ehci ;
AddFilesToHaikuImage beos system add-ons kernel console : vga_text ;
AddFilesToHaikuImage beos system add-ons kernel debugger : <kdebug>hangman ;
AddFilesToHaikuImage beos system add-ons kernel file_systems
: $(BEOS_ADD_ONS_FILE_SYSTEMS) ;
AddFilesToHaikuImage beos system add-ons kernel generic
: block_io fast_log ide_adapter locked_pool mpu401 scsi_periph ;
AddFilesToHaikuImage beos system add-ons kernel partitioning_systems
: intel session ;
AddFilesToHaikuImage beos system add-ons kernel interrupt_controllers
: $(PPC_ONLY)openpic ;
if $(TARGET_ARCH) = x86 {
AddFilesToHaikuImage beos system add-ons kernel cpu : generic_x86 ;
}
# drivers
AddDriversToHaikuImage : console dprintf $(X86_ONLY)keyboard null
random <driver>tty zero ;
AddDriversToHaikuImage audio hmulti : $(BEOS_ADD_ONS_DRIVERS_AUDIO) ;
AddDriversToHaikuImage midi : $(BEOS_ADD_ONS_DRIVERS_MIDI) ;
AddDriversToHaikuImage bus : usb_raw ;
AddDriversToHaikuImage disk scsi : scsi_cd scsi_dsk ;
AddDriversToHaikuImage disk virtual : nbd ;
AddDriversToHaikuImage dvb : cx23882 ;
AddDriversToHaikuImage graphics : $(BEOS_ADD_ONS_DRIVERS_GRAPHICS) ;
AddDriversToHaikuImage input : ps2_hid usb_hid ;
AddDriversToHaikuImage misc : <driver>poke <driver>test ;
AddDriversToHaikuImage net : $(BEOS_ADD_ONS_DRIVERS_NET) ;
#AddDriversToHaikuImage power : $(BEOS_ADD_ONS_DRIVERS_ACPI) ;
# kernel
AddFilesToHaikuImage beos system : <revisioned>kernel_$(TARGET_ARCH) ;
# libs
AddFilesToHaikuImage beos system lib : $(BEOS_SYSTEM_LIB) ;
# libnetwork.so replaces quite a few libraries
AddSymlinkToHaikuImage beos system lib : libnetwork.so : libsocket.so ;
AddSymlinkToHaikuImage beos system lib : libnetwork.so : libbind.so ;
AddSymlinkToHaikuImage beos system lib : libnetwork.so : libnet.so ;
AddSymlinkToHaikuImage beos system lib : libnetwork.so : libnetapi.so ;
AddSymlinkToHaikuImage beos system lib : libnetwork.so : libbnetapi.so ;
# libGL.so have GLUT built-in
AddSymlinkToHaikuImage beos system lib : $(X86_ONLY)libGL.so : libglut.so ;
# servers
AddFilesToHaikuImage beos system servers : $(BEOS_SYSTEM_SERVERS) ;
# apps
AddFilesToHaikuImage beos system : runtime_loader Deskbar Tracker ;
AddFilesToHaikuImage beos bin : $(BEOS_BIN) consoled ;
AddFilesToHaikuImage beos apps : $(BEOS_APPS) ;
AddFilesToHaikuImage beos preferences : $(BEOS_PREFERENCES) ;
AddFilesToHaikuImage beos demos : $(BEOS_DEMOS) ;
AddSymlinkToHaikuImage home Desktop : /boot/home : Home ;
# Deskbar Application links
AddDirectoryToHaikuImage home config be Applications ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/CDPlayer : CDPlayer ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/DeskCalc : DeskCalc ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/DiskProbe : DiskProbe ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/Icon-O-Matic : Icon-O-Matic ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/Magnify : Magnify ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/Mail : Mail ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/MediaPlayer : MediaPlayer ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/MidiPlayer : MidiPlayer ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/People : People ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/SoundRecorder : SoundRecorder ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/StyledEdit : StyledEdit ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/Terminal : Terminal ;
AddSymlinkToHaikuImage home config be Applications
: /boot/beos/apps/TV : TV ;
# Deskbar Desktop Applets links
AddDirectoryToHaikuImage home config be Desktop\ Applets ;
AddSymlinkToHaikuImage home config be Desktop\ Applets
: /boot/beos/apps/LaunchBox : LaunchBox ;
AddSymlinkToHaikuImage home config be Desktop\ Applets
: /boot/beos/apps/NetworkStatus : NetworkStatus ;
AddSymlinkToHaikuImage home config be Desktop\ Applets
: /boot/beos/apps/PowerStatus : PowerStatus ;
AddSymlinkToHaikuImage home config be Desktop\ Applets
: /boot/beos/apps/ProcessController : ProcessController ;
AddSymlinkToHaikuImage home config be Desktop\ Applets
: /boot/beos/apps/Workspaces : Workspaces ;
# Deskbar Preferences and Demos links
AddSymlinkToHaikuImage home config be : /boot/beos/preferences : Preferences ;
AddSymlinkToHaikuImage home config be : /boot/beos/demos : Demos ;
AddSymlinkToHaikuImage beos bin : bzip2 : bunzip2 ;
AddSymlinkToHaikuImage beos bin : less : more ;
AddSymlinkToHaikuImage beos bin : gzip : gunzip ;
AddSymlinkToHaikuImage beos bin : gzip : zcat ;
AddSymlinkToHaikuImage beos bin : zdiff : zcmp ;
AddSymlinkToHaikuImage beos bin : unzip : zipinfo ;
AddSymlinkToHaikuImage beos bin : gawk : awk ;
AddSymlinkToHaikuImage beos bin : grep : egrep ;
AddSymlinkToHaikuImage beos bin : grep : fgrep ;
AddSymlinkToHaikuImage beos bin : vim : vi ;
AddSymlinkToHaikuImage beos bin : vim : view ;
# scripts and data files
local bootScripts = Bootscript SetupEnvironment Netscript InstallerInitScript
InstallerFinishScript ;
SEARCH on $(bootScripts) = [ FDirName $(HAIKU_TOP) data system boot ] ;
AddFilesToHaikuImage beos system boot : $(bootScripts) ;
local logoArtwork = "HAIKU logo - white on blue - big.png"
"HAIKU logo - white on blue - small.png" ;
SEARCH on $(logoArtwork) = [ FDirName $(HAIKU_TOP) data artwork ] ;
AddFilesToHaikuImage beos etc artwork : $(logoArtwork) ;
local svgFiles = "lion.svg" ;
SEARCH on $(svgFiles)
= [ FDirName $(HAIKU_TOP) src tests kits interface picture ] ;
AddFilesToHaikuImage beos etc artwork : $(svgFiles) ;
# TODO: Use data/etc/termcap or src/libs/termcap.src?
local etcFiles = profile termcap teapot.data ;
etcFiles = $(etcFiles:G=etc) ;
SEARCH on $(etcFiles) = [ FDirName $(HAIKU_TOP) data etc ] ;
AddFilesToHaikuImage beos etc : $(etcFiles) ;
local fortuneFiles = Art Computers Education Food Fortunes Goedel Haiku
Humorists Kids Law "Linux cookies" Love Magic Medicine Miscellaneous
News "One Liners" "OS Fortunes" Pets Platitudes Riddles "Songs & Poems"
Sports "Tech Support Excuses" ;
fortuneFiles = $(fortuneFiles:G=etc!fortunes) ;
SEARCH on $(fortuneFiles) = [ FDirName $(HAIKU_TOP) data etc fortunes ] ;
AddFilesToHaikuImage beos etc fortunes : $(fortuneFiles) ;
local fontDir = [ FDirName $(HAIKU_TOP) data etc fonts ] ;
local psFonts = [ Glob $(fontDir)/psfonts : *.afm *.pfb ] ;
local ttFonts = [ Glob $(fontDir)/ttfonts : *.ttf ] ;
AddFilesToHaikuImage beos etc fonts psfonts : $(psFonts) ;
AddFilesToHaikuImage beos etc fonts ttfonts : $(ttFonts) ;
local kanbeDir = [ FDirName $(HAIKU_TOP) data etc KanBe ] ;
local kanbeDefault = [ Glob $(kanbeDir)/default : *.canna *.gz ] ;
local kanbeDic = [ Glob $(kanbeDir)/dic : *.cbp ] ;
local kanbeDicCanna = [ Glob $(kanbeDir)/dic/canna
: *.cld *.ctd *.cbd *.dir ] ;
AddFilesToHaikuImage beos etc KanBe default : $(kanbeDefault) ;
AddFilesToHaikuImage beos etc KanBe dic : $(kanbeDic) ;
AddFilesToHaikuImage beos etc KanBe dic canna : $(kanbeDicCanna) ;
AddDirectoryToHaikuImage beos etc KanBe dic group ;
AddDirectoryToHaikuImage beos etc KanBe dic user ;
#local libnetFiles = networks protocols resolv.conf services ;
#libnetFiles = $(libnetFiles:G=libnet-files) ;
#SEARCH on $(libnetFiles)
# = [ FDirName $(HAIKU_TOP) src kits network compat libnet ] ;
#AddFilesToHaikuImage beos etc : $(libnetFiles) ;
local keymapFiles = [ GLOB [ FDirName $(HAIKU_TOP) src data etc keymaps ]
: *.keymap ] ;
keymapFiles = $(keymapFiles:BG=keymap) ;
AddFilesToHaikuImage beos etc Keymap : $(keymapFiles) ;
local timezones = [ FTimeZoneBinaries $(HAIKU_TIME_ZONE_SOURCES) : : true ] ;
for timezone in $(timezones) {
local dir = [ on $(timezone) return $(RELATIVE_TIMEZONE_DIR) ] ;
AddFilesToHaikuImage beos etc timezones $(dir) : $(timezone) ;
}
local driverSettingsFiles = <driver-settings>kernel ;
SEARCH on $(driverSettingsFiles)
= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
AddFilesToHaikuImage home config settings kernel drivers
: $(driverSettingsFiles) ;
local networkSettingsFiles = <network-settings>services ;
SEARCH on $(networkSettingsFiles)
= [ FDirName $(HAIKU_TOP) data settings network ] ;
AddFilesToHaikuImage common config settings network : $(networkSettingsFiles) ;
AddSymlinkToHaikuImage home config settings
: /boot/beos/etc/timezones/Europe/Paris : timezone ;
AddFilesToHaikuImage home config settings : <keymap>US-International : Key_map ;
# boot loader
AddFilesToHaikuImage beos system : zbeos ;
# boot module links
AddBootModuleSymlinksToHaikuImage config_manager bfs block_io fast_log
generic_ide_pci $(X86_ONLY)isa ide ide_adapter $(X86_ONLY)ide_isa intel
locked_pool $(PPC_ONLY)openpic pci scsi scsi_cd scsi_dsk scsi_periph
ahci silicon_image_3112
;
# add-ons
AddFilesToHaikuImage beos system add-ons accelerants
: $(BEOS_ADD_ONS_ACCELERANTS) ;
AddFilesToHaikuImage beos system add-ons opengl
: $(X86_ONLY)Mesa\ Software\ Renderer ;
AddFilesToHaikuImage beos system add-ons Translators
: $(BEOS_ADD_ONS_TRANSLATORS) ;
AddFilesToHaikuImage beos system add-ons mail_daemon inbound_protocols : POP3 IMAP ;
AddFilesToHaikuImage beos system add-ons mail_daemon outbound_protocols : SMTP ;
AddFilesToHaikuImage beos system add-ons mail_daemon inbound_filters : Match\ Header Spam\ Filter R5\ Daemon\ Filter ;
AddFilesToHaikuImage beos system add-ons mail_daemon outbound_filters : Fortune ;
AddFilesToHaikuImage beos system add-ons mail_daemon system_filters : Inbox New\ Mail\ Notification Outbox Message\ Parser ;
AddFilesToHaikuImage beos system add-ons media : $(BEOS_ADD_ONS_MEDIA) ;
AddFilesToHaikuImage beos system add-ons media plugins
: $(BEOS_ADD_ONS_MEDIA_PLUGINS) ;
AddFilesToHaikuImage beos system add-ons Tracker : FileType-F ZipOMatic-Z ;
AddSymlinkToHaikuImage beos system add-ons Tracker
: /boot/beos/preferences/Backgrounds : Background-B ;
AddFilesToHaikuImage beos system add-ons input_server devices
: <input>keyboard <input>mouse ;
AddFilesToHaikuImage beos system add-ons input_server filters : screen_saver ;
AddFilesToHaikuImage beos system add-ons kernel network
: stack socket ;
AddFilesToHaikuImage beos system add-ons kernel network devices
: $(BEOS_NETWORK_DEVICES) ;
AddFilesToHaikuImage beos system add-ons kernel network datalink_protocols
: $(BEOS_NETWORK_DATALINK_PROTOCOLS) ;
AddFilesToHaikuImage beos system add-ons kernel network ppp
: $(BEOS_NETWORK_PPP) ;
AddFilesToHaikuImage beos system add-ons kernel network protocols
: $(BEOS_NETWORK_PROTOCOLS) ;
AddFilesToHaikuImage beos system add-ons Print : $(BEOS_ADD_ONS_PRINT) ;
AddFilesToHaikuImage beos system add-ons Print transport
: $(BEOS_ADD_ONS_PRINT_TRANSPORT) ;
AddFilesToHaikuImage beos system add-ons Screen\ Savers
: $(BEOS_ADD_ONS_SCREENSAVERS) ;
AddDirectoryToHaikuImage home config add-ons Tracker ;
AddDirectoryToHaikuImage home config add-ons Screen\ Savers ;
AddDirectoryToHaikuImage home config add-ons Translators ;
AddDirectoryToHaikuImage beos etc synth ;
AddDirectoryToHaikuImage beos system add-ons input_server methods ;
#optional
AddFilesToHaikuImage optional beos system add-ons input_server methods : canna ;
#pragma mark - Build The Image
# Set image name and directory defaults and locate the image.
HAIKU_IMAGE_NAME ?= haiku.image ;
HAIKU_IMAGE_DIR ?= $(HAIKU_OUTPUT_DIR) ;
HAIKU_IMAGE ?= $(HAIKU_IMAGE_NAME) ;
HAIKU_IMAGE_SIZE ?= 100 ; # 100 MB
MakeLocate $(HAIKU_IMAGE) : $(HAIKU_IMAGE_DIR) ;
# Set the default installation directory.
HAIKU_INSTALL_DIR ?= /Haiku ;
# the pseudo target all image contents is attached to
NotFile $(HAIKU_IMAGE_CONTAINER_NAME) ;
# prepare the script that initializes the shell variables
HAIKU_IMAGE_INIT_VARIABLES_SCRIPT = <HaikuImage>haiku.image-init-vars ;
local script = $(HAIKU_IMAGE_INIT_VARIABLES_SCRIPT) ;
MakeLocate $(script) : $(HAIKU_OUTPUT_DIR) ;
Always $(script) ;
AddVariableToScript $(script) : sourceDir : $(HAIKU_TOP) ;
AddVariableToScript $(script) : outputDir : $(HAIKU_OUTPUT_DIR) ;
AddVariableToScript $(script) : tmpDir : $(HAIKU_TMP_DIR) ;
AddVariableToScript $(script) : installDir : $(HAIKU_INSTALL_DIR) ;
#AddVariableToScript $(script) : isImage : 1 ;
AddVariableToScript $(script) : imageSize : $(HAIKU_IMAGE_SIZE) ;
AddVariableToScript $(script) : addBuildCompatibilityLibDir
: $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ;
AddVariableToScript $(script) : updateOnly : $(HAIKU_IMAGE_UPDATE_ONLY) ;
AddTargetVariableToScript $(script) : <build>bfs_shell : bfsShell ;
AddTargetVariableToScript $(script) : <build>fs_shell_command : fsShellCommand ;
AddTargetVariableToScript $(script) : <build>copyattr ;
AddTargetVariableToScript $(script) : <build>makebootable ;
AddTargetVariableToScript $(script) : <build>rc ;
AddTargetVariableToScript $(script) : <build>resattr ;
#AddTargetVariableToScript $(script) : $(HAIKU_IMAGE) : imagePath ;
# causes a cyclic dependency
AddVariableToScript $(script) : imagePath
: [ FDirName $(HAIKU_IMAGE_DIR) $(HAIKU_IMAGE_NAME) ] ;
AddVariableToScript $(script) : sourceDirsToCopy
: $(HAIKU_INSTALL_SOURCE_DIRS) ;
# create the other scripts
HAIKU_IMAGE_MAKE_DIRS_SCRIPT = <HaikuImage>haiku.image-make-dirs ;
HAIKU_IMAGE_COPY_FILES_SCRIPT = <HaikuImage>haiku.image-copy-files ;
MakeLocate $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) $(HAIKU_IMAGE_COPY_FILES_SCRIPT)
: $(HAIKU_OUTPUT_DIR) ;
CreateHaikuImageMakeDirectoriesScript $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) ;
CreateHaikuImageCopyFilesScript $(HAIKU_IMAGE_COPY_FILES_SCRIPT) ;
# Convenience wrapper rule around BuildHaikuImage.
rule _BuildHaikuImage
{
# _BuildHaikuImage <image target> : <isImage> ;
#
local image = $(1) ;
local isImage = $(2) ;
# build the image
# HAIKU_IMAGE_EARLY_USER_SCRIPTS, HAIKU_IMAGE_LATE_USER_SCRIPTS can be
# specified by the user.
BuildHaikuImage $(image) :
$(HAIKU_IMAGE_INIT_VARIABLES_SCRIPT)
$(HAIKU_IMAGE_EARLY_USER_SCRIPTS)
$(HAIKU_IMAGE_MAKE_DIRS_SCRIPT)
$(HAIKU_IMAGE_COPY_FILES_SCRIPT)
$(HAIKU_IMAGE_LATE_USER_SCRIPTS)
: $(isImage)
;
# remove the scripts we have generated
RmTemps $(image) :
$(HAIKU_IMAGE_INIT_VARIABLES_SCRIPT)
$(HAIKU_IMAGE_MAKE_DIRS_SCRIPT)
$(HAIKU_IMAGE_COPY_FILES_SCRIPT)
;
}
# build the image
_BuildHaikuImage $(HAIKU_IMAGE) : true ;
NotFile haiku-image ;
Depends haiku-image : $(HAIKU_IMAGE) ;
# install Haiku into a directory
NotFile install-haiku ;
_BuildHaikuImage install-haiku : 0 ;
#pragma mark - Build The VMWare Image
HAIKU_VMWARE_IMAGE_NAME ?= haiku.vmdk ;
HAIKU_VMWARE_IMAGE ?= $(HAIKU_VMWARE_IMAGE_NAME) ;
MakeLocate $(HAIKU_VMWARE_IMAGE) : $(HAIKU_IMAGE_DIR) ;
BuildVMWareImage $(HAIKU_VMWARE_IMAGE) : $(HAIKU_IMAGE)
: $(HAIKU_IMAGE_SIZE) ;
NotFile haiku-vmware-image ;
Depends haiku-vmware-image : $(HAIKU_VMWARE_IMAGE) ;