configure_file( ODBAPIVersionSHA1.cc.in ODBAPIVersionSHA1.cc @ONLY )

if ( ODB_SERVER_TIME_FORMAT_FOUR_DIGITS )
    add_definitions ( -DODB_SERVER_TIME_FORMAT_FOUR_DIGITS )
endif()

if ( ODB_API_SCHEMA_PATH )
    add_definitions ( -DODB_API_SCHEMA_PATH=${ODB_API_SCHEMA_PATH} )
endif()


list( APPEND odblib_src_files
odbql.cc
odbql.h
pyodbapi.h
ODBAPIVersionSHA1.cc
StringTool.cc
StringTool.h
Array.h
BitColumnExpression.cc
BitColumnExpression.h
ShiftedBitColumnExpression.cc
ShiftedBitColumnExpression.h
Codec.cc
Codec.h
CodecFactory.h
CodecFactory.cc
CodecOptimizer.cc
CodecOptimizer.h
Column.cc
Column.h
ColumnExpression.cc
ColumnExpression.h
ShiftedColumnExpression.cc
ShiftedColumnExpression.h
ColumnType.h
CommandLineParser.cc
CommandLineParser.h
Comparator.cc
Comparator.h
ConstantExpression.cc
ConstantExpression.h
ConstantSetter.cc
ConstantSetter.h
DataColumn.cc
DataColumn.h
DataColumns.cc
DataColumns.h
DataField.cc
DataField.h
DataJoin.cc
DataJoin.h
DataJoinIterator.cc
DataJoinIterator.h
DataLink.cc
DataLink.h
DataLinkFiller.cc
DataLinkFiller.h
DataLinkIterator.cc
DataLinkIterator.h
DataLinks.cc
DataLinks.h
DataLoader.cc
DataLoader.h
DataPage.cc
DataPage.h
DataRecord.cc
DataRecord.h
DataRecordIterator.h
DataRow.cc
DataRow.h
DataSaver.cc
DataSaver.h
DataSelect.cc
DataSelect.h
DataSelectIterator.cc
DataSelectIterator.h
DataSelectOutput.cc
DataSelectOutput.h
DataSelectSession.cc
DataSelectSession.h
DataSet.cc
DataSet.h
DataSetBuilder.cc
DataSetBuilder.h
DataSetFiller.cc
DataSetFiller.h
DataStream.cc
DataStream.h
DataTable.cc
DataTable.h
DataTableFiller.cc
DataTableFiller.h
DataTableIterator.cc
DataTableIterator.h
DataTableMappings.cc
DataTableMappings.h
DataTables.cc
DataTables.h
DataView.cc
DataView.h
DateTime.cc
DateTime.h
Decoder.cc
Decoder.h
Dictionary.cc
Dictionary.h
DispatchingWriter.cc
DispatchingWriter.h
DirectAccess.cc
DirectAccess.h
DirectAccessIterator.cc
DirectAccessIterator.h
Duration.cc
Duration.h
Endian.h
Environment.cc
Environment.h
EqRegionCache.cc
EqRegionCache.h
Expressions.cc
Expressions.h
FastODA2Request.cc
FastODA2Request.h
FixedSizeWriterIterator.cc
FixedSizeWriterIterator.h
FunctionAND.cc
FunctionAND.h
FunctionAVG.cc
FunctionAVG.h
FunctionCOUNT.cc
FunctionCOUNT.h
FunctionDOTP.cc
FunctionDOTP.h
FunctionEQ.cc
FunctionEQ.h
FunctionRLIKE.cc
FunctionRLIKE.h
FunctionEQ_BOXLAT.cc
FunctionEQ_BOXLAT.h
FunctionEQ_BOXLON.cc
FunctionEQ_BOXLON.h
FunctionMATCH.h
FunctionMATCH.cc
SQLMATCHSubquerySession.h
SQLMATCHSubquerySession.cc
SQLMATCHSubquerySessionOutput.h
SQLMATCHSubquerySessionOutput.cc
FunctionExpression.cc
FunctionExpression.h
FunctionFactory.cc
FunctionFactory.h
MDI.cc
MDI.h
FunctionIN.cc
FunctionIN.h
FunctionIntegerExpression.cc
FunctionIntegerExpression.h
FunctionJOIN.cc
FunctionJOIN.h
FunctionJULIAN.cc
FunctionJULIAN.h
FunctionJULIAN_SECONDS.cc
FunctionJULIAN_SECONDS.h
FunctionMAX.cc
FunctionMAX.h
FunctionMIN.cc
FunctionMIN.h
FunctionFIRST.cc
FunctionFIRST.h
FunctionLAST.cc
FunctionLAST.h
FunctionNORM.cc
FunctionNORM.h
FunctionNOT_IN.cc
FunctionNOT_IN.h
FunctionNOT_NULL.cc
FunctionNOT_NULL.h
FunctionNULL.cc
FunctionNULL.h
FunctionNVL.cc
FunctionNVL.h
FunctionOR.cc
FunctionOR.h
FunctionRGG_BOXLAT.cc
FunctionRGG_BOXLAT.h
FunctionRGG_BOXLON.cc
FunctionRGG_BOXLON.h
FunctionRMS.cc
FunctionRMS.h
FunctionROWNUMBER.cc
FunctionROWNUMBER.h
FunctionSTDEV.cc
FunctionSTDEV.h
FunctionSUM.cc
FunctionSUM.h
FunctionTDIFF.cc
FunctionTDIFF.h
FunctionTHIN.cc
FunctionTHIN.h
FunctionTIMESTAMP.cc
FunctionTIMESTAMP.h
FunctionVAR.cc
FunctionVAR.h
GribCodes.cc
GribCodes.h
Header.cc
Header.h
InMemoryDataHandle.cc
InMemoryDataHandle.h
IteratorProxy.h
LibOdbApi.cc
LibOdbApi.h
MD5.cc
MD5.h
MDSetter.cc
MDSetter.h
MDUpdatingIterator.cc
MDUpdatingIterator.h
MemoryBlock.cc
MemoryBlock.h
MetaData.cc
MetaData.h
MetaDataReader.cc
MetaDataReader.h
MetaDataReaderIterator.cc
MetaDataReaderIterator.h
NumberExpression.cc
NumberExpression.h
ODAColumn.cc
ODAColumn.h
NullColumn.cc
NullColumn.h
ODADatabase.cc
ODADatabase.h
ODAHandle.cc
ODAHandle.h
ODATranslator.h
ODAUpdatingIterator.cc
ODAUpdatingIterator.h
ODBAPISettings.cc
ODBAPISettings.h
ODBAPIVersion.cc
ODBAPIVersion.h
ODBApplication.cc
ODBApplication.h
Select.cc
Select.h
OrderByExpressions.cc
OrderByExpressions.h
ParameterExpression.cc
ParameterExpression.h
Reader.cc
Reader.h
ReaderIterator.cc
ReaderIterator.h
RegionCache.cc
RegionCache.h
RggRegionCache.cc
RggRegionCache.h
SQLAST.cc
SQLAST.h
SQLBit.cc
SQLBit.h
SQLBitColumn.cc
SQLBitColumn.h
SQLBitfield.cc
SQLBitfield.h
SQLColumn.cc
SQLColumn.h
SQLDataColumn.cc
SQLDataColumn.h
SQLDataSet.cc
SQLDataSet.h
SQLDataTable.cc
SQLDataTable.h
SQLDataTableIterator.cc
SQLDataTableIterator.h
SQLDatabase.cc
SQLDatabase.h
SQLDistinctOutput.cc
SQLDistinctOutput.h
SQLDouble.cc
SQLDouble.h
SQLExpression.cc
SQLExpression.h
SQLExpressionEvaluated.cc
SQLExpressionEvaluated.h
SQLIndex.cc
SQLIndex.h
SQLInt.cc
SQLInt.h
SQLInteractiveSession.cc
SQLInteractiveSession.h
SQLNonInteractiveSession.cc
SQLNonInteractiveSession.h
SQLCallbackOutput.cc
SQLCallbackOutput.h
SQLIterator.h
SQLIteratorOutput.cc
SQLIteratorOutput.h
SQLIteratorSession.cc
SQLIteratorSession.h
SQLODAOutput.cc
SQLODAOutput.h
SQLOrderOutput.cc
SQLOrderOutput.h
SQLOutput.cc
SQLOutput.h
SQLOutputConfig.cc
SQLOutputConfig.h
SQLParser.cc
SQLParser.h
odblib_lex.h
SQLReal.cc
SQLReal.h
SQLSelect.cc
SQLSelect.h
SQLInsert.cc
SQLInsert.h
SQLEmbedded.h
SQLEmbedded.cc
SQLSelectFactory.cc
SQLSelectFactory.h
SQLInsertFactory.cc
SQLInsertFactory.h
SQLSession.cc
SQLSession.h
SQLSimpleOutput.cc
SQLSimpleOutput.h
SQLStatement.cc
SQLStatement.h
SQLString.cc
SQLString.h
SQLTable.cc
SQLTable.h
SQLType.cc
SQLType.h
SchemaAnalyzer.cc
SchemaAnalyzer.h
SelectIterator.cc
SelectIterator.h
SelectOneTable.cc
SelectOneTable.h
Stack.cc
Stack.h
StringExpression.cc
StringExpression.h
EmbeddedCodeExpression.cc
EmbeddedCodeExpression.h
EmbeddedCodeParser.cc
EmbeddedCodeParser.h
TODATable.cc
TODATable.h
TODATableIterator.cc
TODATableIterator.h
TReadOnlyMemoryDataHandle.cc
TReadOnlyMemoryDataHandle.h
TemplateParameters.cc
TemplateParameters.h
TextReader.cc
TextReader.h
TextReaderIterator.cc
TextReaderIterator.h
Tracer.cc
Tracer.h
Types.h
UnsafeInMemoryDataHandle.h
Writer.cc
Writer.h
WriterBufferingIterator.cc
WriterBufferingIterator.h
WriterDispatchingIterator.cc
WriterDispatchingIterator.h
md5_hash.h
md5_hash.c
odb_api.h
odbcapi.cc
odbcapi.h
piconst.h
RowsCounter.h
RowsCounter.cc
Block.h
Block.cc
Partition.h
Partition.cc
Partitions.h
Partitions.cc
Indexer.h
Indexer.cc
Partitioner.h
Partitioner.cc
FileCollector.h
FileCollector.cc
FileMapper.h
FileMapper.cc
Odb2Hub.h
Odb2Hub.cc
Archiver.h 
Archiver.cc 
Retriever.h 
Retriever.cc
Stager.h
Stager.cc
ODBTarget.cc
ODBTarget.h


# ECML interface
ODBModule.h
ODBModule.cc
# * ECML verbs
ecml_verbs/ArchiveHandler.h
ecml_verbs/ArchiveHandler.cc
ecml_verbs/RetrieveHandler.h
ecml_verbs/RetrieveHandler.cc
ecml_verbs/StageHandler.h
ecml_verbs/StageHandler.cc
ecml_verbs/CompareHandler.h
ecml_verbs/CompareHandler.cc
ecml_verbs/SQLHandler.h
ecml_verbs/SQLHandler.cc
ecml_verbs/ChunkHandler.h
ecml_verbs/ChunkHandler.cc
ecml_verbs/SQLTestHandler.h
ecml_verbs/SQLTestHandler.cc
ecml_verbs/ImportTextHandler.h
ecml_verbs/ImportTextHandler.cc
ecml_verbs/CreatePartitionsHandler.h
ecml_verbs/CreatePartitionsHandler.cc
ecml_verbs/CreateIndexHandler.h
ecml_verbs/CreateIndexHandler.cc
# * ECML data
ecml_data/ResultSet.cc
ecml_data/ResultSet.h
ecml_data/Matrix.cc
ecml_data/Matrix.h
ecml_data/ResultSetStore.cc
ecml_data/ResultSetStore.h
ecml_data/LocalHandleFactory.h
ecml_data/LocalHandleFactory.cc
)

# templates

list( APPEND odblib_templates
ConstantSetter.cc
DataStream.cc
FastODA2Request.cc
Header.cc
ODAUpdatingIterator.cc
SQLIteratorOutput.cc
TODATable.cc
TODATableIterator.cc
WriterDispatchingIterator.cc
MDUpdatingIterator.cc
MetaDataReader.cc
ShiftedColumnExpression.cc
)

# define Odb library

ecbuild_add_library( TARGET             Odb
                     INSTALL_HEADERS    LISTED
                     HEADER_DESTINATION ${INSTALL_INCLUDE_DIR}/odb_api
                     COMPONENT          server
                     SOURCES            ${odblib_src_files}
                     GENERATED          ODBAPIVersionSHA1.cc
                     TEMPLATES          ${odblib_templates}
                     LINKER_LANGUAGE    CXX
                     LIBS               ecml )

ecbuild_generate_yy( YYPREFIX           odblib_
                     YACC               sqly
                     LEX                sqll
                     FLEX_FLAGS         "-d"
                     DEPENDANT          SQLParser.cc )

