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