build: Fix plugin SDK issues

This commit is contained in:
WerWolv
2025-05-29 18:19:20 +02:00
parent c1e4121d1e
commit 11e70511e6
4 changed files with 57 additions and 26 deletions

View File

@@ -891,6 +891,7 @@ endfunction()
function(generateSDKDirectory)
setSDKPaths()
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/libimhex DESTINATION "${SDK_PATH}/lib" PATTERN "**/source/*" EXCLUDE)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/trace DESTINATION "${SDK_PATH}/lib" PATTERN "**/source/*" EXCLUDE)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/external DESTINATION "${SDK_PATH}/lib")
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/third_party/imgui DESTINATION "${SDK_PATH}/lib/third_party" PATTERN "**/source/*" EXCLUDE)
if (NOT USE_SYSTEM_FMT)

View File

@@ -39,19 +39,29 @@ set(LIBPL_ENABLE_CLI OFF CACHE BOOL "" FORCE)
add_subdirectory(lib/external/pattern_language EXCLUDE_FROM_ALL)
add_subdirectory(lib/libimhex)
add_subdirectory(lib/trace)
if (WIN32)
set_target_properties(libimhex PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../libimhex.dll"
IMPORTED_IMPLIB "${CMAKE_CURRENT_SOURCE_DIR}/lib/liblibimhex.dll.a"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/libimhex/include")
set_target_properties(tracing PROPERTIES
IMPORTED_IMPLIB "${CMAKE_CURRENT_SOURCE_DIR}/lib/libtracing.a"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/trace/include")
elseif (APPLE)
file(GLOB LIBIMHEX_DYLIB "${CMAKE_CURRENT_SOURCE_DIR}/../../Frameworks/libimhex.*.dylib")
set_target_properties(libimhex PROPERTIES
IMPORTED_LOCATION "${LIBIMHEX_DYLIB}"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/libimhex/include")
set_target_properties(tracing PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../libtracing.a"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/trace/include")
else()
set_target_properties(libimhex PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../libimhex.so"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/libimhex/include")
set_target_properties(tracing PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../libtracing.a"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/trace/include")
endif()

View File

@@ -2,11 +2,20 @@ project(tracing)
option(IMHEX_TRACE_EXCEPTIONS "Hook thrown exceptions to display a stack trace when possible" ON)
add_library(tracing STATIC
source/stacktrace.cpp
source/exceptions.cpp
)
target_include_directories(tracing PUBLIC include)
if (IMHEX_EXTERNAL_PLUGIN_BUILD)
add_library(tracing IMPORTED SHARED GLOBAL)
set(LIBIMHEX_LIBRARY_TYPE_PUBLIC INTERFACE)
set(LIBIMHEX_LIBRARY_TYPE_PRIVATE INTERFACE)
else()
add_library(tracing STATIC
source/stacktrace.cpp
source/exceptions.cpp
)
set(LIBIMHEX_LIBRARY_TYPE_PUBLIC PUBLIC)
set(LIBIMHEX_LIBRARY_TYPE_PRIVATE PRIVATE)
endif()
target_include_directories(tracing ${LIBIMHEX_LIBRARY_TYPE_PUBLIC} include)
if (NOT IMHEX_DISABLE_STACKTRACE)
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
@@ -28,43 +37,43 @@ if (NOT IMHEX_DISABLE_STACKTRACE)
if (HAVE_STDCPPEXP)
message(STATUS "<stacktrace> enabled!")
target_link_libraries(tracing PUBLIC stdc++exp)
target_link_libraries(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} stdc++exp)
if (HAVE_STDCPP_LIBBACKTRACE)
target_link_libraries(tracing PUBLIC stdc++_libbacktrace)
target_link_libraries(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} stdc++_libbacktrace)
endif()
target_compile_definitions(tracing PRIVATE HEX_HAS_STD_STACKTRACE)
target_compile_definitions(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} HEX_HAS_STD_STACKTRACE)
endif()
endif()
if (WIN32 AND NOT HAVE_STDCPPEXP)
message(STATUS "StackWalk enabled!")
target_link_libraries(tracing PRIVATE DbgHelp.lib)
target_link_libraries(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} DbgHelp.lib)
else ()
find_package(Backtrace)
if (${Backtrace_FOUND})
message(STATUS "Backtrace enabled! Header: ${Backtrace_HEADER}")
if (Backtrace_HEADER STREQUAL "backtrace.h")
target_link_libraries(tracing PRIVATE ${Backtrace_LIBRARY})
target_include_directories(tracing PRIVATE ${Backtrace_INCLUDE_DIR})
target_compile_definitions(tracing PRIVATE BACKTRACE_HEADER=<${Backtrace_HEADER}>)
target_compile_definitions(tracing PRIVATE HEX_HAS_BACKTRACE)
target_link_libraries(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} ${Backtrace_LIBRARY})
target_include_directories(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} ${Backtrace_INCLUDE_DIR})
target_compile_definitions(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} BACKTRACE_HEADER=<${Backtrace_HEADER}>)
target_compile_definitions(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} HEX_HAS_BACKTRACE)
elseif (Backtrace_HEADER STREQUAL "execinfo.h")
target_link_libraries(tracing PRIVATE ${Backtrace_LIBRARY})
target_include_directories(tracing PRIVATE ${Backtrace_INCLUDE_DIR})
target_compile_definitions(tracing PRIVATE BACKTRACE_HEADER=<${Backtrace_HEADER}>)
target_compile_definitions(tracing PRIVATE HEX_HAS_EXECINFO)
target_link_libraries(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} ${Backtrace_LIBRARY})
target_include_directories(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} ${Backtrace_INCLUDE_DIR})
target_compile_definitions(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} BACKTRACE_HEADER=<${Backtrace_HEADER}>)
target_compile_definitions(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} HEX_HAS_EXECINFO)
endif()
endif()
endif()
target_link_libraries(tracing PRIVATE LLVMDemangle)
target_link_libraries(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} LLVMDemangle)
endif()
if (IMHEX_TRACE_EXCEPTIONS)
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_link_options(tracing PUBLIC "-Wl,--wrap=__cxa_throw")
target_compile_definitions(tracing PRIVATE HEX_WRAP_CXA_THROW)
target_link_options(tracing ${LIBIMHEX_LIBRARY_TYPE_PUBLIC} "-Wl,--wrap=__cxa_throw")
target_compile_definitions(tracing ${LIBIMHEX_LIBRARY_TYPE_PRIVATE} HEX_WRAP_CXA_THROW)
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# Not supported currently
endif()

