xref: /haiku/src/apps/haikudepot/Jamfile (revision 7a617f59fd64449167bb190666bd44fae7efbe0b)
1SubDir HAIKU_TOP src apps haikudepot ;
2
3# disable -Werror for this directory only
4SubDirC++Flags -Wno-error ;
5
6include [ FDirName $(HAIKU_TOP) src apps haikudepot build jam
7	HdsSchemaGenRules ] ;
8
9UseBuildFeatureHeaders icu ;
10
11UsePrivateHeaders interface kernel net package shared storage support locale ;
12
13HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY = $(TARGET_COMMON_DEBUG_LOCATE_TARGET) ;
14
15# During the build process, some sources are generated into directories.  These
16# are the directories.
17
18local dumpExportRepositoryBulkListerTargetDirectory =
19	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
20		dumpexportrepositorybulklistener ] ;
21local dumpExportPkgBulkListenerTargetDirectory =
22	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
23		dumpexportpkgbulklistener ] ;
24local dumpExportReferenceListenerTargetDirectory =
25	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
26		dumpexportreferencelistener ] ;
27
28local dumpExportPkgModelTargetDirectory =
29	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
30		dumpexportpkgmodel ] ;
31local dumpExportRepositoryModelTargetDirectory =
32	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
33		dumpexportrepositorymodel ] ;
34local dumpExportReferenceModelTargetDirectory =
35	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
36		dumpexportreferencemodel ] ;
37
38# During the build process, some sources are generated into a directory.  In
39# order to maintain a timestamp on that generation process, a dummy file is
40# used to signify the target of the generation.  The leafname of this dummy file
41# is defined here.
42
43local dummyFile = "dummy.dat" ;
44
45local dumpExportRepositoryBulkListerTargetFile =
46	[ FDirName $(dumpExportRepositoryBulkListerTargetDirectory) $(dummyFile) ] ;
47local dumpExportPkgBulkListenerTargetFile =
48	[ FDirName $(dumpExportPkgBulkListenerTargetDirectory) $(dummyFile) ] ;
49local dumpExportReferenceListenerTargetFile =
50	[ FDirName $(dumpExportReferenceListenerTargetDirectory) $(dummyFile) ] ;
51
52local dumpExportPkgModelTargetFile =
53	[ FDirName $(dumpExportPkgModelTargetDirectory) $(dummyFile) ] ;
54local dumpExportRepositoryModelTargetFile =
55	[ FDirName $(dumpExportRepositoryModelTargetDirectory) $(dummyFile) ] ;
56local dumpExportReferenceModelTargetFile =
57	[ FDirName $(dumpExportReferenceModelTargetDirectory) $(dummyFile) ] ;
58
59# source directories
60local sourceDirs =
61	edits_generic
62	model
63	textview
64	ui
65	ui_generic
66	server
67	tar
68	util
69;
70
71local sourceDir ;
72for sourceDir in $(sourceDirs) {
73	SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src apps haikudepot $(sourceDir) ] ;
74}
75
76SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src servers package ] ;
77
78SEARCH_SOURCE += $(dumpExportRepositoryBulkListerTargetDirectory) ;
79SEARCH_SOURCE += $(dumpExportPkgBulkListenerTargetDirectory) ;
80SEARCH_SOURCE += $(dumpExportReferenceListenerTargetDirectory) ;
81
82SEARCH_SOURCE += $(dumpExportPkgModelTargetDirectory) ;
83SEARCH_SOURCE += $(dumpExportRepositoryModelTargetDirectory) ;
84SEARCH_SOURCE += $(dumpExportReferenceModelTargetDirectory) ;
85
86local textDocumentSources =
87	# edits_generic
88	CompoundEdit.cpp
89	EditContext.cpp
90	EditManager.cpp
91	EditStack.cpp
92	UndoableEdit.cpp
93
94	# textview
95	Bullet.cpp
96	BulletData.cpp
97	CharacterStyle.cpp
98	CharacterStyleData.cpp
99	MarkupParser.cpp
100	Paragraph.cpp
101	ParagraphLayout.cpp
102	ParagraphStyle.cpp
103	ParagraphStyleData.cpp
104	TextDocument.cpp
105	TextDocumentLayout.cpp
106	TextDocumentView.cpp
107	TextEditor.cpp
108	TextListener.cpp
109	TextSelection.cpp
110	TextSpan.cpp
111	TextView.cpp
112	UndoableEditListener.cpp
113;
114
115local applicationSources =
116	App.cpp
117	BarberPole.cpp
118	BitmapView.cpp
119	Captcha.cpp
120	CreateUserDetail.cpp
121	DecisionProvider.cpp
122	FeaturedPackagesView.cpp
123	FilterView.cpp
124	JobStateListener.cpp
125	LocalIconStore.cpp
126	LanguageModel.cpp
127	LinkView.cpp
128	LinkedBitmapView.cpp
129	Logger.cpp
130	main.cpp
131	MainWindow.cpp
132	MarkupTextView.cpp
133	MessagePackageListener.cpp
134	Model.cpp
135	PackageAction.cpp
136	PackageActionHandler.cpp
137	PackageContentsView.cpp
138	PackageInfo.cpp
139	PackageInfoListener.cpp
140	PackageInfoView.cpp
141	PackageListView.cpp
142	PackageManager.cpp
143	RatePackageWindow.cpp
144	RatingView.cpp
145	support.cpp
146	ScreenshotWindow.cpp
147	ScrollableGroupView.cpp
148	SharedBitmap.cpp
149	ToLatestUserUsageConditionsWindow.cpp
150	UserCredentials.cpp
151	UserDetail.cpp
152	UserLoginWindow.cpp
153	UserUsageConditions.cpp
154	UserUsageConditionsWindow.cpp
155	ValidationFailure.cpp
156	ValidationUtils.cpp
157	WorkStatusView.cpp
158
159	# network + server / local processes
160	AbstractProcess.cpp
161	AbstractServerProcess.cpp
162	AbstractSingleFileServerProcess.cpp
163	LocalPkgDataLoadProcess.cpp
164	LocalRepositoryUpdateProcess.cpp
165	ProcessCoordinator.cpp
166	ProcessCoordinatorFactory.cpp
167	ProcessNode.cpp
168	ServerHelper.cpp
169	ServerSettings.cpp
170	ServerPkgDataUpdateProcess.cpp
171	ServerReferenceDataUpdateProcess.cpp
172	ServerRepositoryDataUpdateProcess.cpp
173	ServerIconExportUpdateProcess.cpp
174	StandardMetaDataJsonEventListener.cpp
175	StandardMetaData.cpp
176	UserDetailVerifierProcess.cpp
177	WebAppInterface.cpp
178
179	# tar
180	TarArchiveHeader.cpp
181	TarArchiveService.cpp
182
183	# util
184	AppUtils.cpp
185	DataIOUtils.cpp
186	LanguageMenuUtils.cpp
187	LocaleUtils.cpp
188	RepositoryUrlUtils.cpp
189	StorageUtils.cpp
190	ToFileUrlProtocolListener.cpp
191
192	# package_daemon
193	ProblemWindow.cpp
194	ResultWindow.cpp
195;
196
197local generatedPkgModelSourceFiles =
198	DumpExportPkg.cpp
199	DumpExportPkgCategory.cpp
200	DumpExportPkgScreenshot.cpp
201	DumpExportPkgVersion.cpp
202;
203
204local generatedRepositoryModelSourceFiles =
205	DumpExportRepository.cpp
206	DumpExportRepositorySource.cpp
207	DumpExportRepositorySourceMirror.cpp
208;
209
210local generatedReferenceModelSourceFiles =
211	DumpExportReference.cpp
212	DumpExportReferenceNaturalLanguage.cpp
213	DumpExportReferencePkgCategory.cpp
214	DumpExportReferenceUserRatingStability.cpp
215	DumpExportReferenceCountry.cpp
216;
217
218local generatedPkgParserSourceFiles =
219	DumpExportPkgJsonListener.cpp
220;
221
222local generatedRepositoryParserSourceFiles =
223	DumpExportRepositoryJsonListener.cpp
224;
225
226local generatedReferenceParserSourceFiles =
227	DumpExportReferenceJsonListener.cpp
228;
229
230Application HaikuDepot
231	:
232	$(applicationSources)
233	$(textDocumentSources)
234	$(generatedPkgModelSourceFiles)
235	$(generatedRepositoryModelSourceFiles)
236	$(generatedReferenceModelSourceFiles)
237	$(generatedPkgParserSourceFiles)
238	$(generatedRepositoryParserSourceFiles)
239	$(generatedReferenceParserSourceFiles)
240	:
241	be package bnetapi translation libcolumnlistview.a shared
242	[ TargetLibstdc++ ] [ TargetLibsupc++ ] localestub
243	[ BuildFeatureAttribute icu : libraries ]
244	:
245	HaikuDepot.rdef
246;
247
248DoCatalogs HaikuDepot :
249	x-vnd.Haiku-HaikuDepot
250	:
251	App.cpp
252	FeaturedPackagesView.cpp
253	FilterView.cpp
254	LocaleUtils.cpp
255	LocalPkgDataLoadProcess.cpp
256	LocalRepositoryUpdateProcess.cpp
257	MainWindow.cpp
258	Model.cpp
259	PackageContentsView.cpp
260	PackageInfoView.cpp
261	PackageListView.cpp
262	PackageManager.cpp
263	ProcessCoordinator.cpp
264	RatePackageWindow.cpp
265	ScreenshotWindow.cpp
266	ServerHelper.cpp
267	ServerIconExportUpdateProcess.cpp
268	ServerPkgDataUpdateProcess.cpp
269	ServerReferenceDataUpdateProcess.cpp
270	ServerRepositoryDataUpdateProcess.cpp
271	UserLoginWindow.cpp
272	WorkStatusView.cpp
273;
274
275Application TextDocumentTest :
276	TextDocumentTest.cpp
277	$(textDocumentSources)
278
279	: be translation shared [ TargetLibsupc++ ]
280;
281
282# The following use of rules configures the generation of .cpp and .h files from
283# JSON schemas that are defined in the HaikuDepotServer system.  See the
284# included Jam rules and actions for the definitions.
285
286HdsSchemaGenModel $(dumpExportPkgModelTargetFile)
287	: dumpexportpkg.json : jsonschema2cppmodel.py ;
288
289HdsSchemaGenModel $(dumpExportRepositoryModelTargetFile)
290	: dumpexportrepository.json : jsonschema2cppmodel.py ;
291
292HdsSchemaGenModel $(dumpExportReferenceModelTargetFile)
293	: dumpexportreference.json : jsonschema2cppmodel.py ;
294
295HdsSchemaGenBulkParser $(dumpExportRepositoryBulkListerTargetFile)
296	: dumpexportrepository.json : jsonschema2cppparser.py ;
297
298HdsSchemaGenBulkParser $(dumpExportPkgBulkListenerTargetFile)
299	: dumpexportpkg.json : jsonschema2cppparser.py ;
300
301HdsSchemaGenParser $(dumpExportReferenceListenerTargetFile)
302	: dumpexportreference.json : jsonschema2cppparser.py ;
303
304HdsSchemaGenAppSrcDependsOnGeneration
305	[ FGristFiles $(generatedPkgParserSourceFiles) ]
306	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
307	: $(dumpExportPkgBulkListenerTargetFile) ;
308
309HdsSchemaGenAppSrcDependsOnGeneration
310	[ FGristFiles $(generatedRepositoryParserSourceFiles) ]
311	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
312	: $(dumpExportRepositoryBulkListerTargetFile) ;
313
314HdsSchemaGenAppSrcDependsOnGeneration
315	[ FGristFiles $(generatedReferenceParserSourceFiles) ]
316	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
317	: $(dumpExportReferenceListenerTargetFile) ;
318
319HdsSchemaGenAppSrcDependsOnGeneration
320	[ FGristFiles $(generatedRepositoryModelSourceFiles) ]
321	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
322	: $(dumpExportRepositoryModelTargetFile) ;
323
324HdsSchemaGenAppSrcDependsOnGeneration
325	[ FGristFiles $(generatedPkgModelSourceFiles) ]
326	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
327	: $(dumpExportPkgModelTargetFile) ;
328
329HdsSchemaGenAppSrcDependsOnGeneration
330	[ FGristFiles $(generatedReferenceModelSourceFiles) ]
331	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
332	: $(dumpExportReferenceModelTargetFile) ;
333
334# This will ensure that if any of the generated files' header files change, then
335# the application should be re-built.
336
337Depends [ FGristFiles $(applicationSources:S=.o) ]
338	:
339	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
340	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
341	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
342	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
343	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
344	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
345;
346