feat: Enhance modular build support and update Abseil integration for macOS
This commit is contained in:
@@ -126,6 +126,17 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
|
||||
endif()
|
||||
|
||||
# Abseil provider selection: default to bundled libraries on macOS to avoid
|
||||
# deployment target mismatches with system packages, but let other platforms
|
||||
# use their package managers unless overridden.
|
||||
set(_yaze_default_force_absl OFF)
|
||||
if(YAZE_PLATFORM_MACOS)
|
||||
set(_yaze_default_force_absl ON)
|
||||
endif()
|
||||
option(YAZE_FORCE_BUNDLED_ABSL
|
||||
"Force building the bundled Abseil submodule instead of finding a system package"
|
||||
${_yaze_default_force_absl})
|
||||
|
||||
# Create a common interface target for shared settings
|
||||
add_library(yaze_common INTERFACE)
|
||||
target_compile_features(yaze_common INTERFACE cxx_std_23)
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
"YAZE_BUILD_APP": "ON",
|
||||
"YAZE_BUILD_LIB": "ON",
|
||||
"YAZE_BUILD_EMU": "OFF",
|
||||
"YAZE_BUILD_Z3ED": "ON"
|
||||
"YAZE_BUILD_Z3ED": "ON",
|
||||
"YAZE_USE_MODULAR_BUILD": "ON"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
if (MINGW OR WIN32)
|
||||
# Normalize Abseil's hardware AES flags when targeting macOS ARM64 only.
|
||||
if(APPLE AND DEFINED CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||
set(ABSL_RANDOM_HWAES_X64_FLAGS "" CACHE STRING "" FORCE)
|
||||
set(ABSL_RANDOM_HWAES_ARM64_FLAGS "-march=armv8-a+crypto" CACHE STRING "" FORCE)
|
||||
endif()
|
||||
|
||||
if (MINGW OR WIN32 OR YAZE_FORCE_BUNDLED_ABSL)
|
||||
add_subdirectory(src/lib/abseil-cpp)
|
||||
elseif(YAZE_MINIMAL_BUILD)
|
||||
# For CI builds, always use submodule to avoid dependency issues
|
||||
@@ -62,3 +68,31 @@ if(NOT WIN32)
|
||||
else()
|
||||
message(STATUS "Excluding absl::int128 on Windows to avoid C++23 deprecation issues")
|
||||
endif()
|
||||
|
||||
if(APPLE AND DEFINED CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||
foreach(_absl_target IN ITEMS absl_random_internal_randen_hwaes absl_random_internal_randen_hwaes_impl)
|
||||
if(TARGET ${_absl_target})
|
||||
get_target_property(_absl_opts ${_absl_target} COMPILE_OPTIONS)
|
||||
if(NOT _absl_opts STREQUAL "NOTFOUND")
|
||||
set(_absl_filtered_opts "")
|
||||
set(_absl_skip_next FALSE)
|
||||
foreach(_absl_opt IN LISTS _absl_opts)
|
||||
if(_absl_skip_next)
|
||||
set(_absl_skip_next FALSE)
|
||||
continue()
|
||||
endif()
|
||||
if(_absl_opt STREQUAL "-Xarch_x86_64")
|
||||
set(_absl_skip_next TRUE)
|
||||
continue()
|
||||
endif()
|
||||
if(_absl_opt STREQUAL "-maes" OR _absl_opt STREQUAL "-msse4.1")
|
||||
continue()
|
||||
endif()
|
||||
list(APPEND _absl_filtered_opts "${_absl_opt}")
|
||||
endforeach()
|
||||
set_target_properties(${_absl_target} PROPERTIES COMPILE_OPTIONS "${_absl_filtered_opts}")
|
||||
endif()
|
||||
target_compile_options(${_absl_target} PRIVATE "-Xarch_arm64" "-march=armv8-a+crypto")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
@@ -99,22 +99,21 @@ else()
|
||||
endif()
|
||||
|
||||
if(YAZE_USE_MODULAR_BUILD)
|
||||
target_link_libraries(yaze PRIVATE
|
||||
yaze_util
|
||||
yaze_gfx
|
||||
yaze_gui
|
||||
yaze_zelda3
|
||||
yaze_core_lib
|
||||
yaze_editor
|
||||
)
|
||||
set(_yaze_modular_links yaze_editor)
|
||||
|
||||
if(TARGET yaze_agent)
|
||||
target_link_libraries(yaze PRIVATE yaze_agent)
|
||||
list(APPEND _yaze_modular_links yaze_agent)
|
||||
endif()
|
||||
|
||||
if(YAZE_BUILD_EMU AND NOT YAZE_WITH_GRPC AND TARGET yaze_emulator)
|
||||
target_link_libraries(yaze PRIVATE yaze_emulator)
|
||||
list(APPEND _yaze_modular_links yaze_emulator)
|
||||
endif()
|
||||
|
||||
# Link once against the editor library and allow its PUBLIC dependencies
|
||||
# (core, gfx, util, absl, etc.) to propagate transitively. This avoids
|
||||
# duplicate static archives on the link line while keeping absl symbols
|
||||
# available for main and other entry points.
|
||||
target_link_libraries(yaze PRIVATE ${_yaze_modular_links})
|
||||
else()
|
||||
target_link_libraries(yaze PRIVATE yaze_core)
|
||||
endif()
|
||||
|
||||
@@ -35,6 +35,7 @@ target_link_libraries(yaze_core_lib PUBLIC
|
||||
yaze_util
|
||||
yaze_gfx
|
||||
yaze_common
|
||||
ImGui
|
||||
asar-static
|
||||
${ABSL_TARGETS}
|
||||
${SDL_TARGETS}
|
||||
|
||||
@@ -121,24 +121,14 @@ target_include_directories(
|
||||
if(YAZE_USE_MODULAR_BUILD)
|
||||
target_link_libraries(
|
||||
z3ed PRIVATE
|
||||
yaze_util
|
||||
yaze_gfx
|
||||
yaze_zelda3
|
||||
yaze_core_lib
|
||||
yaze_agent
|
||||
yaze_core
|
||||
ftxui::component
|
||||
ftxui::screen
|
||||
ftxui::dom
|
||||
absl::flags
|
||||
absl::flags_parse
|
||||
)
|
||||
else()
|
||||
target_link_libraries(
|
||||
z3ed PRIVATE
|
||||
yaze_core
|
||||
ftxui::component
|
||||
ftxui::screen
|
||||
ftxui::dom
|
||||
absl::flags
|
||||
absl::flags_parse
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user