Implement __chkstk for arm64

Lifted from a previously built SDL3.dll
This commit is contained in:
Anonymous Maarten
2024-12-28 14:00:20 +01:00
committed by Anonymous Maarten
parent 578ac0ef52
commit 4fbf59ac3a
4 changed files with 47 additions and 13 deletions

View File

@@ -505,9 +505,14 @@ if(MSVC AND TARGET SDL3-shared AND NOT SDL_LIBC)
target_compile_options(SDL3-shared PRIVATE "$<$<COMPILE_LANGUAGE:ASM_MASM>:/nologo>")
set_property(SOURCE "${asm_src}" PROPERTY LANGUAGE "ASM_MASM")
target_sources(SDL3-shared PRIVATE "${asm_src}")
elseif(SDL_CPU_ARM32 OR SDL_CPU_ARM64)
# FIXME: ARM assembler (armasm.exe/armasm64.exe) is NOT ASM_MASM, and does currently not work with CMake
# (https://gitlab.kitware.com/cmake/cmake/-/issues/18912)
elseif(SDL_CPU_ARM64)
enable_language(ASM_MARMASM)
set(asm_src "${SDL3_SOURCE_DIR}/src/stdlib/SDL_mslibc_arm64.masm")
target_compile_options(SDL3-shared PRIVATE "$<$<COMPILE_LANGUAGE:ASM_MARMASM>:/nologo>")
set_property(SOURCE "${asm_src}" PROPERTY LANGUAGE "ASM_MARMASM")
target_sources(SDL3-shared PRIVATE "${asm_src}")
elseif(SDL_CPU_ARM32)
# FIXME
endif()
endif()
@@ -3388,6 +3393,17 @@ if(SDL_SHARED)
# (__rt_sdiv, __rt_udiv, __rt_sdiv64, _rt_udiv64, __dtou64, __u64tod, __i64tos)
target_link_libraries(SDL3-shared PRIVATE msvcrt.lib)
endif()
find_library(HAVE_ONECORE_LIB NAMES "onecore.lib")
if(HAVE_ONECORE_LIB)
# SDL_malloc.c: __imp_MapViewOfFileNuma2 referenced in function MapViewOfFile2
target_link_libraries(SDL3-shared PRIVATE onecore.lib)
endif()
find_library(HAVE_VOLATILEACCESSU_LIB NAMES "volatileaccessu.lib")
if(HAVE_VOLATILEACCESSU_LIB)
# SDL_malloc.c : RtlSetVolatileMemory referenced in function RtlFillVolatileMemory
# SDL_malloc.c : RtlFillDeviceMemory referenced in function RtlZeroDeviceMemory
target_link_libraries(SDL3-shared PRIVATE volatileaccessu.lib)
endif()
endif()
if(HAS_Q_NO_USE_LIBIRC)
target_compile_options(SDL3-shared PRIVATE /Q_no-use-libirc)