xref: /haiku/src/apps/haikudepot/Jamfile (revision 3634f142352af2428aed187781fc9d75075e9140)
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	PopulatePkgSizesProcess.cpp
181	ProcessCoordinator.cpp
182	ProcessCoordinatorFactory.cpp
183	ServerHelper.cpp
184	ServerSettings.cpp
185	ServerPkgDataUpdateProcess.cpp
186	ServerReferenceDataUpdateProcess.cpp
187	ServerRepositoryDataUpdateProcess.cpp
188	ServerIconExportUpdateProcess.cpp
189	StandardMetaDataJsonEventListener.cpp
190	StandardMetaData.cpp
191	ThreadedProcessNode.cpp
192	UserDetailVerifierProcess.cpp
193	WebAppInterface.cpp
194
195	# tar
196	TarArchiveHeader.cpp
197	TarArchiveService.cpp
198
199	# util
200	AppUtils.cpp
201	DataIOUtils.cpp
202	LanguageMenuUtils.cpp
203	LocaleUtils.cpp
204	PackageUtils.cpp
205	RepositoryUrlUtils.cpp
206	StorageUtils.cpp
207	StringUtils.cpp
208	LoggingUrlProtocolListener.cpp
209
210	# package_daemon
211	ProblemWindow.cpp
212	ResultWindow.cpp
213;
214
215local generatedPkgModelSourceFiles =
216	DumpExportPkg.cpp
217	DumpExportPkgCategory.cpp
218	DumpExportPkgScreenshot.cpp
219	DumpExportPkgVersion.cpp
220;
221
222local generatedRepositoryModelSourceFiles =
223	DumpExportRepository.cpp
224	DumpExportRepositorySource.cpp
225	DumpExportRepositorySourceMirror.cpp
226;
227
228local generatedReferenceModelSourceFiles =
229	DumpExportReference.cpp
230	DumpExportReferenceNaturalLanguage.cpp
231	DumpExportReferencePkgCategory.cpp
232	DumpExportReferenceUserRatingStability.cpp
233	DumpExportReferenceCountry.cpp
234;
235
236local generatedPkgParserSourceFiles =
237	DumpExportPkgJsonListener.cpp
238;
239
240local generatedRepositoryParserSourceFiles =
241	DumpExportRepositoryJsonListener.cpp
242;
243
244local generatedReferenceParserSourceFiles =
245	DumpExportReferenceJsonListener.cpp
246;
247
248Application HaikuDepot
249	:
250	$(applicationSources)
251	$(textDocumentSources)
252	$(generatedPkgModelSourceFiles)
253	$(generatedRepositoryModelSourceFiles)
254	$(generatedReferenceModelSourceFiles)
255	$(generatedPkgParserSourceFiles)
256	$(generatedRepositoryParserSourceFiles)
257	$(generatedReferenceParserSourceFiles)
258	:
259	be package bnetapi translation libnetservices.a libcolumnlistview.a shared
260	[ TargetLibstdc++ ] [ TargetLibsupc++ ] localestub
261	:
262	HaikuDepot.rdef
263;
264
265DoCatalogs HaikuDepot :
266	x-vnd.Haiku-HaikuDepot
267	:
268	$(applicationSources)
269;
270
271# The following use of rules configures the generation of .cpp and .h files from
272# JSON schemas that are defined in the HaikuDepotServer system.  See the
273# included Jam rules and actions for the definitions.
274
275HdsSchemaGenModel $(dumpExportPkgModelTargetFile)
276	: dumpexportpkg.json : jsonschema2cppmodel.py ;
277
278HdsSchemaGenModel $(dumpExportRepositoryModelTargetFile)
279	: dumpexportrepository.json : jsonschema2cppmodel.py ;
280
281HdsSchemaGenModel $(dumpExportReferenceModelTargetFile)
282	: dumpexportreference.json : jsonschema2cppmodel.py ;
283
284HdsSchemaGenBulkParser $(dumpExportRepositoryBulkListerTargetFile)
285	: dumpexportrepository.json : jsonschema2cppparser.py ;
286
287HdsSchemaGenBulkParser $(dumpExportPkgBulkListenerTargetFile)
288	: dumpexportpkg.json : jsonschema2cppparser.py ;
289
290HdsSchemaGenParser $(dumpExportReferenceListenerTargetFile)
291	: dumpexportreference.json : jsonschema2cppparser.py ;
292
293HdsSchemaGenAppSrcDependsOnGeneration
294	[ FGristFiles $(generatedPkgParserSourceFiles) ]
295	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
296	: $(dumpExportPkgBulkListenerTargetDirectory)
297	: $(dumpExportPkgBulkListenerTargetFile) ;
298
299HdsSchemaGenAppSrcDependsOnGeneration
300	[ FGristFiles $(generatedRepositoryParserSourceFiles) ]
301	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
302	: $(dumpExportRepositoryBulkListerTargetDirectory)
303	: $(dumpExportRepositoryBulkListerTargetFile) ;
304
305HdsSchemaGenAppSrcDependsOnGeneration
306	[ FGristFiles $(generatedReferenceParserSourceFiles) ]
307	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
308	: $(dumpExportReferenceListenerTargetDirectory)
309	: $(dumpExportReferenceListenerTargetFile) ;
310
311HdsSchemaGenAppSrcDependsOnGeneration
312	[ FGristFiles $(generatedRepositoryModelSourceFiles) ]
313	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
314	: $(dumpExportRepositoryModelTargetDirectory)
315	: $(dumpExportRepositoryModelTargetFile) ;
316
317HdsSchemaGenAppSrcDependsOnGeneration
318	[ FGristFiles $(generatedPkgModelSourceFiles) ]
319	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
320	: $(dumpExportPkgModelTargetDirectory)
321	: $(dumpExportPkgModelTargetFile) ;
322
323HdsSchemaGenAppSrcDependsOnGeneration
324	[ FGristFiles $(generatedReferenceModelSourceFiles) ]
325	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
326	: $(dumpExportReferenceModelTargetDirectory)
327	: $(dumpExportReferenceModelTargetFile) ;
328
329# This will ensure that if any of the generated files' header files change, then
330# the application should be re-built.
331
332Includes [ FGristFiles $(applicationSources) ]
333	:
334	$(dumpExportRepositoryBulkListerTargetDirectory)
335	$(dumpExportPkgBulkListenerTargetDirectory)
336	$(dumpExportReferenceListenerTargetDirectory)
337	$(dumpExportPkgModelTargetDirectory)
338	$(dumpExportRepositoryModelTargetDirectory)
339	$(dumpExportReferenceModelTargetDirectory)
340;
341
342Depends [ FGristFiles $(applicationSources:S=.o) ]
343	:
344	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
345	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
346	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
347	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
348	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
349	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
350;
351