2020-12-09 01:02:25 +00:00
|
|
|
# This will re-generate the polyfill headers, if any file within libyul/backends/wasm/polyfill/ was modified.
|
|
|
|
set_directory_properties(PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/libyul/backends/wasm/polyfill/)
|
|
|
|
|
|
|
|
set(POLYFILLS Arithmetic Bitwise Comparison Conversion Interface Keccak Logical Memory)
|
|
|
|
set(GENERATED_POLYFILL_HEADERS)
|
|
|
|
foreach(polyfill IN LISTS POLYFILLS)
|
|
|
|
set(POLYFILL_FILE ${CMAKE_SOURCE_DIR}/libyul/backends/wasm/polyfill/${polyfill}.yul)
|
|
|
|
file(READ ${POLYFILL_FILE} EWASM_POLYFILL_CONTENT HEX)
|
|
|
|
string(REGEX MATCHALL ".." EWASM_POLYFILL_CONTENT "${EWASM_POLYFILL_CONTENT}")
|
|
|
|
string(REGEX REPLACE ";" ",\n\t0x" EWASM_POLYFILL_CONTENT "${EWASM_POLYFILL_CONTENT}")
|
|
|
|
set(EWASM_POLYFILL_CONTENT "0x${EWASM_POLYFILL_CONTENT}")
|
|
|
|
set(EWASM_POLYFILL_NAME ${polyfill})
|
|
|
|
configure_file("${CMAKE_SOURCE_DIR}/cmake/templates/ewasm_polyfill.in" ${CMAKE_BINARY_DIR}/include/ewasmPolyfills/${polyfill}.h @ONLY)
|
|
|
|
list(APPEND GENERATED_POLYFILL_HEADERS ${CMAKE_BINARY_DIR}/include/ewasmPolyfills/${polyfill}.h)
|
|
|
|
endforeach()
|
|
|
|
|
2018-11-23 10:39:40 +00:00
|
|
|
add_library(yul
|
2020-12-09 01:02:25 +00:00
|
|
|
${GENERATED_POLYFILL_HEADERS}
|
|
|
|
|
2018-11-23 10:39:40 +00:00
|
|
|
AsmAnalysis.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
AsmAnalysis.h
|
|
|
|
AsmAnalysisInfo.h
|
2020-10-29 14:00:27 +00:00
|
|
|
AST.h
|
|
|
|
ASTForward.h
|
2019-10-15 10:38:12 +00:00
|
|
|
AsmJsonConverter.h
|
|
|
|
AsmJsonConverter.cpp
|
2020-10-29 14:06:31 +00:00
|
|
|
AsmJsonImporter.h
|
|
|
|
AsmJsonImporter.cpp
|
2018-11-23 10:39:40 +00:00
|
|
|
AsmParser.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
AsmParser.h
|
2018-11-23 10:39:40 +00:00
|
|
|
AsmPrinter.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
AsmPrinter.h
|
2019-02-13 10:57:08 +00:00
|
|
|
AssemblyStack.h
|
|
|
|
AssemblyStack.cpp
|
2019-01-29 09:51:25 +00:00
|
|
|
CompilabilityChecker.cpp
|
|
|
|
CompilabilityChecker.h
|
2021-09-30 15:01:54 +00:00
|
|
|
ControlFlowSideEffects.h
|
|
|
|
ControlFlowSideEffectsCollector.cpp
|
|
|
|
ControlFlowSideEffectsCollector.h
|
2019-12-19 16:58:20 +00:00
|
|
|
Dialect.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
Dialect.h
|
|
|
|
Exceptions.h
|
2021-11-03 10:08:45 +00:00
|
|
|
FunctionReferenceResolver.cpp
|
|
|
|
FunctionReferenceResolver.h
|
2018-11-04 08:34:21 +00:00
|
|
|
Object.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
Object.h
|
2018-11-04 08:34:21 +00:00
|
|
|
ObjectParser.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
ObjectParser.h
|
2020-11-25 18:10:31 +00:00
|
|
|
Scope.cpp
|
|
|
|
Scope.h
|
|
|
|
ScopeFiller.cpp
|
|
|
|
ScopeFiller.h
|
2019-01-15 12:40:10 +00:00
|
|
|
Utilities.cpp
|
|
|
|
Utilities.h
|
2018-12-17 14:00:39 +00:00
|
|
|
YulString.h
|
|
|
|
backends/evm/AbstractAssembly.h
|
2019-02-13 10:19:24 +00:00
|
|
|
backends/evm/AsmCodeGen.cpp
|
2020-11-02 11:53:17 +00:00
|
|
|
backends/evm/AsmCodeGen.h
|
2019-05-28 10:57:15 +00:00
|
|
|
backends/evm/ConstantOptimiser.cpp
|
|
|
|
backends/evm/ConstantOptimiser.h
|
2021-06-11 17:17:41 +00:00
|
|
|
backends/evm/ControlFlowGraph.h
|
|
|
|
backends/evm/ControlFlowGraphBuilder.cpp
|
|
|
|
backends/evm/ControlFlowGraphBuilder.h
|
2020-11-02 11:53:17 +00:00
|
|
|
backends/evm/EthAssemblyAdapter.cpp
|
|
|
|
backends/evm/EthAssemblyAdapter.h
|
2018-11-23 10:39:40 +00:00
|
|
|
backends/evm/EVMCodeTransform.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
backends/evm/EVMCodeTransform.h
|
2018-12-06 23:56:16 +00:00
|
|
|
backends/evm/EVMDialect.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
backends/evm/EVMDialect.h
|
2018-12-04 17:57:32 +00:00
|
|
|
backends/evm/EVMObjectCompiler.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
backends/evm/EVMObjectCompiler.h
|
2019-05-28 10:57:15 +00:00
|
|
|
backends/evm/EVMMetrics.cpp
|
|
|
|
backends/evm/EVMMetrics.h
|
2019-05-09 14:47:51 +00:00
|
|
|
backends/evm/NoOutputAssembly.h
|
|
|
|
backends/evm/NoOutputAssembly.cpp
|
2021-07-05 16:19:18 +00:00
|
|
|
backends/evm/OptimizedEVMCodeTransform.cpp
|
|
|
|
backends/evm/OptimizedEVMCodeTransform.h
|
2021-07-05 16:13:44 +00:00
|
|
|
backends/evm/StackHelpers.h
|
|
|
|
backends/evm/StackLayoutGenerator.cpp
|
2021-07-05 16:19:18 +00:00
|
|
|
backends/evm/StackLayoutGenerator.h
|
2021-04-12 10:33:28 +00:00
|
|
|
backends/evm/VariableReferenceCounter.h
|
|
|
|
backends/evm/VariableReferenceCounter.cpp
|
2019-12-12 12:52:27 +00:00
|
|
|
backends/wasm/EVMToEwasmTranslator.cpp
|
|
|
|
backends/wasm/EVMToEwasmTranslator.h
|
2019-10-31 16:27:52 +00:00
|
|
|
backends/wasm/BinaryTransform.cpp
|
|
|
|
backends/wasm/BinaryTransform.h
|
2019-12-09 16:43:22 +00:00
|
|
|
backends/wasm/TextTransform.cpp
|
|
|
|
backends/wasm/TextTransform.h
|
2019-12-11 13:27:24 +00:00
|
|
|
backends/wasm/WasmCodeTransform.cpp
|
|
|
|
backends/wasm/WasmCodeTransform.h
|
2019-04-17 17:14:27 +00:00
|
|
|
backends/wasm/WasmDialect.cpp
|
|
|
|
backends/wasm/WasmDialect.h
|
2019-12-12 12:48:43 +00:00
|
|
|
backends/wasm/WasmObjectCompiler.cpp
|
|
|
|
backends/wasm/WasmObjectCompiler.h
|
2019-04-26 05:39:40 +00:00
|
|
|
backends/wasm/WordSizeTransform.cpp
|
|
|
|
backends/wasm/WordSizeTransform.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/ASTCopier.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/ASTCopier.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/ASTWalker.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/ASTWalker.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/BlockFlattener.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/BlockFlattener.h
|
2019-05-13 16:18:02 +00:00
|
|
|
optimiser/BlockHasher.cpp
|
|
|
|
optimiser/BlockHasher.h
|
2019-08-06 10:46:16 +00:00
|
|
|
optimiser/CallGraphGenerator.cpp
|
|
|
|
optimiser/CallGraphGenerator.h
|
2020-02-07 00:28:24 +00:00
|
|
|
optimiser/CircularReferencesPruner.cpp
|
|
|
|
optimiser/CircularReferencesPruner.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/CommonSubexpressionEliminator.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/CommonSubexpressionEliminator.h
|
2019-09-11 09:42:59 +00:00
|
|
|
optimiser/ConditionalSimplifier.cpp
|
|
|
|
optimiser/ConditionalSimplifier.h
|
2019-10-07 08:06:00 +00:00
|
|
|
optimiser/ConditionalUnsimplifier.cpp
|
|
|
|
optimiser/ConditionalUnsimplifier.h
|
2019-05-09 19:56:56 +00:00
|
|
|
optimiser/ControlFlowSimplifier.cpp
|
|
|
|
optimiser/ControlFlowSimplifier.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/DataFlowAnalyzer.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/DataFlowAnalyzer.h
|
2019-03-28 13:18:17 +00:00
|
|
|
optimiser/DeadCodeEliminator.cpp
|
|
|
|
optimiser/DeadCodeEliminator.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/Disambiguator.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/Disambiguator.h
|
2021-11-11 14:54:38 +00:00
|
|
|
optimiser/EqualStoreEliminator.cpp
|
|
|
|
optimiser/EqualStoreEliminator.h
|
2019-01-10 19:29:30 +00:00
|
|
|
optimiser/EquivalentFunctionDetector.cpp
|
|
|
|
optimiser/EquivalentFunctionDetector.h
|
|
|
|
optimiser/EquivalentFunctionCombiner.cpp
|
|
|
|
optimiser/EquivalentFunctionCombiner.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/ExpressionInliner.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/ExpressionInliner.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/ExpressionJoiner.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/ExpressionJoiner.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/ExpressionSimplifier.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/ExpressionSimplifier.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/ExpressionSplitter.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/ExpressionSplitter.h
|
2019-05-18 05:35:36 +00:00
|
|
|
optimiser/ForLoopConditionIntoBody.cpp
|
|
|
|
optimiser/ForLoopConditionIntoBody.h
|
2019-09-11 16:55:31 +00:00
|
|
|
optimiser/ForLoopConditionOutOfBody.cpp
|
|
|
|
optimiser/ForLoopConditionOutOfBody.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/ForLoopInitRewriter.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/ForLoopInitRewriter.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/FullInliner.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/FullInliner.h
|
2020-07-02 10:48:20 +00:00
|
|
|
optimiser/FunctionCallFinder.cpp
|
|
|
|
optimiser/FunctionCallFinder.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/FunctionGrouper.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/FunctionGrouper.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/FunctionHoister.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/FunctionHoister.h
|
2020-11-20 21:56:28 +00:00
|
|
|
optimiser/FunctionSpecializer.cpp
|
|
|
|
optimiser/FunctionSpecializer.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/InlinableExpressionFunctionFinder.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/InlinableExpressionFunctionFinder.h
|
2019-05-21 13:52:15 +00:00
|
|
|
optimiser/KnowledgeBase.cpp
|
|
|
|
optimiser/KnowledgeBase.h
|
2019-05-27 22:14:01 +00:00
|
|
|
optimiser/LoadResolver.cpp
|
|
|
|
optimiser/LoadResolver.h
|
2019-09-18 08:47:49 +00:00
|
|
|
optimiser/LoopInvariantCodeMotion.cpp
|
|
|
|
optimiser/LoopInvariantCodeMotion.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/MainFunction.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/MainFunction.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/Metrics.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/Metrics.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/NameCollector.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/NameCollector.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/NameDispenser.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/NameDispenser.h
|
2019-06-19 09:37:22 +00:00
|
|
|
optimiser/NameDisplacer.cpp
|
|
|
|
optimiser/NameDisplacer.h
|
2020-08-06 19:44:50 +00:00
|
|
|
optimiser/NameSimplifier.cpp
|
|
|
|
optimiser/NameSimplifier.h
|
2019-09-23 14:32:50 +00:00
|
|
|
optimiser/OptimiserStep.h
|
2019-01-15 12:40:10 +00:00
|
|
|
optimiser/OptimizerUtilities.cpp
|
|
|
|
optimiser/OptimizerUtilities.h
|
2020-05-11 17:56:29 +00:00
|
|
|
optimiser/ReasoningBasedSimplifier.cpp
|
|
|
|
optimiser/ReasoningBasedSimplifier.h
|
2021-11-23 09:37:12 +00:00
|
|
|
optimiser/UnusedAssignEliminator.cpp
|
|
|
|
optimiser/UnusedAssignEliminator.h
|
|
|
|
optimiser/UnusedStoreBase.cpp
|
|
|
|
optimiser/UnusedStoreBase.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/Rematerialiser.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/Rematerialiser.h
|
2021-05-06 09:22:35 +00:00
|
|
|
optimiser/SMTSolver.cpp
|
|
|
|
optimiser/SMTSolver.h
|
2019-01-16 10:44:45 +00:00
|
|
|
optimiser/SSAReverser.cpp
|
|
|
|
optimiser/SSAReverser.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/SSATransform.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/SSATransform.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/SSAValueTracker.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/SSAValueTracker.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/Semantics.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/Semantics.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/SimplificationRules.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/SimplificationRules.h
|
2019-02-04 16:30:29 +00:00
|
|
|
optimiser/StackCompressor.cpp
|
|
|
|
optimiser/StackCompressor.h
|
2020-07-02 10:48:20 +00:00
|
|
|
optimiser/StackLimitEvader.cpp
|
|
|
|
optimiser/StackLimitEvader.h
|
|
|
|
optimiser/StackToMemoryMover.cpp
|
|
|
|
optimiser/StackToMemoryMover.h
|
2018-12-03 16:19:37 +00:00
|
|
|
optimiser/StructuralSimplifier.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/StructuralSimplifier.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/Substitution.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/Substitution.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/Suite.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/Suite.h
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/SyntacticalEquality.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/SyntacticalEquality.h
|
2020-02-11 20:57:52 +00:00
|
|
|
optimiser/TypeInfo.cpp
|
|
|
|
optimiser/TypeInfo.h
|
2020-07-10 16:56:32 +00:00
|
|
|
optimiser/UnusedFunctionParameterPruner.cpp
|
|
|
|
optimiser/UnusedFunctionParameterPruner.h
|
|
|
|
optimiser/UnusedFunctionsCommon.h
|
2020-12-08 20:48:23 +00:00
|
|
|
optimiser/UnusedFunctionsCommon.cpp
|
2018-11-23 10:39:40 +00:00
|
|
|
optimiser/UnusedPruner.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/UnusedPruner.h
|
2018-12-13 14:26:01 +00:00
|
|
|
optimiser/VarDeclInitializer.cpp
|
2018-12-17 14:00:39 +00:00
|
|
|
optimiser/VarDeclInitializer.h
|
2019-01-21 07:13:31 +00:00
|
|
|
optimiser/VarNameCleaner.cpp
|
|
|
|
optimiser/VarNameCleaner.h
|
2018-11-23 10:39:40 +00:00
|
|
|
)
|
2020-05-11 17:56:29 +00:00
|
|
|
|
2021-04-20 12:12:07 +00:00
|
|
|
target_link_libraries(yul PUBLIC evmasm solutil langutil smtutil fmt::fmt-header-only)
|