1SubDir HAIKU_TOP ;
2
3NotFile doc_files ;
4Depends files : doc_files ;
5
6# Pseudo-target to build the mail kit only
7NotFile MailKit ;
8Depends MailKit :
9	libmail.so
10	mail_daemon
11	E-mail
12	BeMail
13
14	# mail_daemon addons
15	Inbox
16	Outbox
17	Message\ Parser
18	New\ Mail\ Notification
19	Match\ Header
20	R5\ Daemon\ Filter
21	IMAP
22	POP3
23	SMTP
24	Fortune
25	Spam\ Filter
26	spamdbm
27;
28
29# Pseudo-target to build the media stuffs only
30# TODO: don't know how to make avcodec mp3_decoder mp3_reader ogg speex vorbis
31NotFile MediaKit ;
32Depends MediaKit :
33	libmedia.so
34	libgame.so
35
36	# Servers
37	media_addon_server
38	media_server
39
40	# Preference
41	Sounds
42	Media
43
44	# Deskbar replicant
45	desklink
46
47	# add-ons
48	mixer.media_addon
49	tone_producer_demo.media_addon
50	video_producer_demo.media_addon
51	legacy.media_addon
52	multi_audio.media_addon
53#	reader.media_addon
54#	writer.media_addon
55#	demultiplexer.media_addon
56
57	# codecs
58	ac3_decoder
59	aiff_reader
60	au_reader
61	avcodec
62	avi_reader
63	matroska
64	mp3_decoder
65	mp3_reader
66	musepack
67	ogg
68	raw_decoder
69	speex
70	vorbis
71	wav_reader
72	mov_reader
73;
74
75# Pseudo-target to build the input kit only
76NotFile InputKit ;
77Depends InputKit :
78	# Servers
79	input_server
80
81	# Addons
82	<input>keyboard
83	<input>mouse
84
85	# Apps
86	keymap
87
88	# Preferences
89	Keymap
90	Keyboard
91	Mouse
92;
93
94# Pseudo-target to build the OpenGL kit only
95NotFile OpenGLKit ;
96Depends OpenGLKit :
97	libGL.so
98	GLTeapot
99#	GLInfo
100;
101
102# Pseudo-target to build the screensaver kit only
103NotFile ScreenSaverKit ;
104Depends ScreenSaverKit :
105	libscreensaver.so
106	screen_saver
107	screen_blanker
108	ScreenSaver
109	Haiku
110;
111
112# Pseudo-target to build the locale kit only
113# TODO: src/add-ons/locale/collators/GermanDIN-2.cpp does not compile
114NotFile LocaleKit ;
115Depends LocaleKit :
116	Locale
117
118	# binaries for building localized software on haiku
119	collectcatkeys
120	dumpcatalog
121	linkcatkeys
122
123	# addons
124	LocaleKitCollatorAddons
125	LocaleKitCatalogAddons
126
127	# tests
128	LocaleKitTests
129;
130
131# Add optional packages given via HAIKU_ADD_OPTIONAL_PACKAGES.
132if $(HAIKU_ADD_OPTIONAL_PACKAGES) {
133	AddOptionalHaikuImagePackages
134		[ FSplitString $(HAIKU_ADD_OPTIONAL_PACKAGES) : / ] ;
135}
136
137# Prepare the optional build features before parsing the Jamfile tree.
138include [ FDirName $(HAIKU_BUILD_RULES_DIR) BuildFeatures ] ;
139
140# Include packages that are required by all images.
141AddOptionalHaikuImagePackages MandatoryPackages ;
142
143# If enabled, make sure that OpenSSL is added to the image.
144if $(HAIKU_BUILD_FEATURE_OPENSSL_ENABLED) {
145	AddOptionalHaikuImagePackages OpenSSL ;
146}
147
148AddOptionalHaikuImagePackages ICU ;
149
150# Evaluate optional package dependencies
151include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalPackageDependencies ] ;
152
153# Optionally we allow not to include the "src" subdirectory.
154if $(HAIKU_DONT_INCLUDE_SRC) {
155	# Don't include "src", but at least include the stuff needed for the
156	# build.
157	SubInclude HAIKU_TOP src build ;
158	SubInclude HAIKU_TOP src tools ;
159} else {
160	SubInclude HAIKU_TOP src ;
161}
162if $(HAIKU_INCLUDE_3RDPARTY) {
163	SubInclude HAIKU_TOP 3rdparty ;
164}
165
166# Perform deferred SubIncludes.
167ExecuteDeferredSubIncludes ;
168
169# reset subdir
170SubDir HAIKU_TOP ;
171
172# Execute post-build-target user config rules.
173UserBuildConfigRulePostBuildTargets	;
174
175# specify the Haiku image and network boot archive contents
176if $(TARGET_ARCH) = x86_64 {
177	include [ FDirName $(HAIKU_BUILD_RULES_DIR) Haiku64Image ] ;
178} else {
179	include [ FDirName $(HAIKU_BUILD_RULES_DIR) HaikuImage ] ;
180}
181include [ FDirName $(HAIKU_BUILD_RULES_DIR) NetBootArchive ] ;
182include [ FDirName $(HAIKU_BUILD_RULES_DIR) FloppyBootImage ] ;
183include [ FDirName $(HAIKU_BUILD_RULES_DIR) CDBootImage ] ;
184include [ FDirName $(HAIKU_BUILD_RULES_DIR) CDBootPPCImage ] ;
185include [ FDirName $(HAIKU_BUILD_RULES_DIR) HaikuCD ] ;
186include [ FDirName $(HAIKU_BUILD_RULES_DIR) AnybootImage ] ;
187
188# Check whether all requested optional packages do actually exist.
189local package ;
190local packageError ;
191for package in $(HAIKU_ADDED_OPTIONAL_PACKAGES) {
192	if ! [ on $(package) return $(HAIKU_OPTIONAL_PACKAGE_EXISTS) ] {
193		Echo "ERROR: Requested optional package \"$(package)\" does not"
194			"exist." ;
195		packageError = 1 ;
196	}
197}
198if $(packageError) {
199	Exit ;
200}
201
202# Pseudo-target to build all targets that are localized.
203NotFile LocalizedTargets ;
204Depends LocalizedTargets : $(HAIKU_LOCALIZED_TARGETS) ;
205
206NotFile catalogs ;
207Depends catalogs : $(HAIKU_LOCALE_CATALOGS) ;
208
209NotFile catkeys ;
210Depends catkeys : $(HAIKU_LOCALE_OUTPUT_CATKEYS) ;
211