DefaultBuildProfiles revision 945566ff
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	DefineBuildProfile bootstrap-anyboot : anyboot-image
56		: "haiku-bootstrap-anyboot.image" ;
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.image" ;
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