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