# 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). local X86_ONLY = ; local PPC_ONLY = ; local M68K_ONLY = ; if $(TARGET_ARCH) = x86 { X86_ONLY = "" ; } else if $(TARGET_ARCH) = ppc { PPC_ONLY = "" ; } else if $(TARGET_ARCH) = m68k { M68K_ONLY = "" ; } local GPL_ONLY = ; if $(INCLUDE_GPL_ADDONS) = 1 { GPL_ONLY = "" ; } SYSTEM_BIN = "[" addattr alert arp base64 basename bash bc beep bootman bzip2 cal cat catattr checkfs chgrp chmod chop chown chroot cksum clear clockconfig cmp comm compress copyattr $(X86_ONLY)CortexAddOnHost cp csplit ctags cut date dc dd desklink df diff diff3 dircolors dirname draggers driveinfo dstcheck du echo eject env error expand expr factor false fdinfo ffm find finddir fmt fold fortune frcode ftp ftpd funzip fwcontrol gawk $(X86_ONLY)gdb grep groups gzip gzexe hd head hey hostname id ident ideinfo idestatus ifconfig install installsound iroster isvolume join keymap kill less lessecho lesskey link listarea listattr listimage listdev listport listres listsem listusb ln locate logger login logname ls lsindex make makebootable md5sum merge mimeset mkdos mkdir mkfifo mkfs mkindex modifiers mount mount_nfs mountvolume mv nc netstat nl nohup od open passwd paste patch pathchk pc ping play playfile playsound playwav pr prio printenv printf profile ps ptx pwd query quit rc readlink release renice rescan rlog rm rmattr rmindex rmdir roster route safemode screen_blanker screenmode sed setdecor settype setversion setvolume seq sha1sum shar shred shuf shutdown sleep sort spamdbm split stat 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 updatedb uptime urlwrapper useradd uudecode uuencode vdir version vim vmstat waitfor wc wget whoami xargs xres yes zdiff zforce zgrep zip zipcloak zipgrep zipnote zipsplit zmore znew ; SYSTEM_APPS = AboutSystem ActivityMonitor CharacterMap CodyCam DeskCalc DiskProbe DiskUsage DriveSetup CDPlayer Expander Icon-O-Matic Installer LaunchBox Magnify Mail MediaPlayer MidiPlayer NetworkStatus PackageInstaller People PoorMan PowerStatus ProcessController Screenshot ShowImage SoundRecorder StyledEdit Terminal TextSearch TV Workspaces ; SYSTEM_PREFERENCES = Appearance Backgrounds DataTranslations E-mail FileTypes Fonts Keyboard Keymap Media Menu Mouse Network Printers Screen ScreenSaver Sounds Time Touchpad Tracker VirtualMemory ; SYSTEM_DEMOS = BSnow Chart Clock $(X86_ONLY)Cortex FontDemo GLDirectMode GLTeapot Mandelbrot Pairs Playground Pulse Sudoku Gradients ; SYSTEM_LIBS = libbe.so $(HAIKU_LIBSTDC++) libmedia.so libtracker.so libtranslation.so libbnetapi.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 libroot.so libGL.so libfluidsynth.so liblpsolve55.so liblinprog.so libalm.so libilmimf.so libiconv.so ; 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 ; SYSTEM_NETWORK_DEVICES = ethernet loopback ; SYSTEM_NETWORK_DATALINK_PROTOCOLS = ethernet_frame arp loopback_frame ipv4_datagram ; #SYSTEM_NETWORK_PPP = ipcp modem pap pppoe ; SYSTEM_NETWORK_PROTOCOLS = ipv4 tcp udp icmp unix ; SYSTEM_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)s3.accelerant $(X86_ONLY)vesa.accelerant #$(X86_ONLY)via.accelerant #$(X86_ONLY)vmware.accelerant ; SYSTEM_ADD_ONS_TRANSLATORS = BMPTranslator EXRTranslator GIFTranslator JPEGTranslator JPEG2000Translator PCXTranslator PNGTranslator PPMTranslator RAWTranslator RTF-Translator SGITranslator STXTTranslator TGATranslator TIFFTranslator WonderBrushTranslator ; SYSTEM_ADD_ONS_MEDIA = cortex_audioadapter.media_addon cortex_flanger.media_addon dvb.media_addon 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 #legacy.media_addon ; SYSTEM_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 $(X86_ONLY)ape_reader # theora vorbis wav_reader ; SYSTEM_ADD_ONS_PRINT = Canon\ LIPS3\ Compatible Canon\ LIPS4\ Compatible 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 = DebugNow Flurry Haiku IFS Spider Message ; SYSTEM_ADD_ONS_DRIVERS_AUDIO = auich auvia echo3g emuxki hda ; SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD = ; #cmedia sis7018 usb_audio ; SYSTEM_ADD_ONS_DRIVERS_GRAPHICS = $(X86_ONLY)radeon $(X86_ONLY)nvidia $(X86_ONLY)neomagic $(X86_ONLY)matrox $(X86_ONLY)intel_extreme $(X86_ONLY)s3 $(X86_ONLY)vesa #$(X86_ONLY)via #$(X86_ONLY)vmware ; SYSTEM_ADD_ONS_DRIVERS_MIDI = emuxki ; SYSTEM_ADD_ONS_DRIVERS_NET = $(X86_ONLY)3com $(X86_ONLY)broadcom440x $(X86_ONLY)broadcom570x etherpci $(X86_ONLY)ipro1000 pegasus $(X86_ONLY)rtl8139 rtl8169 $(X86_ONLY)rtl81xx sis900 $(X86_ONLY)via_rhine wb840 $(X86_ONLY)ipro100 $(X86_ONLY)nforce #vlance $(X86_ONLY)marvell_yukon $(X86_ONLY)syskonnect $(X86_ONLY)attansic_l2 $(X86_ONLY)ar81xx usb_ecm ; #SYSTEM_ADD_ONS_DRIVERS_POWER = $(X86_ONLY)acpi_button ; SYSTEM_ADD_ONS_BUS_MANAGERS = pci $(X86_ONLY)ps2 $(X86_ONLY)isa ide scsi config_manager agp_gart usb firewire $(X86_ONLY)acpi ; SYSTEM_ADD_ONS_FILE_SYSTEMS = bfs cdda ext2 fat iso9660 nfs attribute_overlay write_overlay $(GPL_ONLY)ntfs $(GPL_ONLY)reiserfs ; #googlefs ; # modules AddFilesToHaikuImage system add-ons kernel bus_managers : $(SYSTEM_ADD_ONS_BUS_MANAGERS) ; AddFilesToHaikuImage system add-ons kernel busses agp_gart : $(X86_ONLY)intel ; AddFilesToHaikuImage system add-ons kernel busses ide : generic_ide_pci it8211 legacy_sata silicon_image_3112 $(X86_ONLY)ide_isa ; 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 : $(X86_ONLY)disasm hangman invalidate_on_exit usb_keyboard run_on_exit ; AddFilesToHaikuImage system add-ons kernel file_systems : $(SYSTEM_ADD_ONS_FILE_SYSTEMS) ; AddFilesToHaikuImage system add-ons kernel generic : dpc ide_adapter locked_pool mpu401 scsi_periph ; AddFilesToHaikuImage system add-ons kernel partitioning_systems : intel session ; AddFilesToHaikuImage system add-ons kernel interrupt_controllers : $(PPC_ONLY)openpic ; if $(TARGET_ARCH) = x86 { AddFilesToHaikuImage system add-ons kernel cpu : generic_x86 ; if $(HAIKU_GCC_VERSION[1]) = 2 { AddFilesToHaikuImage system add-ons kernel debugger demangle : gcc2 ; } } # drivers AddNewDriversToHaikuImage disk scsi : scsi_cd scsi_disk ; # legacy drivers AddDriversToHaikuImage : console dprintf $(X86_ONLY)keyboard 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 ; AddDriversToHaikuImage disk floppy : $(X86_ONLY)pc_floppy ; AddDriversToHaikuImage disk usb : usb_disk ; AddDriversToHaikuImage disk virtual : nbd ; AddDriversToHaikuImage dvb : cx23882 ; AddDriversToHaikuImage graphics : $(SYSTEM_ADD_ONS_DRIVERS_GRAPHICS) ; AddDriversToHaikuImage input : ps2_hid usb_hid wacom ; AddDriversToHaikuImage misc : poke test mem ; AddDriversToHaikuImage net : $(SYSTEM_ADD_ONS_DRIVERS_NET) ; #AddDriversToHaikuImage power : $(SYSTEM_ADD_ONS_DRIVERS_POWER) ; # kernel AddFilesToHaikuImage system : kernel_$(TARGET_ARCH) ; # libs AddFilesToHaikuImage system lib : $(SYSTEM_LIBS) ; # libnetwork.so replaces quite a few libraries SYSTEM_LIBS_LIBNETWORK_ALIASES = libsocket.so libbind.so libnet.so ; local lib ; for lib in $(SYSTEM_LIBS_LIBNETWORK_ALIASES) { AddSymlinkToHaikuImage system lib : libnetwork.so : $(lib) ; } AddSymlinkToHaikuImage system lib : libbnetapi.so : libnetapi.so ; # libGL.so has GLU (like BeOS) *and* GLUT API built-in SYSTEM_LIBS_LIBGL_ALIASES = libGLU.so libglut.so ; if $(TARGET_ARCH) = x86 { local lib ; for lib in $(SYSTEM_LIBS_LIBGL_ALIASES) { AddSymlinkToHaikuImage system lib : libGL.so : $(lib) ; } } # 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 ; AddSymlinkToHaikuImage system bin : bash : sh ; AddSymlinkToHaikuImage home Desktop : /boot/home : Home ; # Deskbar Application links AddDirectoryToHaikuImage home config be Applications ; DESKBAR_APPLICATIONS = ActivityMonitor CharacterMap CodyCam CDPlayer DeskCalc DiskProbe DriveSetup DiskUsage Expander Icon-O-Matic Magnify Mail MediaPlayer MidiPlayer People PoorMan Screenshot SoundRecorder StyledEdit Terminal TV ; local linkTarget ; for linkTarget in $(DESKBAR_APPLICATIONS) { AddSymlinkToHaikuImage home config be Applications : /boot/system/apps/$(linkTarget) : $(linkTarget) ; } # Deskbar Desktop Applets links AddDirectoryToHaikuImage home config be Desktop\ Applets ; DESKBAR_DESKTOP_APPLETS = LaunchBox NetworkStatus PowerStatus ProcessController Workspaces ; for linkTarget in $(DESKBAR_DESKTOP_APPLETS) { AddSymlinkToHaikuImage home config be Desktop\ Applets : /boot/system/apps/$(linkTarget) : $(linkTarget) ; } # Deskbar Preferences links AddDirectoryToHaikuImage home config be Preferences ; # TODO/NOTE: Cannot use $(SYSTEM_PREFERENCES) here since there is # "Tracker"... DESKBAR_PREFERENCES = Appearance Backgrounds DataTranslations E-mail FileTypes Fonts Keyboard Keymap Media Menu Mouse Network Printers Screen ScreenSaver Sounds Time Touchpad Tracker VirtualMemory ; for linkTarget in $(DESKBAR_PREFERENCES) { AddSymlinkToHaikuImage home config be Preferences : /boot/system/preferences/$(linkTarget) : $(linkTarget) ; } # Deskbar Demo links AddDirectoryToHaikuImage home config be Demos ; for linkTarget in $(SYSTEM_DEMOS) { AddSymlinkToHaikuImage home config be Demos : /boot/system/demos/$(linkTarget) : $(linkTarget) ; } AddSymlinkToHaikuImage system bin : bzip2 : bunzip2 ; 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 ; AddSymlinkToHaikuImage system bin : grep : egrep ; AddSymlinkToHaikuImage system bin : grep : fgrep ; AddSymlinkToHaikuImage system bin : vim : vi ; AddSymlinkToHaikuImage system bin : vim : view ; # 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.sample UserSetupEnvironment.sample ; SEARCH on $(userBootScripts) = [ FDirName $(HAIKU_TOP) data config boot ] ; AddFilesToHaikuImage home config boot : $(userBootScripts) ; local logoArtwork = "HAIKU logo - white on blue - big.png" "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 etc word_dictionary : $(spellFiles) ; local etcFiles = inputrc profile teapot.data ; etcFiles = $(etcFiles:G=etc) ; SEARCH on $(etcFiles) = [ FDirName $(HAIKU_TOP) data etc ] ; etcFiles += termcap sysless sysless.in ; AddFilesToHaikuImage system etc : $(etcFiles) ; SEARCH on vimrc = [ FDirName $(HAIKU_TOP) data etc vim ] ; AddFilesToHaikuImage system etc vim : vimrc ; 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 system 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 system fonts psfonts : $(psFonts) ; AddFilesToHaikuImage system 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 etc 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 ; local keyboardLayoutsDir = [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts ] ; local keyboardLayouts = [ Glob $(keyboardLayoutsDir) : [^.]* ] ; AddFilesToHaikuImage system data KeyboardLayouts : $(keyboardLayouts) ; local timezones = [ FTimeZoneBinaries $(HAIKU_TIME_ZONE_SOURCES) : : true ] ; for timezone in $(timezones) { local dir = [ on $(timezone) return $(RELATIVE_TIMEZONE_DIR) ] ; AddFilesToHaikuImage system data timezones $(dir) : $(timezone) ; } 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 = 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 $(X86_ONLY)acpi pci $(X86_ONLY)isa config_manager ide scsi usb $(PPC_ONLY)openpic ide_adapter locked_pool scsi_periph ahci generic_ide_pci it8211 legacy_sata silicon_image_3112 $(X86_ONLY)ide_isa uhci ohci ehci scsi_cd scsi_disk usb_disk intel bfs ; # add-ons AddFilesToHaikuImage system add-ons accelerants : $(SYSTEM_ADD_ONS_ACCELERANTS) ; AddFilesToHaikuImage system add-ons opengl : Mesa\ Software\ Renderer ; AddFilesToHaikuImage system add-ons Translators : $(SYSTEM_ADD_ONS_TRANSLATORS) ; 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 : Match\ Header Spam\ Filter R5\ Daemon\ Filter ; AddFilesToHaikuImage system add-ons mail_daemon outbound_filters : Fortune ; AddFilesToHaikuImage system add-ons mail_daemon system_filters : Inbox New\ Mail\ Notification Outbox Message\ Parser ; 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 ZipOMatic-Z Open\ Target\ Folder-T ; 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 wacom ; AddFilesToHaikuImage system add-ons input_server filters : screen_saver ; AddFilesToHaikuImage system add-ons kernel network : notifications stack ; 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 bfs ; # 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 var empty ; AddDirectoryToHaikuImage var log ; AddDirectoryToHaikuImage var 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 Tracker ; 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 ; # licenses CopyDirectoryToHaikuImage system data : [ FDirName $(HAIKU_TOP) data system data licenses ] : licenses : -x .svn ; #pragma mark - Alternative GCC Libraries # build a zip file with the system libs # (used by another jam that wants to build a Haiku with alternative GCC # libraries included) rule ZipTargets zipFile : targets { Depends $(zipFile) : zip $(targets) ; ZipTargets1 $(zipFile) : zip $(targets) ; } actions ZipTargets1 { $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) $(RM) "$(1)" $(2[1]) -jy "$(1)" $(2[2-]) } local alternativeSystemLibsZip = alternative_system_libs.zip ; MakeLocate $(alternativeSystemLibsZip) : $(HAIKU_OUTPUT_DIR) ; # collect the targets we would install in the lib directory local alternativeSystemLibs ; local libTargets = [ FFilesInHaikuImageDirectory system lib ] ; local libTarget ; for libTarget in $(libTargets) { alternativeSystemLibs += [ on $(libTarget) return $(TARGET) ] ; } # collect the symlinks we would install in the lib directory libTargets = [ FSymlinksInHaikuImageDirectory system lib ] ; local tmpAlternativeLibDir = [ FDirName $(HAIKU_OUTPUT_DIR) tmp alternativeLibs ] ; for libTarget in $(libTargets) { # We need to create actual symlinks, we can zip later. local symlinkTarget = $(libTarget:BS) ; MakeLocate $(symlinkTarget) : $(tmpAlternativeLibDir) ; SymLink $(symlinkTarget) : [ on $(libTarget) return $(SYMLINK_TARGET) ] ; alternativeSystemLibs += $(symlinkTarget) ; } ZipTargets $(alternativeSystemLibsZip) : $(alternativeSystemLibs) ; if $(HAIKU_ADD_ALTERNATIVE_GCC_LIBS) && $(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) ; Always $(target) ; InvokeSubJam1 $(target) ; } actions InvokeSubJam1 { cd $(DIRECTORY) $(JAM:E=jam) -q $(COMMAND_LINE) ; } local otherAlternativeSystemLibsZip = alternative_system_libs.zip ; MakeLocate $(otherAlternativeSystemLibsZip) : $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) ; InvokeSubJam $(otherAlternativeSystemLibsZip) : $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) : "'alternative_system_libs.zip'" ; local libSubDir ; if $(HAIKU_GCC_VERSION[1]) = 2 { libSubDir = gcc4 ; } else { libSubDir = gcc2 ; } # install the alternative libs in the right directory UnzipArchiveToHaikuImage system lib $(libSubDir) : $(otherAlternativeSystemLibsZip) ; } #pragma mark - Optional Packages HAIKU_IMAGE_OPTIONAL_PACKAGE_DESCRIPTIONS = ; include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalPackages ] ; include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalTestPackages ] ; 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 - 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) ; # 100 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) ; # 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 ; 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_UNZIP_FILES_SCRIPT = haiku.image-unzip-files ; MakeLocate $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) $(HAIKU_IMAGE_COPY_FILES_SCRIPT) $(HAIKU_IMAGE_UNZIP_FILES_SCRIPT) : $(HAIKU_OUTPUT_DIR) ; CreateHaikuImageMakeDirectoriesScript $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) ; CreateHaikuImageCopyFilesScript $(HAIKU_IMAGE_COPY_FILES_SCRIPT) ; CreateHaikuImageUnzipFilesScript $(HAIKU_IMAGE_UNZIP_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_UNZIP_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_UNZIP_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 ;