SubDir HAIKU_TOP src tests apps haikudepot ;

AddSubDirSupportedPlatforms libbe_test ;

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

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 genServerDumpExportRepositoryListenerTargetDirectory =
	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY) dumpexportrepositorylistener ] ;
local genServerDumpExportRepositoryModelTargetDirectory =
	[ FDirName $(HAIKUDEPOT_GENERATED_SOURCES_DIRECTORY) dumpexportrepositorymodel ] ;

SEARCH_SOURCE += $(genServerDumpExportRepositoryListenerTargetDirectory) ;
SEARCH_SOURCE += $(genServerDumpExportRepositoryModelTargetDirectory) ;

local genServerDumpExportRepositorySchema =
	[ FDirName $(HAIKU_TOP) src apps haikudepot server schema dumpexportrepository.json ] ;

local genServerRepositoryModelSourceFiles = 
	DumpExportRepositoryModel.cpp
;
local genServerRepositoryParserSourceFiles =
	DumpExportRepositoryJsonListener.cpp
;

local genDummyFile = "dummy.dat" ;

local genServerDumpExportRepositoryListenerTargetFile =
	[ FDirName $(genServerDumpExportRepositoryListenerTargetDirectory) $(genDummyFile) ] ;
local genServerDumpExportRepositoryModelTargetFile =
	[ FDirName $(genServerDumpExportRepositoryModelTargetDirectory) $(genDummyFile) ] ;

JsonSchemaGenModel $(genServerDumpExportRepositoryModelTargetFile)
	: $(genServerDumpExportRepositorySchema) ;

JsonSchemaGenParser $(genServerDumpExportRepositoryListenerTargetFile)
	: $(genServerDumpExportRepositorySchema) ;

JsonSchemaGenAppSrcDependsOnGeneration
	[ FGristFiles $(genServerRepositoryParserSourceFiles) ]
	[ FGristFiles $(genServerRepositoryParserSourceFiles:S=.h) ]
	: $(genServerDumpExportRepositoryListenerTargetDirectory)
	: $(genServerDumpExportRepositoryListenerTargetFile)
;
	
JsonSchemaGenAppSrcDependsOnGeneration
	[ FGristFiles $(genServerRepositoryModelSourceFiles) ]
	[ FGristFiles $(genServerRepositoryModelSourceFiles:S=.h) ]
	: $(genServerDumpExportRepositoryModelTargetDirectory)
	: $(genServerDumpExportRepositoryModelTargetFile)
;

UnitTestLib haikudepottest.so :
	HaikuDepotTestAddon.cpp

	DataIOUtils.cpp
	DataIOUtilsTest.cpp

	$(genServerRepositoryModelSourceFiles)
	$(genServerRepositoryParserSourceFiles)
	DumpExportRepositoryJsonListenerTest.cpp
	DumpExportRepositoryTest.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++ ]
;
