xref: /haiku/src/apps/haikudepot/Jamfile (revision e1c4049fed1047bdb957b0529e1921e97ef94770)
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	process
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 $(SUBDIR) $(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	UndoableEdit.cpp
92
93	# textview
94	Bullet.cpp
95	BulletData.cpp
96	CharacterStyle.cpp
97	CharacterStyleData.cpp
98	MarkupParser.cpp
99	Paragraph.cpp
100	ParagraphLayout.cpp
101	ParagraphStyle.cpp
102	ParagraphStyleData.cpp
103	TextDocument.cpp
104	TextDocumentLayout.cpp
105	TextDocumentView.cpp
106	TextEditor.cpp
107	TextListener.cpp
108	TextSelection.cpp
109	TextSpan.cpp
110	TextView.cpp
111	UndoableEditListener.cpp
112;
113
114local applicationSources =
115	App.cpp
116	AccessToken.cpp
117	BitmapView.cpp
118	Captcha.cpp
119	CreateUserDetail.cpp
120	DecisionProvider.cpp
121	DeskbarLink.cpp
122	FeaturedPackagesView.cpp
123	FilterView.cpp
124	GeneralContentScrollView.cpp
125	IconTarPtr.cpp
126	IncrementViewCounterProcess.cpp
127	JobStateListener.cpp
128	JwtTokenHelper.cpp
129	LanguageModel.cpp
130	LinkView.cpp
131	LinkedBitmapView.cpp
132	Logger.cpp
133	main.cpp
134	MainWindow.cpp
135	MarkupTextView.cpp
136	MessagePackageListener.cpp
137	Model.cpp
138	PackageContentsView.cpp
139	PackageIconTarRepository.cpp
140	PackageInfo.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	# network + server / local processes
174	AbstractProcess.cpp
175	AbstractProcessNode.cpp
176	AbstractServerProcess.cpp
177	AbstractSingleFileServerProcess.cpp
178	LocalPkgDataLoadProcess.cpp
179	LocalRepositoryUpdateProcess.cpp
180	ProcessCoordinator.cpp
181	ProcessCoordinatorFactory.cpp
182	ServerHelper.cpp
183	ServerSettings.cpp
184	ServerPkgDataUpdateProcess.cpp
185	ServerReferenceDataUpdateProcess.cpp
186	ServerRepositoryDataUpdateProcess.cpp
187	ServerIconExportUpdateProcess.cpp
188	StandardMetaDataJsonEventListener.cpp
189	StandardMetaData.cpp
190	ThreadedProcessNode.cpp
191	UserDetailVerifierProcess.cpp
192	WebAppInterface.cpp
193
194	# tar
195	TarArchiveHeader.cpp
196	TarArchiveService.cpp
197
198	# util
199	AppUtils.cpp
200	DataIOUtils.cpp
201	LanguageMenuUtils.cpp
202	LocaleUtils.cpp
203	PackageUtils.cpp
204	RepositoryUrlUtils.cpp
205	StorageUtils.cpp
206	StringUtils.cpp
207	LoggingUrlProtocolListener.cpp
208
209	# package_daemon
210	ProblemWindow.cpp
211	ResultWindow.cpp
212;
213
214local generatedPkgModelSourceFiles =
215	DumpExportPkg.cpp
216	DumpExportPkgCategory.cpp
217	DumpExportPkgScreenshot.cpp
218	DumpExportPkgVersion.cpp
219;
220
221local generatedRepositoryModelSourceFiles =
222	DumpExportRepository.cpp
223	DumpExportRepositorySource.cpp
224	DumpExportRepositorySourceMirror.cpp
225;
226
227local generatedReferenceModelSourceFiles =
228	DumpExportReference.cpp
229	DumpExportReferenceNaturalLanguage.cpp
230	DumpExportReferencePkgCategory.cpp
231	DumpExportReferenceUserRatingStability.cpp
232	DumpExportReferenceCountry.cpp
233;
234
235local generatedPkgParserSourceFiles =
236	DumpExportPkgJsonListener.cpp
237;
238
239local generatedRepositoryParserSourceFiles =
240	DumpExportRepositoryJsonListener.cpp
241;
242
243local generatedReferenceParserSourceFiles =
244	DumpExportReferenceJsonListener.cpp
245;
246
247Application HaikuDepot
248	:
249	$(applicationSources)
250	$(textDocumentSources)
251	$(generatedPkgModelSourceFiles)
252	$(generatedRepositoryModelSourceFiles)
253	$(generatedReferenceModelSourceFiles)
254	$(generatedPkgParserSourceFiles)
255	$(generatedRepositoryParserSourceFiles)
256	$(generatedReferenceParserSourceFiles)
257	:
258	be package bnetapi translation libnetservices.a libcolumnlistview.a shared
259	[ TargetLibstdc++ ] [ TargetLibsupc++ ] localestub
260	:
261	HaikuDepot.rdef
262;
263
264DoCatalogs HaikuDepot :
265	x-vnd.Haiku-HaikuDepot
266	:
267	$(applicationSources)
268;
269
270# The following use of rules configures the generation of .cpp and .h files from
271# JSON schemas that are defined in the HaikuDepotServer system.  See the
272# included Jam rules and actions for the definitions.
273
274HdsSchemaGenModel $(dumpExportPkgModelTargetFile)
275	: dumpexportpkg.json : jsonschema2cppmodel.py ;
276
277HdsSchemaGenModel $(dumpExportRepositoryModelTargetFile)
278	: dumpexportrepository.json : jsonschema2cppmodel.py ;
279
280HdsSchemaGenModel $(dumpExportReferenceModelTargetFile)
281	: dumpexportreference.json : jsonschema2cppmodel.py ;
282
283HdsSchemaGenBulkParser $(dumpExportRepositoryBulkListerTargetFile)
284	: dumpexportrepository.json : jsonschema2cppparser.py ;
285
286HdsSchemaGenBulkParser $(dumpExportPkgBulkListenerTargetFile)
287	: dumpexportpkg.json : jsonschema2cppparser.py ;
288
289HdsSchemaGenParser $(dumpExportReferenceListenerTargetFile)
290	: dumpexportreference.json : jsonschema2cppparser.py ;
291
292HdsSchemaGenAppSrcDependsOnGeneration
293	[ FGristFiles $(generatedPkgParserSourceFiles) ]
294	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
295	: $(dumpExportPkgBulkListenerTargetDirectory)
296	: $(dumpExportPkgBulkListenerTargetFile) ;
297
298HdsSchemaGenAppSrcDependsOnGeneration
299	[ FGristFiles $(generatedRepositoryParserSourceFiles) ]
300	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
301	: $(dumpExportRepositoryBulkListerTargetDirectory)
302	: $(dumpExportRepositoryBulkListerTargetFile) ;
303
304HdsSchemaGenAppSrcDependsOnGeneration
305	[ FGristFiles $(generatedReferenceParserSourceFiles) ]
306	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
307	: $(dumpExportReferenceListenerTargetDirectory)
308	: $(dumpExportReferenceListenerTargetFile) ;
309
310HdsSchemaGenAppSrcDependsOnGeneration
311	[ FGristFiles $(generatedRepositoryModelSourceFiles) ]
312	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
313	: $(dumpExportRepositoryModelTargetDirectory)
314	: $(dumpExportRepositoryModelTargetFile) ;
315
316HdsSchemaGenAppSrcDependsOnGeneration
317	[ FGristFiles $(generatedPkgModelSourceFiles) ]
318	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
319	: $(dumpExportPkgModelTargetDirectory)
320	: $(dumpExportPkgModelTargetFile) ;
321
322HdsSchemaGenAppSrcDependsOnGeneration
323	[ FGristFiles $(generatedReferenceModelSourceFiles) ]
324	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
325	: $(dumpExportReferenceModelTargetDirectory)
326	: $(dumpExportReferenceModelTargetFile) ;
327
328# This will ensure that if any of the generated files' header files change, then
329# the application should be re-built.
330
331Includes [ FGristFiles $(applicationSources) ]
332	:
333	$(dumpExportRepositoryBulkListerTargetDirectory)
334	$(dumpExportPkgBulkListenerTargetDirectory)
335	$(dumpExportReferenceListenerTargetDirectory)
336	$(dumpExportPkgModelTargetDirectory)
337	$(dumpExportRepositoryModelTargetDirectory)
338	$(dumpExportReferenceModelTargetDirectory)
339;
340
341Depends [ FGristFiles $(applicationSources:S=.o) ]
342	:
343	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
344	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
345	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
346	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
347	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
348	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
349;
350