feat: Implement modular build system for Yaze

- Added option to enable modular build with `YAZE_USE_MODULAR_BUILD`.
- Updated CMake configuration to support modular libraries for core, editor, graphics, GUI, and emulator functionalities.
- Refactored existing libraries to separate concerns and improve build times.
- Introduced new utility library `yaze_util` for low-level utilities.
- Adjusted CI and release workflows to accommodate the new build system.
- Updated various source files to reflect new include paths and modular structure.
- Enhanced YAML configuration handling in the agent component.
This commit is contained in:
scawful
2025-10-03 18:32:51 -04:00
parent 60e9ea69ac
commit c3eaace72c
22 changed files with 752 additions and 112 deletions

View File

@@ -0,0 +1,53 @@
# ==============================================================================
# Yaze Graphics Library
# ==============================================================================
# This library contains all graphics-related functionality:
# - Bitmap manipulation
# - SNES tile/palette handling
# - Compression/decompression
# - Arena memory management
# - Atlas rendering
# - Performance profiling
#
# Dependencies: yaze_util, SDL2, Abseil
# ==============================================================================
add_library(yaze_gfx STATIC ${YAZE_APP_GFX_SRC})
target_include_directories(yaze_gfx PUBLIC
${CMAKE_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/src/lib
${CMAKE_SOURCE_DIR}/incl
${SDL2_INCLUDE_DIR}
${PROJECT_BINARY_DIR}
)
target_link_libraries(yaze_gfx PUBLIC
yaze_util
yaze_common
${ABSL_TARGETS}
${SDL_TARGETS}
)
# Conditionally add PNG support
if(PNG_FOUND)
target_include_directories(yaze_gfx PUBLIC ${PNG_INCLUDE_DIRS})
target_link_libraries(yaze_gfx PUBLIC ${PNG_LIBRARIES})
endif()
set_target_properties(yaze_gfx PROPERTIES
POSITION_INDEPENDENT_CODE ON
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
)
# Platform-specific compile definitions
if(UNIX AND NOT APPLE)
target_compile_definitions(yaze_gfx PRIVATE linux stricmp=strcasecmp)
elseif(APPLE)
target_compile_definitions(yaze_gfx PRIVATE MACOS)
elseif(WIN32)
target_compile_definitions(yaze_gfx PRIVATE WINDOWS)
endif()
message(STATUS "✓ yaze_gfx library configured")