set(SOURCES_CORE_HEADERS
  ${SOURCE_INC_DIR}/Core/LanguageKind.hpp
  ${SOURCE_INC_DIR}/Core/Types.hpp
)

set(SOURCES_CORE
  ${SOURCE_DIR}/Core/LanguageKind.cpp
  ${SOURCE_DIR}/Core/Types.cpp
)

set(SOURCES_CORE_AST_HEADERS
  ${SOURCE_INC_DIR}/Core/AST/ISyntaxTree.hpp
  ${SOURCE_DIR}/Core/AST/SyntaxTree.hpp
  ${SOURCE_DIR}/Core/AST/SyntaxTreeFactory.hpp
)

set(SOURCES_CORE_AST
  ${SOURCE_DIR}/Core/AST/ISyntaxTree.cpp
  ${SOURCE_DIR}/Core/AST/SyntaxTree.cpp
  ${SOURCE_DIR}/Core/AST/SyntaxTreeFactory.cpp
)

set(SOURCES_CORE_BASIC_HEADERS
  ${SOURCE_INC_DIR}/Core/Basic/Concepts.hpp
  ${SOURCE_DIR}/Core/Basic/Hashing.hpp
  ${SOURCE_DIR}/Core/Basic/Macros.hpp
)

set(SOURCES_CORE_BASIC
  ${SOURCE_DIR}/Core/Basic/Concepts.cpp
  ${SOURCE_DIR}/Core/Basic/Hashing.cpp
  ${SOURCE_DIR}/Core/Basic/Macros.cpp
)

set(SOURCES_CORE_ERRORS_HEADERS
  ${SOURCE_INC_DIR}/Core/Errors/DiagnosticSeverity.hpp
  ${SOURCE_INC_DIR}/Core/Errors/IDiagnostic.hpp
  ${SOURCE_DIR}/Core/Errors/Diagnostic.hpp
  ${SOURCE_DIR}/Core/Errors/DiagnosticFactory.hpp
  ${SOURCE_DIR}/Core/Errors/DiagnosticPool.hpp
  ${SOURCE_DIR}/Core/Errors/ErrorFacts.hpp
  ${SOURCE_DIR}/Core/Errors/ErrorFactsFactory.hpp
  ${SOURCE_DIR}/Core/Errors/MissingSyntaxDiagnostic.hpp
  ${SOURCE_DIR}/Core/Errors/SyntaxDiagnostic.hpp
)

set(SOURCES_CORE_ERRORS
  ${SOURCE_DIR}/Core/Errors/Diagnostic.cpp
  ${SOURCE_DIR}/Core/Errors/DiagnosticFactory.cpp
  ${SOURCE_DIR}/Core/Errors/DiagnosticPool.cpp
  ${SOURCE_DIR}/Core/Errors/DiagnosticSeverity.cpp
  ${SOURCE_DIR}/Core/Errors/ErrorFacts.cpp
  ${SOURCE_DIR}/Core/Errors/ErrorFactsFactory.cpp
  ${SOURCE_DIR}/Core/Errors/IDiagnostic.cpp
  ${SOURCE_DIR}/Core/Errors/MissingSyntaxDiagnostic.cpp
  ${SOURCE_DIR}/Core/Errors/SyntaxDiagnostic.cpp
)

set(SOURCES_CORE_PARSER_HEADERS
  ${SOURCE_DIR}/Core/Parser/CharFlags.hpp
  ${SOURCE_DIR}/Core/Parser/Directive.hpp
  ${SOURCE_DIR}/Core/Parser/DirectiveList.hpp
  ${SOURCE_DIR}/Core/Parser/DirectiveParser.hpp
  ${SOURCE_DIR}/Core/Parser/DirectiveStack.hpp
  ${SOURCE_DIR}/Core/Parser/Lexer.hpp
  ${SOURCE_DIR}/Core/Parser/LexerCache.hpp
  ${SOURCE_DIR}/Core/Parser/LexerMode.hpp
  ${SOURCE_DIR}/Core/Parser/Parser.hpp
  ${SOURCE_DIR}/Core/Parser/QuickScanState.hpp
  ${SOURCE_DIR}/Core/Parser/TextKeyedCache.hpp
  ${SOURCE_DIR}/Core/Parser/TokenInfo.hpp
)

set(SOURCES_CORE_PARSER
  ${SOURCE_DIR}/Core/Parser/CharFlags.cpp
  ${SOURCE_DIR}/Core/Parser/Directive.cpp
  ${SOURCE_DIR}/Core/Parser/DirectiveList.cpp
  ${SOURCE_DIR}/Core/Parser/DirectiveParser.cpp
  ${SOURCE_DIR}/Core/Parser/DirectiveStack.cpp
  ${SOURCE_DIR}/Core/Parser/Lexer.cpp
  ${SOURCE_DIR}/Core/Parser/LexerCache.cpp
  ${SOURCE_DIR}/Core/Parser/LexerMode.cpp
  ${SOURCE_DIR}/Core/Parser/Parser.cpp
  ${SOURCE_DIR}/Core/Parser/QuickScanState.cpp
  ${SOURCE_DIR}/Core/Parser/TextKeyedCache.cpp
  ${SOURCE_DIR}/Core/Parser/TokenInfo.cpp
)

set(SOURCES_CORE_SUPPORT_HEADERS
  ${SOURCE_DIR}/Core/Support/AnalysisContext.hpp
  ${SOURCE_DIR}/Core/Support/FactoryRegistry.hpp
  ${SOURCE_DIR}/Core/Support/SyntaxFactory.hpp
  ${SOURCE_DIR}/Core/Support/SyntaxPool.hpp
)

