From 5147249a644f611a801aada7645b7a993fc8e314 Mon Sep 17 00:00:00 2001 From: Brandon Miller Date: Thu, 8 May 2025 15:08:10 -0400 Subject: Implement EFI resolver as a module workflow --- plugins/efi_resolver/CMakeLists.txt | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 plugins/efi_resolver/CMakeLists.txt (limited to 'plugins/efi_resolver/CMakeLists.txt') diff --git a/plugins/efi_resolver/CMakeLists.txt b/plugins/efi_resolver/CMakeLists.txt new file mode 100644 index 00000000..03fabbf6 --- /dev/null +++ b/plugins/efi_resolver/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required(VERSION 3.22 FATAL_ERROR) + +project(efi_resolver) + +option(DEBUG "DEBUG Mode" ON) + +if((NOT BN_API_PATH) AND (NOT BN_INTERNAL_BUILD)) + set(BN_API_PATH $ENV{BN_API_PATH}) + if(NOT BN_API_PATH) + message(FATAL_ERROR "Provide path to Binary Ninja API source in BN_API_PATH") + endif() +endif() +if(NOT BN_INTERNAL_BUILD) + set(HEADLESS ON CACHE BOOL "") + add_subdirectory(${BN_API_PATH} ${PROJECT_BINARY_DIR}/api) +endif() + +# Binary Ninja plugin ---------------------------------------------------------- + +file( + GLOB_RECURSE SOURCE_FILES + CONFIGURE_DEPENDS # Automatically reconfigure if source files are added/removed. + ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/include/*.h +) + +add_library(efi_resolver SHARED ${SOURCE_FILES}) +target_link_libraries(efi_resolver binaryninjaapi) +target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_compile_features(efi_resolver PRIVATE cxx_std_17 c_std_99) + +# Library targets linking against the Binary Ninja API need to be compiled with +# position-independent code on Linux. +if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + target_compile_options(efi_resolver PRIVATE "-fPIC") +endif() + +# Configure plugin output directory for internal builds, otherwise configure +# plugin installation for public builds. + +if(BN_INTERNAL_BUILD) + set_target_properties(efi_resolver PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${BN_CORE_PLUGIN_DIR} + RUNTIME_OUTPUT_DIRECTORY ${BN_CORE_PLUGIN_DIR}) +else() + bn_install_plugin(${PROJECT_NAME}) +endif() + -- cgit v1.3.1