Refactor CMake configuration for ImGuiTestEngine and feature flags

- Updated the CMake configuration to use target_compile_definitions for ImGuiTestEngine, improving clarity and maintainability.
- Introduced IMGUI_TEST_ENGINE_DEFINITIONS to streamline the definition process for targets linking to ImGuiTestEngine.
- Modified feature flags in features.h to conditionally enable the native file dialog based on the YAZE_ENABLE_NFD flag, enhancing flexibility in feature management.
This commit is contained in:
scawful
2025-09-26 12:26:01 -04:00
parent d728ed37aa
commit 41a5b952e4
6 changed files with 22 additions and 8 deletions

View File

@@ -111,14 +111,14 @@ include(cmake/sdl2.cmake)
# Asar # Asar
include(cmake/asar.cmake) include(cmake/asar.cmake)
# ImGui
include(cmake/imgui.cmake)
# Google Test (if needed for main app integration) # Google Test (if needed for main app integration)
if (YAZE_BUILD_TESTS) if (YAZE_BUILD_TESTS)
include(cmake/gtest.cmake) include(cmake/gtest.cmake)
endif() endif()
# ImGui (after minimal build flags are set)
include(cmake/imgui.cmake)
# Project Files # Project Files
add_subdirectory(src) add_subdirectory(src)

View File

@@ -16,7 +16,14 @@ if(YAZE_ENABLE_UI_TESTS)
target_link_libraries(ImGuiTestEngine PUBLIC ImGui) target_link_libraries(ImGuiTestEngine PUBLIC ImGui)
# Enable test engine definitions only when UI tests are enabled # Enable test engine definitions only when UI tests are enabled
add_definitions("-DIMGUI_ENABLE_TEST_ENGINE -DIMGUI_TEST_ENGINE_ENABLE_COROUTINE_STDTHREAD_IMPL=1") target_compile_definitions(ImGuiTestEngine PUBLIC
IMGUI_ENABLE_TEST_ENGINE=1
IMGUI_TEST_ENGINE_ENABLE_COROUTINE_STDTHREAD_IMPL=1)
# Also define for targets that link to ImGuiTestEngine
set(IMGUI_TEST_ENGINE_DEFINITIONS
IMGUI_ENABLE_TEST_ENGINE=1
IMGUI_TEST_ENGINE_ENABLE_COROUTINE_STDTHREAD_IMPL=1)
# Make ImGuiTestEngine target available # Make ImGuiTestEngine target available
set(IMGUI_TEST_ENGINE_TARGET ImGuiTestEngine) set(IMGUI_TEST_ENGINE_TARGET ImGuiTestEngine)
@@ -24,6 +31,7 @@ else()
# Create empty variables when UI tests are disabled # Create empty variables when UI tests are disabled
set(IMGUI_TEST_ENGINE_SOURCES "") set(IMGUI_TEST_ENGINE_SOURCES "")
set(IMGUI_TEST_ENGINE_TARGET "") set(IMGUI_TEST_ENGINE_TARGET "")
set(IMGUI_TEST_ENGINE_DEFINITIONS "")
endif() endif()
set( set(

View File

@@ -94,7 +94,9 @@ if(YAZE_ENABLE_UI_TESTS)
if(TARGET ImGuiTestEngine) if(TARGET ImGuiTestEngine)
target_include_directories(yaze PUBLIC ${CMAKE_SOURCE_DIR}/src/lib/imgui_test_engine) target_include_directories(yaze PUBLIC ${CMAKE_SOURCE_DIR}/src/lib/imgui_test_engine)
target_link_libraries(yaze PUBLIC ImGuiTestEngine) target_link_libraries(yaze PUBLIC ImGuiTestEngine)
target_compile_definitions(yaze PRIVATE YAZE_ENABLE_IMGUI_TEST_ENGINE=1) target_compile_definitions(yaze PRIVATE
YAZE_ENABLE_IMGUI_TEST_ENGINE=1
${IMGUI_TEST_ENGINE_DEFINITIONS})
else() else()
target_compile_definitions(yaze PRIVATE YAZE_ENABLE_IMGUI_TEST_ENGINE=0) target_compile_definitions(yaze PRIVATE YAZE_ENABLE_IMGUI_TEST_ENGINE=0)
endif() endif()

View File

@@ -39,7 +39,11 @@ class FeatureFlags {
bool kLogToConsole = false; bool kLogToConsole = false;
// Use NFD (Native File Dialog) instead of bespoke file dialog implementation. // Use NFD (Native File Dialog) instead of bespoke file dialog implementation.
#if defined(YAZE_ENABLE_NFD) && YAZE_ENABLE_NFD
bool kUseNativeFileDialog = true; bool kUseNativeFileDialog = true;
#else
bool kUseNativeFileDialog = false;
#endif
// Overworld flags // Overworld flags
struct Overworld { struct Overworld {

View File

@@ -240,7 +240,7 @@ void ItemLabel(absl::string_view title, ItemLabelFlags flags) {
const ImGuiStyle& style = ImGui::GetStyle(); const ImGuiStyle& style = ImGui::GetStyle();
float fullWidth = ImGui::GetContentRegionAvail().x; float fullWidth = ImGui::GetContentRegionAvail().x;
float itemWidth = ImGui::CalcItemWidth() + style.ItemSpacing.x; float itemWidth = ImGui::CalcItemWidth() + style.ItemSpacing.x;
ImVec2 textSize = ImGui::CalcTextSize(title.begin(), title.end()); ImVec2 textSize = ImGui::CalcTextSize(title.data(), title.data() + title.size());
ImRect textRect; ImRect textRect;
textRect.Min = ImGui::GetCursorScreenPos(); textRect.Min = ImGui::GetCursorScreenPos();
if (flags & ItemLabelFlag::Right) textRect.Min.x = textRect.Min.x + itemWidth; if (flags & ItemLabelFlag::Right) textRect.Min.x = textRect.Min.x + itemWidth;

View File

@@ -7,7 +7,7 @@
#include <cmath> #include <cmath>
#include <cstring> #include <cstring>
#ifdef YAZE_LIB_PNG #if YAZE_LIB_PNG == 1
#include <zlib.h> #include <zlib.h>
#endif #endif
@@ -16,7 +16,7 @@ namespace util {
namespace { namespace {
#ifdef YAZE_LIB_PNG #if YAZE_LIB_PNG == 1
uint32_t crc32(const std::vector<uint8_t> &data) { uint32_t crc32(const std::vector<uint8_t> &data) {
uint32_t crc = ::crc32(0L, Z_NULL, 0); uint32_t crc = ::crc32(0L, Z_NULL, 0);
return ::crc32(crc, data.data(), data.size()); return ::crc32(crc, data.data(), data.size());