View File

@@ -456,16 +456,27 @@ namespace hex::ui {
if (shouldOpen)
ImGui::SetNextItemOpen(true, ImGuiCond_Always);
ImGui::PushStyleVarX(ImGuiStyleVar_FramePadding, 0.0F);
bool retVal = false;
switch (m_treeStyle) {
using enum TreeStyle;
default:
case Default:
return ImGui::TreeNodeEx(this->getDisplayName(pattern).c_str(), ImGuiTreeNodeFlags_SpanFullWidth);
retVal = ImGui::TreeNodeEx("##TreeNode", ImGuiTreeNodeFlags_SpanLabelWidth | ImGuiTreeNodeFlags_OpenOnArrow);
break;
case AutoExpanded:
return ImGui::TreeNodeEx(this->getDisplayName(pattern).c_str(), ImGuiTreeNodeFlags_SpanFullWidth | ImGuiTreeNodeFlags_DefaultOpen);
retVal = ImGui::TreeNodeEx("##TreeNode", ImGuiTreeNodeFlags_SpanLabelWidth | ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_OpenOnArrow);
break;
case Flattened:
return ImGui::TreeNodeEx(this->getDisplayName(pattern).c_str(), ImGuiTreeNodeFlags_SpanFullWidth | ImGuiTreeNodeFlags_Leaf | ImGuiTreeNodeFlags_NoTreePushOnOpen);
retVal = ImGui::TreeNodeEx("##TreeNode", ImGuiTreeNodeFlags_SpanLabelWidth | ImGuiTreeNodeFlags_Leaf | ImGuiTreeNodeFlags_NoTreePushOnOpen);
break;
}
ImGui::PopStyleVar();
ImGui::SameLine();
ImGui::TextUnformatted(this->getDisplayName(pattern).c_str());
return retVal;
});
}
@@ -1112,7 +1123,7 @@ namespace hex::ui {
if (!chunkOpen) {
continue;
}
int id = 1;
iterable.forEachEntry(i, endIndex, [&](u64, auto *entry){
ImGui::PushID(id);
@@ -1167,7 +1178,7 @@ namespace hex::ui {
if (!ImGui::BeginTable("##Patterntable", 9, ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Sortable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_RowBg | ImGuiTableFlags_ScrollY, ImVec2(0, height))) {
return false;
}
ImGui::TableSetupScrollFreeze(0, 1);
ImGui::TableSetupColumn("hex.ui.pattern_drawer.favorites"_lang, ImGuiTableColumnFlags_NoHeaderLabel | ImGuiTableColumnFlags_NoSort | ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoResize | ImGuiTableColumnFlags_NoReorder | ImGuiTableColumnFlags_IndentDisable | (m_favorites.empty() ? ImGuiTableColumnFlags_None : ImGuiTableColumnFlags_NoHide), ImGui::GetTextLineHeight(), ImGui::GetID("favorite"));
ImGui::TableSetupColumn("hex.ui.pattern_drawer.var_name"_lang, ImGuiTableColumnFlags_PreferSortAscending | ImGuiTableColumnFlags_NoHide | ImGuiTableColumnFlags_IndentEnable, 0, ImGui::GetID("name"));
@@ -1491,4 +1502,4 @@ namespace hex::ui {
m_filtersUpdated = false;
}
}
}