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 wpa_supplicant 89 wqy_microhei 90 # xz_utils can't be built with gcc2, so we install it for 91 # primary gcc 4 architectures or gcc 2 hybrids. 92 xz_utils@!gcc2 93 gcc2 @{ xz_utils_x86@secondary_x86 }@ 94 ; 95 96 local architectureObject ; 97 for architectureObject in [ MultiArchSubDirSetup ] { 98 on $(architectureObject) { 99 AddHaikuImagePackages openssl wonderbrush@gcc2 ; 100 } 101 } 102 103 AddOptionalHaikuImagePackages BeBook Development Git Welcome ; 104 105 # WebPositive can only built for x86_gcc2, x86 and x86_64 106 if $(HAIKU_PACKAGING_ARCHS) in x86_gcc2 x86 x86_64 { 107 AddOptionalHaikuImagePackages WebPositive ; 108 } else { 109 Echo "WebPositive not available on $(HAIKU_PACKAGING_ARCHS)" ; 110 } 111 } 112 113 case "alpha-*" : { 114 Echo The alpha-* build profiles have been renamed to release-* ; 115 } 116 117 case "nightly-*" : { 118 Echo Building Haiku Nightly ; 119 HAIKU_ROOT_USER_NAME ?= user ; 120 HAIKU_ROOT_USER_REAL_NAME ?= "Yourself" ; 121 AddGroupToHaikuImage party : 101 : user sshd ; 122 HAIKU_IMAGE_HOST_NAME ?= shredder ; 123 HAIKU_IMAGE_SIZE ?= 600 ; 124 125 AddHaikuImagePackages 126 man 127 nano 128 openssh 129 openssl 130 p7zip 131 pe 132 vision 133 wpa_supplicant 134 # xz_utils can't be built with gcc2, so we install it for 135 # primary gcc 4 architectures or gcc 2 hybrids. 136 xz_utils@!gcc2 137 gcc2 @{ xz_utils_x86@secondary_x86 }@ 138 ; 139 140 AddOptionalHaikuImagePackages Development Git ; 141 142 # WebPositive can only built for x86_gcc2, x86 and x86_64 143 if $(HAIKU_PACKAGING_ARCHS) in x86_gcc2 x86 x86_64 { 144 AddOptionalHaikuImagePackages WebPositive ; 145 } else { 146 Echo "WebPositive not available on $(HAIKU_PACKAGING_ARCHS)" ; 147 } 148 } 149 150 case "bootstrap-*" : { 151 Echo Building Haiku Bootstrap ; 152 HAIKU_IMAGE_HOST_NAME ?= shredder ; 153 HAIKU_IMAGE_SIZE ?= 20000 ; 154 155 AddHaikuImagePackages 156 autoconf 157 automake 158 binutils 159 bison 160 curl_devel 161 flex 162 freetype_devel 163 gawk 164 gcc 165 grep 166 haikuporter 167 libtool 168 libtool_libltdl 169 m4 170 make 171 ncurses 172 ncurses_devel 173 python 174 sed 175 texinfo 176 zlib_devel 177 ; 178 179 # secondary architecture packages 180 local architectureObject ; 181 for architectureObject 182 in [ MultiArchSubDirSetup $(TARGET_PACKAGING_ARCHS[2-]) ] { 183 on $(architectureObject) { 184 AddHaikuImagePackages 185 binutils 186 curl 187 curl_devel 188 freetype 189 freetype_devel 190 gcc 191 icu 192 libsolv 193 ncurses 194 ncurses_devel 195 zlib 196 zlib_devel 197 ; 198 } 199 } 200 201 AddOptionalHaikuImagePackages DevelopmentMin ; 202 } 203 204 case "minimum-*" : { 205 Echo Building Haiku Minimum Target ; 206 HAIKU_IMAGE_HOST_NAME ?= shredder ; 207 208 AddHaikuImagePackages 209 ; 210 } 211 } 212 213 214 # Uncomment in official release branch. 215 #HAIKU_DEFINES += HAIKU_OFFICIAL_RELEASE ; 216 #TARGET_DEFINES += HAIKU_OFFICIAL_RELEASE ; 217 218 219 # If a build profile was specified on the command line, now is the time to 220 # check whether it is unknown or one of the default profiles. 221 if $(HAIKU_BUILD_PROFILE) && ! $(HAIKU_BUILD_PROFILE_DEFINED) { 222 # define the obvious default profiles 223 if $(HAIKU_BUILD_PROFILE) in anyboot-image cd-image image install 224 vmware-image { 225 DefineBuildProfile $(HAIKU_BUILD_PROFILE) : $(HAIKU_BUILD_PROFILE) ; 226 } else { 227 Exit "Build profile" $(HAIKU_BUILD_PROFILE) "not defined." ; 228 } 229 } 230} 231