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