xref: /haiku/src/apps/haikudepot/Jamfile (revision 4c07199d8201fcf267e90be0d24b76799d03cea6)
1SubDir HAIKU_TOP src apps haikudepot ;
2
3# disable -Werror for this directory only
4SubDirC++Flags -Wno-error ;
5
6include [ FDirName $(SUBDIR) build jam HdsSchemaGenRules ] ;
7
8UsePrivateHeaders interface kernel net netservices package shared storage ;
9UsePrivateHeaders 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	packagemanagement
62	packagemodel
63	process
64	textview
65	ui
66	ui_generic
67	server
68	tar
69	util
70;
71
72local sourceDir ;
73for sourceDir in $(sourceDirs) {
74	SEARCH_SOURCE += [ FDirName $(SUBDIR) $(sourceDir) ] ;
75}
76
77SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src servers package ] ;
78
79SEARCH_SOURCE += $(dumpExportRepositoryBulkListerTargetDirectory) ;
80SEARCH_SOURCE += $(dumpExportPkgBulkListenerTargetDirectory) ;
81SEARCH_SOURCE += $(dumpExportReferenceListenerTargetDirectory) ;
82
83SEARCH_SOURCE += $(dumpExportPkgModelTargetDirectory) ;
84SEARCH_SOURCE += $(dumpExportRepositoryModelTargetDirectory) ;
85SEARCH_SOURCE += $(dumpExportReferenceModelTargetDirectory) ;
86
87local textDocumentSources =
88	# edits_generic
89	CompoundEdit.cpp
90	EditContext.cpp
91	EditManager.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	AccessToken.cpp
118	BitmapView.cpp
119	Captcha.cpp
120	CreateUserDetail.cpp
121	DecisionProvider.cpp
122	DeskbarLink.cpp
123	FeaturedPackagesView.cpp
124	FilterView.cpp
125	GeneralContentScrollView.cpp
126	IconTarPtr.cpp
127	IncrementViewCounterProcess.cpp
128	JobStateListener.cpp
129	JwtTokenHelper.cpp
130	LanguageModel.cpp
131	LinkView.cpp
132	LinkedBitmapView.cpp
133	Logger.cpp
134	main.cpp
135	MainWindow.cpp
136	MarkupTextView.cpp
137	MessagePackageListener.cpp
138	Model.cpp
139	PackageContentsView.cpp
140	PackageIconTarRepository.cpp
141	PackageInfoListener.cpp
142	PackageInfoView.cpp
143	PackageListView.cpp
144	PasswordRequirements.cpp
145	RatePackageWindow.cpp
146	RatingView.cpp
147	RatingStability.cpp
148	RatingUtils.cpp
149	support.cpp
150	ScreenshotWindow.cpp
151	ScrollableGroupView.cpp
152	SettingsWindow.cpp
153	SharedBitmap.cpp
154	ShuttingDownWindow.cpp
155	ToLatestUserUsageConditionsWindow.cpp
156	UserCredentials.cpp
157	UserDetail.cpp
158	UserLoginWindow.cpp
159	UserUsageConditions.cpp
160	UserUsageConditionsWindow.cpp
161	ValidationFailure.cpp
162	ValidationUtils.cpp
163	WorkStatusView.cpp
164
165	# packagemanagement
166	AbstractPackageProcess.cpp
167	InstallPackageProcess.cpp
168	OpenPackageProcess.cpp
169	PackageAction.cpp
170	PackageManager.cpp
171	UninstallPackageProcess.cpp
172
173	#packagemodel
174	DepotInfo.cpp
175	Language.cpp
176	PackageCategory.cpp
177	PackageInfo.cpp
178	PublisherInfo.cpp
179	RatingSummary.cpp
180	ScreenshotInfo.cpp
181	UserInfo.cpp
182	UserRating.cpp
183
184	# network + server / local processes
185	AbstractProcess.cpp
186	AbstractProcessNode.cpp
187	AbstractServerProcess.cpp
188	AbstractSingleFileServerProcess.cpp
189	LocalPkgDataLoadProcess.cpp
190	LocalRepositoryUpdateProcess.cpp
191	PopulatePkgSizesProcess.cpp
192	ProcessCoordinator.cpp
193	ProcessCoordinatorFactory.cpp
194	ServerHelper.cpp
195	ServerSettings.cpp
196	ServerPkgDataUpdateProcess.cpp
197	ServerReferenceDataUpdateProcess.cpp
198	ServerRepositoryDataUpdateProcess.cpp
199	ServerIconExportUpdateProcess.cpp
200	StandardMetaDataJsonEventListener.cpp
201	StandardMetaData.cpp
202	ThreadedProcessNode.cpp
203	UserDetailVerifierProcess.cpp
204	WebAppInterface.cpp
205
206	# tar
207	TarArchiveHeader.cpp
208	TarArchiveService.cpp
209
210	# util
211	AppUtils.cpp
212	DataIOUtils.cpp
213	LanguageMenuUtils.cpp
214	LocaleUtils.cpp
215	PackageUtils.cpp
216	StorageUtils.cpp
217	StringUtils.cpp
218	LoggingUrlProtocolListener.cpp
219
220	# package_daemon
221	ProblemWindow.cpp
222	ResultWindow.cpp
223;
224
225local generatedPkgModelSourceFiles =
226	DumpExportPkg.cpp
227	DumpExportPkgCategory.cpp
228	DumpExportPkgScreenshot.cpp
229	DumpExportPkgVersion.cpp
230;
231
232local generatedRepositoryModelSourceFiles =
233	DumpExportRepository.cpp
234	DumpExportRepositorySource.cpp
235	DumpExportRepositorySourceMirror.cpp
236;
237
238local generatedReferenceModelSourceFiles =
239	DumpExportReference.cpp
240	DumpExportReferenceNaturalLanguage.cpp
241	DumpExportReferencePkgCategory.cpp
242	DumpExportReferenceUserRatingStability.cpp
243	DumpExportReferenceCountry.cpp
244;
245
246local generatedPkgParserSourceFiles =
247	DumpExportPkgJsonListener.cpp
248;
249
250local generatedRepositoryParserSourceFiles =
251	DumpExportRepositoryJsonListener.cpp
252;
253
254local generatedReferenceParserSourceFiles =
255	DumpExportReferenceJsonListener.cpp
256;
257
258Application HaikuDepot
259	:
260	$(applicationSources)
261	$(textDocumentSources)
262	$(generatedPkgModelSourceFiles)
263	$(generatedRepositoryModelSourceFiles)
264	$(generatedReferenceModelSourceFiles)
265	$(generatedPkgParserSourceFiles)
266	$(generatedRepositoryParserSourceFiles)
267	$(generatedReferenceParserSourceFiles)
268	:
269	be package bnetapi translation libnetservices.a libcolumnlistview.a shared
270	[ TargetLibstdc++ ] [ TargetLibsupc++ ] localestub
271	:
272	HaikuDepot.rdef
273;
274
275DoCatalogs HaikuDepot :
276	x-vnd.Haiku-HaikuDepot
277	:
278	$(applicationSources)
279;
280
281# The following use of rules configures the generation of .cpp and .h files from
282# JSON schemas that are defined in the HaikuDepotServer system.  See the
283# included Jam rules and actions for the definitions.
284
285HdsSchemaGenModel $(dumpExportPkgModelTargetFile)
286	: dumpexportpkg.json : jsonschema2cppmodel.py ;
287
288HdsSchemaGenModel $(dumpExportRepositoryModelTargetFile)
289	: dumpexportrepository.json : jsonschema2cppmodel.py ;
290
291HdsSchemaGenModel $(dumpExportReferenceModelTargetFile)
292	: dumpexportreference.json : jsonschema2cppmodel.py ;
293
294HdsSchemaGenBulkParser $(dumpExportRepositoryBulkListerTargetFile)
295	: dumpexportrepository.json : jsonschema2cppparser.py ;
296
297HdsSchemaGenBulkParser $(dumpExportPkgBulkListenerTargetFile)
298	: dumpexportpkg.json : jsonschema2cppparser.py ;
299
300HdsSchemaGenParser $(dumpExportReferenceListenerTargetFile)
301	: dumpexportreference.json : jsonschema2cppparser.py ;
302
303HdsSchemaGenAppSrcDependsOnGeneration
304	[ FGristFiles $(generatedPkgParserSourceFiles) ]
305	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
306	: $(dumpExportPkgBulkListenerTargetDirectory)
307	: $(dumpExportPkgBulkListenerTargetFile) ;
308
309HdsSchemaGenAppSrcDependsOnGeneration
310	[ FGristFiles $(generatedRepositoryParserSourceFiles) ]
311	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
312	: $(dumpExportRepositoryBulkListerTargetDirectory)
313	: $(dumpExportRepositoryBulkListerTargetFile) ;
314
315HdsSchemaGenAppSrcDependsOnGeneration
316	[ FGristFiles $(generatedReferenceParserSourceFiles) ]
317	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
318	: $(dumpExportReferenceListenerTargetDirectory)
319	: $(dumpExportReferenceListenerTargetFile) ;
320
321HdsSchemaGenAppSrcDependsOnGeneration
322	[ FGristFiles $(generatedRepositoryModelSourceFiles) ]
323	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
324	: $(dumpExportRepositoryModelTargetDirectory)
325	: $(dumpExportRepositoryModelTargetFile) ;
326
327HdsSchemaGenAppSrcDependsOnGeneration
328	[ FGristFiles $(generatedPkgModelSourceFiles) ]
329	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
330	: $(dumpExportPkgModelTargetDirectory)
331	: $(dumpExportPkgModelTargetFile) ;
332
333HdsSchemaGenAppSrcDependsOnGeneration
334	[ FGristFiles $(generatedReferenceModelSourceFiles) ]
335	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
336	: $(dumpExportReferenceModelTargetDirectory)
337	: $(dumpExportReferenceModelTargetFile) ;
338
339# This will ensure that if any of the generated files' header files change, then
340# the application should be re-built.
341
342Includes [ FGristFiles $(applicationSources) ]
343	:
344	$(dumpExportRepositoryBulkListerTargetDirectory)
345	$(dumpExportPkgBulkListenerTargetDirectory)
346	$(dumpExportReferenceListenerTargetDirectory)
347	$(dumpExportPkgModelTargetDirectory)
348	$(dumpExportRepositoryModelTargetDirectory)
349	$(dumpExportReferenceModelTargetDirectory)
350;
351
352Depends [ FGristFiles $(applicationSources:S=.o) ]
353	:
354	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
355	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
356	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
357	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
358	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
359	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
360;
361