xref: /haiku/src/apps/haikudepot/Jamfile (revision f2762b2d5658b0b6c9ff62997a1485194cc77e7c)
1SubDir HAIKU_TOP src apps haikudepot ;
2
3# disable -Werror for this directory only
4SubDirC++Flags -Wno-error ;
5
6include [ FDirName $(HAIKU_TOP) src apps haikudepot build jam
7	HdsSchemaGenRules ] ;
8
9UsePrivateHeaders interface kernel net package shared storage support ;
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	textview
62	ui
63	ui_generic
64	server
65	tar
66	util
67;
68
69local sourceDir ;
70for sourceDir in $(sourceDirs) {
71	SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src apps haikudepot $(sourceDir) ] ;
72}
73
74SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src servers package ] ;
75
76SEARCH_SOURCE += $(dumpExportRepositoryBulkListerTargetDirectory) ;
77SEARCH_SOURCE += $(dumpExportPkgBulkListenerTargetDirectory) ;
78SEARCH_SOURCE += $(dumpExportReferenceListenerTargetDirectory) ;
79
80SEARCH_SOURCE += $(dumpExportPkgModelTargetDirectory) ;
81SEARCH_SOURCE += $(dumpExportRepositoryModelTargetDirectory) ;
82SEARCH_SOURCE += $(dumpExportReferenceModelTargetDirectory) ;
83
84local textDocumentSources =
85	# edits_generic
86	CompoundEdit.cpp
87	EditContext.cpp
88	EditManager.cpp
89	EditStack.cpp
90	UndoableEdit.cpp
91
92	# textview
93	Bullet.cpp
94	BulletData.cpp
95	CharacterStyle.cpp
96	CharacterStyleData.cpp
97	MarkupParser.cpp
98	Paragraph.cpp
99	ParagraphLayout.cpp
100	ParagraphStyle.cpp
101	ParagraphStyleData.cpp
102	TextDocument.cpp
103	TextDocumentLayout.cpp
104	TextDocumentView.cpp
105	TextEditor.cpp
106	TextListener.cpp
107	TextSelection.cpp
108	TextSpan.cpp
109	TextView.cpp
110	UndoableEditListener.cpp
111;
112
113local applicationSources =
114	App.cpp
115	BarberPole.cpp
116	BitmapView.cpp
117	DecisionProvider.cpp
118	FeaturedPackagesView.cpp
119	FilterView.cpp
120	LocalIconStore.cpp
121	JobStateListener.cpp
122	LanguageModel.cpp
123	LinkView.cpp
124	LinkedBitmapView.cpp
125	Logger.cpp
126	main.cpp
127	MainWindow.cpp
128	MarkupTextView.cpp
129	MessagePackageListener.cpp
130	Model.cpp
131	PackageAction.cpp
132	PackageActionHandler.cpp
133	PackageContentsView.cpp
134	PackageInfo.cpp
135	PackageInfoListener.cpp
136	PackageInfoView.cpp
137	PackageListView.cpp
138	PackageManager.cpp
139	RatePackageWindow.cpp
140	RatingView.cpp
141	support.cpp
142	ScreenshotWindow.cpp
143	ScrollableGroupView.cpp
144	SharedBitmap.cpp
145	UserLoginWindow.cpp
146	WorkStatusView.cpp
147
148	# network + server / local processes
149	AbstractProcess.cpp
150	AbstractServerProcess.cpp
151	AbstractSingleFileServerProcess.cpp
152	LocalPkgDataLoadProcess.cpp
153	LocalRepositoryUpdateProcess.cpp
154	ProcessCoordinator.cpp
155	ProcessCoordinatorFactory.cpp
156	ProcessNode.cpp
157	ServerHelper.cpp
158	ServerSettings.cpp
159	ServerPkgDataUpdateProcess.cpp
160	ServerReferenceDataUpdateProcess.cpp
161	ServerRepositoryDataUpdateProcess.cpp
162	ServerIconExportUpdateProcess.cpp
163	StandardMetaDataJsonEventListener.cpp
164	StandardMetaData.cpp
165	WebAppInterface.cpp
166
167	# tar
168	TarArchiveHeader.cpp
169	TarArchiveService.cpp
170
171	# util
172	AppUtils.cpp
173	DataIOUtils.cpp
174	LanguageMenuUtils.cpp
175	LocaleUtils.cpp
176	RepositoryUrlUtils.cpp
177	StorageUtils.cpp
178	ToFileUrlProtocolListener.cpp
179
180	# package_daemon
181	ProblemWindow.cpp
182	ResultWindow.cpp
183;
184
185local generatedPkgModelSourceFiles =
186	DumpExportPkg.cpp
187	DumpExportPkgCategory.cpp
188	DumpExportPkgScreenshot.cpp
189	DumpExportPkgVersion.cpp
190;
191
192local generatedRepositoryModelSourceFiles =
193	DumpExportRepository.cpp
194	DumpExportRepositorySource.cpp
195	DumpExportRepositorySourceMirror.cpp
196;
197
198local generatedReferenceModelSourceFiles =
199	DumpExportReference.cpp
200	DumpExportReferenceNaturalLanguage.cpp
201	DumpExportReferencePkgCategory.cpp
202	DumpExportReferenceUserRatingStability.cpp
203	DumpExportReferenceCountry.cpp
204;
205
206local generatedPkgParserSourceFiles =
207	DumpExportPkgJsonListener.cpp
208;
209
210local generatedRepositoryParserSourceFiles =
211	DumpExportRepositoryJsonListener.cpp
212;
213
214local generatedReferenceParserSourceFiles =
215	DumpExportReferenceJsonListener.cpp
216;
217
218Application HaikuDepot
219	: $(applicationSources)
220		$(textDocumentSources)
221		$(generatedPkgModelSourceFiles)
222		$(generatedRepositoryModelSourceFiles)
223		$(generatedReferenceModelSourceFiles)
224		$(generatedPkgParserSourceFiles)
225		$(generatedRepositoryParserSourceFiles)
226		$(generatedReferenceParserSourceFiles)
227	: be package bnetapi translation libcolumnlistview.a shared
228		[ TargetLibstdc++ ] [ TargetLibsupc++ ] localestub
229	: HaikuDepot.rdef
230;
231
232DoCatalogs HaikuDepot :
233	x-vnd.Haiku-HaikuDepot
234	:
235	App.cpp
236	FeaturedPackagesView.cpp
237	FilterView.cpp
238	MainWindow.cpp
239	Model.cpp
240	PackageContentsView.cpp
241	PackageInfoView.cpp
242	PackageListView.cpp
243	PackageManager.cpp
244	RatePackageWindow.cpp
245	ScreenshotWindow.cpp
246	UserLoginWindow.cpp
247	WorkStatusView.cpp
248;
249
250Application TextDocumentTest :
251	TextDocumentTest.cpp
252	$(textDocumentSources)
253
254	: be translation shared [ TargetLibsupc++ ]
255;
256
257# The following use of rules configures the generation of .cpp and .h files from
258# JSON schemas that are defined in the HaikuDepotServer system.  See the
259# included Jam rules and actions for the definitions.
260
261HdsSchemaGenModel $(dumpExportPkgModelTargetFile)
262	: dumpexportpkg.json : jsonschema2cppmodel.py ;
263
264HdsSchemaGenModel $(dumpExportRepositoryModelTargetFile)
265	: dumpexportrepository.json : jsonschema2cppmodel.py ;
266
267HdsSchemaGenModel $(dumpExportReferenceModelTargetFile)
268	: dumpexportreference.json : jsonschema2cppmodel.py ;
269
270HdsSchemaGenBulkParser $(dumpExportRepositoryBulkListerTargetFile)
271	: dumpexportrepository.json : jsonschema2cppparser.py ;
272
273HdsSchemaGenBulkParser $(dumpExportPkgBulkListenerTargetFile)
274	: dumpexportpkg.json : jsonschema2cppparser.py ;
275
276HdsSchemaGenParser $(dumpExportReferenceListenerTargetFile)
277	: dumpexportreference.json : jsonschema2cppparser.py ;
278
279HdsSchemaGenAppSrcDependsOnGeneration
280	[ FGristFiles $(generatedPkgParserSourceFiles) ]
281	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
282	: $(dumpExportPkgBulkListenerTargetFile) ;
283
284HdsSchemaGenAppSrcDependsOnGeneration
285	[ FGristFiles $(generatedRepositoryParserSourceFiles) ]
286	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
287	: $(dumpExportRepositoryBulkListerTargetFile) ;
288
289HdsSchemaGenAppSrcDependsOnGeneration
290	[ FGristFiles $(generatedReferenceParserSourceFiles) ]
291	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
292	: $(dumpExportReferenceListenerTargetFile) ;
293
294HdsSchemaGenAppSrcDependsOnGeneration
295	[ FGristFiles $(generatedRepositoryModelSourceFiles) ]
296	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
297	: $(dumpExportRepositoryModelTargetFile) ;
298
299HdsSchemaGenAppSrcDependsOnGeneration
300	[ FGristFiles $(generatedPkgModelSourceFiles) ]
301	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
302	: $(dumpExportPkgModelTargetFile) ;
303
304HdsSchemaGenAppSrcDependsOnGeneration
305	[ FGristFiles $(generatedReferenceModelSourceFiles) ]
306	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
307	: $(dumpExportReferenceModelTargetFile) ;
308
309# This will ensure that if any of the generated files' header files change, then
310# the application should be re-built.
311
312Depends [ FGristFiles $(applicationSources:S=.o) ]
313	:
314	[ FGristFiles $(generatedPkgParserSourceFiles:S=.h) ]
315	[ FGristFiles $(generatedPkgModelSourceFiles:S=.h) ]
316	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
317	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
318	[ FGristFiles $(generatedReferenceParserSourceFiles:S=.h) ]
319	[ FGristFiles $(generatedReferenceModelSourceFiles:S=.h) ]
320;
321