mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
276d168e32
LoadFunctionMetadataPass lazily loads a `std::map` from isolated function MetaAddress to `efa::FunctionMetadata`, and caches it.
64 lines
1.6 KiB
CMake
64 lines
1.6 KiB
CMake
#
|
|
# This file is distributed under the MIT License. See LICENSE.md for details.
|
|
#
|
|
|
|
add_subdirectory(ABIAnalyses)
|
|
|
|
# Define revngEarlyFunctionAnalysis library
|
|
revng_add_analyses_library_internal(
|
|
revngEarlyFunctionAnalysis
|
|
AAWriterPass.cpp
|
|
IndirectBranchInfoPrinterPass.cpp
|
|
PromoteGlobalToLocalVars.cpp
|
|
SegregateDirectStackAccesses.cpp
|
|
EarlyFunctionAnalysis.cpp
|
|
CollectFunctionsFromCalleesPass.cpp
|
|
CollectFunctionsFromUnusedAddressesPass.cpp
|
|
FunctionMetadata.cpp
|
|
LoadFunctionMetadataPass.cpp
|
|
${GENERATED_IMPLS})
|
|
|
|
llvm_map_components_to_libnames(
|
|
LLVM_LIBRARIES
|
|
Analysis
|
|
TransformUtils
|
|
ScalarOpts
|
|
InstCombine
|
|
Passes
|
|
CodeGen)
|
|
|
|
target_link_libraries(
|
|
revngEarlyFunctionAnalysis
|
|
revngBasicAnalyses
|
|
revngABI
|
|
revngABIAnalyses
|
|
revngSupport
|
|
revngModel
|
|
${LLVM_LIBRARIES})
|
|
|
|
# Header files containing efa YAML must be added here
|
|
set(EFA_HEADERS_DIR "${CMAKE_SOURCE_DIR}/include/revng/EarlyFunctionAnalysis")
|
|
set(OUTPUT_DIR
|
|
"${CMAKE_BINARY_DIR}/include/revng/EarlyFunctionAnalysis/Generated")
|
|
set(SCHEMA_PATH "${CMAKE_BINARY_DIR}/efa-schema.yml")
|
|
target_tuple_tree_generator(
|
|
revngEarlyFunctionAnalysis
|
|
INSTALL
|
|
HEADER_DIRECTORY
|
|
EarlyFunctionAnalysis
|
|
NAMESPACE
|
|
efa
|
|
SCHEMA_PATH
|
|
${SCHEMA_PATH}
|
|
SEPARATE_STRING_TYPES
|
|
"MetaAddress"
|
|
HEADERS
|
|
"${EFA_HEADERS_DIR}/BasicBlock.h"
|
|
"${EFA_HEADERS_DIR}/CallEdge.h"
|
|
"${EFA_HEADERS_DIR}/FunctionEdge.h"
|
|
"${EFA_HEADERS_DIR}/FunctionEdgeBase.h"
|
|
"${EFA_HEADERS_DIR}/FunctionEdgeType.h"
|
|
"${EFA_HEADERS_DIR}/FunctionMetadata.h")
|
|
|
|
install(DIRECTORY ${OUTPUT_DIR} DESTINATION include/revng/EarlyFunctionAnalysis)
|