haiku/build/jam/images/FloppyBootImage
François Revol d6de84de66 Allow stripping binaries when copying to image containers
Currently only needed for boot floppy on some platforms.

Disabled for now.

Note we do not have a mean of knowing which file is a binary
or not so we just try to strip, and silently continue when
strip fails (like on the kernel settings file).

Also note strip actually replaces the file, which means it looses
both the resources and attributes, which shouldn't be a problem
for the boot floppy drivers archive, but is not wanted for other
images, so it's not usable elsewhere as such. Patch wanted.
2013-10-09 22:04:36 +02:00

228 lines
6.8 KiB
Plaintext

# This file defines what ends up in the floppy boot image and it executes the
# rules building the image.
#HACK: remove when old ide code is removed!
local NET_BOOT = 0 ;
local USB_BOOT = 1 ;
local USB_ONLY = ;
if $(USB_BOOT) = 1 {
USB_ONLY = "" ;
}
local BOOT_ADD_ONS_NET ;
if $(NET_BOOT) = 1 {
BOOT_ADD_ONS_NET =
remote_disk
$(SYSTEM_ADD_ONS_DRIVERS_NET)
stack socket
$(SYSTEM_NETWORK_DEVICES)
$(SYSTEM_NETWORK_DATALINK_PROTOCOLS)
$(SYSTEM_NETWORK_PPP)
$(SYSTEM_NETWORK_PROTOCOLS)
;
}
SYSTEM_ADD_ONS_BUS_MANAGERS = [ FFilterByBuildFeatures
acpi@x86 ata@ata config_manager dpc pci
ide@ide isa@x86 scsi $(USB_ONLY)usb
] ;
SYSTEM_ADD_ONS_FILE_SYSTEMS =
attribute_overlay bfs iso9660 packagefs write_overlay
;
if $(TARGET_ARCH) = x86_64 {
AddFilesToFloppyBootArchive system add-ons kernel bus_managers
: ata config_manager dpc pci isa scsi $(USB_ONLY)usb ;
AddFilesToFloppyBootArchive system add-ons kernel busses ata
: generic_ide_pci legacy_sata ;
AddFilesToFloppyBootArchive system add-ons kernel busses scsi
: ahci ;
AddFilesToFloppyBootArchive system add-ons kernel file_systems
: $(SYSTEM_ADD_ONS_FILE_SYSTEMS) ;
AddFilesToFloppyBootArchive system add-ons kernel generic
: ata_adapter locked_pool scsi_periph ;
AddFilesToFloppyBootArchive system add-ons kernel partitioning_systems
: intel session ;
if $(USB_BOOT) = 1 {
AddFilesToFloppyBootArchive system add-ons kernel busses usb
: <usb>uhci <usb>ohci <usb>ehci ;
}
AddFilesToFloppyBootArchive system add-ons kernel cpu : generic_x86 ;
AddNewDriversToFloppyBootArchive disk scsi : scsi_cd scsi_disk ;
if $(USB_BOOT) = 1 {
AddDriversToFloppyBootArchive disk usb : usb_disk ;
}
} else {
# modules
AddFilesToFloppyBootArchive system add-ons kernel bus_managers
: $(SYSTEM_ADD_ONS_BUS_MANAGERS) ;
if $(HAIKU_ATA_STACK) = 1 {
AddFilesToFloppyBootArchive system add-ons kernel busses ata
: generic_ide_pci ide_isa@x86 silicon_image_3112 legacy_sata
it8211 ;
} else {
AddFilesToFloppyBootArchive system add-ons kernel busses ide
: generic_ide_pci ide_isa@x86 silicon_image_3112 legacy_sata
it8211 ;
}
AddFilesToFloppyBootArchive system add-ons kernel busses scsi
: ahci ;
AddFilesToFloppyBootArchive system add-ons kernel console : vga_text ;
AddFilesToFloppyBootArchive system add-ons kernel file_systems
: $(SYSTEM_ADD_ONS_FILE_SYSTEMS) ;
AddFilesToFloppyBootArchive system add-ons kernel generic
: ata_adapter@ata ide_adapter@ide locked_pool scsi_periph ;
AddFilesToFloppyBootArchive system add-ons kernel partitioning_systems
: intel session ;
AddFilesToFloppyBootArchive system add-ons kernel interrupt_controllers
: openpic@ppc ;
if $(USB_BOOT) = 1 {
AddFilesToFloppyBootArchive system add-ons kernel busses usb
: <usb>uhci <usb>ohci <usb>ehci ;
}
if $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 {
AddFilesToFloppyBootArchive system add-ons kernel cpu : generic_x86 ;
}
# drivers
AddNewDriversToFloppyBootArchive disk scsi : scsi_cd scsi_disk ;
AddNewDriversToFloppyBootArchive disk : norflash@arm ;
if $(USB_BOOT) = 1 {
AddDriversToFloppyBootArchive disk usb : usb_disk ;
}
if $(NET_BOOT) = 1 {
AddDriversToFloppyBootArchive disk virtual : remote_disk ;
AddDriversToFloppyBootArchive net : $(SYSTEM_ADD_ONS_DRIVERS_NET) ;
}
}
# kernel
AddFilesToFloppyBootArchive system
: <revisioned>kernel_$(TARGET_ARCH) ;
# scripts and data files
local driverSettingsFiles = <driver-settings>kernel ;
SEARCH on $(driverSettingsFiles)
= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
AddFilesToFloppyBootArchive home config settings kernel drivers
: $(driverSettingsFiles) ;
if $(NET_BOOT) = 1 {
# add-ons
AddFilesToFloppyBootArchive system add-ons kernel network
: stack socket ;
AddFilesToFloppyBootArchive
system add-ons kernel network devices
: $(SYSTEM_NETWORK_DEVICES) ;
AddFilesToFloppyBootArchive
system add-ons kernel network datalink_protocols
: $(SYSTEM_NETWORK_DATALINK_PROTOCOLS) ;
AddFilesToFloppyBootArchive
system add-ons kernel network ppp
: $(SYSTEM_NETWORK_PPP) ;
AddFilesToFloppyBootArchive
system add-ons kernel network protocols
: $(SYSTEM_NETWORK_PROTOCOLS) ;
}
# boot module links
if $(TARGET_ARCH) = x86_64 {
AddBootModuleSymlinksToFloppyBootArchive
ata dpc config_manager pci scsi $(USB_ONLY)usb ata_adapter locked_pool
scsi_periph generic_x86 ahci generic_ide_pci legacy_sata
$(USB_ONLY)<usb>uhci $(USB_ONLY)<usb>ohci $(USB_ONLY)<usb>ehci
scsi_cd scsi_disk $(USB_ONLY)usb_disk
intel session
$(SYSTEM_ADD_ONS_FILE_SYSTEMS)
;
} else {
AddBootModuleSymlinksToFloppyBootArchive
$(SYSTEM_ADD_ONS_BUS_MANAGERS)
openpic@ppc
ata_adapter@ata ide_adapter@ide locked_pool scsi_periph
generic_x86@x86
ahci generic_ide_pci ide_isa@x86 silicon_image_3112 legacy_sata
it8211
$(USB_ONLY)<usb>uhci $(USB_ONLY)<usb>ohci $(USB_ONLY)<usb>ehci
scsi_cd scsi_disk $(USB_ONLY)usb_disk norflash@arm
intel session
$(SYSTEM_ADD_ONS_FILE_SYSTEMS)
$(BOOT_ADD_ONS_NET)
;
}
#pragma mark - Build The Archive
# archive target
HAIKU_FLOPPY_BOOT_ARCHIVE = haiku-floppyboot.tgz ;
MakeLocate $(HAIKU_FLOPPY_BOOT_ARCHIVE) : $(HAIKU_OUTPUT_DIR) ;
# the pseudo target all archive contents is attached to
NotFile $(HAIKU_BOOT_FLOPPY_CONTAINER_NAME) ;
# prepare the script that initializes the shell variables
local initVarsScript = <FloppyBootArchive>haiku-floppyboot-init-vars ;
local script = $(initVarsScript) ;
MakeLocate $(script) : $(HAIKU_OUTPUT_DIR) ;
Always $(script) ;
AddVariableToScript $(script) : tmpDir : $(HAIKU_TMP_DIR) ;
AddVariableToScript $(script) : addBuildCompatibilityLibDir
: $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ;
AddTargetVariableToScript $(script) : <build>copyattr ;
AddTargetVariableToScript $(script) : $(HAIKU_STRIP_$(TARGET_ARCH)) : strip ;
# create the other scripts
local makeDirsScript = <FloppyBootArchive>haiku-floppyboot-make-dirs ;
local copyFilesScript = <FloppyBootArchive>haiku-floppyboot-copy-files ;
MakeLocate $(makeDirsScript) $(copyFilesScript) : $(HAIKU_OUTPUT_DIR) ;
CreateFloppyBootArchiveMakeDirectoriesScript $(makeDirsScript) ;
CreateFloppyBootArchiveCopyFilesScript $(copyFilesScript) ;
# build the archive
BuildFloppyBootArchive $(HAIKU_FLOPPY_BOOT_ARCHIVE) :
$(initVarsScript)
$(makeDirsScript)
$(copyFilesScript)
;
# remove the scripts we have generated
RmTemps $(HAIKU_FLOPPY_BOOT_ARCHIVE) :
$(initVarsScript)
$(makeDirsScript)
$(copyFilesScript)
;
NotFile haiku-floppyboot-archive ;
Depends haiku-floppyboot-archive : $(HAIKU_FLOPPY_BOOT_ARCHIVE) ;
# floppy image target
HAIKU_BOOT_FLOPPY = haiku-boot-floppy.image ;
MakeLocate $(HAIKU_BOOT_FLOPPY) : $(HAIKU_OUTPUT_DIR) ;
BuildFloppyBootImage $(HAIKU_BOOT_FLOPPY) : haiku_loader
: $(HAIKU_FLOPPY_BOOT_ARCHIVE) ;
# remove the archive
RmTemps $(HAIKU_BOOT_FLOPPY) : $(HAIKU_FLOPPY_BOOT_ARCHIVE) ;
NotFile haiku-boot-floppy ;
Depends haiku-boot-floppy : $(HAIKU_BOOT_FLOPPY) ;