diff --git a/build/jam/AnybootImage b/build/jam/AnybootImage index f3e6e943b0..d2793fa0f7 100644 --- a/build/jam/AnybootImage +++ b/build/jam/AnybootImage @@ -1,3 +1,9 @@ +# Set anyboot file name and directory defaults. +HAIKU_ANYBOOT_NAME ?= $(HAIKU_DEFAULT_ANYBOOT_NAME) ; +HAIKU_ANYBOOT_DIR ?= $(HAIKU_DEFAULT_ANYBOOT_DIR) ; +HAIKU_ANYBOOT = $(HAIKU_ANYBOOT_NAME) ; +HAIKU_ANYBOOT_LABEL ?= $(HAIKU_DEFAULT_ANYBOOT_LABEL) ; + rule BuildAnybootMBR binary : source { Depends $(binary) : $(source) ; @@ -11,14 +17,6 @@ actions BuildAnybootMBR1 { $(TARGET_CC) $(MBR_SOURCE) -o $(1) -nostdlib -Xlinker --oformat=binary -Xlinker -S -Xlinker -N -Xlinker "-e start" -Xlinker "-Ttext=0x600" } -local baseMBR = base_mbr.bin ; -local mbrSource = [ FDirName $(HAIKU_TOP) src bin writembr mbr.S ] ; - -BuildAnybootMBR $(baseMBR) : $(mbrSource) ; - -MakeLocate $(baseMBR) : $(HAIKU_OUTPUT_DIR) ; - - rule BuildAnybootImage anybootImage : mbrPart : isoPart : imageFile { local anyboot = anyboot ; @@ -34,14 +32,19 @@ actions BuildAnybootImage1 { $(2[1]) $(1) $(2[2]) $(2[3]) $(2[4]) } -HAIKU_ANYBOOT_IMAGE = haiku-anyboot.image ; -MakeLocate $(HAIKU_ANYBOOT_IMAGE) : $(HAIKU_OUTPUT_DIR) ; - -BuildAnybootImage $(HAIKU_ANYBOOT_IMAGE) : $(baseMBR) : $(HAIKU_CD_BOOT_IMAGE) +local baseMBR = base_mbr.bin ; +local mbrSource = [ FDirName $(HAIKU_TOP) src bin writembr mbr.S ] ; +BuildAnybootMBR $(baseMBR) : $(mbrSource) ; +MakeLocate $(baseMBR) : $(HAIKU_OUTPUT_DIR) ; +MakeLocate $(HAIKU_ANYBOOT) : $(HAIKU_ANYBOOT_DIR) ; +BuildAnybootImage $(HAIKU_ANYBOOT) : $(baseMBR) : $(HAIKU_CD_BOOT_IMAGE) : $(HAIKU_IMAGE_NAME) ; # TODO: this one seems to cause the build to fail each other run (caching?) -#RmTemps $(HAIKU_ANYBOOT_IMAGE) : $(baseMBR) ; +#RmTemps $(HAIKU_ANYBOOT) : $(baseMBR) ; +RmTemps $(HAIKU_ANYBOOT) : $(HAIKU_CD_BOOT_IMAGE) ; +RmTemps $(HAIKU_ANYBOOT) : $(HAIKU_IMAGE_NAME) ; +RmTemps $(HAIKU_ANYBOOT) : $(HAIKU_BOOT_FLOPPY) ; NotFile haiku-anyboot-image ; -Depends haiku-anyboot-image : $(HAIKU_ANYBOOT_IMAGE) ; +Depends haiku-anyboot-image : $(HAIKU_ANYBOOT) ; diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup index 3d373e85bd..b3b03d0dd7 100644 --- a/build/jam/BuildSetup +++ b/build/jam/BuildSetup @@ -73,6 +73,11 @@ HAIKU_DEFAULT_CD_NAME = haiku-cd.iso ; HAIKU_DEFAULT_CD_DIR = $(HAIKU_OUTPUT_DIR) ; HAIKU_DEFAULT_CD_LABEL = Haiku ; +# Haiku Anyboot defaults +HAIKU_DEFAULT_ANYBOOT_NAME = haiku-anyboot.image ; +HAIKU_DEFAULT_ANYBOOT_DIR = $(HAIKU_OUTPUT_DIR) ; +HAIKU_DEFAULT_ANYBOOT_LABEL ?= Haiku ; + # analyze and optionally replace jam's target parameters ProcessCommandLineArguments ; diff --git a/build/jam/MiscRules b/build/jam/MiscRules index 3c3571f545..2cebefecd7 100644 --- a/build/jam/MiscRules +++ b/build/jam/MiscRules @@ -326,6 +326,14 @@ rule DefineBuildProfile name : type : path { local startOffset ; switch $(type) { + case "anyboot-image" : { + targetName ?= $(HAIKU_ANYBOOT_NAME) ; + targetName ?= $(HAIKU_DEFAULT_ANYBOOT_NAME) ; + HAIKU_ANYBOOT_DIR = $(targetDir) ; + HAIKU_ANYBOOT_NAME = $(targetName) ; + buildTarget = haiku-anyboot-image ; + } + case "cd-image" : { targetName ?= $(HAIKU_CD_NAME) ; targetName ?= $(HAIKU_DEFAULT_CD_NAME) ; diff --git a/build/jam/ReleaseBuildProfiles b/build/jam/ReleaseBuildProfiles index a8752cc8e7..d0a5a3b807 100644 --- a/build/jam/ReleaseBuildProfiles +++ b/build/jam/ReleaseBuildProfiles @@ -1,9 +1,13 @@ DefineBuildProfile alpha-raw : image : "haiku-alpha.image" ; DefineBuildProfile alpha-vmware : vmware-image : "haiku-alpha.vmdk" ; DefineBuildProfile alpha-cd : cd-image : "haiku-alpha.iso" ; +DefineBuildProfile alpha-anyboot : anyboot-image + : "haiku-alpha-anyboot.image" ; DefineBuildProfile nightly-raw : image : "haiku-nightly.image" ; DefineBuildProfile nightly-vmware : vmware-image : "haiku-nightly.vmdk" ; DefineBuildProfile nightly-cd : cd-image : "haiku-nightly.iso" ; +DefineBuildProfile nightly-anyboot : anyboot-image + : "haiku-nightly-anyboot.image" ; switch $(HAIKU_BUILD_PROFILE) { case "alpha-*" : {