xref: /haiku/Jamfile (revision be5e6fefdfbc9f98011e65f4acf1efb635d35f8c)
1SubDir HAIKU_TOP ;
2
3NotFile doc_files ;
4Depends files : doc_files ;
5
6# Prepare the optional build features before parsing the Jamfile tree.
7local architectureObject ;
8for architectureObject in [ MultiArchSubDirSetup ] {
9	on $(architectureObject) {
10		include [ FDirName $(HAIKU_BUILD_RULES_DIR) BuildFeatures ] ;
11	}
12}
13
14# Include packages that are required by all images.
15if ! $(HAIKU_BOOTSTRAP_BUILD) {
16	# primary architecture
17	AddHaikuImagePackages
18		bzip2 ctags grep sed tar which zlib
19		ffmpeg freetype icu jpeg libpng libsolv
20		mesa mesa_devel mesa_swrast glu
21		;
22
23	# secondary architectures
24	local architectureObject ;
25	for architectureObject
26			in [ MultiArchSubDirSetup $(HAIKU_PACKAGING_ARCHS[2-]) ] {
27		on $(architectureObject) {
28			AddHaikuImagePackages
29				ffmpeg freetype glu icu jpeg libpng libsolv mesa zlib
30				;
31		}
32	}
33}
34
35# If enabled, make sure that OpenSSL is added to the image.
36if [ FIsBuildFeatureEnabled openssl ] {
37	AddHaikuImagePackages openssl ;
38}
39
40# add additionally requested packages
41AddHaikuImagePackages $(HAIKU_IMAGE_ADDITIONAL_PACKAGES) ;
42
43# Optionally we allow not to include the "src" subdirectory.
44if $(HAIKU_DONT_INCLUDE_SRC) {
45	# Don't include "src", but at least include the stuff needed for the
46	# build.
47	SubInclude HAIKU_TOP src build ;
48	SubInclude HAIKU_TOP src tools ;
49} else {
50	SubInclude HAIKU_TOP src ;
51}
52if $(HAIKU_INCLUDE_3RDPARTY) {
53	SubInclude HAIKU_TOP 3rdparty ;
54}
55
56# Perform deferred SubIncludes.
57ExecuteDeferredSubIncludes ;
58
59# reset subdir
60SubDir HAIKU_TOP ;
61
62# Execute post-build-target user config rules.
63UserBuildConfigRulePostBuildTargets	;
64
65# specify the Haiku repository contents
66include [ FDirName $(HAIKU_BUILD_RULES_DIR) repositories Haiku ] ;
67
68# specify the Haiku image and network boot archive contents
69if $(HAIKU_BOOTSTRAP_BUILD) {
70	include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageBootstrap ] ;
71} else {
72	include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImage ] ;
73}
74include [ FDirName $(HAIKU_BUILD_RULES_DIR) images NetBootArchive ] ;
75include [ FDirName $(HAIKU_BUILD_RULES_DIR) images FloppyBootImage ] ;
76include [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootImage ] ;
77include [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootPPCImage ] ;
78include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuCD ] ;
79include [ FDirName $(HAIKU_BUILD_RULES_DIR) images AnybootImage ] ;
80
81# Check whether all requested optional packages do actually exist.
82local package ;
83local packageError ;
84for package in $(HAIKU_ADDED_OPTIONAL_PACKAGES) {
85	if ! [ on $(package) return $(HAIKU_OPTIONAL_PACKAGE_EXISTS) ] {
86		Echo "ERROR: Requested optional package \"$(package)\" does not"
87			"exist." ;
88		packageError = 1 ;
89	}
90}
91if $(packageError) {
92	Exit ;
93}
94
95# Pseudo-target to build all targets that are localized.
96NotFile LocalizedTargets ;
97Depends LocalizedTargets : $(HAIKU_LOCALIZED_TARGETS) ;
98
99NotFile catalogs ;
100Depends catalogs : $(HAIKU_LOCALE_CATALOGS) ;
101
102NotFile catkeys ;
103Depends catkeys : $(HAIKU_LOCALE_OUTPUT_CATKEYS) ;
104