several fixes (#112)

* updated fmt

* submodules updated

* fixed _TIMESPEC_DEFINED for winpthreads under windows

* fixed sdl3 under qt

* virtual_memory: Ensure mapped addresses stay inside the user area

* Fixes LLE Libc crashing on linux

---------

Co-authored-by: GPUCode <geoster3d@gmail.com>
This commit is contained in:
georgemoralis 2024-04-13 22:37:21 +03:00 committed by GitHub
parent 5ed4891a1f
commit e99129d72f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 20 additions and 26 deletions

8
.gitmodules vendored
View File

@ -1,7 +1,3 @@
[submodule "third-party/fmt"]
path = third-party/fmt
url = https://github.com/fmtlib/fmt.git
shallow = true
[submodule "third-party/magic_enum"] [submodule "third-party/magic_enum"]
path = third-party/magic_enum path = third-party/magic_enum
url = https://github.com/Neargye/magic_enum.git url = https://github.com/Neargye/magic_enum.git
@ -47,4 +43,6 @@
[submodule "externals/sdl3"] [submodule "externals/sdl3"]
path = externals/sdl3 path = externals/sdl3
url = https://github.com/shadps4-emu/ext-SDL.git url = https://github.com/shadps4-emu/ext-SDL.git
[submodule "externals/fmt"]
path = externals/fmt
url = https://github.com/shadps4-emu/ext-fmt.git

View File

@ -14,12 +14,6 @@ project(shadps4)
option(ENABLE_QT_GUI "Enable the Qt GUI. If not selected then the emulator uses a minimal SDL-based UI instead" OFF) option(ENABLE_QT_GUI "Enable the Qt GUI. If not selected then the emulator uses a minimal SDL-based UI instead" OFF)
if(ENABLE_QT_GUI)
find_package(Qt6 REQUIRED COMPONENTS Widgets Concurrent)
qt_standard_project_setup()
set(CMAKE_AUTORCC ON)
endif()
# This function should be passed a list of all files in a target. It will automatically generate # This function should be passed a list of all files in a target. It will automatically generate
# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the # file groups following the directory hierarchy, so that the layout of the files in IDEs matches the
# one in the filesystem. # one in the filesystem.
@ -93,6 +87,12 @@ add_subdirectory(externals)
add_subdirectory(third-party) add_subdirectory(third-party)
include_directories(src) include_directories(src)
if(ENABLE_QT_GUI)
find_package(Qt6 REQUIRED COMPONENTS Widgets Concurrent)
qt_standard_project_setup()
set(CMAKE_AUTORCC ON)
endif()
set(AUDIO_CORE src/audio_core/sdl_audio.cpp set(AUDIO_CORE src/audio_core/sdl_audio.cpp
src/audio_core/sdl_audio.h src/audio_core/sdl_audio.h
) )
@ -331,7 +331,7 @@ endif()
create_target_directory_groups(shadps4) create_target_directory_groups(shadps4)
target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11) target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 SDL3-shared)
target_link_libraries(shadps4 PRIVATE discord-rpc vulkan-1 xxhash Zydis) target_link_libraries(shadps4 PRIVATE discord-rpc vulkan-1 xxhash Zydis)
if(NOT ENABLE_QT_GUI) if(NOT ENABLE_QT_GUI)
@ -352,6 +352,7 @@ if (WIN32)
target_link_libraries(shadps4 PRIVATE mincore winpthread clang_rt.builtins-x86_64.lib) target_link_libraries(shadps4 PRIVATE mincore winpthread clang_rt.builtins-x86_64.lib)
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS) add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS)
add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN) add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN)
add_definitions(-D_TIMESPEC_DEFINED) #needed for conflicts with time.h of windows.h
endif() endif()
if(WIN32) if(WIN32)
@ -373,12 +374,10 @@ add_custom_command(TARGET shadps4 POST_BUILD
$<TARGET_FILE_DIR:shadps4> $<TARGET_FILE_DIR:shadps4>
) )
if(NOT ENABLE_QT_GUI)
add_custom_command(TARGET shadps4 POST_BUILD add_custom_command(TARGET shadps4 POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:SDL3-shared> $<TARGET_FILE:SDL3-shared>
$<TARGET_FILE_DIR:shadps4>) $<TARGET_FILE_DIR:shadps4>)
endif()
if (WIN32) if (WIN32)
add_custom_command(TARGET shadps4 POST_BUILD add_custom_command(TARGET shadps4 POST_BUILD

View File

@ -6,6 +6,9 @@ if (MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS) add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS)
endif() endif()
# fmtlib
add_subdirectory(fmt EXCLUDE_FROM_ALL)
# Discord-RPC # Discord-RPC
set(BUILD_EXAMPLES OFF CACHE BOOL "") set(BUILD_EXAMPLES OFF CACHE BOOL "")
add_subdirectory(discord-rpc EXCLUDE_FROM_ALL) add_subdirectory(discord-rpc EXCLUDE_FROM_ALL)
@ -30,7 +33,5 @@ set(WITH_NEW_STRATEGIES ON)
set(WITH_NATIVE_INSTRUCTIONS ON) set(WITH_NATIVE_INSTRUCTIONS ON)
add_subdirectory(zlib-ng) add_subdirectory(zlib-ng)
if(NOT ENABLE_QT_GUI)
# SDL3 # SDL3
add_subdirectory(sdl3 EXCLUDE_FROM_ALL) add_subdirectory(sdl3 EXCLUDE_FROM_ALL)
endif()

@ -1 +1 @@
Subproject commit a99c80c26686e44eddf0432140ae397f3efbd0b3 Subproject commit 19cd13af5f7fa4904b174b81e98852283dbe8c1f

1
externals/fmt vendored Submodule

@ -0,0 +1 @@
Subproject commit aa52eb765dec0eb67fab4b035a4a05b82346c8f5

2
externals/sdl3 vendored

@ -1 +1 @@
Subproject commit c8a066019b686351afc614a44a2111111c42d697 Subproject commit cbb3c69cb0d771cdd221339aa1a064c55ec6e67d

2
externals/zlib-ng vendored

@ -1 +1 @@
Subproject commit af8169a724bd607e4e8c7de2a705ab17206217d6 Subproject commit 3f35bfccff2d1dacdfe9844712be1e042d028700

View File

@ -2,7 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#define _TIMESPEC_DEFINED
#include <pthread.h> #include <pthread.h>
#include "common/types.h" #include "common/types.h"

View File

@ -2,7 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#define _TIMESPEC_DEFINED
#include <atomic> #include <atomic>
#include <mutex> #include <mutex>

View File

@ -170,7 +170,8 @@ u64 memory_alloc_aligned(u64 address, u64 size, MemoryMode mode, u64 alignment)
} }
return ptr; return ptr;
#else #else
void* hint_address = reinterpret_cast<void*>(AlignUp(address, alignment)); void* hint_address = address == 0 ? reinterpret_cast<void*>(USER_MIN)
: reinterpret_cast<void*>(AlignUp(address, alignment));
void* ptr = mmap(hint_address, size, convertMemoryMode(mode), MAP_ANON | MAP_PRIVATE, -1, 0); void* ptr = mmap(hint_address, size, convertMemoryMode(mode), MAP_ANON | MAP_PRIVATE, -1, 0);
ASSERT(ptr != MAP_FAILED); ASSERT(ptr != MAP_FAILED);
return reinterpret_cast<u64>(ptr); return reinterpret_cast<u64>(ptr);

View File

@ -6,9 +6,6 @@ if (MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS) add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS)
endif() endif()
# fmtlib
add_subdirectory(fmt EXCLUDE_FROM_ALL)
# MagicEnum # MagicEnum
add_subdirectory(magic_enum EXCLUDE_FROM_ALL) add_subdirectory(magic_enum EXCLUDE_FROM_ALL)

1
third-party/fmt vendored

@ -1 +0,0 @@
Subproject commit 8e42eef4950feb5d2b76574a9cd2591dfaae2449