xref: /haiku/Jamfile (revision 6454164d8dc66d8f19243076e6dadc2ae5e2ad9e)
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 ] ;
11afde4473SOliver Tappe
12afde4473SOliver Tappe		# Let the target platform depend on the external header directories such
13afde4473SOliver Tappe		# that those will be unpacked before anything is built for the target
14afde4473SOliver Tappe		# platform.
15afde4473SOliver Tappe		Depends $(TARGET_PLATFORM) : [
16afde4473SOliver Tappe			BuildFeatureAttribute gcc_syslibs_devel : c++-headers
17afde4473SOliver Tappe		] [
18afde4473SOliver Tappe			BuildFeatureAttribute gcc_syslibs_devel : gcc-headers
19afde4473SOliver Tappe		] ;
20b0944c78SIngo Weinhold	}
21b0944c78SIngo Weinhold}
22f4eb5cf7SMatt Madia
236d8c8a9dSOliver Tappe# Include required packages:
2472e67791SOliver Tappe# primary architecture
256d8c8a9dSOliver TappeAddHaikuImagePackages [ FFilterByBuildFeatures
26950ee984SJérôme Duval	bash coreutils curl freetype icu libsolv zlib
276d8c8a9dSOliver Tappe
286d8c8a9dSOliver Tappe	regular_image @{
29ed92a105SJérôme Duval		bzip2 ctags diffutils expat ffmpeg findutils gawk glu grep gutenprint
30ed92a105SJérôme Duval		gzip jasper jpeg
315b3c88f1SJérôme Duval		less libicns libpcap libpng16 libwebp
32*6454164dSJérôme Duval		mesa mesa_devel mesa_swpipe@!gcc2 mesa_swrast@gcc2
33f19ef175SJérôme Duval		netcat
34242c022aSJérôme Duval		sed sharutils
35d43720adSJérôme Duval		tar tcpdump unzip wget which zip
366d8c8a9dSOliver Tappe	}@
376d8c8a9dSOliver Tappe] ;
38220d0402SOliver Tappeif $(HAIKU_PACKAGING_ARCHS[1]) != x86_gcc2 {
39220d0402SOliver Tappe	AddHaikuImagePackages [ FFilterByBuildFeatures gcc_syslibs ] ;
40220d0402SOliver Tappe}
41220d0402SOliver Tappe
42220d0402SOliver Tappeif $(HAIKU_PACKAGING_ARCHS[2]) {
43271e9484SIngo Weinhold	# secondary architectures
44271e9484SIngo Weinhold	local architectureObject ;
45271e9484SIngo Weinhold	for architectureObject
46271e9484SIngo Weinhold			in [ MultiArchSubDirSetup $(HAIKU_PACKAGING_ARCHS[2-]) ] {
47271e9484SIngo Weinhold		on $(architectureObject) {
486d8c8a9dSOliver Tappe			AddHaikuImagePackages [ FFilterByBuildFeatures
496d8c8a9dSOliver Tappe				curl freetype icu libsolv zlib
506d8c8a9dSOliver Tappe
516d8c8a9dSOliver Tappe				regular_image @{
5297d08998SJérôme Duval					ffmpeg glu jasper jpeg libicns libpng16 libwebp mesa
536d8c8a9dSOliver Tappe				}@
546d8c8a9dSOliver Tappe			] ;
55220d0402SOliver Tappe			if $(TARGET_PACKAGING_ARCH) != x86_gcc2 {
56*6454164dSJérôme Duval				AddHaikuImagePackages [ FFilterByBuildFeatures gcc_syslibs
57*6454164dSJérôme Duval					mesa_swpipe ] ;
58220d0402SOliver Tappe			}
59220d0402SOliver Tappe		}
60271e9484SIngo Weinhold	}
6178f4c163SIngo Weinhold}
62429618d2SMatt Madia
63429618d2SMatt Madia# If enabled, make sure that OpenSSL is added to the image.
6457190167SIngo Weinholdif [ FIsBuildFeatureEnabled openssl ] {
6598c6dfa4SIngo Weinhold	AddHaikuImagePackages openssl ;
66429618d2SMatt Madia}
67a5c31cbbSMatt Madia
6824796718SIngo Weinhold# add additionally requested packages
6924796718SIngo WeinholdAddHaikuImagePackages $(HAIKU_IMAGE_ADDITIONAL_PACKAGES) ;
7024796718SIngo Weinhold
7148d60fa6SIngo Weinhold# Optionally we allow not to include the "src" subdirectory.
7248d60fa6SIngo Weinholdif $(HAIKU_DONT_INCLUDE_SRC) {
7348d60fa6SIngo Weinhold	# Don't include "src", but at least include the stuff needed for the
7448d60fa6SIngo Weinhold	# build.
7548d60fa6SIngo Weinhold	SubInclude HAIKU_TOP src build ;
7648d60fa6SIngo Weinhold	SubInclude HAIKU_TOP src tools ;
7748d60fa6SIngo Weinhold} else {
78338b8dc3SIngo Weinhold	SubInclude HAIKU_TOP src ;
7948d60fa6SIngo Weinhold}
80a7ec9c1dSFrançois Revolif $(HAIKU_INCLUDE_3RDPARTY) {
81a7ec9c1dSFrançois Revol	SubInclude HAIKU_TOP 3rdparty ;
82a7ec9c1dSFrançois Revol}
8348d60fa6SIngo Weinhold
84be8a6e43SIngo Weinhold# Perform deferred SubIncludes.
85be8a6e43SIngo WeinholdExecuteDeferredSubIncludes ;
86be8a6e43SIngo Weinhold
87689e6794SIngo Weinhold# reset subdir
88689e6794SIngo WeinholdSubDir HAIKU_TOP ;
89ad27081fSIngo Weinhold
90ad27081fSIngo Weinhold# Execute post-build-target user config rules.
91ad27081fSIngo WeinholdUserBuildConfigRulePostBuildTargets	;
92689e6794SIngo Weinhold
93be5e6fefSIngo Weinhold# specify the Haiku repository contents
94be5e6fefSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) repositories Haiku ] ;
95be5e6fefSIngo Weinhold
96ff35d6c1SOliver Tappe# specify the actual Haiku image contents
97e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImage ] ;
98ff35d6c1SOliver Tappe
99ff35d6c1SOliver Tappe# specify the additional image contents one for each boot type
100e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images NetBootArchive ] ;
101e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images FloppyBootImage ] ;
102e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootImage ] ;
103e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootPPCImage ] ;
104e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuCD ] ;
105e8c5236aSIngo Weinholdinclude [ FDirName $(HAIKU_BUILD_RULES_DIR) images AnybootImage ] ;
10637aefc9cSIngo Weinhold
10737aefc9cSIngo Weinhold# Check whether all requested optional packages do actually exist.
10837aefc9cSIngo Weinholdlocal package ;
10937aefc9cSIngo Weinholdlocal packageError ;
11037aefc9cSIngo Weinholdfor package in $(HAIKU_ADDED_OPTIONAL_PACKAGES) {
11137aefc9cSIngo Weinhold	if ! [ on $(package) return $(HAIKU_OPTIONAL_PACKAGE_EXISTS) ] {
11237aefc9cSIngo Weinhold		Echo "ERROR: Requested optional package \"$(package)\" does not"
11337aefc9cSIngo Weinhold			"exist." ;
11437aefc9cSIngo Weinhold		packageError = 1 ;
11537aefc9cSIngo Weinhold	}
11637aefc9cSIngo Weinhold}
11737aefc9cSIngo Weinholdif $(packageError) {
11837aefc9cSIngo Weinhold	Exit ;
11937aefc9cSIngo Weinhold}
12080ad173eSMatt Madia
12180ad173eSMatt Madia# Pseudo-target to build all targets that are localized.
122a8fcb885SMatt MadiaNotFile LocalizedTargets ;
123a8fcb885SMatt MadiaDepends LocalizedTargets : $(HAIKU_LOCALIZED_TARGETS) ;
1249de5b022SMatt Madia
1259de5b022SMatt MadiaNotFile catalogs ;
1269de5b022SMatt MadiaDepends catalogs : $(HAIKU_LOCALE_CATALOGS) ;
1279de5b022SMatt Madia
1289de5b022SMatt MadiaNotFile catkeys ;
1299de5b022SMatt MadiaDepends catkeys : $(HAIKU_LOCALE_OUTPUT_CATKEYS) ;
130