xref: /haiku/build/jam/DefaultBuildProfiles (revision bf57c148f7787f0df15980976997c6dfb70ee067)
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