From a44ea00a54c048630f5d0270ff6e527f9d16f908 Mon Sep 17 00:00:00 2001 From: Fireblade <3+fireblade@noreply.neolegacy.dev> Date: Tue, 14 Jul 2026 01:57:47 -0400 Subject: [PATCH] fix: builds on linux and incorrect map colors --- CMakeLists.txt | 16 +----- Minecraft.Client/CMakeLists.txt | 50 ++++++------------- .../Common/res/TitleUpdate/res/colours.xml | 2 +- build-linux.sh | 25 +++++++--- cmake/ServerTarget.cmake | 49 ++++++------------ 5 files changed, 50 insertions(+), 92 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb25a2a7..a56f9331 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,4 @@ cmake_minimum_required(VERSION 3.24) -cmake_policy(SET CMP0057 NEW) project(LCE-Revelations LANGUAGES C CXX RC ASM_MASM) set(CMAKE_CXX_STANDARD 17) @@ -14,11 +13,6 @@ if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) message(FATAL_ERROR "Use a 64-bit generator/toolchain (x64).") endif() -set(LCE_XWIN_CROSS_DEBUG_COMPAT OFF) -if(CMAKE_CROSSCOMPILING AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(LCE_XWIN_CROSS_DEBUG_COMPAT ON) -endif() - set(CMAKE_CONFIGURATION_TYPES "Debug" "Release" @@ -26,11 +20,7 @@ set(CMAKE_CONFIGURATION_TYPES ) if(NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) - if(CMAKE_CROSSCOMPILING AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded") - else() - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") - endif() + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() function(configure_compiler_target target) @@ -82,9 +72,7 @@ endfunction() set(MINECRAFT_SHARED_DEFINES _LARGE_WORLDS _DEBUG_MENUS_ENABLED - $<$,$>>:_DEBUG> - $<$,$>:_ITERATOR_DEBUG_LEVEL=0> - $<$,$>:_HAS_ITERATOR_DEBUGGING=0> + $<$:_DEBUG> _CRT_NON_CONFORMING_SWPRINTFS _CRT_SECURE_NO_WARNINGS _HAS_STD_BYTE=0 diff --git a/Minecraft.Client/CMakeLists.txt b/Minecraft.Client/CMakeLists.txt index c29cbdbf..bec4fef7 100644 --- a/Minecraft.Client/CMakeLists.txt +++ b/Minecraft.Client/CMakeLists.txt @@ -75,46 +75,25 @@ if(PLATFORM_NAME STREQUAL "Windows64") target_link_options(Minecraft.Client PRIVATE $<$:/DEBUG /OPT:REF /OPT:ICF>) endif() -set(MINECRAFT_CLIENT_USE_4J_DEBUG_LIBS TRUE) -if(CMAKE_CROSSCOMPILING AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(MINECRAFT_CLIENT_USE_4J_DEBUG_LIBS FALSE) -endif() - set_target_properties(Minecraft.Client PROPERTIES OUTPUT_NAME "Minecraft.Client" VS_DEBUGGER_WORKING_DIRECTORY "$" ) -if(MINECRAFT_CLIENT_USE_4J_DEBUG_LIBS) - target_link_libraries(Minecraft.Client PRIVATE - Minecraft.World - d3d11 - dxgi - d3dcompiler - XInput9_1_0 - wsock32 - dbghelp - legacy_stdio_definitions - 4JLibs.${PLATFORM_NAME}.Input - 4JLibs.${PLATFORM_NAME}.Profile - 4JLibs.${PLATFORM_NAME}.Storage - 4JLibs.${PLATFORM_NAME}.Render - ) -else() - target_link_libraries(Minecraft.Client PRIVATE - Minecraft.World - d3d11 - dxgi - d3dcompiler - XInput9_1_0 - wsock32 - dbghelp - legacy_stdio_definitions - "${CMAKE_CURRENT_SOURCE_DIR}/${PLATFORM_NAME}/4JLibs/libs/4J_Input.lib" - "${CMAKE_CURRENT_SOURCE_DIR}/${PLATFORM_NAME}/4JLibs/libs/4J_Storage.lib" - "${CMAKE_CURRENT_SOURCE_DIR}/${PLATFORM_NAME}/4JLibs/libs/4J_Render_PC.lib" - ) -endif() +target_link_libraries(Minecraft.Client PRIVATE + Minecraft.World + d3d11 + dxgi + d3dcompiler + XInput9_1_0 + wsock32 + dbghelp + legacy_stdio_definitions + 4JLibs.${PLATFORM_NAME}.Input + 4JLibs.${PLATFORM_NAME}.Profile + 4JLibs.${PLATFORM_NAME}.Storage + 4JLibs.${PLATFORM_NAME}.Render +) # Iggy libs foreach(lib IN LISTS IGGY_LIBS) @@ -172,4 +151,3 @@ add_copyredist_target(Minecraft.Client) if(PLATFORM_NAME STREQUAL "Windows64") add_gamehdd_target(Minecraft.Client) endif() - diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/colours.xml b/Minecraft.Client/Common/res/TitleUpdate/res/colours.xml index 9aaf82ea..c0d89fb8 100644 --- a/Minecraft.Client/Common/res/TitleUpdate/res/colours.xml +++ b/Minecraft.Client/Common/res/TitleUpdate/res/colours.xml @@ -309,7 +309,7 @@ if __name__=="__main__": notecolors() - + diff --git a/build-linux.sh b/build-linux.sh index 8b2d238b..98cc262f 100755 --- a/build-linux.sh +++ b/build-linux.sh @@ -31,14 +31,20 @@ check_deps() { fetch_winsdk() { local splat_dir="$XWIN_CACHE/splat" + if [[ -d "$splat_dir" ]]; then - info "Using cached Windows SDK at $splat_dir" - return + if [[ -f "$splat_dir/sdk/lib/ucrt/x86_64/libucrtd.lib" ]]; then + info "Using cached Windows SDK at $splat_dir" + return + else + warn "Cached Windows SDK at $splat_dir is missing debug CRT libs, re-fetching..." + rm -rf "$splat_dir" + fi fi info "Downloading Windows SDK and CRT via xwin..." mkdir -p "$XWIN_CACHE" - xwin --accept-license splat --output "$splat_dir" + xwin --accept-license splat --include-debug-libs --output "$splat_dir" success "Windows SDK downloaded" } @@ -78,7 +84,14 @@ do_cmake_configure() { local winsdk="$XWIN_CACHE/splat" local toolchain toolchain="$(write_toolchain)" - local c_flags="/MT -w -Wno-non-pod-varargs -fms-compatibility -fms-extensions --target=x86_64-pc-windows-msvc \ + local crt_flag="/MT" + local msvc_runtime="MultiThreaded" + if [[ "$BUILD_TYPE" == "Debug" ]]; then + crt_flag="/MTd" + msvc_runtime="MultiThreadedDebug" + fi + + local c_flags="$crt_flag -Wno-non-pod-varargs -fms-compatibility -fms-extensions --target=x86_64-pc-windows-msvc \ -imsvc $winsdk/crt/include \ -imsvc $winsdk/sdk/include/ucrt \ -imsvc $winsdk/sdk/include/um \ @@ -107,7 +120,7 @@ do_cmake_configure() { -DPLATFORM_NAME="Windows64" \ -DIGGY_LIBS="iggy_w64.lib;iggyperfmon_w64.lib;iggyexpruntime_w64.lib" \ -DCMAKE_SYSTEM_NAME=Windows \ - -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded \ + -DCMAKE_MSVC_RUNTIME_LIBRARY="$msvc_runtime" \ -DCMAKE_C_FLAGS="$c_flags" \ -DCMAKE_CXX_FLAGS="$c_flags" \ -DCMAKE_ASM_MASM_FLAGS="-m64" \ @@ -264,7 +277,7 @@ LAUNCHER } main() { - BUILD_DIR="$SOURCE_DIR/build/windows64-clang" + BUILD_DIR="$SOURCE_DIR/build/windows64-clang-${BUILD_TYPE,,}" mkdir -p "$BUILD_DIR" info "LegacyEvolved LCE v$VERSION build script" info "Source: $SOURCE_DIR | Type: $BUILD_TYPE" diff --git a/cmake/ServerTarget.cmake b/cmake/ServerTarget.cmake index 8fb7d283..ed9ef407 100644 --- a/cmake/ServerTarget.cmake +++ b/cmake/ServerTarget.cmake @@ -39,11 +39,6 @@ function(configure_lce_server_target target) # "${CMAKE_SOURCE_DIR}/Minecraft.Client/Common/Media/MediaWindows64.arc" "Common/Media/" # ) - set(_use_debug_4j_libs TRUE) - if(CMAKE_CROSSCOMPILING AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(_use_debug_4j_libs FALSE) - endif() - target_include_directories(${target} PRIVATE "${CMAKE_BINARY_DIR}/generated/" # Generated BuildVer.h "${CMAKE_SOURCE_DIR}/Minecraft.Client/" @@ -75,36 +70,20 @@ function(configure_lce_server_target target) VS_DEBUGGER_COMMAND_ARGUMENTS "-port 25565 -bind 0.0.0.0 -name DedicatedServer" ) - if(_use_debug_4j_libs) - target_link_libraries(${target} PRIVATE - Minecraft.World - d3d11 - dxgi - d3dcompiler - XInput9_1_0 - wsock32 - dbghelp - legacy_stdio_definitions - 4JLibs.${PLATFORM_NAME}.Input - 4JLibs.${PLATFORM_NAME}.Profile - 4JLibs.${PLATFORM_NAME}.Storage - 4JLibs.${PLATFORM_NAME}.Render - ) - else() - target_link_libraries(${target} PRIVATE - Minecraft.World - d3d11 - dxgi - d3dcompiler - XInput9_1_0 - wsock32 - dbghelp - legacy_stdio_definitions - "${CMAKE_SOURCE_DIR}/Minecraft.Client/${PLATFORM_NAME}/4JLibs/libs/4J_Input.lib" - "${CMAKE_SOURCE_DIR}/Minecraft.Client/${PLATFORM_NAME}/4JLibs/libs/4J_Storage.lib" - "${CMAKE_SOURCE_DIR}/Minecraft.Client/${PLATFORM_NAME}/4JLibs/libs/4J_Render_PC.lib" - ) - endif() + target_link_libraries(${target} PRIVATE + Minecraft.World + d3d11 + dxgi + d3dcompiler + XInput9_1_0 + wsock32 + dbghelp + legacy_stdio_definitions + 4JLibs.${PLATFORM_NAME}.Input + 4JLibs.${PLATFORM_NAME}.Profile + 4JLibs.${PLATFORM_NAME}.Storage + 4JLibs.${PLATFORM_NAME}.Render + ) foreach(lib IN LISTS IGGY_LIBS) target_link_libraries(${target} PRIVATE "${CMAKE_SOURCE_DIR}/Minecraft.Client/${PLATFORM_NAME}/Iggy/lib/${lib}")