# Until we have a clear separation, libyul has to be included here
set(sources
	analysis/ConstantEvaluator.cpp
	analysis/ConstantEvaluator.h
	analysis/ContractLevelChecker.cpp
	analysis/ContractLevelChecker.h
	analysis/ControlFlowAnalyzer.cpp
	analysis/ControlFlowAnalyzer.h
	analysis/ControlFlowBuilder.cpp
	analysis/ControlFlowBuilder.h
	analysis/ControlFlowGraph.cpp
	analysis/ControlFlowGraph.h
	analysis/ControlFlowRevertPruner.cpp
	analysis/ControlFlowRevertPruner.h
	analysis/DeclarationContainer.cpp
	analysis/DeclarationContainer.h
	analysis/DeclarationTypeChecker.cpp
	analysis/DeclarationTypeChecker.h
	analysis/DocStringAnalyser.cpp
	analysis/DocStringAnalyser.h
	analysis/DocStringTagParser.cpp
	analysis/DocStringTagParser.h
	analysis/FunctionCallGraph.cpp
	analysis/FunctionCallGraph.h
	analysis/ImmutableValidator.cpp
	analysis/ImmutableValidator.h
	analysis/GlobalContext.cpp
	analysis/GlobalContext.h
	analysis/NameAndTypeResolver.cpp
	analysis/NameAndTypeResolver.h
	analysis/OverrideChecker.cpp
	analysis/OverrideChecker.h
	analysis/PostTypeChecker.cpp
	analysis/PostTypeChecker.h
	analysis/PostTypeContractLevelChecker.cpp
	analysis/PostTypeContractLevelChecker.h
	analysis/ReferencesResolver.cpp
	analysis/ReferencesResolver.h
	analysis/Scoper.cpp
	analysis/Scoper.h
	analysis/StaticAnalyzer.cpp
	analysis/StaticAnalyzer.h
	analysis/SyntaxChecker.cpp
	analysis/SyntaxChecker.h
	analysis/TypeChecker.cpp
	analysis/TypeChecker.h
	analysis/ViewPureChecker.cpp
	analysis/ViewPureChecker.h
	ast/AST.cpp
	ast/AST.h
	ast/AST_accept.h
	ast/ASTAnnotations.cpp
	ast/ASTAnnotations.h
	ast/ASTEnums.h
	ast/ASTForward.h
	ast/ASTJsonExporter.cpp
	ast/ASTJsonExporter.h
	ast/ASTUtils.cpp
	ast/ASTUtils.h
	ast/ASTJsonImporter.cpp
	ast/ASTJsonImporter.h
	ast/ASTVisitor.h
	ast/CallGraph.cpp
	ast/CallGraph.h
	ast/ExperimentalFeatures.h
	ast/UserDefinableOperators.h
	ast/Types.cpp
	ast/Types.h
	ast/TypeProvider.cpp
	ast/TypeProvider.h
	codegen/ABIFunctions.cpp
	codegen/ABIFunctions.h
	codegen/ArrayUtils.cpp
	codegen/ArrayUtils.h
	codegen/Compiler.cpp
	codegen/Compiler.h
	codegen/CompilerContext.cpp
	codegen/CompilerContext.h
	codegen/CompilerUtils.cpp
	codegen/CompilerUtils.h
	codegen/ContractCompiler.cpp
	codegen/ContractCompiler.h
	codegen/ExpressionCompiler.cpp
	codegen/ExpressionCompiler.h
	codegen/LValue.cpp
	codegen/LValue.h
	codegen/MultiUseYulFunctionCollector.h
	codegen/MultiUseYulFunctionCollector.cpp
	codegen/ReturnInfo.h
	codegen/ReturnInfo.cpp
	codegen/YulUtilFunctions.h
	codegen/YulUtilFunctions.cpp
	codegen/ir/Common.cpp
	codegen/ir/Common.h
	codegen/ir/IRGenerator.cpp
	codegen/ir/IRGenerator.h
	codegen/ir/IRGeneratorForStatements.cpp
	codegen/ir/IRGeneratorForStatements.h
	codegen/ir/IRGenerationContext.cpp
	codegen/ir/IRGenerationContext.h
	codegen/ir/IRLValue.h
	codegen/ir/IRVariable.cpp
	codegen/ir/IRVariable.h
	formal/ArraySlicePredicate.cpp
	formal/ArraySlicePredicate.h
	formal/BMC.cpp
	formal/BMC.h
	formal/CHC.cpp
	formal/CHC.h
	formal/EncodingContext.cpp
	formal/EncodingContext.h
	formal/ExpressionFormatter.cpp
	formal/ExpressionFormatter.h
	formal/Invariants.cpp
	formal/Invariants.h
	formal/ModelChecker.cpp
	formal/ModelChecker.h
	formal/ModelCheckerSettings.cpp
	formal/ModelCheckerSettings.h
	formal/Predicate.cpp
	formal/Predicate.h
	formal/PredicateInstance.cpp
	formal/PredicateInstance.h
	formal/PredicateSort.cpp
	formal/PredicateSort.h
	formal/SMTEncoder.cpp
	formal/SMTEncoder.h
	formal/SSAVariable.cpp
	formal/SSAVariable.h
	formal/SymbolicState.cpp
	formal/SymbolicState.h
	formal/SymbolicTypes.cpp
	formal/SymbolicTypes.h
	formal/SymbolicVariables.cpp
	formal/SymbolicVariables.h
	formal/VariableUsage.cpp
	formal/VariableUsage.h
	interface/ABI.cpp
	interface/ABI.h
	interface/CompilerStack.cpp
	interface/CompilerStack.h
	interface/DebugSettings.h
	interface/FileReader.cpp
	interface/FileReader.h
	interface/ImportRemapper.cpp
	interface/ImportRemapper.h
	interface/GasEstimator.cpp
	interface/GasEstimator.h
	interface/Natspec.cpp
	interface/Natspec.h
	interface/OptimiserSettings.h
	interface/ReadFile.h
	interface/SMTSolverCommand.cpp
	interface/SMTSolverCommand.h
	interface/StandardCompiler.cpp
	interface/StandardCompiler.h
	interface/StorageLayout.cpp
	interface/StorageLayout.h
	interface/UniversalCallback.h
	interface/Version.cpp
	interface/Version.h
	lsp/DocumentHoverHandler.cpp
	lsp/DocumentHoverHandler.h
	lsp/FileRepository.cpp
	lsp/FileRepository.h
	lsp/GotoDefinition.cpp
	lsp/GotoDefinition.h
	lsp/RenameSymbol.cpp
	lsp/RenameSymbol.h
	lsp/HandlerBase.cpp
	lsp/HandlerBase.h
	lsp/LanguageServer.cpp
	lsp/LanguageServer.h
	lsp/SemanticTokensBuilder.cpp
	lsp/SemanticTokensBuilder.h
	lsp/Transport.cpp
	lsp/Transport.h
	lsp/Utils.cpp
	lsp/Utils.h
	parsing/DocStringParser.cpp
	parsing/DocStringParser.h
	parsing/Parser.cpp
	parsing/Parser.h
	parsing/Token.h
)

add_library(solidity ${sources})
target_link_libraries(solidity PUBLIC yul evmasm langutil smtutil solutil Boost::boost fmt::fmt-header-only Threads::Threads)

