5f78788af9
Currently hardcoded to Verdex target. Code prepared to pick up configuration details from FDT when implemented. Only enabled in FloppyImage for ARM. This actually enables the kernel to read the content of the image file passed using the "-pflash" parameter to QEMU....
196 lines
5.6 KiB
Plaintext
196 lines
5.6 KiB
Plaintext
# This file defines what ends up in the floppy boot image and it executes the
|
|
# rules building the image.
|
|
|
|
local X86_ONLY = ;
|
|
local PPC_ONLY = ;
|
|
local ARM_ONLY = ;
|
|
if $(TARGET_ARCH) = x86 {
|
|
X86_ONLY = "" ;
|
|
} else if $(TARGET_ARCH) = ppc {
|
|
X86_ONLY = ;
|
|
} else if $(TARGET_ARCH) = m68k {
|
|
X86_ONLY = ;
|
|
} else if $(TARGET_ARCH) = arm {
|
|
ARM_ONLY = "" ;
|
|
}
|
|
|
|
local GPL_ONLY = ;
|
|
if $(HAIKU_INCLUDE_GPL_ADDONS) = 1 {
|
|
GPL_ONLY = "" ;
|
|
}
|
|
|
|
#HACK: remove when old ide code is removed!
|
|
local ATA_ONLY = ;
|
|
local IDE_ONLY = ;
|
|
if $(HAIKU_ATA_STACK) = 1 {
|
|
ATA_ONLY = "" ;
|
|
} else {
|
|
IDE_ONLY = "" ;
|
|
}
|
|
|
|
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 = $(X86_ONLY)acpi $(ATA_ONLY)ata config_manager dpc pci
|
|
$(IDE_ONLY)ide $(X86_ONLY)isa scsi $(USB_ONLY)usb
|
|
;
|
|
SYSTEM_ADD_ONS_FILE_SYSTEMS = bfs iso9660 attribute_overlay write_overlay ;
|
|
|
|
|
|
# modules
|
|
AddFilesToFloppyBootArchive system add-ons kernel bus_managers
|
|
: $(SYSTEM_ADD_ONS_BUS_MANAGERS) ;
|
|
AddFilesToFloppyBootArchive system add-ons kernel busses ide
|
|
: generic_ide_pci $(X86_ONLY)ide_isa 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_ONLY)ata_adapter $(IDE_ONLY)ide_adapter locked_pool scsi_periph ;
|
|
AddFilesToFloppyBootArchive system add-ons kernel partitioning_systems
|
|
: intel session ;
|
|
AddFilesToFloppyBootArchive system add-ons kernel interrupt_controllers
|
|
: $(PPC_ONLY)openpic ;
|
|
|
|
if $(USB_BOOT) = 1 {
|
|
AddFilesToFloppyBootArchive system add-ons kernel busses usb
|
|
: <usb>uhci <usb>ohci <usb>ehci ;
|
|
}
|
|
|
|
if $(TARGET_ARCH) = x86 {
|
|
AddFilesToFloppyBootArchive system add-ons kernel cpu : generic_x86 ;
|
|
}
|
|
|
|
# drivers
|
|
AddNewDriversToFloppyBootArchive disk scsi : scsi_cd scsi_disk ;
|
|
AddNewDriversToFloppyBootArchive disk : $(ARM_ONLY)norflash ;
|
|
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
|
|
AddBootModuleSymlinksToFloppyBootArchive
|
|
$(SYSTEM_ADD_ONS_BUS_MANAGERS)
|
|
$(PPC_ONLY)openpic
|
|
$(ATA_ONLY)ata_adapter $(IDE_ONLY)ide_adapter locked_pool scsi_periph
|
|
$(X86_ONLY)generic_x86
|
|
ahci generic_ide_pci $(X86_ONLY)ide_isa 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 $(ARM_ONLY)norflash
|
|
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 ;
|
|
|
|
# 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) ;
|
|
|
|
|