set(SOURCES_CORE_SUPPORT
  ${SOURCE_DIR}/Core/Support/AnalysisContext.cpp
  ${SOURCE_DIR}/Core/Support/FactoryRegistry.cpp
  ${SOURCE_DIR}/Core/Support/SyntaxFactory.cpp
  ${SOURCE_DIR}/Core/Support/SyntaxPool.cpp
)

set(SOURCES_CORE_SYNTAX_HEADERS
  ${SOURCE_INC_DIR}/Core/Syntax/ISyntaxNode.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/ISyntaxToken.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/ISyntaxTrivia.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/ISyntaxTriviaList.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/IWithChildren.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/IWithDiagnostics.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/IWithKinds.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/IWithSimplifiedWidthAndPosition.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/IWithText.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/IWithTrivia.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/IWithTypeInfo.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/IWithWidthAndPosition.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/SyntaxFacts.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/SyntaxKinds.hpp
  ${SOURCE_INC_DIR}/Core/Syntax/SyntaxVariant.hpp
  ${SOURCE_DIR}/Core/Syntax/MissingSyntaxToken.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxFactsFactory.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxFactsInternal.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxFlags.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxNode.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxNodeData.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxToken.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTokenData.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTrivia.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTriviaData.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTriviaList.hpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTriviaListData.hpp
)

set(SOURCES_CORE_SYNTAX
  ${SOURCE_DIR}/Core/Syntax/ISyntaxNode.cpp
  ${SOURCE_DIR}/Core/Syntax/ISyntaxToken.cpp
  ${SOURCE_DIR}/Core/Syntax/ISyntaxTrivia.cpp
  ${SOURCE_DIR}/Core/Syntax/ISyntaxTriviaList.cpp
  ${SOURCE_DIR}/Core/Syntax/IWithChildren.cpp
  ${SOURCE_DIR}/Core/Syntax/IWithDiagnostics.cpp
  ${SOURCE_DIR}/Core/Syntax/IWithKinds.cpp
  ${SOURCE_DIR}/Core/Syntax/IWithSimplifiedWidthAndPosition.cpp
  ${SOURCE_DIR}/Core/Syntax/IWithText.cpp
  ${SOURCE_DIR}/Core/Syntax/IWithTrivia.cpp
  ${SOURCE_DIR}/Core/Syntax/IWithTypeInfo.cpp
  ${SOURCE_DIR}/Core/Syntax/IWithWidthAndPosition.cpp
  ${SOURCE_DIR}/Core/Syntax/MissingSyntaxToken.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxFacts.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxFactsFactory.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxFactsInternal.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxFlags.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxKinds.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxNode.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxNodeData.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxToken.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTokenData.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTrivia.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTriviaData.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTriviaList.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxTriviaListData.cpp
  ${SOURCE_DIR}/Core/Syntax/SyntaxVariant.cpp
)

set(SOURCES_CORE_SYNTAX_TRIVIA_HEADERS
  ${SOURCE_DIR}/Core/Syntax/Trivia/BranchingDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/DefineDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/DirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/SkippedTokensTriviaSyntax.hpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/StructuredTriviaSyntax.hpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/UndefDirectiveTriviaSyntax.hpp
)

set(SOURCES_CORE_SYNTAX_TRIVIA
  ${SOURCE_DIR}/Core/Syntax/Trivia/BranchingDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/DefineDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/DirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/SkippedTokensTriviaSyntax.cpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/StructuredTriviaSyntax.cpp
  ${SOURCE_DIR}/Core/Syntax/Trivia/UndefDirectiveTriviaSyntax.cpp
)

set(SOURCES_CORE_TEXT_HEADERS
  ${SOURCE_INC_DIR}/Core/Text/LinePosition.hpp
  ${SOURCE_INC_DIR}/Core/Text/LinePositionSpan.hpp
  ${SOURCE_INC_DIR}/Core/Text/SourceText.hpp
  ${SOURCE_INC_DIR}/Core/Text/TextSpan.hpp
  ${SOURCE_DIR}/Core/Text/TextUtilities.hpp
  ${SOURCE_DIR}/Core/Text/TextWindow.hpp
)

set(SOURCES_CORE_TEXT
  ${SOURCE_DIR}/Core/Text/LinePosition.cpp
  ${SOURCE_DIR}/Core/Text/LinePositionSpan.cpp
  ${SOURCE_DIR}/Core/Text/SourceText.cpp
  ${SOURCE_DIR}/Core/Text/TextSpan.cpp
  ${SOURCE_DIR}/Core/Text/TextUtilities.cpp
  ${SOURCE_DIR}/Core/Text/TextWindow.cpp
)

set(SOURCES_LIB_CORE
  ${SOURCES_CORE_HEADERS}
  ${SOURCES_CORE}
  ${SOURCES_CORE_AST_HEADERS}
  ${SOURCES_CORE_AST}
  ${SOURCES_CORE_BASIC_HEADERS}
  ${SOURCES_CORE_BASIC}
  ${SOURCES_CORE_ERRORS_HEADERS}
  ${SOURCES_CORE_ERRORS}
  ${SOURCES_CORE_PARSER_HEADERS}
  ${SOURCES_CORE_PARSER}
  ${SOURCES_CORE_SUPPORT_HEADERS}
  ${SOURCES_CORE_SUPPORT}
  ${SOURCES_CORE_SYNTAX_HEADERS}
  ${SOURCES_CORE_SYNTAX}
  ${SOURCES_CORE_SYNTAX_TRIVIA_HEADERS}
  ${SOURCES_CORE_SYNTAX_TRIVIA}
  ${SOURCES_CORE_TEXT_HEADERS}
  ${SOURCES_CORE_TEXT}
)
