1# set HAIKU_BUILD_TYPE early 2switch $(HAIKU_BUILD_PROFILE) { 3 case "bootstrap-*" : { 4 HAIKU_BUILD_TYPE = bootstrap ; 5 EnableBuildFeatures bootstrap_image ; 6 7 # Add a third pseudo target for the platform used when building anything 8 # for stage0 of the bootstrap process. 9 NotFile bootstrap_stage0 ; 10 11 HAIKU_DEFINES += HAIKU_BOOTSTRAP_BUILD ; 12 TARGET_DEFINES += HAIKU_BOOTSTRAP_BUILD ; 13 } 14 15 case "minimum-*" : { 16 HAIKU_BUILD_TYPE = minimum ; 17 EnableBuildFeatures minimum_image ; 18 19 HAIKU_DEFINES += HAIKU_MINIMUM_BUILD ; 20 TARGET_DEFINES += HAIKU_MINIMUM_BUILD ; 21 } 22 23 case "*" : { 24 HAIKU_BUILD_TYPE = regular ; 25 EnableBuildFeatures regular_image ; 26 27 HAIKU_DEFINES += HAIKU_REGULAR_BUILD ; 28 TARGET_DEFINES += HAIKU_REGULAR_BUILD ; 29 } 30} 31Echo "Starting build of type $(HAIKU_BUILD_TYPE) ..." ; 32 33 34rule DefineDefaultBuildProfiles 35{ 36 # release profiles 37 DefineBuildProfile release-raw : image : "haiku-release.image" ; 38 DefineBuildProfile release-vmware : vmware-image : "haiku-release.vmdk" ; 39 DefineBuildProfile release-cd : cd-image : "haiku-release.iso" ; 40 DefineBuildProfile release-anyboot : anyboot-image 41 : "haiku-release-anyboot.image" ; 42 43 # nightly profiles 44 DefineBuildProfile nightly-raw : image : "haiku-nightly.image" ; 45 DefineBuildProfile nightly-vmware : vmware-image : "haiku-nightly.vmdk" ; 46 DefineBuildProfile nightly-cd : cd-image : "haiku-nightly.iso" ; 47 DefineBuildProfile nightly-anyboot : anyboot-image 48 : "haiku-nightly-anyboot.image" ; 49 50 # bootstrap profiles 51 DefineBuildProfile bootstrap-raw : image : "haiku-bootstrap.image" ; 52 DefineBuildProfile bootstrap-mmc : haiku-mmc-image : "haiku-bootstrap.mmc" ; 53 DefineBuildProfile bootstrap-vmware : vmware-image 54 : "haiku-bootstrap.vmdk" ; 55 56 # minimum profiles 57 DefineBuildProfile minimum-raw : image : "haiku-minimum.image" ; 58 DefineBuildProfile minimum-mmc : haiku-mmc-image : "haiku-minimum.mmc" ; 59 DefineBuildProfile minimum-vmware : vmware-image : "haiku-minimum.vmdk" ; 60 DefineBuildProfile minimum-anyboot : anyboot-image 61 : "haiku-minimum-anyboot.image" ; 62 63 64 switch $(HAIKU_BUILD_PROFILE) { 65 case "release-*" : { 66 Echo Building Haiku R1/development preview ; 67 HAIKU_ROOT_USER_NAME ?= user ; 68 HAIKU_ROOT_USER_REAL_NAME ?= "Yourself" ; 69 AddGroupToHaikuImage party : 101 : user sshd ; 70 HAIKU_IMAGE_HOST_NAME ?= shredder ; 71 HAIKU_IMAGE_SIZE ?= 800 ; 72 73 AddHaikuImagePackages 74 bepdf 75 cvs 76 keymapswitcher 77 llvm 78 man 79 mercurial 80 nano 81 openssh 82 p7zip 83 pe 84 python 85 subversion 86 timgmsoundfont 87 vision 88 vl_gothic 89 wpa_supplicant 90 wqy_microhei 91 # xz_utils can't be built with gcc2, so we install it for 92 # primary gcc 4 architectures or gcc 2 hybrids. 93 xz_utils@!gcc2 94 gcc2 @{ xz_utils_x86@secondary_x86 }@ 95 ; 96 97 local architectureObject ; 98 for architectureObject in [ MultiArchSubDirSetup ] { 99 on $(architectureObject) { 100 AddHaikuImagePackages openssl wonderbrush@gcc2 ; 101 } 102 } 103 104 AddOptionalHaikuImagePackages BeBook Development Git Welcome ; 105 106 # WebPositive can only built for x86_gcc2, x86 and x86_64 107 if $(HAIKU_PACKAGING_ARCHS) in x86_gcc2 x86 x86_64 { 108 AddOptionalHaikuImagePackages WebPositive ; 109 } else { 110 Echo "WebPositive not available on $(HAIKU_PACKAGING_ARCHS)" ; 111 } 112 } 113 114 case "alpha-*" : { 115 Echo The alpha-* build profiles have been renamed to release-* ; 116 } 117 118 case "nightly-*" : { 119 Echo Building Haiku Nightly ; 120 HAIKU_ROOT_USER_NAME ?= user ; 121 HAIKU_ROOT_USER_REAL_NAME ?= "Yourself" ; 122 AddGroupToHaikuImage party : 101 : user sshd ; 123 HAIKU_IMAGE_HOST_NAME ?= shredder ; 124 HAIKU_IMAGE_SIZE ?= 600 ; 125 126 AddHaikuImagePackages 127 man 128 nano 129 openssh 130 openssl 131 p7zip 132 pe 133 vision 134 wpa_supplicant 135 # xz_utils can't be built with gcc2, so we install it for 136 # primary gcc 4 architectures or gcc 2 hybrids. 137 xz_utils@!gcc2 138 gcc2 @{ xz_utils_x86@secondary_x86 }@ 139 ; 140 141 AddOptionalHaikuImagePackages Development Git ; 142 143 # WebPositive can only built for x86_gcc2, x86 and x86_64 144 if $(HAIKU_PACKAGING_ARCHS) in x86_gcc2 x86 x86_64 { 145 AddOptionalHaikuImagePackages WebPositive ; 146 } else { 147 Echo "WebPositive not available on $(HAIKU_PACKAGING_ARCHS)" ; 148 } 149 } 150 151 case "bootstrap-*" : { 152 Echo Building Haiku Bootstrap ; 153 HAIKU_IMAGE_HOST_NAME ?= shredder ; 154 HAIKU_IMAGE_SIZE ?= 20000 ; 155 156 AddHaikuImagePackages 157 binutils 158 bison 159 curl_devel 160 flex 161 freetype_devel 162 gawk 163 gcc 164 grep 165 haikuporter 166 less 167 m4 168 make 169 ncurses 170 ncurses_devel 171 python 172 sed 173 texinfo 174 zlib_devel 175 ; 176 177 # secondary architecture packages 178 local architectureObject ; 179 for architectureObject 180 in [ MultiArchSubDirSetup $(TARGET_PACKAGING_ARCHS[2-]) ] { 181 on $(architectureObject) { 182 AddHaikuImagePackages 183 binutils 184 curl 185 curl_devel 186 freetype 187 freetype_devel 188 gcc 189 icu 190 libsolv 191 ncurses 192 ncurses_devel 193 zlib 194 zlib_devel 195 ; 196 } 197 } 198 199 AddOptionalHaikuImagePackages DevelopmentMin ; 200 } 201 202 case "minimum-*" : { 203 Echo Building Haiku Minimum Target ; 204 HAIKU_IMAGE_HOST_NAME ?= shredder ; 205 206 AddHaikuImagePackages 207 ; 208 } 209 } 210 211 212 # Uncomment in official release branch. 213 #HAIKU_DEFINES += HAIKU_OFFICIAL_RELEASE ; 214 #TARGET_DEFINES += HAIKU_OFFICIAL_RELEASE ; 215 216 217 # If a build profile was specified on the command line, now is the time to 218 # check whether it is unknown or one of the default profiles. 219 if $(HAIKU_BUILD_PROFILE) && ! $(HAIKU_BUILD_PROFILE_DEFINED) { 220 # define the obvious default profiles 221 if $(HAIKU_BUILD_PROFILE) in anyboot-image cd-image image install 222 vmware-image { 223 DefineBuildProfile $(HAIKU_BUILD_PROFILE) : $(HAIKU_BUILD_PROFILE) ; 224 } else { 225 Exit "Build profile" $(HAIKU_BUILD_PROFILE) "not defined." ; 226 } 227 } 228} 229