Files
revng-revng/lib/EarlyFunctionAnalysis/CMakeLists.txt
Antonio Frighetto 276d168e32 Introduce LoadFunctionMetadataPass
LoadFunctionMetadataPass lazily loads a `std::map` from isolated
function MetaAddress to `efa::FunctionMetadata`, and caches it.
2022-04-05 20:50:20 +02:00

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)