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