xref: /haiku/Jamfile (revision b0944c78b074a8110bd98e060415d0e8f38a7f65)
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	AddHaikuImagePackages
17		bzip2 ctags ffmpeg freetype glu grep icu jpeg libpng libsolv mesa sed
18		tar zlib
19		:
20		system
21		;
22}
23
24# If enabled, make sure that OpenSSL is added to the image.
25if $(HAIKU_BUILD_FEATURE_OPENSSL_ENABLED) {
26	AddHaikuImagePackages openssl ;
27}
28
29# Optionally we allow not to include the "src" subdirectory.
30if $(HAIKU_DONT_INCLUDE_SRC) {
31	# Don't include "src", but at least include the stuff needed for the
32	# build.
33	SubInclude HAIKU_TOP src build ;
34	SubInclude HAIKU_TOP src tools ;
35} else {
36	SubInclude HAIKU_TOP src ;
37}
38if $(HAIKU_INCLUDE_3RDPARTY) {
39	SubInclude HAIKU_TOP 3rdparty ;
40}
41
42# Perform deferred SubIncludes.
43ExecuteDeferredSubIncludes ;
44
45# reset subdir
46SubDir HAIKU_TOP ;
47
48# Execute post-build-target user config rules.
49UserBuildConfigRulePostBuildTargets	;
50
51# specify the Haiku image and network boot archive contents
52if $(HAIKU_BOOTSTRAP_BUILD) {
53	include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageBootstrap ] ;
54} else {
55	include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImage ] ;
56}
57include [ FDirName $(HAIKU_BUILD_RULES_DIR) images NetBootArchive ] ;
58include [ FDirName $(HAIKU_BUILD_RULES_DIR) images FloppyBootImage ] ;
59include [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootImage ] ;
60include [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootPPCImage ] ;
61include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuCD ] ;
62include [ FDirName $(HAIKU_BUILD_RULES_DIR) images AnybootImage ] ;
63
64# Check whether all requested optional packages do actually exist.
65local package ;
66local packageError ;
67for package in $(HAIKU_ADDED_OPTIONAL_PACKAGES) {
68	if ! [ on $(package) return $(HAIKU_OPTIONAL_PACKAGE_EXISTS) ] {
69		Echo "ERROR: Requested optional package \"$(package)\" does not"
70			"exist." ;
71		packageError = 1 ;
72	}
73}
74if $(packageError) {
75	Exit ;
76}
77
78# Pseudo-target to build all targets that are localized.
79NotFile LocalizedTargets ;
80Depends LocalizedTargets : $(HAIKU_LOCALIZED_TARGETS) ;
81
82NotFile catalogs ;
83Depends catalogs : $(HAIKU_LOCALE_CATALOGS) ;
84
85NotFile catkeys ;
86Depends catkeys : $(HAIKU_LOCALE_OUTPUT_CATKEYS) ;
87