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