diff --git a/src/system/boot/Jamfile b/src/system/boot/Jamfile index a02a02533b..3541e65466 100644 --- a/src/system/boot/Jamfile +++ b/src/system/boot/Jamfile @@ -4,19 +4,59 @@ DEFINES += _BOOT_MODE ; UsePrivateHeaders [ FDirName libroot locale ] ; +rule BuildOpenFirmwareLoader { + local haikuLoader = $(1) ; + local bootLoader = $(2) ; + + Depends $(haikuLoader) : $(bootLoader) ; + MakeLocateDebug $(haikuLoader) ; + + switch $(TARGET_ARCH) { + case ppc : + BuildCoffLoader $(haikuLoader) : $(bootLoader) ; + case sparc : + BuildAoutLoader $(haikuLoader) : $(bootLoader) ; + case * : + Exit "Currently unsupported arch:" $(TARGET_ARCH) ; + } +} + + +# +# A.out haiku_loader creation +# +rule BuildAoutLoader { + local haikuLoader = $(1) ; + local bootLoader = $(2) ; + switch $(TARGET_ARCH) { + case sparc : + AOUT_FORMAT on $(haikuLoader) = a.out-sunos-big ; + case * : + Exit "Currently unsupported coff arch:" $(TARGET_ARCH) ; + } +} + +actions BuildAoutLoader { + rm -f $(1) + $(TARGET_OBJCOPY_$(TARGET_PACKAGING_ARCH)) -O $(AOUT_FORMAT) $(2) $(1) +} + + # # Coff haiku_loader creation # rule BuildCoffLoader { local coffLoader = $(1) ; local bootLoader = $(2) ; - # XXX: eventually switch on arch - COFF_FORMAT on $(coffLoader) = xcoff-powermac ; + switch $(TARGET_ARCH) { + case ppc : + COFF_FORMAT on $(coffLoader) = xcoff-powermac ; + case * : + Exit "Currently unsupported coff arch:" $(TARGET_ARCH) ; + } HACK_COFF on $(coffLoader) = hack-coff ; Depends $(coffLoader) : hack-coff ; - Depends $(coffLoader) : $(bootLoader) ; - MakeLocateDebug $(coffLoader) ; } actions BuildCoffLoader bind HACK_COFF { @@ -214,7 +254,7 @@ for platform in [ MultiBootSubDirSetup ] { BuildBiosLoader haiku_loader.$(TARGET_BOOT_PLATFORM) : boot_loader_$(TARGET_BOOT_PLATFORM) ; case openfirmware : - BuildCoffLoader haiku_loader.$(TARGET_BOOT_PLATFORM) : boot_loader_$(TARGET_BOOT_PLATFORM) ; + BuildOpenFirmwareLoader haiku_loader.$(TARGET_BOOT_PLATFORM) : boot_loader_$(TARGET_BOOT_PLATFORM) ; case u-boot : local loader_entry = `printf \"obase=16;ibase=16;10 + %x\\n\" $(HAIKU_BOOT_LOADER_BASE)|bc` ;