backend-infra-engineer: Release v0.3.0 snapshot
This commit is contained in:
@@ -14,6 +14,13 @@ set(
|
||||
app/emu/snes.cc
|
||||
)
|
||||
|
||||
set(
|
||||
YAZE_UTIL_SRC
|
||||
util/bps.cc
|
||||
util/flag.cc
|
||||
util/hex.cc
|
||||
)
|
||||
|
||||
set(YAZE_RESOURCE_FILES
|
||||
${CMAKE_SOURCE_DIR}/assets/layouts/overworld.zeml
|
||||
${CMAKE_SOURCE_DIR}/assets/font/Karla-Regular.ttf
|
||||
@@ -25,6 +32,10 @@ set(YAZE_RESOURCE_FILES
|
||||
${CMAKE_SOURCE_DIR}/assets/font/MaterialIcons-Regular.ttf
|
||||
)
|
||||
|
||||
# Add theme files for macOS bundle (replacing the glob pattern with explicit files)
|
||||
file(GLOB YAZE_THEME_FILES "${CMAKE_SOURCE_DIR}/assets/themes/*.theme")
|
||||
list(APPEND YAZE_RESOURCE_FILES ${YAZE_THEME_FILES})
|
||||
|
||||
foreach (FILE ${YAZE_RESOURCE_FILES})
|
||||
file(RELATIVE_PATH NEW_FILE "${CMAKE_SOURCE_DIR}/assets" ${FILE})
|
||||
get_filename_component(NEW_FILE_PATH ${NEW_FILE} DIRECTORY)
|
||||
@@ -34,6 +45,33 @@ foreach (FILE ${YAZE_RESOURCE_FILES})
|
||||
)
|
||||
endforeach()
|
||||
|
||||
# Conditionally add native file dialog (optional for CI builds)
|
||||
if(NOT YAZE_MINIMAL_BUILD)
|
||||
# Check if we can build NFD before adding it
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND AND UNIX AND NOT APPLE)
|
||||
pkg_check_modules(GTK3 QUIET gtk+-3.0)
|
||||
if(GTK3_FOUND)
|
||||
add_subdirectory(lib/nativefiledialog-extended)
|
||||
set(YAZE_HAS_NFD ON)
|
||||
message(STATUS "NFD enabled with GTK3 support")
|
||||
else()
|
||||
set(YAZE_HAS_NFD OFF)
|
||||
message(STATUS "NFD disabled - GTK3 not found")
|
||||
endif()
|
||||
elseif(WIN32 OR APPLE)
|
||||
add_subdirectory(lib/nativefiledialog-extended)
|
||||
set(YAZE_HAS_NFD ON)
|
||||
message(STATUS "NFD enabled for Windows/macOS")
|
||||
else()
|
||||
set(YAZE_HAS_NFD OFF)
|
||||
message(STATUS "NFD disabled - no platform support")
|
||||
endif()
|
||||
else()
|
||||
set(YAZE_HAS_NFD OFF)
|
||||
message(STATUS "NFD disabled for minimal build")
|
||||
endif()
|
||||
|
||||
if (YAZE_BUILD_APP)
|
||||
include(app/app.cmake)
|
||||
endif()
|
||||
@@ -43,18 +81,12 @@ endif()
|
||||
if (YAZE_BUILD_Z3ED)
|
||||
include(cli/z3ed.cmake)
|
||||
endif()
|
||||
if (YAZE_BUILD_PYTHON)
|
||||
include(cli/python/yaze_py.cmake)
|
||||
endif()
|
||||
if (YAZE_BUILD_TESTS)
|
||||
include(test/CMakeLists.txt)
|
||||
endif()
|
||||
|
||||
if(MACOS)
|
||||
set(MACOSX_BUNDLE_ICON_FILE ${CMAKE_SOURCE_DIR}/win32/yaze.ico)
|
||||
set_target_properties(yaze
|
||||
PROPERTIES
|
||||
BUNDLE True
|
||||
OUTPUT_NAME "yaze"
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
||||
@@ -72,52 +104,131 @@ elseif(UNIX)
|
||||
target_compile_definitions(yaze PRIVATE "linux")
|
||||
target_compile_definitions(yaze PRIVATE "stricmp=strcasecmp")
|
||||
else()
|
||||
set_target_properties(yaze
|
||||
PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
||||
LINK_FLAGS "${CMAKE_CURRENT_SOURCE_DIR}/win32/yaze.res"
|
||||
)
|
||||
if(YAZE_MINIMAL_BUILD)
|
||||
# Skip Windows resource file in CI/minimal builds to avoid architecture conflicts
|
||||
set_target_properties(yaze
|
||||
PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
||||
)
|
||||
else()
|
||||
set_target_properties(yaze
|
||||
PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
||||
LINK_FLAGS "${CMAKE_CURRENT_SOURCE_DIR}/win32/yaze.res"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Yaze C API
|
||||
# Yaze Core Library (for testing and C API)
|
||||
if (YAZE_BUILD_LIB)
|
||||
add_library(
|
||||
yaze_c SHARED
|
||||
./yaze.cc
|
||||
# Create core library for testing (includes editor and zelda3 components needed by tests)
|
||||
set(YAZE_CORE_SOURCES
|
||||
app/rom.cc
|
||||
${YAZE_APP_EMU_SRC}
|
||||
${YAZE_APP_CORE_SRC}
|
||||
${YAZE_APP_GFX_SRC}
|
||||
${YAZE_APP_EDITOR_SRC}
|
||||
${YAZE_APP_GFX_SRC}
|
||||
${YAZE_APP_ZELDA3_SRC}
|
||||
${YAZE_APP_EMU_SRC}
|
||||
${YAZE_GUI_SRC}
|
||||
${YAZE_UTIL_SRC}
|
||||
)
|
||||
|
||||
# Create full library for C API
|
||||
set(YAZE_C_SOURCES
|
||||
./yaze.cc
|
||||
${YAZE_CORE_SOURCES}
|
||||
${YAZE_GUI_SRC}
|
||||
${IMGUI_SRC}
|
||||
${IMGUI_TEST_ENGINE_SOURCES}
|
||||
)
|
||||
|
||||
# Add emulator sources (required for comprehensive testing)
|
||||
list(APPEND YAZE_C_SOURCES ${YAZE_APP_EMU_SRC})
|
||||
|
||||
# Only add ImGui Test Engine sources if UI tests are enabled
|
||||
if(YAZE_ENABLE_UI_TESTS)
|
||||
list(APPEND YAZE_C_SOURCES ${IMGUI_TEST_ENGINE_SOURCES})
|
||||
endif()
|
||||
|
||||
# Create the core library (static for testing)
|
||||
add_library(yaze_core STATIC ${YAZE_CORE_SOURCES})
|
||||
|
||||
# Create the full C API library (static for CI, shared for release)
|
||||
if(YAZE_MINIMAL_BUILD)
|
||||
add_library(yaze_c STATIC ${YAZE_C_SOURCES})
|
||||
else()
|
||||
add_library(yaze_c SHARED ${YAZE_C_SOURCES})
|
||||
endif()
|
||||
|
||||
# Configure core library (for testing)
|
||||
target_include_directories(
|
||||
yaze_c PUBLIC
|
||||
lib/
|
||||
app/
|
||||
yaze_core PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/src/lib/
|
||||
${CMAKE_SOURCE_DIR}/src/app/
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar-dll-bindings/c
|
||||
${CMAKE_SOURCE_DIR}/incl/
|
||||
${CMAKE_SOURCE_DIR}/src/
|
||||
${PNG_INCLUDE_DIRS}
|
||||
${CMAKE_SOURCE_DIR}/src/lib/imgui
|
||||
${CMAKE_SOURCE_DIR}/src/lib/imgui_test_engine
|
||||
${SDL2_INCLUDE_DIR}
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
|
||||
target_link_libraries(
|
||||
yaze_c PRIVATE
|
||||
yaze_core PUBLIC
|
||||
asar-static
|
||||
${ABSL_TARGETS}
|
||||
${SDL_TARGETS}
|
||||
${PNG_LIBRARIES}
|
||||
${CMAKE_DL_LIBS}
|
||||
ImGuiTestEngine
|
||||
ImGui
|
||||
)
|
||||
|
||||
# Configure full C API library
|
||||
target_include_directories(
|
||||
yaze_c PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/src/lib/
|
||||
${CMAKE_SOURCE_DIR}/src/app/
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar-dll-bindings/c
|
||||
${CMAKE_SOURCE_DIR}/incl/
|
||||
${CMAKE_SOURCE_DIR}/src/
|
||||
${CMAKE_SOURCE_DIR}/src/lib/imgui_test_engine
|
||||
${SDL2_INCLUDE_DIR}
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
|
||||
# Conditionally add PNG include dirs if available
|
||||
if(PNG_FOUND)
|
||||
target_include_directories(yaze_c PUBLIC ${PNG_INCLUDE_DIRS})
|
||||
target_include_directories(yaze_core PUBLIC ${PNG_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
target_link_libraries(
|
||||
yaze_c PRIVATE
|
||||
yaze_core
|
||||
ImGui
|
||||
)
|
||||
|
||||
# Conditionally link ImGui Test Engine and set definitions
|
||||
if(YAZE_ENABLE_UI_TESTS AND TARGET ImGuiTestEngine)
|
||||
target_link_libraries(yaze_c PRIVATE ImGuiTestEngine)
|
||||
target_compile_definitions(yaze_c PRIVATE YAZE_ENABLE_IMGUI_TEST_ENGINE=1)
|
||||
else()
|
||||
target_compile_definitions(yaze_c PRIVATE YAZE_ENABLE_IMGUI_TEST_ENGINE=0)
|
||||
endif()
|
||||
|
||||
# Conditionally link PNG if available
|
||||
if(PNG_FOUND)
|
||||
target_link_libraries(yaze_c PRIVATE ${PNG_LIBRARIES})
|
||||
target_link_libraries(yaze_core PRIVATE ${PNG_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if (YAZE_INSTALL_LIB)
|
||||
install(TARGETS yaze_c
|
||||
RUNTIME DESTINATION bin
|
||||
@@ -126,12 +237,8 @@ if (YAZE_BUILD_LIB)
|
||||
|
||||
install(
|
||||
FILES
|
||||
yaze.h
|
||||
incl/sprite.h
|
||||
incl/snes_tile.h
|
||||
incl/snes_color.h
|
||||
incl/overworld.h
|
||||
incl/dungeon.h
|
||||
incl/yaze.h
|
||||
incl/zelda.h
|
||||
DESTINATION
|
||||
include
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user