xref: /haiku/src/apps/haikudepot/Jamfile (revision ad2226790662c78e979960a0c7237cf4b5a6fad2)
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
9UsePrivateHeaders interface kernel net package shared storage support locale ;
10
11HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY = $(TARGET_COMMON_DEBUG_LOCATE_TARGET) ;
12
13# During the build process, some sources are generated into directories.  These
14# are the directories.
15
16local dumpExportRepositoryBulkListerTargetDirectory =
17	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
18		dumpexportrepositorybulklistener ] ;
19local dumpExportPkgBulkListenerTargetDirectory =
20	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
21		dumpexportpkgbulklistener ] ;
22local dumpExportReferenceListenerTargetDirectory =
23	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
24		dumpexportreferencelistener ] ;
25
26local dumpExportPkgModelTargetDirectory =
27	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
28		dumpexportpkgmodel ] ;
29local dumpExportRepositoryModelTargetDirectory =
30	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
31		dumpexportrepositorymodel ] ;
32local dumpExportReferenceModelTargetDirectory =
33	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
34		dumpexportreferencemodel ] ;
35
36# During the build process, some sources are generated into a directory.  In
37# order to maintain a timestamp on that generation process, a dummy file is
38# used to signify the target of the generation.  The leafname of this dummy file
39# is defined here.
40
41local dummyFile = "dummy.dat" ;
42
43local dumpExportRepositoryBulkListerTargetFile =
44	[ FDirName $(dumpExportRepositoryBulkListerTargetDirectory) $(dummyFile) ] ;
45local dumpExportPkgBulkListenerTargetFile =
46	[ FDirName $(dumpExportPkgBulkListenerTargetDirectory) $(dummyFile) ] ;
47local dumpExportReferenceListenerTargetFile =
48	[ FDirName $(dumpExportReferenceListenerTargetDirectory) $(dummyFile) ] ;
49
50local dumpExportPkgModelTargetFile =
51	[ FDirName $(dumpExportPkgModelTargetDirectory) $(dummyFile) ] ;
52local dumpExportRepositoryModelTargetFile =
53	[ FDirName $(dumpExportRepositoryModelTargetDirectory) $(dummyFile) ] ;
54local dumpExportReferenceModelTargetFile =
55	[ FDirName $(dumpExportReferenceModelTargetDirectory) $(dummyFile) ] ;
56
57# source directories
58local sourceDirs =
59	edits_generic
60	model
61	textview
62	ui
63	ui_generic
64	server
65	tar
66	util
67;
68
69local sourceDir ;
70for sourceDir in $(sourceDirs) {
71	SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src apps haikudepot $(sourceDir) ] ;
72}
73
74SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src servers package ] ;
75
76SEARCH_SOURCE += $(dumpExportRepositoryBulkListerTargetDirectory) ;
77SEARCH_SOURCE += $(dumpExportPkgBulkListenerTargetDirectory) ;
78SEARCH_SOURCE += $(dumpExportReferenceListenerTargetDirectory) ;
79
80SEARCH_SOURCE += $(dumpExportPkgModelTargetDirectory) ;
81SEARCH_SOURCE += $(dumpExportRepositoryModelTargetDirectory) ;
82SEARCH_SOURCE += $(dumpExportReferenceModelTargetDirectory) ;
83
84local textDocumentSources =
85	# edits_generic
86	CompoundEdit.cpp
87	EditContext.cpp
88	EditManager.cpp
89	EditStack.cpp
90	UndoableEdit.cpp
91
92	# textview
93	Bullet.cpp
94	BulletData.cpp
95	CharacterStyle.cpp
96	CharacterStyleData.cpp
97	MarkupParser.cpp
98	Paragraph.cpp
99	ParagraphLayout.cpp
100	ParagraphStyle.cpp
101	ParagraphStyleData.cpp
102	TextDocument.cpp
103	TextDocumentLayout.cpp
104	TextDocumentView.cpp
105	TextEditor.cpp
106	TextListener.cpp
107	TextSelection.cpp
108	TextSpan.cpp
109	TextView.cpp
110	UndoableEditListener.cpp
111;
112
113local applicationSources =
114	App.cpp
115	BarberPole.cpp
116	BitmapView.cpp
117	Captcha.cpp
118	CreateUserDetail.cpp
119	DecisionProvider.cpp
120	FeaturedPackagesView.cpp
121	FilterView.cpp
122	IconTarPtr.cpp
123	JobStateListener.cpp
124	LanguageModel.cpp
125	LinkView.cpp
126	LinkedBitmapView.cpp
127	Logger.cpp
128	main.cpp
129	MainWindow.cpp
130	MarkupTextView.cpp
131	MessagePackageListener.cpp
132	Model.cpp
133	PackageAction.cpp
134	PackageActionHandler.cpp
135	PackageContentsView.cpp
136	PackageIconTarRepository.cpp
137	PackageInfo.cpp
138	PackageInfoListener.cpp
139	PackageInfoView.cpp
140	PackageListView.cpp
141	PackageManager.cpp
142	RatePackageWindow.cpp
143	RatingView.cpp
144	RatingUtils.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	:
244	HaikuDepot.rdef
245;
246
247DoCatalogs HaikuDepot :
248	x-vnd.Haiku-HaikuDepot
249	:
250	App.cpp
251	FeaturedPackagesView.cpp
252	FilterView.cpp
253	LocaleUtils.cpp
254	LocalPkgDataLoadProcess.cpp
255	LocalRepositoryUpdateProcess.cpp
256	MainWindow.cpp
257	Model.cpp
258	PackageContentsView.cpp
259	PackageInfoView.cpp
260	PackageListView.cpp
261	PackageManager.cpp
262	ProcessCoordinator.cpp
263	RatePackageWindow.cpp
264	ScreenshotWindow.cpp
265	ServerHelper.cpp
266	ServerIconExportUpdateProcess.cpp
267	ServerPkgDataUpdateProcess.cpp
268	ServerReferenceDataUpdateProcess.cpp
269	ServerRepositoryDataUpdateProcess.cpp
270	UserLoginWindow.cpp
271	WorkStatusView.cpp
272;
273
274# The following use of rules configures the generation of .cpp and .h files from
275# JSON schemas that are defined in the HaikuDepotServer system.  See the
276# included Jam rules and actions for the definitions.
277
278HdsSchemaGenModel $(dumpExportPkgModelTargetFile)
279	: dumpexportpkg.json : jsonschema2cppmodel.py ;
280
281HdsSchemaGenModel $(dumpExportRepositoryModelTargetFile)
282	: dumpexportrepository.json : jsonschema2cppmodel.py ;
283
284HdsSchemaGenModel $(dumpExportReferenceModelTargetFile)
285	: dumpexportreference.json : jsonschema2cppmodel.py ;
286
287HdsSchemaGenBulkParser $(dumpExportRepositoryBulkListerTargetFile)
288	: dumpexportrepository.json : jsonschema2cppparser.py ;
289
290HdsSchemaGenBulkParser $(dumpExportPkgBulkListenerTargetFile)
291	: dumpexportpkg.json : jsonschema2cppparser.py ;
292
293HdsSchemaGenParser $(dumpExportReferenceListenerTargetFile)
294	: dumpexportreference.json : jsonschema2cppparser.py ;
295
296HdsSchemaGenAppSrcDependsOnGeneration
297	[ FGristFiles $(generatedPkgParserSourceFiles) ]
298	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
299	: $(dumpExportPkgBulkListenerTargetFile) ;
300
301HdsSchemaGenAppSrcDependsOnGeneration
302	[ FGristFiles $(generatedRepositoryParserSourceFiles) ]
303	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
304	: $(dumpExportRepositoryBulkListerTargetFile) ;
305
306HdsSchemaGenAppSrcDependsOnGeneration
307	[ FGristFiles $(generatedReferenceParserSourceFiles) ]
308	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
309	: $(dumpExportReferenceListenerTargetFile) ;
310
311HdsSchemaGenAppSrcDependsOnGeneration
312	[ FGristFiles $(generatedRepositoryModelSourceFiles) ]
313	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
314	: $(dumpExportRepositoryModelTargetFile) ;
315
316HdsSchemaGenAppSrcDependsOnGeneration
317	[ FGristFiles $(generatedPkgModelSourceFiles) ]
318	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
319	: $(dumpExportPkgModelTargetFile) ;
320
321HdsSchemaGenAppSrcDependsOnGeneration
322	[ FGristFiles $(generatedReferenceModelSourceFiles) ]
323	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
324	: $(dumpExportReferenceModelTargetFile) ;
325
326# This will ensure that if any of the generated files' header files change, then
327# the application should be re-built.
328
329Depends [ FGristFiles $(applicationSources:S=.o) ]
330	:
331	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
332	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
333	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
334	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
335	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
336	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
337;
338