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.iso" ; 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.iso" ; 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 DefineBuildProfile bootstrap-anyboot : anyboot-image 56 : "haiku-bootstrap-anyboot.iso" ; 57 58 # minimum profiles 59 DefineBuildProfile minimum-raw : image : "haiku-minimum.image" ; 60 DefineBuildProfile minimum-mmc : haiku-mmc-image : "haiku-minimum.mmc" ; 61 DefineBuildProfile minimum-vmware : vmware-image : "haiku-minimum.vmdk" ; 62 DefineBuildProfile minimum-anyboot : anyboot-image 63 : "haiku-minimum-anyboot.iso" ; 64 65 66 switch $(HAIKU_BUILD_PROFILE) { 67 case "release-*" : { 68 Echo Building Haiku R1/development preview ; 69 HAIKU_ROOT_USER_NAME ?= user ; 70 HAIKU_ROOT_USER_REAL_NAME ?= "Yourself" ; 71 AddGroupToHaikuImage party : 101 : user sshd ; 72 HAIKU_IMAGE_HOST_NAME ?= shredder ; 73 HAIKU_IMAGE_SIZE ?= 800 ; 74 75 AddHaikuImagePackages 76 bepdf 77 cvs 78 keymapswitcher 79 llvm 80 man 81 mercurial 82 nano 83 noto 84 openssh 85 p7zip 86 pe 87 python 88 subversion 89 timgmsoundfont 90 vision 91 vl_gothic 92 wpa_supplicant 93 wqy_microhei 94 # xz_utils can't be built with gcc2, so we install it for 95 # primary gcc 4 architectures or gcc 2 hybrids. 96 xz_utils@!gcc2 97 gcc2 @{ xz_utils_x86@secondary_x86 }@ 98 ; 99 100 local architectureObject ; 101 for architectureObject in [ MultiArchSubDirSetup ] { 102 on $(architectureObject) { 103 AddHaikuImagePackages openssl wonderbrush@gcc2 ; 104 } 105 } 106 107 AddOptionalHaikuImagePackages BeBook Development Git Welcome ; 108 109 # WebPositive can only built for x86_gcc2, x86 and x86_64 110 if $(HAIKU_PACKAGING_ARCHS) in x86_gcc2 x86 x86_64 { 111 AddOptionalHaikuImagePackages WebPositive ; 112 } else { 113 Echo "WebPositive not available on $(HAIKU_PACKAGING_ARCHS)" ; 114 } 115 } 116 117 case "alpha-*" : { 118 Echo The alpha-* build profiles have been renamed to release-* ; 119 } 120 121 case "nightly-*" : { 122 Echo Building Haiku Nightly ; 123 HAIKU_ROOT_USER_NAME ?= user ; 124 HAIKU_ROOT_USER_REAL_NAME ?= "Yourself" ; 125 AddGroupToHaikuImage party : 101 : user sshd ; 126 HAIKU_IMAGE_HOST_NAME ?= shredder ; 127 if $(DEBUG) != 0 { 128 HAIKU_IMAGE_SIZE ?= 700 ; 129 } 130 HAIKU_IMAGE_SIZE ?= 600 ; 131 132 AddHaikuImagePackages 133 man 134 nano 135 noto 136 openssh 137 openssl 138 p7zip 139 pe 140 vision 141 wpa_supplicant 142 # xz_utils can't be built with gcc2, so we install it for 143 # primary gcc 4 architectures or gcc 2 hybrids. 144 xz_utils@!gcc2 145 gcc2 @{ xz_utils_x86@secondary_x86 }@ 146 ; 147 148 AddOptionalHaikuImagePackages Development Git ; 149 150 # WebPositive can only built for x86_gcc2, x86 and x86_64 151 if $(HAIKU_PACKAGING_ARCHS) in x86_gcc2 x86 x86_64 { 152 AddOptionalHaikuImagePackages WebPositive ; 153 } else { 154 Echo "WebPositive not available on $(HAIKU_PACKAGING_ARCHS)" ; 155 } 156 } 157 158 case "bootstrap-*" : { 159 Echo Building Haiku Bootstrap ; 160 HAIKU_IMAGE_HOST_NAME ?= shredder ; 161 HAIKU_IMAGE_SIZE ?= 20000 ; 162 163 AddHaikuImagePackages 164 binutils 165 bison 166 curl_devel 167 expat 168 flex 169 freetype_devel 170 gawk 171 gcc 172 grep 173 haikuporter 174 less 175 libedit 176 libedit_devel 177 m4 178 make 179 ncurses6 180 ncurses6_devel 181 noto 182 python 183 sed 184 texinfo 185 zlib_devel 186 ; 187 188 # secondary architecture packages 189 local architectureObject ; 190 for architectureObject 191 in [ MultiArchSubDirSetup $(TARGET_PACKAGING_ARCHS[2-]) ] { 192 on $(architectureObject) { 193 AddHaikuImagePackages 194 binutils 195 curl 196 curl_devel 197 expat 198 freetype 199 freetype_devel 200 gcc 201 icu 202 libsolv 203 libedit 204 libedit_devel 205 ncurses6 206 ncurses6_devel 207 zlib 208 zlib_devel 209 ; 210 } 211 } 212 213 AddOptionalHaikuImagePackages DevelopmentMin ; 214 } 215 216 case "minimum-*" : { 217 Echo Building Haiku Minimum Target ; 218 HAIKU_IMAGE_HOST_NAME ?= shredder ; 219 220 AddHaikuImagePackages 221 ; 222 } 223 } 224 225 226 # Uncomment in official release branch. 227 #HAIKU_DEFINES += HAIKU_OFFICIAL_RELEASE ; 228 #TARGET_DEFINES += HAIKU_OFFICIAL_RELEASE ; 229 230 231 # If a build profile was specified on the command line, now is the time to 232 # check whether it is unknown or one of the default profiles. 233 if $(HAIKU_BUILD_PROFILE) && ! $(HAIKU_BUILD_PROFILE_DEFINED) { 234 # define the obvious default profiles 235 if $(HAIKU_BUILD_PROFILE) in anyboot-image cd-image image install 236 vmware-image { 237 DefineBuildProfile $(HAIKU_BUILD_PROFILE) : $(HAIKU_BUILD_PROFILE) ; 238 } else { 239 Exit "Build profile" $(HAIKU_BUILD_PROFILE) "not defined." ; 240 } 241 } 242} 243