SubDir HAIKU_TOP src tests apps haikudepot ;

AddSubDirSupportedPlatforms libbe_test ;

include [ FDirName $(HAIKU_TOP) src apps haikudepot build jam HdsSchemaGenRules ] ;

SubDirHdrs [ FDirName $(HAIKU_TOP) src apps haikudepot ] ;
SubDirHdrs [ FDirName $(HAIKU_TOP) src apps haikudepot model ] ;
SubDirHdrs [ FDirName $(HAIKU_TOP) src apps haikudepot server ] ;
SubDirHdrs [ FDirName $(HAIKU_TOP) src apps haikudepot util ] ;

UsePrivateHeaders interface netservices shared ;

HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY = $(TARGET_COMMON_DEBUG_LOCATE_TARGET) ;

local sourceDirs =
	model
	packagemodel
	server
	util
	tar
	textview
	edits_generic
;

local sourceDir ;
for sourceDir in $(sourceDirs) {
	SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src apps haikudepot $(sourceDir) ] ;
}
local dumpExportRepositoryBulkListenerTargetDirectory =
	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
		dumpexportrepositorybulklistener ] ;
local dumpExportRepositoryModelTargetDirectory =
	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY)
		dumpexportrepositorymodel ] ;
SEARCH_SOURCE += $(dumpExportRepositoryBulkListenerTargetDirectory) ;
SEARCH_SOURCE += $(dumpExportRepositoryModelTargetDirectory) ;
	
local generatedRepositoryModelSourceFiles = 
	DumpExportRepository.cpp
	DumpExportRepositorySource.cpp
	DumpExportRepositorySourceMirror.cpp
;
local generatedRepositoryParserSourceFiles =
	DumpExportRepositoryJsonListener.cpp
;

LOCATE on dumpexportrepository.json = [ FDirName $(HAIKU_TOP) src apps haikudepot server schema ] ;
LOCATE on jsonschema2cppmodel.py = [ FDirName $(HAIKU_TOP) src apps haikudepot build scripts ] ;
LOCATE on jsonschema2cppparser.py = [ FDirName $(HAIKU_TOP) src apps haikudepot build scripts ] ;

local dummyFile = "dummy.dat" ;

local dumpExportRepositoryBulkListenerTargetFile =
	[ FDirName $(dumpExportRepositoryBulkListenerTargetDirectory) $(dummyFile) ] ;
local dumpExportRepositoryModelTargetFile =
	[ FDirName $(dumpExportRepositoryModelTargetDirectory) $(dummyFile) ] ;

HdsSchemaGenModel $(dumpExportRepositoryModelTargetFile)
	: dumpexportrepository.json : jsonschema2cppmodel.py ;

HdsSchemaGenBulkParser $(dumpExportRepositoryBulkListenerTargetFile)
	: dumpexportrepository.json : jsonschema2cppparser.py ;

HdsSchemaGenAppSrcDependsOnGeneration
	[ FGristFiles $(generatedRepositoryParserSourceFiles) ]
	[ FGristFiles $(generatedRepositoryParserSourceFiles:S=.h) ]
	: $(dumpExportRepositoryBulkListenerTargetDirectory)
	: $(dumpExportRepositoryBulkListenerTargetFile) ;
	
HdsSchemaGenAppSrcDependsOnGeneration
	[ FGristFiles $(generatedRepositoryModelSourceFiles) ]
	[ FGristFiles $(generatedRepositoryModelSourceFiles:S=.h) ]
	: $(dumpExportRepositoryModelTargetDirectory)
	: $(dumpExportRepositoryModelTargetFile) ;

UnitTestLib haikudepottest.so :
	HaikuDepotTestAddon.cpp

	DataIOUtils.cpp
	DataIOUtilsTest.cpp

	$(generatedRepositoryModelSourceFiles)
	$(generatedRepositoryParserSourceFiles)
	DumpExportRepositoryJsonListenerTest.cpp

	JwtTokenHelper.cpp
	JwtTokenHelperTest.cpp

	Logger.cpp

	LocaleUtils.cpp

	Language.cpp
	LocaleUtilsTest.cpp

	StandardMetaData.cpp
	StandardMetaDataJsonEventListener.cpp
	StandardMetaDataJsonEventListenerTest.cpp

	StorageUtils.cpp
	StorageUtilsTest.cpp

	StringUtils.cpp
	StringUtilsTest.cpp

	TarArchiveHeader.cpp
	TarArchiveService.cpp
	TarArchiveServiceTest.cpp

	ValidationFailure.cpp
	ValidationFailureTest.cpp

	ValidationUtils.cpp
	ValidationUtilsTest.cpp

	:
	be shared bnetapi package [ TargetLibstdc++ ] [ TargetLibsupc++ ]
	localestub
;

Application TextDocumentTest :
	TextDocumentTest.cpp

	# edits_generic
	CompoundEdit.cpp
	EditContext.cpp
	EditManager.cpp
	EditStack.cpp
	UndoableEdit.cpp

	# textview
	Bullet.cpp
	BulletData.cpp
	CharacterStyle.cpp
	CharacterStyleData.cpp
	MarkupParser.cpp
	Paragraph.cpp
	ParagraphLayout.cpp
	ParagraphStyle.cpp
	ParagraphStyleData.cpp
	TextDocument.cpp
	TextDocumentLayout.cpp
	TextDocumentView.cpp
	TextEditor.cpp
	TextListener.cpp
	TextSelection.cpp
	TextSpan.cpp
	TextView.cpp
	UndoableEditListener.cpp

	: be translation shared [ TargetLibsupc++ ]
;
