xref: /haiku/Jamfile (revision 271e9484edaefffa11528782abf3734888153a5c)
1338b8dc3SIngo WeinholdSubDir HAIKU_TOP ;
269b97469SIngo Weinhold
3f35b607dSJérôme DuvalNotFile doc_files ;
4f35b607dSJérôme DuvalDepends files : doc_files ;
5f35b607dSJérôme Duval
6f4eb5cf7SMatt Madia# Prepare the optional build features before parsing the Jamfile tree.
7b0944c78SIngo Weinholdlocal architectureObject ;
8b0944c78SIngo Weinholdfor architectureObject in [ MultiArchSubDirSetup ] {
9b0944c78SIngo Weinhold	on $(architectureObject) {
10f0cacbb3SIngo Weinhold		include [ FDirName $(HAIKU_BUILD_RULES_DIR) BuildFeatures ] ;
11b0944c78SIngo Weinhold	}
12b0944c78SIngo Weinhold}
13f4eb5cf7SMatt Madia
140e82d313SMatt Madia# Include packages that are required by all images.
1548b1ed42SIngo Weinholdif ! $(HAIKU_BOOTSTRAP_BUILD) {
16*271e9484SIngo Weinhold	# primary architecture
1778f4c163SIngo Weinhold	AddHaikuImagePackages
1878f4c163SIngo Weinhold		bzip2 ctags ffmpeg freetype glu grep icu jpeg libpng libsolv mesa sed
1978f4c163SIngo Weinhold		tar zlib
2078f4c163SIngo Weinhold		:
2178f4c163SIngo Weinhold		system
2278f4c163SIngo Weinhold		;
23*271e9484SIngo Weinhold
24*271e9484SIngo Weinhold	# secondary architectures
25*271e9484SIngo Weinhold	local architectureObject ;
26*271e9484SIngo Weinhold	for architectureObject
27*271e9484SIngo Weinhold			in [ MultiArchSubDirSetup $(HAIKU_PACKAGING_ARCHS[2-]) ] {
28*271e9484SIngo Weinhold		on $(architectureObject) {
29*271e9484SIngo Weinhold			AddHaikuImagePackages
30*271e9484SIngo Weinhold				ffmpeg freetype glu icu jpeg libpng libsolv mesa zlib
31*271e9484SIngo Weinhold				:
32*271e9484SIngo Weinhold				system
33*271e9484SIngo Weinhold				;
34*271e9484SIngo Weinhold		}
35*271e9484SIngo Weinhold	}
3678f4c163SIngo Weinhold}
37429618d2SMatt Madia
38429618d2SMatt Madia# If enabled, make sure that OpenSSL is added to the image.
3957190167SIngo Weinholdif [ FIsBuildFeatureEnabled openssl ] {
4098c6dfa4SIngo Weinhold	AddHaikuImagePackages openssl ;
41429618d2SMatt Madia}
42a5c31cbbSMatt Madia
4348d60fa6SIngo Weinhold# Optionally we allow not to include the "src" subdirectory.
4448d60fa6SIngo Weinholdif $(HAIKU_DONT_INCLUDE_SRC) {
4548d60fa6SIngo Weinhold	# Don't include "src", but at least include the stuff needed for the
4648d60fa6SIngo Weinhold	# build.
4748d60fa6SIngo Weinhold	SubInclude HAIKU_TOP src build ;
4848d60fa6SIngo Weinhold	SubInclude HAIKU_TOP src tools ;
4948d60fa6SIngo Weinhold} else {
50338b8dc3SIngo Weinhold	SubInclude HAIKU_TOP src ;
5148d60fa6SIngo Weinhold}
52a7ec9c1dSFrançois Revolif $(HAIKU_INCLUDE_3RDPARTY) {
53a7ec9c1dSFrançois Revol	SubInclude HAIKU_TOP 3rdparty ;
54a7ec9c1dSFrançois Revol}
5548d60fa6SIngo Weinhold
56be8a6e43SIngo Weinhold# Perform deferred SubIncludes.
57be8a6e43SIngo WeinholdExecuteDeferredSubIncludes ;
58be8a6e43SIngo Weinhold
59689e6794SIngo Weinhold# reset subdir
60689e6794SIngo WeinholdSubDir HAIKU_TOP ;
61ad27081fSIngo Weinhold
62ad27081fSIngo Weinhold# Execute post-build-target user config rules.
63ad27081fSIngo WeinholdUserBuildConfigRulePostBuildTargets	;
64689e6794SIngo Weinhold
65b39c8d37SIngo Weinhold# specify the Haiku image and network boot archive contents
6678f4c163SIngo Weinholdif $(HAIKU_BOOTSTRAP_BUILD) {
6778f4c163SIngo Weinhold	include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageBootstrap ] ;
6878f4c163SIngo Weinhold} else {
69e8c5236aSIngo Weinhold	include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImage ] ;
7078f4c163SIngo Weinhold}
71e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images NetBootArchive ] ;
72e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images FloppyBootImage ] ;
73e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootImage ] ;
74e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootPPCImage ] ;
75e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuCD ] ;
76e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images AnybootImage ] ;
7737aefc9cSIngo Weinhold
7837aefc9cSIngo Weinhold# Check whether all requested optional packages do actually exist.
7937aefc9cSIngo Weinholdlocal package ;
8037aefc9cSIngo Weinholdlocal packageError ;
8137aefc9cSIngo Weinholdfor package in $(HAIKU_ADDED_OPTIONAL_PACKAGES) {
8237aefc9cSIngo Weinhold	if ! [ on $(package) return $(HAIKU_OPTIONAL_PACKAGE_EXISTS) ] {
8337aefc9cSIngo Weinhold		Echo "ERROR: Requested optional package \"$(package)\" does not"
8437aefc9cSIngo Weinhold			"exist." ;
8537aefc9cSIngo Weinhold		packageError = 1 ;
8637aefc9cSIngo Weinhold	}
8737aefc9cSIngo Weinhold}
8837aefc9cSIngo Weinholdif $(packageError) {
8937aefc9cSIngo Weinhold	Exit ;
9037aefc9cSIngo Weinhold}
9180ad173eSMatt Madia
9280ad173eSMatt Madia# Pseudo-target to build all targets that are localized.
93a8fcb885SMatt MadiaNotFile LocalizedTargets ;
94a8fcb885SMatt MadiaDepends LocalizedTargets : $(HAIKU_LOCALIZED_TARGETS) ;
959de5b022SMatt Madia
969de5b022SMatt MadiaNotFile catalogs ;
979de5b022SMatt MadiaDepends catalogs : $(HAIKU_LOCALE_CATALOGS) ;
989de5b022SMatt Madia
999de5b022SMatt MadiaNotFile catkeys ;
1009de5b022SMatt MadiaDepends catkeys : $(HAIKU_LOCALE_OUTPUT_CATKEYS) ;
101