diff --git a/3rdparty/7zip/CMakeLists.txt b/3rdparty/7zip/CMakeLists.txt index 706d869472..a8f5d87cb3 100644 --- a/3rdparty/7zip/CMakeLists.txt +++ b/3rdparty/7zip/CMakeLists.txt @@ -59,11 +59,11 @@ if(WIN32 OR APPLE) 7zip/C/XzEnc.c 7zip/C/XzIn.c 7zip/C/ZstdDec.c) - target_include_directories(3rdparty_7zip INTERFACE + target_include_directories(3rdparty_7zip SYSTEM INTERFACE $ $) - target_include_directories(3rdparty_7zip INTERFACE 7zip) + target_include_directories(3rdparty_7zip SYSTEM INTERFACE 7zip) set_property(TARGET 3rdparty_7zip PROPERTY FOLDER "3rdparty/") diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index 324069e363..a800ba1dd5 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -35,7 +35,7 @@ if (USE_SYSTEM_FLATBUFFERS) message(FATAL_ERROR "flatc failed to regenerate flatbuffers headers.") endif() else() - target_include_directories(3rdparty_flatbuffers INTERFACE flatbuffers/include) + target_include_directories(3rdparty_flatbuffers SYSTEM INTERFACE flatbuffers/include) endif() # libPNG @@ -56,7 +56,7 @@ if (USE_SYSTEM_VULKAN_MEMORY_ALLOCATOR) add_library(3rdparty::vulkanmemoryallocator ALIAS GPUOpen::VulkanMemoryAllocator) else() add_library(3rdparty_vulkanmemoryallocator INTERFACE) - target_include_directories(3rdparty_vulkanmemoryallocator INTERFACE GPUOpen/VulkanMemoryAllocator/include) + target_include_directories(3rdparty_vulkanmemoryallocator SYSTEM INTERFACE GPUOpen/VulkanMemoryAllocator/include) add_library(3rdparty::vulkanmemoryallocator ALIAS 3rdparty_vulkanmemoryallocator) endif() @@ -111,7 +111,7 @@ if (NOT ANDROID) find_package(OpenGL REQUIRED OPTIONAL_COMPONENTS EGL) add_library(3rdparty_opengl INTERFACE) - target_include_directories(3rdparty_opengl INTERFACE GL) + target_include_directories(3rdparty_opengl SYSTEM INTERFACE GL) if (WIN32) if(NOT MSVC) @@ -204,7 +204,7 @@ if(USE_VULKAN) find_package(Wayland) if (WAYLAND_FOUND) target_include_directories(3rdparty_vulkan - INTERFACE ${WAYLAND_INCLUDE_DIR}) + SYSTEM INTERFACE ${WAYLAND_INCLUDE_DIR}) endif() endif() @@ -298,7 +298,7 @@ if(NOT ANDROID) message(STATUS "RPCS3: using shared ffmpeg") find_package(FFMPEG REQUIRED) - target_include_directories(3rdparty_ffmpeg INTERFACE ${FFMPEG_INCLUDE_DIR}) + target_include_directories(3rdparty_ffmpeg SYSTEM INTERFACE ${FFMPEG_INCLUDE_DIR}) target_link_libraries(3rdparty_ffmpeg INTERFACE ${FFMPEG_LIBRARIES}) else() message(STATUS "RPCS3: using builtin ffmpeg") @@ -328,7 +328,7 @@ if(NOT ANDROID) ${FFMPEG_LIB_SWSCALE} ${FFMPEG_LIB_SWRESAMPLE} ) - target_include_directories(3rdparty_ffmpeg INTERFACE "ffmpeg/include") + target_include_directories(3rdparty_ffmpeg SYSTEM INTERFACE "ffmpeg/include") endif() endif() diff --git a/3rdparty/SoundTouch/CMakeLists.txt b/3rdparty/SoundTouch/CMakeLists.txt index acc7d02714..75b6ca5ac9 100644 --- a/3rdparty/SoundTouch/CMakeLists.txt +++ b/3rdparty/SoundTouch/CMakeLists.txt @@ -11,11 +11,11 @@ add_library(soundtouch STATIC EXCLUDE_FROM_ALL soundtouch/source/SoundTouch/TDStretch.cpp ) -target_include_directories(soundtouch PRIVATE +target_include_directories(soundtouch SYSTEM PRIVATE soundtouch/source/SoundTouch soundtouch/include) -target_include_directories(soundtouch INTERFACE +target_include_directories(soundtouch SYSTEM INTERFACE $ $) diff --git a/3rdparty/asmjit/CMakeLists.txt b/3rdparty/asmjit/CMakeLists.txt index ae88ce2fe8..a11de388f3 100644 --- a/3rdparty/asmjit/CMakeLists.txt +++ b/3rdparty/asmjit/CMakeLists.txt @@ -9,7 +9,7 @@ set(ASMJIT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/asmjit" CACHE PATH "Location of 'asm include("${ASMJIT_DIR}/CMakeLists.txt") add_library(asmjit ${ASMJIT_SRC}) -target_include_directories(asmjit PUBLIC ${ASMJIT_DIR}/src) +target_include_directories(asmjit SYSTEM PUBLIC ${ASMJIT_DIR}/src) target_link_libraries(asmjit PRIVATE ${ASMJIT_DEPS}) # ASMJIT should have a option for disabling installing and this wouldnt diff --git a/3rdparty/discord-rpc/CMakeLists.txt b/3rdparty/discord-rpc/CMakeLists.txt index 2ad705d52c..9212ca5a60 100644 --- a/3rdparty/discord-rpc/CMakeLists.txt +++ b/3rdparty/discord-rpc/CMakeLists.txt @@ -9,7 +9,7 @@ if (USE_DISCORD_RPC AND (WIN32 OR CMAKE_SYSTEM MATCHES "Linux" OR APPLE)) set(WARNINGS_AS_ERRORS FALSE CACHE BOOL "When enabled, compiles with `-Werror` (on *nix platforms).") add_subdirectory(discord-rpc EXCLUDE_FROM_ALL) - target_include_directories(3rdparty_discordRPC INTERFACE discord-rpc/include) + target_include_directories(3rdparty_discordRPC SYSTEM INTERFACE discord-rpc/include) target_compile_definitions(3rdparty_discordRPC INTERFACE -DWITH_DISCORD_RPC) target_link_libraries(3rdparty_discordRPC INTERFACE discord-rpc) endif() diff --git a/3rdparty/feralinteractive/CMakeLists.txt b/3rdparty/feralinteractive/CMakeLists.txt index c7b136e5f0..0b1f6fc7e7 100644 --- a/3rdparty/feralinteractive/CMakeLists.txt +++ b/3rdparty/feralinteractive/CMakeLists.txt @@ -3,7 +3,7 @@ add_library(3rdparty_feralinteractive INTERFACE) if (CMAKE_SYSTEM MATCHES "Linux") - target_include_directories(3rdparty_feralinteractive INTERFACE feralinteractive/lib) + target_include_directories(3rdparty_feralinteractive SYSTEM INTERFACE feralinteractive/lib) target_compile_definitions(3rdparty_feralinteractive INTERFACE -DGAMEMODE_AVAILABLE) target_link_libraries(3rdparty_feralinteractive INTERFACE feralinteractive) endif() diff --git a/3rdparty/glslang/CMakeLists.txt b/3rdparty/glslang/CMakeLists.txt index c86d0b384c..10cdecd63b 100644 --- a/3rdparty/glslang/CMakeLists.txt +++ b/3rdparty/glslang/CMakeLists.txt @@ -7,7 +7,7 @@ if(USE_SYSTEM_GLSLANG) target_link_libraries(3rdparty_glslang INTERFACE glslang::SPIRV) get_target_property(SPIRV_INCLUDE_DIRS glslang::SPIRV INTERFACE_INCLUDE_DIRECTORIES) list(TRANSFORM SPIRV_INCLUDE_DIRS APPEND "/glslang") - target_include_directories(3rdparty_glslang INTERFACE ${SPIRV_INCLUDE_DIRS}) + target_include_directories(3rdparty_glslang SYSTEM INTERFACE ${SPIRV_INCLUDE_DIRS}) else() set(ENABLE_PCH OFF CACHE BOOL "Enables Precompiled header" FORCE) set(BUILD_EXTERNAL OFF CACHE BOOL "Build external dependencies in /External" FORCE) diff --git a/3rdparty/hidapi/CMakeLists.txt b/3rdparty/hidapi/CMakeLists.txt index 2d043d6936..cdaac856b0 100644 --- a/3rdparty/hidapi/CMakeLists.txt +++ b/3rdparty/hidapi/CMakeLists.txt @@ -4,7 +4,7 @@ if(USE_SYSTEM_HIDAPI) pkg_check_modules(hidapi-hidraw REQUIRED IMPORTED_TARGET hidapi-hidraw) add_library(3rdparty_hidapi INTERFACE) target_link_libraries(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw) - target_include_directories(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw) + target_include_directories(3rdparty_hidapi SYSTEM INTERFACE PkgConfig::hidapi-hidraw) else() set(BUILD_SHARED_LIBS FALSE CACHE BOOL "Don't build shared libs") set(HIDAPI_INSTALL_TARGETS FALSE CACHE BOOL "Don't install anything") diff --git a/3rdparty/libpng/CMakeLists.txt b/3rdparty/libpng/CMakeLists.txt index f24c2c9709..9ac9c976c4 100644 --- a/3rdparty/libpng/CMakeLists.txt +++ b/3rdparty/libpng/CMakeLists.txt @@ -6,14 +6,14 @@ if (NOT USE_SYSTEM_LIBPNG) set(PNG_TESTS OFF CACHE BOOL "Build libpng tests") set(SKIP_INSTALL_ALL ON) add_subdirectory(libpng EXCLUDE_FROM_ALL) - target_include_directories(png_static INTERFACE "${libpng_BINARY_DIR}" "${libpng_SOURCE_DIR}") + target_include_directories(png_static SYSTEM INTERFACE "${libpng_BINARY_DIR}" "${libpng_SOURCE_DIR}") set(LIBPNG_TARGET png_static PARENT_SCOPE) else() find_package(PNG REQUIRED) add_library(3rdparty_system_libpng INTERFACE) - target_include_directories(3rdparty_system_libpng INTERFACE ${PNG_INCLUDE_DIR}) + target_include_directories(3rdparty_system_libpng SYSTEM INTERFACE ${PNG_INCLUDE_DIR}) target_link_libraries(3rdparty_system_libpng INTERFACE ${PNG_LIBRARY}) target_compile_definitions(3rdparty_system_libpng INTERFACE ${PNG_DEFINITIONS}) diff --git a/3rdparty/llvm/CMakeLists.txt b/3rdparty/llvm/CMakeLists.txt index d1295886d8..a4af3b3ef5 100644 --- a/3rdparty/llvm/CMakeLists.txt +++ b/3rdparty/llvm/CMakeLists.txt @@ -107,7 +107,7 @@ if(WITH_LLVM) add_library(3rdparty_llvm INTERFACE) target_link_libraries(3rdparty_llvm INTERFACE ${LLVM_LIBS}) - target_include_directories(3rdparty_llvm INTERFACE ${LLVM_INCLUDE_DIRS}) + target_include_directories(3rdparty_llvm SYSTEM INTERFACE ${LLVM_INCLUDE_DIRS}) separate_arguments(LLVM_DEFINITIONS_LIST NATIVE_COMMAND ${LLVM_DEFINITIONS}) target_compile_definitions(3rdparty_llvm INTERFACE ${LLVM_DEFINITIONS_LIST} LLVM_AVAILABLE) diff --git a/3rdparty/miniupnp/CMakeLists.txt b/3rdparty/miniupnp/CMakeLists.txt index c40d4a5ebd..1baab6dbdd 100644 --- a/3rdparty/miniupnp/CMakeLists.txt +++ b/3rdparty/miniupnp/CMakeLists.txt @@ -3,9 +3,9 @@ if(USE_SYSTEM_MINIUPNPC) pkg_check_modules(MiniUPnPc REQUIRED IMPORTED_TARGET miniupnpc>=2.3.3) add_library(3rdparty_miniupnpc INTERFACE) target_link_libraries(3rdparty_miniupnpc INTERFACE PkgConfig::MiniUPnPc) - target_include_directories(3rdparty_miniupnpc INTERFACE PkgConfig::MiniUPnPc) + target_include_directories(3rdparty_miniupnpc SYSTEM INTERFACE PkgConfig::MiniUPnPc) list(TRANSFORM MiniUPnPc_INCLUDE_DIRS APPEND "/miniupnpc") - target_include_directories(3rdparty_miniupnpc INTERFACE ${MiniUPnPc_INCLUDE_DIRS}) + target_include_directories(3rdparty_miniupnpc SYSTEM INTERFACE ${MiniUPnPc_INCLUDE_DIRS}) else() option (UPNPC_BUILD_STATIC "Build static library" TRUE) option (UPNPC_BUILD_SHARED "Build shared library" FALSE) @@ -17,5 +17,5 @@ else() add_subdirectory(miniupnp/miniupnpc EXCLUDE_FROM_ALL) add_library(3rdparty_miniupnpc INTERFACE) target_link_libraries(3rdparty_miniupnpc INTERFACE libminiupnpc-static) - target_include_directories(3rdparty_miniupnpc INTERFACE libminiupnpc-static) + target_include_directories(3rdparty_miniupnpc SYSTEM INTERFACE libminiupnpc-static) endif() diff --git a/3rdparty/rtmidi/CMakeLists.txt b/3rdparty/rtmidi/CMakeLists.txt index b9dd286ce0..3369f78aa6 100644 --- a/3rdparty/rtmidi/CMakeLists.txt +++ b/3rdparty/rtmidi/CMakeLists.txt @@ -3,7 +3,7 @@ if(USE_SYSTEM_RTMIDI) pkg_check_modules(RtMidi REQUIRED IMPORTED_TARGET rtmidi>=6.0.0) add_library(rtmidi INTERFACE) target_link_libraries(rtmidi INTERFACE PkgConfig::RtMidi) - target_include_directories(rtmidi INTERFACE PkgConfig::RtMidi) + target_include_directories(rtmidi SYSTEM INTERFACE PkgConfig::RtMidi) else() option(RTMIDI_API_JACK "Compile with JACK support." OFF) option(RTMIDI_BUILD_TESTING "Build test programs" OFF) diff --git a/3rdparty/stblib/CMakeLists.txt b/3rdparty/stblib/CMakeLists.txt index 3426459edb..9afd906060 100644 --- a/3rdparty/stblib/CMakeLists.txt +++ b/3rdparty/stblib/CMakeLists.txt @@ -1,2 +1,2 @@ add_library(3rdparty_stblib INTERFACE) -target_include_directories(3rdparty_stblib INTERFACE stb) +target_include_directories(3rdparty_stblib SYSTEM INTERFACE stb) diff --git a/3rdparty/zlib/CMakeLists.txt b/3rdparty/zlib/CMakeLists.txt index d9dffb07be..55d7353acf 100644 --- a/3rdparty/zlib/CMakeLists.txt +++ b/3rdparty/zlib/CMakeLists.txt @@ -13,6 +13,6 @@ else() add_library(3rdparty_zlib INTERFACE) target_link_libraries(3rdparty_zlib INTERFACE zlibstatic) - target_include_directories(3rdparty_zlib INTERFACE zlib ${CMAKE_CURRENT_BINARY_DIR}/zlib) + target_include_directories(3rdparty_zlib SYSTEM INTERFACE zlib ${CMAKE_CURRENT_BINARY_DIR}/zlib) target_compile_definitions(3rdparty_zlib INTERFACE -DZLIB_CONST=1) endif() diff --git a/3rdparty/zstd/CMakeLists.txt b/3rdparty/zstd/CMakeLists.txt index 431272966d..bff61148c2 100644 --- a/3rdparty/zstd/CMakeLists.txt +++ b/3rdparty/zstd/CMakeLists.txt @@ -3,7 +3,7 @@ if(USE_SYSTEM_ZSTD) pkg_check_modules(zstd REQUIRED IMPORTED_TARGET libzstd) add_library(3rdparty_zstd INTERFACE) target_link_libraries(3rdparty_zstd INTERFACE PkgConfig::zstd) - target_include_directories(3rdparty_zstd INTERFACE PkgConfig::RtMidi) + target_include_directories(3rdparty_zstd SYSTEM INTERFACE PkgConfig::RtMidi) else() option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF) option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF) diff --git a/rpcs3/Emu/CPU/CPUTranslator.cpp b/rpcs3/Emu/CPU/CPUTranslator.cpp index d17b1ec977..7cb9186d4d 100644 --- a/rpcs3/Emu/CPU/CPUTranslator.cpp +++ b/rpcs3/Emu/CPU/CPUTranslator.cpp @@ -71,7 +71,11 @@ cpu_translator::cpu_translator(llvm::Module* _module, bool is_be) result = m_ir->CreateInsertElement(v, m_ir->CreateExtractElement(data0, m_ir->CreateExtractElement(mask, i)), i); v->addIncoming(result, loop); m_ir->CreateCondBr(m_ir->CreateICmpULT(i, m_ir->getInt32(16)), loop, next); +#if LLVM_VERSION_MAJOR >= 21 || (LLVM_VERSION_MAJOR == 20 && LLVM_VERSION_MINOR >= 1) + m_ir->SetInsertPoint(next->getFirstNonPHIIt()); +#else m_ir->SetInsertPoint(next->getFirstNonPHI()); +#endif result = m_ir->CreateSelect(m_ir->CreateICmpSLT(index, zeros), zeros, result); return result; diff --git a/rpcs3/Emu/CPU/CPUTranslator.h b/rpcs3/Emu/CPU/CPUTranslator.h index bb5b262294..c709349080 100644 --- a/rpcs3/Emu/CPU/CPUTranslator.h +++ b/rpcs3/Emu/CPU/CPUTranslator.h @@ -1149,7 +1149,11 @@ struct llvm_fshl static llvm::Function* get_fshl(llvm::IRBuilder<>* ir) { const auto _module = ir->GetInsertBlock()->getParent()->getParent(); +#if LLVM_VERSION_MAJOR >= 21 || (LLVM_VERSION_MAJOR == 20 && LLVM_VERSION_MINOR >= 1) + return llvm::Intrinsic::getOrInsertDeclaration(_module, llvm::Intrinsic::fshl, {llvm_value_t::get_type(ir->getContext())}); +#else return llvm::Intrinsic::getDeclaration(_module, llvm::Intrinsic::fshl, {llvm_value_t::get_type(ir->getContext())}); +#endif } static llvm::Value* fold(llvm::IRBuilder<>* ir, llvm::Value* v1, llvm::Value* v2, llvm::Value* v3) @@ -1221,7 +1225,11 @@ struct llvm_fshr static llvm::Function* get_fshr(llvm::IRBuilder<>* ir) { const auto _module = ir->GetInsertBlock()->getParent()->getParent(); +#if LLVM_VERSION_MAJOR >= 21 || (LLVM_VERSION_MAJOR == 20 && LLVM_VERSION_MINOR >= 1) + return llvm::Intrinsic::getOrInsertDeclaration(_module, llvm::Intrinsic::fshr, {llvm_value_t::get_type(ir->getContext())}); +#else return llvm::Intrinsic::getDeclaration(_module, llvm::Intrinsic::fshr, {llvm_value_t::get_type(ir->getContext())}); +#endif } static llvm::Value* fold(llvm::IRBuilder<>* ir, llvm::Value* v1, llvm::Value* v2, llvm::Value* v3) @@ -2220,7 +2228,11 @@ struct llvm_add_sat static llvm::Function* get_add_sat(llvm::IRBuilder<>* ir) { const auto _module = ir->GetInsertBlock()->getParent()->getParent(); +#if LLVM_VERSION_MAJOR >= 21 || (LLVM_VERSION_MAJOR == 20 && LLVM_VERSION_MINOR >= 1) + return llvm::Intrinsic::getOrInsertDeclaration(_module, intr, {llvm_value_t::get_type(ir->getContext())}); +#else return llvm::Intrinsic::getDeclaration(_module, intr, {llvm_value_t::get_type(ir->getContext())}); +#endif } llvm::Value* eval(llvm::IRBuilder<>* ir) const @@ -2303,7 +2315,11 @@ struct llvm_sub_sat static llvm::Function* get_sub_sat(llvm::IRBuilder<>* ir) { const auto _module = ir->GetInsertBlock()->getParent()->getParent(); +#if LLVM_VERSION_MAJOR >= 21 || (LLVM_VERSION_MAJOR == 20 && LLVM_VERSION_MINOR >= 1) + return llvm::Intrinsic::getOrInsertDeclaration(_module, intr, {llvm_value_t::get_type(ir->getContext())}); +#else return llvm::Intrinsic::getDeclaration(_module, intr, {llvm_value_t::get_type(ir->getContext())}); +#endif } llvm::Value* eval(llvm::IRBuilder<>* ir) const @@ -3592,7 +3608,11 @@ public: llvm::Function* get_intrinsic(llvm::Intrinsic::ID id) { const auto _module = m_ir->GetInsertBlock()->getParent()->getParent(); +#if LLVM_VERSION_MAJOR >= 21 || (LLVM_VERSION_MAJOR == 20 && LLVM_VERSION_MINOR >= 1) + return llvm::Intrinsic::getOrInsertDeclaration(_module, id, {get_type()...}); +#else return llvm::Intrinsic::getDeclaration(_module, id, {get_type()...}); +#endif } template diff --git a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp index 989ba2e84f..eb44289320 100644 --- a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp @@ -2617,7 +2617,11 @@ public: { if (b2 != bqbi) { +#if LLVM_VERSION_MAJOR >= 21 || (LLVM_VERSION_MAJOR == 20 && LLVM_VERSION_MINOR >= 1) + auto ins = &*b2->block->getFirstNonPHIIt(); +#else auto ins = b2->block->getFirstNonPHI(); +#endif if (b2->bb->preds.size() == 1) {