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