# 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). SYSTEM_BIN = [ FFilterByBuildFeatures "[" addattr alert arp base64 basename bash bc beep bfsinfo cal cat catattr checkfs checkitout chgrp chmod chop chown chroot cksum clear clockconfig cmp collectcatkeys comm compress copyattr CortexAddOnHost cp csplit cut date dc dd desklink df diff diff3 dircolors dirname diskimage draggers driveinfo dstcheck du dumpcatalog echo eject env error expand expr factor false fdinfo ffm filepanel find finddir FirstBootPrompt fmt fold fortune frcode ftp ftpd funzip fwcontrol gawk gdb@x86 getlimits groups gzip gzexe hd head hey hostname id ident ifconfig install installsound iroster isvolume ideinfo@ide idestatus@ide join kernel_debugger keymap keystore kill less lessecho lesskey link linkcatkeys listarea listattr listimage listdev listport listres listsem listusb ln locale locate logger login logname ls lsindex mail2mbox makebootable mbox2mail md5sum merge message mimeset mkdos mkdir mkfifo mkfs mkindex mktemp modifiers mount mount_nfs mountvolume mv netcat netstat nl nohup notify nproc od open passwd paste patch pathchk pc ping ping6 play playfile playsound playwav pr prio printenv printf profile ps ptx pwd query quit rc readlink reindex release renice rlog rm rmattr rmindex rmdir roster route safemode screen_blanker screenmode screenshot sdiff setdecor setmime settype setversion setvolume seq sha1sum shar shred shuf shutdown sleep sort spamdbm split stat strace stty su sum sync sysinfo tac tail tcpdump tcptester tee telnet telnetd test timeout top touch tput tr traceroute translate trash true truncate tsort tty uname unchop unexpand unmount uniq unlink unshar unzip unzipsfx updatedb uptime urlwrapper useradd uudecode uuencode vdir version vmstat waitfor watch wc wget whoami writembr@x86 xargs xres yes zdiff zforce zgrep zip zipcloak zipgrep zipnote zipsplit zmore znew ] ; SYSTEM_APPS = [ FFilterByBuildFeatures AboutSystem ActivityMonitor BootManager@x86 CharacterMap CodyCam DeskCalc Devices DiskProbe DiskUsage DriveSetup CDPlayer Debugger Expander GLInfo@x86 Icon-O-Matic Installer LaunchBox Magnify Mail MediaConverter MediaPlayer MidiPlayer NetworkStatus PackageInstaller People PoorMan PowerStatus ProcessController Screenshot ShowImage SoundRecorder StyledEdit Terminal TextSearch TV WebWatch Workspaces ] ; SYSTEM_PREFERENCES = [ FFilterByBuildFeatures Appearance Backgrounds CPUFrequency DataTranslations Deskbar E-mail FileTypes Keyboard Keymap Locale Media Mouse Network Notifications Printers Screen ScreenSaver Shortcuts Sounds Time Touchpad Tracker VirtualMemory ] ; SYSTEM_DEMOS = [ FFilterByBuildFeatures BSnow Chart Clock Cortex FontDemo GLTeapot@x86 $(HAIKU_INCLUDE_TRADEMARKS)Haiku3d@x86 Mandelbrot OverlayImage Pairs Playground Pulse Sudoku ] ; SYSTEM_LIBS = [ FFilterByBuildFeatures libbe.so libbsd.so libbnetapi.so libdebug.so libdevice.so libgame.so libGL.so@x86 libglut.so@x86 libgnu.so libmail.so libmedia.so libmidi.so libmidi2.so libnetwork.so libroot.so libroot-addon-icu.so libscreensaver.so libtextencoding.so libtiff.so libtracker.so libtranslation.so $(HAIKU_SHARED_LIBSTDC++) $(HAIKU_SHARED_LIBSUPC++) ] ; PRIVATE_SYSTEM_LIBS = [ FFilterByBuildFeatures $(HAIKU_JPEG_CURRENT_LIB) $(HAIKU_LIBPNG_CURRENT_LIB) $(HAIKU_ZLIB_CURRENT_LIB) $(HAIKU_FREETYPE_CURRENT_LIB) libalm.so libfluidsynth.so libilmimf.so ] ; SYSTEM_SERVERS = [ FFilterByBuildFeatures app_server cddb_daemon debug_server input_server keystore_server mail_daemon media_addon_server media_server midi_server mount_server net_server notification_server power_daemon print_server print_addon_server registrar syslog_daemon dns_resolver_server nfs4_idmapper_server ] ; SYSTEM_NETWORK_DEVICES = ethernet loopback ; SYSTEM_NETWORK_DATALINK_PROTOCOLS = ethernet_frame arp loopback_frame ipv6_datagram ; #SYSTEM_NETWORK_PPP = ipcp modem pap pppoe ; SYSTEM_NETWORK_PROTOCOLS = ipv4 tcp udp icmp unix icmp6 ipv6 ; SYSTEM_ADD_ONS_ACCELERANTS = [ FFilterByBuildFeatures x86,x86_64 @{ vesa.accelerant }@ # x86,x86_64 x86 @{ 3dfx.accelerant ati.accelerant matrox.accelerant neomagic.accelerant nvidia.accelerant intel_810.accelerant intel_extreme.accelerant radeon.accelerant radeon_hd.accelerant s3.accelerant #via.accelerant vmware.accelerant }@ # x86 ] ; SYSTEM_ADD_ONS_TRANSLATORS = BMPTranslator EXRTranslator GIFTranslator HVIFTranslator ICOTranslator JPEGTranslator JPEG2000Translator PCXTranslator PNGTranslator PPMTranslator RAWTranslator RTFTranslator SGITranslator STXTTranslator TGATranslator TIFFTranslator WebPTranslator WonderBrushTranslator ICNSTranslator ; SYSTEM_ADD_ONS_LOCALE_CATALOGS = plaintext ; SYSTEM_ADD_ONS_MEDIA = [ FFilterByBuildFeatures cortex_audioadapter.media_addon cortex_flanger.media_addon dvb.media_addon@x86 hmulti_audio.media_addon mixer.media_addon opensound.media_addon tone_producer_demo.media_addon usb_webcam.media_addon video_producer_demo.media_addon video_window_demo.media_addon firewire_dv.media_addon@x86 #legacy.media_addon equalizer.media_addon vst_host.media_addon ] ; SYSTEM_ADD_ONS_MEDIA_PLUGINS = [ FFilterByBuildFeatures ffmpeg@ffmpeg raw_decoder ] ; SYSTEM_ADD_ONS_PRINT = Canon\ LIPS3\ Compatible Canon\ LIPS4\ Compatible Gutenprint PCL5\ Compatible PCL6\ Compatible PDF\ Writer PS\ Compatible Preview ; SYSTEM_ADD_ONS_PRINT_TRANSPORT = HP\ JetDirect IPP LPR # Parallel\ Port Print\ To\ File Serial\ Port USB\ Port ; SYSTEM_ADD_ONS_SCREENSAVERS = [ FFilterByBuildFeatures Butterfly DebugNow Flurry@x86 GLife@x86 $(HAIKU_INCLUDE_TRADEMARKS)Haiku Icons IFS Leaves Message Spider Gravity@x86 ] ; SYSTEM_ADD_ONS_DRIVERS_AUDIO = auich auvia echo3g emuxki hda ice1712 sis7018 ; SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD = ; #cmedia usb_audio ; SYSTEM_ADD_ONS_DRIVERS_GRAPHICS = [ FFilterByBuildFeatures x86,x86_64 @{ vesa }@ # x86,x86_64 x86 @{ ati 3dfx intel_810 intel_extreme matrox neomagic nvidia radeon radeon_hd s3 #via vmware }@ # x86 ] ; SYSTEM_ADD_ONS_DRIVERS_MIDI = emuxki ice1712 usb_midi ; SYSTEM_ADD_ONS_DRIVERS_NET = [ FFilterByBuildFeatures x86 @{ 3com atheros813x ar81xx attansic_l1 attansic_l2 broadcom440x broadcom570x dec21xxx ipro100 ipro1000 jmicron2x0 marvell_yukon nforce pcnet rtl8139 rtl81xx sis19x syskonnect via_rhine vt612x }@ # x86 etherpci pegasus sis900 usb_davicom usb_asix usb_ecm wb840 # WLAN drivers x86 @{ aironetwifi atheroswifi broadcom43xx iprowifi2100 iprowifi2200 iprowifi3945 iprowifi4965 marvell88w8363 marvell88w8335 ralinkwifi wavelanwifi }@ # x86 # WWAN drivers #usb_beceemwmx@gpl ] ; SYSTEM_ADD_ONS_DRIVERS_POWER = [ FFilterByBuildFeatures acpi_button@x86 ] ; SYSTEM_ADD_ONS_BUS_MANAGERS = [ FFilterByBuildFeatures ata@ata pci ps2@x86,x86_64 isa@x86,x86_64 ide@ide scsi config_manager agp_gart@x86 usb firewire@x86 acpi@x86 ] ; SYSTEM_ADD_ONS_FILE_SYSTEMS = bfs btrfs cdda exfat ext2 fat iso9660 nfs nfs4 attribute_overlay write_overlay ntfs reiserfs@x86 udf googlefs ; # wifi firmware for driver in $(SYSTEM_ADD_ONS_DRIVERS_NET) { local package = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_PACKAGE) ] ; local archive = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_ARCHIVE) ] ; local extract = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_DO_EXTRACT) ] ; if $(archive) { AddWifiFirmwareToHaikuImage $(driver) : $(package) : $(archive) : $(extract) ; } local packages = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_PACKAGES) ] ; local archives = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_ARCHIVES) ] ; for archive in $(archives) { AddWifiFirmwareToHaikuImage $(driver) : $(packages[1]) : $(archive) : $(extract) ; packages = $(packages[2-]) ; } } # modules AddFilesToHaikuImage system add-ons kernel bus_managers : $(SYSTEM_ADD_ONS_BUS_MANAGERS) ; AddFilesToHaikuImage system add-ons kernel busses agp_gart : intel@x86 ; if $(HAIKU_ATA_STACK) = 1 { AddFilesToHaikuImage system add-ons kernel busses ata : generic_ide_pci it8211 legacy_sata silicon_image_3112 ide_isa@x86 ; } else { AddFilesToHaikuImage system add-ons kernel busses ide : generic_ide_pci it8211 legacy_sata silicon_image_3112 ide_isa@x86 ; } AddFilesToHaikuImage system add-ons kernel busses scsi : ahci ; AddFilesToHaikuImage system add-ons kernel busses usb : uhci ohci ehci ; AddFilesToHaikuImage system add-ons kernel console : vga_text ; AddFilesToHaikuImage system add-ons kernel debugger : demangle disasm@x86 hangman invalidate_on_exit usb_keyboard qrencode run_on_exit ; AddFilesToHaikuImage system add-ons kernel file_systems : $(SYSTEM_ADD_ONS_FILE_SYSTEMS) ; AddFilesToHaikuImage system add-ons kernel generic : ata_adapter@ata bios@x86,x86_64 dpc ide_adapter@ide locked_pool mpu401 scsi_periph tty ; AddFilesToHaikuImage system add-ons kernel partitioning_systems : amiga_rdb apple efi_gpt intel session ; AddFilesToHaikuImage system add-ons kernel interrupt_controllers : openpic@ppc ; if $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 { AddFilesToHaikuImage system add-ons kernel cpu : generic_x86 ; } # drivers AddNewDriversToHaikuImage disk scsi : scsi_cd scsi_disk ; AddNewDriversToHaikuImage power : enhanced_speedstep@x86 ; AddNewDriversToHaikuImage power : acpi_battery@x86 ; #AddNewDriversToHaikuImage display : display_controls@x86 ; # legacy drivers AddDriversToHaikuImage : console dprintf null random tty zero ; AddDriversToHaikuImage audio hmulti : $(SYSTEM_ADD_ONS_DRIVERS_AUDIO) ; AddDriversToHaikuImage audio old : $(SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD) ; AddDriversToHaikuImage midi : $(SYSTEM_ADD_ONS_DRIVERS_MIDI) ; AddDriversToHaikuImage bus : usb_raw fw_raw@x86 ; AddDriversToHaikuImage disk floppy : pc_floppy@x86 ; AddDriversToHaikuImage disk usb : usb_disk ; AddDriversToHaikuImage disk usb : usb_floppy ; AddDriversToHaikuImage printer usb : usb_printer ; AddDriversToHaikuImage disk virtual : nbd ; AddDriversToHaikuImage dvb : cx23882 ; AddDriversToHaikuImage graphics : $(SYSTEM_ADD_ONS_DRIVERS_GRAPHICS) ; AddDriversToHaikuImage input : ps2_hid usb_hid wacom ; AddDriversToHaikuImage misc : poke mem ; AddDriversToHaikuImage net : $(SYSTEM_ADD_ONS_DRIVERS_NET) ; AddDriversToHaikuImage ports : usb_serial ; AddDriversToHaikuImage power : $(SYSTEM_ADD_ONS_DRIVERS_POWER) ; # kernel AddFilesToHaikuImage system : kernel_$(TARGET_ARCH) ; # libs AddLibrariesToHaikuHybridImage system lib : $(SYSTEM_LIBS) $(PRIVATE_SYSTEM_LIBS) ; # libnetwork.so replaces quite a few libraries SYSTEM_LIBS_LIBNETWORK_ALIASES = libsocket.so libbind.so libnet.so ; if $(HAIKU_GCC_VERSION[1]) = 2 { local lib ; for lib in $(SYSTEM_LIBS_LIBNETWORK_ALIASES) { AddSymlinkToHaikuHybridImage system lib : libnetwork.so : $(lib) : : true ; } AddSymlinkToHaikuHybridImage system lib : libbnetapi.so : libnetapi.so : : true ; } # libGL.so has GLU (like BeOS) built-in SYSTEM_LIBS_LIBGL_ALIASES = libGLU.so ; if $(TARGET_ARCH) = x86 { local lib ; for lib in $(SYSTEM_LIBS_LIBGL_ALIASES) { AddSymlinkToHaikuHybridImage system lib : libGL.so : $(lib) : : true ; } } SYSTEM_LIBS_ALIASES = $(SYSTEM_LIBS_LIBNETWORK_ALIASES) libnetapi.so $(SYSTEM_LIBS_LIBGL_ALIASES) ; OPTIONAL_LIBS_ALIASES = libfreetype.so libjpeg.so libpng.so libz.so ; # libfreetype.so links to the current freetype lib AddSymlinkToHaikuHybridImage system lib : $(HAIKU_FREETYPE_CURRENT_LIB:BS) : $(HAIKU_FREETYPE_CURRENT_LINK) : : true ; AddSymlinkToHaikuHybridImage system lib : $(HAIKU_FREETYPE_CURRENT_LINK) : libfreetype.so : : true ; # libpng.so links to the current libpng AddSymlinkToHaikuHybridImage system lib : $(HAIKU_LIBPNG_CURRENT_LIB:BS) : $(HAIKU_LIBPNG_CURRENT_LINK) : : true ; AddSymlinkToHaikuHybridImage system lib : $(HAIKU_LIBPNG_CURRENT_LINK) : libpng.so : : true ; # libjpeg.so links to the current libjpeg AddSymlinkToHaikuHybridImage system lib : $(HAIKU_JPEG_CURRENT_LIB:BS) : $(HAIKU_JPEG_CURRENT_LINK) : : true ; AddSymlinkToHaikuHybridImage system lib : $(HAIKU_JPEG_CURRENT_LINK) : libjpeg.so : : true ; # zlib.so links to the current zlib AddSymlinkToHaikuHybridImage system lib : $(HAIKU_ZLIB_CURRENT_LIB:BS) : $(HAIKU_ZLIB_CURRENT_LINK) : : true ; AddSymlinkToHaikuHybridImage system lib : $(HAIKU_ZLIB_CURRENT_LINK) : libz.so : : true ; # servers AddFilesToHaikuImage system servers : $(SYSTEM_SERVERS) ; # apps AddFilesToHaikuImage system : runtime_loader Deskbar Tracker ; AddFilesToHaikuImage system bin : $(SYSTEM_BIN) consoled ; AddFilesToHaikuImage system apps : $(SYSTEM_APPS) ; AddFilesToHaikuImage system preferences : $(SYSTEM_PREFERENCES) ; AddFilesToHaikuImage system demos : $(SYSTEM_DEMOS) ; SEARCH on which = [ FDirName $(HAIKU_TOP) data bin ] ; AddFilesToHaikuImage system bin : which ; SEARCH on installoptionalpackage = [ FDirName $(HAIKU_TOP) data bin ] ; AddFilesToHaikuImage system bin : installoptionalpackage ; SEARCH on install-wifi-firmwares.sh = [ FDirName $(HAIKU_TOP) data bin ] ; AddFilesToHaikuImage system bin : install-wifi-firmwares.sh ; SEARCH on welcome = [ FDirName $(HAIKU_TOP) data bin ] ; AddFilesToHaikuImage system bin : welcome ; AddSymlinkToHaikuImage home Desktop : /boot/system/bin/welcome : Welcome ; SEARCH on userguide = [ FDirName $(HAIKU_TOP) data bin ] ; AddFilesToHaikuImage system bin : userguide ; AddSymlinkToHaikuImage home Desktop : /boot/system/bin/userguide : User\ Guide ; # Add the files to be used by installoptionalpackage. AddDirectoryToHaikuImage common data optional-packages ; local optional-pkg-files = BuildFeatures OptionalPackageDependencies OptionalPackages OptionalLibPackages ; for name in $(optional-pkg-files) { local file = [ FDirName $(HAIKU_TOP) build jam $(name) ] ; AddFilesToHaikuImage common data optional-packages : $(file) ; } AddInstalledPackagesFileToHaikuImage ; AddSymlinkToHaikuImage system bin : bash : sh ; AddSymlinkToHaikuImage system bin : trash : untrash ; AddSymlinkToHaikuImage home Desktop : /boot/home : Home ; # Mailbox folders and symlink AddDirectoryToHaikuImage home mail draft ; AddDirectoryToHaikuImage home mail in ; AddDirectoryToHaikuImage home mail out ; AddSymlinkToHaikuImage home config : settings/deskbar : be ; # Deskbar Application links AddDirectoryToHaikuImage home config settings deskbar Applications ; DESKBAR_APPLICATIONS = ActivityMonitor CharacterMap CodyCam CDPlayer DeskCalc Devices DiskProbe DriveSetup DiskUsage Expander Icon-O-Matic Installer Magnify Mail MediaConverter MediaPlayer MidiPlayer People PoorMan Screenshot SoundRecorder StyledEdit Terminal TV ; local linkTarget ; for linkTarget in $(DESKBAR_APPLICATIONS) { AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/system/apps/$(linkTarget) : $(linkTarget) ; } # Deskbar Desktop applets links AddDirectoryToHaikuImage home config settings deskbar Desktop\ applets ; DESKBAR_DESKTOP_APPLETS = LaunchBox NetworkStatus PowerStatus ProcessController Workspaces ; for linkTarget in $(DESKBAR_DESKTOP_APPLETS) { AddSymlinkToHaikuImage home config settings deskbar Desktop\ applets : /boot/system/apps/$(linkTarget) : $(linkTarget) ; } # Deskbar Preferences links AddDirectoryToHaikuImage home config settings deskbar Preferences ; DESKBAR_PREFERENCES = $(SYSTEM_PREFERENCES:B) ; for linkTarget in $(DESKBAR_PREFERENCES) { AddSymlinkToHaikuImage home config settings deskbar Preferences : /boot/system/preferences/$(linkTarget) : $(linkTarget) ; } # Deskbar Demo links AddDirectoryToHaikuImage home config settings deskbar Demos ; for linkTarget in $(SYSTEM_DEMOS) { AddSymlinkToHaikuImage home config settings deskbar Demos : /boot/system/demos/$(linkTarget) : $(linkTarget) ; } AddSymlinkToHaikuImage system bin : less : more ; AddSymlinkToHaikuImage system bin : gzip : gunzip ; AddSymlinkToHaikuImage system bin : gzip : zcat ; AddSymlinkToHaikuImage system bin : zdiff : zcmp ; AddSymlinkToHaikuImage system bin : unzip : zipinfo ; AddSymlinkToHaikuImage system bin : gawk : awk ; # scripts and data files local bootScripts = Bootscript Bootscript.cd SetupEnvironment Netscript InstallerInitScript InstallerFinishScript ; SEARCH on $(bootScripts) = [ FDirName $(HAIKU_TOP) data system boot ] ; AddFilesToHaikuImage system boot : $(bootScripts) ; local userBootScripts = UserBootscript UserSetupEnvironment.sample ; SEARCH on $(userBootScripts) = [ FDirName $(HAIKU_TOP) data config boot ] ; AddFilesToHaikuImage home config boot : $(userBootScripts) ; # Add boot launch directory AddDirectoryToHaikuImage home config boot launch ; local logoArtwork = $(HAIKU_INCLUDE_TRADEMARKS)"HAIKU logo - white on blue - big.png" $(HAIKU_INCLUDE_TRADEMARKS)"HAIKU logo - white on blue - normal.png" ; SEARCH on $(logoArtwork) = [ FDirName $(HAIKU_TOP) data artwork ] ; AddFilesToHaikuImage system data artwork : $(logoArtwork) ; AddDirectoryToHaikuImage system data sounds ; # Add mail provider infos. AddFilesToHaikuImage home config settings Mail ProviderInfo : $(HAIKU_PROVIDER_INFOS) ; # Mail spell check dictionaries local spellFiles = words geekspeak ; spellFiles = $(spellFiles:G=spell) ; SEARCH on $(spellFiles) = [ FDirName $(HAIKU_TOP) src apps mail ] ; AddFilesToHaikuImage system data spell_check word_dictionary : $(spellFiles) ; local etcDir = [ FDirName $(HAIKU_TOP) data etc ] ; local etcFiles = inputrc profile ; etcFiles = $(etcFiles:G=etc) ; SEARCH on $(etcFiles) = [ FDirName $(etcDir) ] ; etcFiles += termcap sysless sysless.in ; AddFilesToHaikuImage common etc : $(etcFiles) ; local profileFiles = [ Glob $(etcDir)/profile.d : *.sh ] ; profileFiles = $(profileFiles:G=profile-d) ; AddDirectoryToHaikuImage common etc profile.d ; AddFilesToHaikuImage common etc profile.d : $(profileFiles) ; #local bashCompletionFiles = [ Glob $(etcDir)/bash_completion.d : * ] ; #local bashCompletionHelperFiles # = [ Glob $(etcDir)/bash_completion.d/helpers : * ] ; #bashCompletionFiles = $(bashCompletionFiles:G=bash-completion) ; #bashCompletionHelperFiles = $(bashCompletionHelperFiles:G=bash-completion-hlp) ; #AddDirectoryToHaikuImage common etc bash_completion.d ; #AddDirectoryToHaikuImage common etc bash_completion.d helpers ; #AddFilesToHaikuImage common etc bash_completion.d : $(bashCompletionFiles) ; #AddFilesToHaikuImage common etc bash_completion.d helpers # : $(bashCompletionHelperFiles) ; local fortuneFiles = [ Glob $(HAIKU_TOP)/data/system/data/fortunes : [a-zA-Z0-9]* ] ; fortuneFiles = $(fortuneFiles:G=data!fortunes) ; AddFilesToHaikuImage system data fortunes : $(fortuneFiles) ; local fontDir = [ FDirName $(HAIKU_TOP) data system data fonts ] ; local psFonts = [ Glob $(fontDir)/psfonts : *.afm *.pfb ] ; local ttFonts = [ Glob $(fontDir)/ttfonts : *.ttf ] ; AddFilesToHaikuImage system data fonts psfonts : $(psFonts) ; AddFilesToHaikuImage system data fonts ttfonts : $(ttFonts) ; local cannaDir = [ FDirName $(HAIKU_TOP) data system data Canna ] ; local cannaDefault = [ Glob $(cannaDir)/default : *.canna *.gz ] ; local cannaDic = [ Glob $(cannaDir)/dic : *.cbp ] ; local cannaDicCanna = [ Glob $(cannaDir)/dic/canna : *.cld *.ctd *.cbd *.dir ] ; AddFilesToHaikuImage system data Canna default : $(cannaDefault) ; AddFilesToHaikuImage system data Canna dic : $(cannaDic) ; AddFilesToHaikuImage system data Canna dic canna : $(cannaDicCanna) ; AddDirectoryToHaikuImage system data Canna dic group ; AddDirectoryToHaikuImage system data Canna dic user ; local keymapFiles = [ Glob [ FDirName $(HAIKU_TOP) src data keymaps ] : *.keymap ] ; keymapFiles = $(keymapFiles:BG=keymap) ; AddFilesToHaikuImage system data Keymaps : $(keymapFiles) ; AddSymlinkToHaikuImage system data Keymaps : Swedish : Finnish ; AddSymlinkToHaikuImage system data Keymaps : Slovene : Croatian ; AddSymlinkToHaikuImage system data Keymaps : US-International : Brazilian ; # Copy keyboard layout files to the image one-by-one. local keyboardLayoutsDir = [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts ] ; local keyboardLayoutFiles = "Generic 104-key" "Generic 105-key International" "Kinesis Advantage" "Kinesis Ergo Elan International" "TypeMatrix 2030" ; keyboardLayoutFiles = $(keyboardLayoutFiles:G=keyboard-layout) ; SEARCH on $(keyboardLayoutFiles) = $(keyboardLayoutsDir) ; AddFilesToHaikuImage system data KeyboardLayouts : $(keyboardLayoutFiles) ; # Add Apple Aluminum keyboard layout files to the image in an Apple Aluminum # subdirectory. The subdirectory is turned into a submenu in the Layout menu # of the Keymap preference app. local appleAluminumDir = [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts Apple\ Aluminum ] ; local appleAluminumFiles = "Apple Aluminium Extended International" "Apple Aluminium International" "Apple Aluminum (US)" "Apple Aluminum Extended (US)" ; appleAluminumFiles = $(appleAluminumFiles:G=keyboard-layout) ; SEARCH on $(appleAluminumFiles) = $(appleAluminumDir) ; AddFilesToHaikuImage system data KeyboardLayouts Apple\ Aluminum : $(appleAluminumFiles) ; # Add ThinkPad keyboard layout files to the image in a ThinkPad # subdirectory. The subdirectory is turned into a submenu in the Layout menu # of the Keymap preference app. local thinkpadDir = [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts ThinkPad ] ; local thinkPadFiles = "ThinkPad (US)" "ThinkPad International" "ThinkPad T400s (US)" "ThinkPad T400s International" "ThinkPad X1 (US)" "ThinkPad X1 International" "ThinkPad X100e (US)" "ThinkPad X100e International" ; thinkPadFiles = $(thinkPadFiles:G=keyboard-layout) ; SEARCH on $(thinkPadFiles) = $(thinkpadDir) ; AddFilesToHaikuImage system data KeyboardLayouts ThinkPad : $(thinkPadFiles) ; local driverSettingsFiles = kernel ; SEARCH on $(driverSettingsFiles) = [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ; AddFilesToHaikuImage home config settings kernel drivers : $(driverSettingsFiles) ; local networkSettingsFiles = services ; SEARCH on $(networkSettingsFiles) = [ FDirName $(HAIKU_TOP) data settings network ] ; AddFilesToHaikuImage common settings network : $(networkSettingsFiles) ; # post install scripts and fresh install indicator file local postInstallFiles = add_catalog_entry_attributes.sh default_deskbar_items.sh mime_update.sh ; postInstallFiles = $(postInstallFiles:G=post-install) ; SEARCH on $(postInstallFiles) = [ FDirName $(HAIKU_TOP) data common boot post_install ] ; SEARCH on fresh_install = [ FDirName $(HAIKU_TOP) data common settings ] ; AddFilesToHaikuImage common boot post_install : $(postInstallFiles) ; AddFilesToHaikuImage common settings : fresh_install ; # boot loader AddFilesToHaikuImage system : haiku_loader ; # boot module links AddBootModuleSymlinksToHaikuImage acpi@x86 ata@ata pci isa@x86 config_manager dpc ide@ide scsi usb openpic@ppc ata_adapter@ata ide_adapter@ide locked_pool scsi_periph ahci generic_ide_pci it8211 legacy_sata silicon_image_3112 ide_isa@x86 uhci ohci ehci scsi_cd scsi_disk usb_disk efi_gpt intel bfs ; # add-ons AddFilesToHaikuImage system add-ons accelerants : $(SYSTEM_ADD_ONS_ACCELERANTS) ; # OpenGL renderers if $(TARGET_ARCH) = x86 { if $(HAIKU_GCC_VERSION[1]) = 2 { AddFilesToHaikuHybridImage system add-ons opengl : Legacy\ Software\ Rasterizer : : true ; } else { AddFilesToHaikuHybridImage system add-ons opengl : Software\ Rasterizer : : true ; # Future Gallium3d } } AddFilesToHaikuHybridImage system add-ons Translators : $(SYSTEM_ADD_ONS_TRANSLATORS) : : true ; AddFilesToHaikuImage system add-ons locale catalogs : $(SYSTEM_ADD_ONS_LOCALE_CATALOGS) ; AddFilesToHaikuHybridImage system add-ons locale catalogs : $(SYSTEM_ADD_ONS_LOCALE_CATALOGS) : : true ; AddFilesToHaikuImage system add-ons mail_daemon inbound_protocols : POP3 IMAP ; AddFilesToHaikuImage system add-ons mail_daemon outbound_protocols : SMTP ; AddFilesToHaikuImage system add-ons mail_daemon inbound_filters : MatchHeader SpamFilter NewMailNotification ; AddFilesToHaikuImage system add-ons mail_daemon outbound_filters : Fortune ; AddFilesToHaikuImage system add-ons media : $(SYSTEM_ADD_ONS_MEDIA) ; AddFilesToHaikuImage system add-ons media plugins : $(SYSTEM_ADD_ONS_MEDIA_PLUGINS) ; AddFilesToHaikuImage system add-ons Tracker : FileType-F Mark\ as… Mark\ as\ Read-R Open\ Target\ Folder-O Open\ Terminal-T ZipOMatic-Z ; AddSymlinkToHaikuImage system add-ons Tracker : /boot/system/preferences/Backgrounds : Background-B ; AddSymlinkToHaikuImage system add-ons Tracker : /boot/system/apps/TextSearch : TextSearch-G ; AddSymlinkToHaikuImage system add-ons Tracker : /boot/system/apps/DiskUsage : DiskUsage-I ; AddFilesToHaikuImage system add-ons input_server devices : keyboard mouse tablet wacom ; AddFilesToHaikuImage system add-ons input_server filters : screen_saver shortcut_catcher ; AddFilesToHaikuImage system add-ons kernel network : notifications stack ; AddFilesToHaikuImage system add-ons kernel network : dns_resolver ; AddFilesToHaikuImage system add-ons kernel network devices : $(SYSTEM_NETWORK_DEVICES) ; AddFilesToHaikuImage system add-ons kernel network datalink_protocols : $(SYSTEM_NETWORK_DATALINK_PROTOCOLS) ; AddFilesToHaikuImage system add-ons kernel network ppp : $(SYSTEM_NETWORK_PPP) ; AddFilesToHaikuImage system add-ons kernel network protocols : $(SYSTEM_NETWORK_PROTOCOLS) ; AddFilesToHaikuImage system add-ons Print : $(SYSTEM_ADD_ONS_PRINT) ; AddFilesToHaikuImage system add-ons Print transport : $(SYSTEM_ADD_ONS_PRINT_TRANSPORT) ; AddFilesToHaikuImage system add-ons Screen\ Savers : $(SYSTEM_ADD_ONS_SCREENSAVERS) ; AddFilesToHaikuImage system add-ons disk_systems : intel gpt bfs ntfs ; # decorators AddDirectoryToHaikuImage home config add-ons decorators ; #AddFilesToHaikuImage home config add-ons decorators : ; # create directories that will remain empty AddDirectoryToHaikuImage common bin ; AddDirectoryToHaikuImage common include ; AddDirectoryToHaikuImage common lib ; AddDirectoryToHaikuImage home Desktop ; AddDirectoryToHaikuImage home config bin ; AddDirectoryToHaikuImage home config lib ; AddDirectoryToHaikuImage home mail ; AddDirectoryToHaikuImage common var empty ; AddDirectoryToHaikuImage common var log ; AddDirectoryToHaikuImage common cache tmp ; AddDirectoryToHaikuImage home config add-ons kernel drivers bin ; AddDirectoryToHaikuImage home config add-ons kernel drivers dev ; AddDirectoryToHaikuImage home config add-ons input_server devices ; AddDirectoryToHaikuImage home config add-ons input_server filters ; AddDirectoryToHaikuImage home config add-ons input_server methods ; AddDirectoryToHaikuImage home config add-ons media plugins ; AddDirectoryToHaikuImage home config add-ons Tracker ; AddDirectoryToHaikuImage home config add-ons Print ; AddDirectoryToHaikuImage home config add-ons Screen\ Savers ; AddDirectoryToHaikuImage home config add-ons Translators ; AddDirectoryToHaikuImage system data synth ; AddDirectoryToHaikuImage system add-ons input_server methods ; # optional AddFilesToHaikuImage optional system add-ons input_server methods : canna ; # printers AddDirectoryToHaikuImage home config settings printers Preview : home-config-settings-printers-preview.rdef ; AddDirectoryToHaikuImage home config settings printers "Save as PDF" : home-config-settings-printers-save-as-pdf.rdef ; # PDF Writer enconding files CopyDirectoryToHaikuImage system data : [ FDirName $(HAIKU_TOP) src add-ons print drivers pdf encoding ] : "PDF Writer" : -x Jamfile ; # Gutenprint data files CopyDirectoryToHaikuImage system data : [ FDirName $(HAIKU_TOP) src libs print libgutenprint src xml ] : gutenprint : -x *.c -x Makefile.am -x Makefile.in ; # dvb channel settings CopyDirectoryToHaikuImage home config settings Media : [ FDirName $(HAIKU_TOP) data settings media dvb ] : dvb : -x Jamfile ; # licenses CopyDirectoryToHaikuImage system data : [ FDirName $(HAIKU_TOP) data system data licenses ] : licenses ; # Copy documentation as per DiskUsage's license requirement. CopyDirectoryToHaikuImage system documentation : [ FDirName $(HAIKU_TOP) docs apps diskusage ] : diskusage ; # Copy documentation as per PDFlib Lite's license requirement. CopyDirectoryToHaikuImage system documentation : [ FDirName $(HAIKU_TOP) src libs pdflib doc ] : pdflib ; # Copy sample programs as per PDFlib Lite's license requirement. CopyDirectoryToHaikuImage develop sample-code : [ FDirName $(HAIKU_TOP) src libs pdflib bind pdflib ] : pdflib ; # Copy OpenGL kit headers into image if $(TARGET_ARCH) = x86 { CopyDirectoryToHaikuImage develop headers os opengl : [ FDirName $(HAIKU_MESA_HEADERS) GL ] ; CopyDirectoryToHaikuImage develop headers os opengl : [ FDirName $(HAIKU_GLU_HEADERS) GL ] ; } #pragma mark - Optional Packages HAIKU_IMAGE_OPTIONAL_PACKAGE_DESCRIPTIONS = ; include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalPackages ] ; include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalTestPackages ] ; include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalLibPackages ] ; local optionalPackageDescriptions ; if $(HAIKU_IMAGE_OPTIONAL_PACKAGE_DESCRIPTIONS) { optionalPackageDescriptions = optional_package_descriptions ; MakeLocate $(optionalPackageDescriptions) : $(HAIKU_COMMON_PLATFORM_OBJECT_DIR) ; Depends $(optionalPackageDescriptions) : $(HAIKU_IMAGE_OPTIONAL_PACKAGE_DESCRIPTIONS) ; actions together BuildOptionalPackageDescriptions { cat $(2) > $(1) } BuildOptionalPackageDescriptions $(optionalPackageDescriptions) : $(HAIKU_IMAGE_OPTIONAL_PACKAGE_DESCRIPTIONS) ; } #pragma mark - Alternative GCC Libraries # We build a zip archive containing the libraries built with the alternative # GCC and unzip onto our image. Building the archive is done by a sub-jam. include [ FDirName $(HAIKU_BUILD_RULES_DIR) AlternativeGCCArchive ] ; if $(HAIKU_ADD_ALTERNATIVE_GCC_LIBS) = 1 && $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) { # let another jam build a zip with the system libraries rule InvokeSubJam target : directory : jamLine { DIRECTORY on $(target) = $(directory) ; COMMAND_LINE on $(target) = $(jamLine) ; local optionalPackages = $(HAIKU_ADDED_OPTIONAL_PACKAGES:J=/) ; OPTIONAL_PACKAGES on $(target) = $(optionalPackages:E="") ; Always $(target) ; InvokeSubJam1 $(target) ; } actions InvokeSubJam1 { cd $(DIRECTORY) export HAIKU_IGNORE_USER_BUILD_CONFIG=1 export HAIKU_ADD_OPTIONAL_PACKAGES=$(OPTIONAL_PACKAGES) export HAIKU_PRIMARY_GCC=$(HAIKU_GCC_VERSION[1]) # NOTE: depending on when InvokeSubJam is called, you may end up with # 2 * n - 1 jobs in total. $(JAM:E=jam) -q -j$(JAMJOBS) $(COMMAND_LINE) ; } local otherAlternativeSystemLibsZip = alternative_system_libs.zip ; MakeLocate $(otherAlternativeSystemLibsZip) : $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) ; InvokeSubJam $(otherAlternativeSystemLibsZip) : $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) : "haiku-alternative-gcc-archive" ; # install the alternative libs in the right directory ExtractArchiveToHaikuImage : $(otherAlternativeSystemLibsZip) ; } #pragma mark - User/Group Setup # add the root user and the root and users groups AddUserToHaikuImage $(HAIKU_ROOT_USER_NAME:E=baron) : 0 : 0 : /boot/home : /bin/bash : $(HAIKU_ROOT_USER_REAL_NAME:E="Root User") ; AddGroupToHaikuImage root : 0 : ; AddGroupToHaikuImage users : 100 : ; #pragma mark - Host Name if $(HAIKU_IMAGE_HOST_NAME) { actions BuildHaikuImageHostnameFile { echo "$(HAIKU_IMAGE_HOST_NAME)" > $(1) } local file = hostname ; Always $(file) ; MakeLocate $(file) : $(HAIKU_COMMON_PLATFORM_OBJECT_DIR) ; BuildHaikuImageHostnameFile $(file) ; AddFilesToHaikuImage common settings network : $(file) ; } #pragma mark - Build The Image # Execute pre-image user config rules. UserBuildConfigRulePreImage ; # Set image name and directory defaults and locate the image. HAIKU_IMAGE_NAME ?= $(HAIKU_DEFAULT_IMAGE_NAME) ; HAIKU_IMAGE_DIR ?= $(HAIKU_DEFAULT_IMAGE_DIR) ; HAIKU_IMAGE = $(HAIKU_IMAGE_NAME) ; HAIKU_IMAGE_SIZE ?= $(HAIKU_DEFAULT_IMAGE_SIZE) ; # 300 MB HAIKU_IMAGE_LABEL ?= $(HAIKU_DEFAULT_IMAGE_LABEL) ; MakeLocate $(HAIKU_IMAGE) : $(HAIKU_IMAGE_DIR) ; # Set the default installation directory. HAIKU_INSTALL_DIR ?= $(HAIKU_DEFAULT_INSTALL_DIR) ; # the pseudo target all image contents is attached to NotFile $(HAIKU_IMAGE_CONTAINER_NAME) ; # Detect a hybrid GCC2/GCC4 image. local isHybridBuild ; if $(HAIKU_ADD_ALTERNATIVE_GCC_LIBS) = 1 && $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) { isHybridBuild = 1 ; } # prepare the script that initializes the shell variables HAIKU_IMAGE_INIT_VARIABLES_SCRIPT = 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) : imageLabel : $(HAIKU_IMAGE_LABEL) ; AddVariableToScript $(script) : addBuildCompatibilityLibDir : $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ; AddVariableToScript $(script) : dontClearImage : $(HAIKU_DONT_CLEAR_IMAGE) ; AddVariableToScript $(script) : updateOnly : [ IsUpdateHaikuImageOnly ] ; AddTargetVariableToScript $(script) : addattr ; AddTargetVariableToScript $(script) : bfs_shell : bfsShell ; AddTargetVariableToScript $(script) : fs_shell_command : fsShellCommand ; AddTargetVariableToScript $(script) : copyattr ; AddTargetVariableToScript $(script) : create_image : createImage ; AddTargetVariableToScript $(script) : makebootable ; AddTargetVariableToScript $(script) : rc ; AddTargetVariableToScript $(script) : resattr ; AddTargetVariableToScript $(script) : unzip ; AddTargetVariableToScript $(script) : vmdkimage ; AddVariableToScript $(script) : stripCommand : $(HAIKU_STRIP) ; if $(HOST_RM_ATTRS_TARGET) { AddTargetVariableToScript $(script) : $(HOST_RM_ATTRS_TARGET) : rmAttrs ; } else { AddVariableToScript $(script) : rmAttrs : rm ; } if $(optionalPackageDescriptions) { AddTargetVariableToScript $(script) : $(optionalPackageDescriptions) : optionalPackageDescriptions ; } # create the other scripts HAIKU_IMAGE_MAKE_DIRS_SCRIPT = haiku.image-make-dirs ; HAIKU_IMAGE_COPY_FILES_SCRIPT = haiku.image-copy-files ; HAIKU_IMAGE_EXTRACT_FILES_SCRIPT = haiku.image-extract-files ; MakeLocate $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) $(HAIKU_IMAGE_COPY_FILES_SCRIPT) $(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) : $(HAIKU_OUTPUT_DIR) ; CreateHaikuImageMakeDirectoriesScript $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) ; CreateHaikuImageCopyFilesScript $(HAIKU_IMAGE_COPY_FILES_SCRIPT) ; CreateHaikuImageExtractFilesScript $(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) ; # Convenience wrapper rule around BuildHaikuImage. rule _BuildHaikuImage image : isImage : isVMwareImage { # _BuildHaikuImage : : ; # # 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_EXTRACT_FILES_SCRIPT) $(HAIKU_IMAGE_LATE_USER_SCRIPTS) : $(isImage) : $(isVMwareImage) ; # remove the scripts we have generated RmTemps $(image) : $(HAIKU_IMAGE_INIT_VARIABLES_SCRIPT) $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) $(HAIKU_IMAGE_COPY_FILES_SCRIPT) $(HAIKU_IMAGE_EXTRACT_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 ; # build the VMware image HAIKU_VMWARE_IMAGE_NAME ?= $(HAIKU_DEFAULT_VMWARE_IMAGE_NAME) ; HAIKU_VMWARE_IMAGE = $(HAIKU_VMWARE_IMAGE_NAME) ; MakeLocate $(HAIKU_VMWARE_IMAGE) : $(HAIKU_IMAGE_DIR) ; _BuildHaikuImage $(HAIKU_VMWARE_IMAGE) : true : true ; NotFile haiku-vmware-image ; Depends haiku-vmware-image : $(HAIKU_VMWARE_IMAGE) ; # Execute post-image user config rules. UserBuildConfigRulePostImage ;