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:
53
src/app/gfx/gfx_library.cmake
Normal file
53
src/app/gfx/gfx_library.cmake
Normal 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")
|
||||
Reference in New Issue
Block a user