xref: /haiku/src/apps/haikudepot/Jamfile (revision 4b918abdb02a26a770d898594eaaccc6f1726e9b)
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	UserCredentials.cpp
150	UserDetail.cpp
151	UserLoginWindow.cpp
152	UserUsageConditions.cpp
153	UserUsageConditionsWindow.cpp
154	ValidationFailure.cpp
155	ValidationUtils.cpp
156	WorkStatusView.cpp
157
158	# network + server / local processes
159	AbstractProcess.cpp
160	AbstractServerProcess.cpp
161	AbstractSingleFileServerProcess.cpp
162	LocalPkgDataLoadProcess.cpp
163	LocalRepositoryUpdateProcess.cpp
164	ProcessCoordinator.cpp
165	ProcessCoordinatorFactory.cpp
166	ProcessNode.cpp
167	ServerHelper.cpp
168	ServerSettings.cpp
169	ServerPkgDataUpdateProcess.cpp
170	ServerReferenceDataUpdateProcess.cpp
171	ServerRepositoryDataUpdateProcess.cpp
172	ServerIconExportUpdateProcess.cpp
173	StandardMetaDataJsonEventListener.cpp
174	StandardMetaData.cpp
175	WebAppInterface.cpp
176
177	# tar
178	TarArchiveHeader.cpp
179	TarArchiveService.cpp
180
181	# util
182	AppUtils.cpp
183	DataIOUtils.cpp
184	LanguageMenuUtils.cpp
185	LocaleUtils.cpp
186	RepositoryUrlUtils.cpp
187	StorageUtils.cpp
188	ToFileUrlProtocolListener.cpp
189
190	# package_daemon
191	ProblemWindow.cpp
192	ResultWindow.cpp
193;
194
195local generatedPkgModelSourceFiles =
196	DumpExportPkg.cpp
197	DumpExportPkgCategory.cpp
198	DumpExportPkgScreenshot.cpp
199	DumpExportPkgVersion.cpp
200;
201
202local generatedRepositoryModelSourceFiles =
203	DumpExportRepository.cpp
204	DumpExportRepositorySource.cpp
205	DumpExportRepositorySourceMirror.cpp
206;
207
208local generatedReferenceModelSourceFiles =
209	DumpExportReference.cpp
210	DumpExportReferenceNaturalLanguage.cpp
211	DumpExportReferencePkgCategory.cpp
212	DumpExportReferenceUserRatingStability.cpp
213	DumpExportReferenceCountry.cpp
214;
215
216local generatedPkgParserSourceFiles =
217	DumpExportPkgJsonListener.cpp
218;
219
220local generatedRepositoryParserSourceFiles =
221	DumpExportRepositoryJsonListener.cpp
222;
223
224local generatedReferenceParserSourceFiles =
225	DumpExportReferenceJsonListener.cpp
226;
227
228Application HaikuDepot
229	:
230	$(applicationSources)
231	$(textDocumentSources)
232	$(generatedPkgModelSourceFiles)
233	$(generatedRepositoryModelSourceFiles)
234	$(generatedReferenceModelSourceFiles)
235	$(generatedPkgParserSourceFiles)
236	$(generatedRepositoryParserSourceFiles)
237	$(generatedReferenceParserSourceFiles)
238	:
239	be package bnetapi translation libcolumnlistview.a shared
240	[ TargetLibstdc++ ] [ TargetLibsupc++ ] localestub
241	[ BuildFeatureAttribute icu : libraries ]
242	:
243	HaikuDepot.rdef
244;
245
246DoCatalogs HaikuDepot :
247	x-vnd.Haiku-HaikuDepot
248	:
249	App.cpp
250	FeaturedPackagesView.cpp
251	FilterView.cpp
252	LocalPkgDataLoadProcess.cpp
253	LocalRepositoryUpdateProcess.cpp
254	MainWindow.cpp
255	Model.cpp
256	PackageContentsView.cpp
257	PackageInfoView.cpp
258	PackageListView.cpp
259	PackageManager.cpp
260	ProcessCoordinator.cpp
261	RatePackageWindow.cpp
262	ScreenshotWindow.cpp
263	ServerHelper.cpp
264	ServerIconExportUpdateProcess.cpp
265	ServerPkgDataUpdateProcess.cpp
266	ServerReferenceDataUpdateProcess.cpp
267	ServerRepositoryDataUpdateProcess.cpp
268	UserLoginWindow.cpp
269	WorkStatusView.cpp
270;
271
272Application TextDocumentTest :
273	TextDocumentTest.cpp
274	$(textDocumentSources)
275
276	: be translation shared [ TargetLibsupc++ ]
277;
278
279# The following use of rules configures the generation of .cpp and .h files from
280# JSON schemas that are defined in the HaikuDepotServer system.  See the
281# included Jam rules and actions for the definitions.
282
283HdsSchemaGenModel $(dumpExportPkgModelTargetFile)
284	: dumpexportpkg.json : jsonschema2cppmodel.py ;
285
286HdsSchemaGenModel $(dumpExportRepositoryModelTargetFile)
287	: dumpexportrepository.json : jsonschema2cppmodel.py ;
288
289HdsSchemaGenModel $(dumpExportReferenceModelTargetFile)
290	: dumpexportreference.json : jsonschema2cppmodel.py ;
291
292HdsSchemaGenBulkParser $(dumpExportRepositoryBulkListerTargetFile)
293	: dumpexportrepository.json : jsonschema2cppparser.py ;
294
295HdsSchemaGenBulkParser $(dumpExportPkgBulkListenerTargetFile)
296	: dumpexportpkg.json : jsonschema2cppparser.py ;
297
298HdsSchemaGenParser $(dumpExportReferenceListenerTargetFile)
299	: dumpexportreference.json : jsonschema2cppparser.py ;
300
301HdsSchemaGenAppSrcDependsOnGeneration
302	[ FGristFiles $(generatedPkgParserSourceFiles) ]
303	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
304	: $(dumpExportPkgBulkListenerTargetFile) ;
305
306HdsSchemaGenAppSrcDependsOnGeneration
307	[ FGristFiles $(generatedRepositoryParserSourceFiles) ]
308	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
309	: $(dumpExportRepositoryBulkListerTargetFile) ;
310
311HdsSchemaGenAppSrcDependsOnGeneration
312	[ FGristFiles $(generatedReferenceParserSourceFiles) ]
313	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
314	: $(dumpExportReferenceListenerTargetFile) ;
315
316HdsSchemaGenAppSrcDependsOnGeneration
317	[ FGristFiles $(generatedRepositoryModelSourceFiles) ]
318	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
319	: $(dumpExportRepositoryModelTargetFile) ;
320
321HdsSchemaGenAppSrcDependsOnGeneration
322	[ FGristFiles $(generatedPkgModelSourceFiles) ]
323	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
324	: $(dumpExportPkgModelTargetFile) ;
325
326HdsSchemaGenAppSrcDependsOnGeneration
327	[ FGristFiles $(generatedReferenceModelSourceFiles) ]
328	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
329	: $(dumpExportReferenceModelTargetFile) ;
330
331# This will ensure that if any of the generated files' header files change, then
332# the application should be re-built.
333
334Depends [ FGristFiles $(applicationSources:S=.o) ]
335	:
336	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
337	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
338	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
339	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
340	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
341	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
342;
343