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