Index: branches/2017Q4/emulators/rpcs3/Makefile =================================================================== --- branches/2017Q4/emulators/rpcs3/Makefile (revision 452752) +++ branches/2017Q4/emulators/rpcs3/Makefile (revision 452753) @@ -1,84 +1,85 @@ # $FreeBSD$ PORTNAME= rpcs3 DISTVERSIONPREFIX= v -DISTVERSION= 0.0.3-391 -DISTVERSIONSUFFIX= -geb8af974 +DISTVERSION= 0.0.3-469 +DISTVERSIONSUFFIX= -g96fd8556 CATEGORIES= emulators MAINTAINER= jbeich@FreeBSD.org COMMENT= PS3 emulator/debugger LICENSE= BSD3CLAUSE BSL GPLv2 MIT ZLIB LICENSE_COMB= multi -LICENSE_FILE_BSD3CLAUSE=${WRKSRC}/3rdparty/cereal/LICENSE -LICENSE_FILE_BSL= ${WRKSRC}/Utilities/LICENSE_1_0.txt -LICENSE_FILE_MIT= ${WRKSRC}/3rdparty/GSL/LICENSE -LICENSE_FILE_ZLIB= ${WRKSRC}/asmjit/LICENSE.md +LICENSE_FILE_BSD3CLAUSE=${WRKSRC_cereal}/LICENSE +LICENSE_FILE_BSL= ${WRKSRC_Optional}/LICENSE +LICENSE_FILE_MIT= ${WRKSRC_GSL}/LICENSE +LICENSE_FILE_ZLIB= ${WRKSRC_asmjit}/LICENSE.md LIB_DEPENDS= libpng.so:graphics/png \ libavcodec.so:multimedia/ffmpeg ONLY_FOR_ARCHS= amd64 ONLY_FOR_ARCHS_REASON= requires int128 and SSSE3 USE_GITHUB= yes GH_ACCOUNT= RPCS3 GH_TUPLE= RPCS3:hidapi:hidapi-0.8.0-rc1-25-gca39ce8:hidapi/3rdparty/hidapi \ RPCS3:pugixml:f205aaf:pugixml/3rdparty/pugixml \ RPCS3:yaml-cpp:release-0.5.3-62-g017626a:yamlcpp/Utilities/yaml-cpp \ + akrzemi1:Optional:f27e790:Optional/3rdparty/Optional \ kobalicek:asmjit:1370fe6:asmjit/asmjit \ Microsoft:GSL:fc5fce4:GSL/3rdparty/GSL \ USCiLab:cereal:v1.2.0:cereal/3rdparty/cereal USES= cmake compiler:c++14-lang iconv:wchar_t localbase:ldflags \ openal:soft pkgconfig USE_GL= gl glew USE_QT5= qmake_build buildtools_build core dbus gui widgets USE_XORG= x11 EXTRA_PATCHES+= ${EXTRA_PATCHES_${OPSYS}_${OSREL}} EXTRA_PATCHES_FreeBSD_10.3= ${PATCHDIR}/extra-patch-no-thread_local CMAKE_ARGS+= -DCMAKE_SKIP_RPATH=on -DUSE_SYSTEM_LIBPNG=on -DUSE_SYSTEM_FFMPEG=on CXXFLAGS+= -D_GLIBCXX_USE_C99 # XXX ports/193528 CXXFLAGS+= -Wno-macro-redefined # __STDC_*_MACROS sys/cdefs.h vs. llvm-config LDFLAGS+= -Wl,--as-needed # GLU PLIST_FILES= bin/${PORTNAME} \ share/applications/${PORTNAME}.desktop \ share/icons/hicolor/48x48/apps/${PORTNAME}.png \ share/icons/hicolor/scalable/apps/${PORTNAME}.svg \ OPTIONS_DEFINE= ALSA EVDEV GDB LLVM PULSEAUDIO VULKAN OPTIONS_DEFAULT=ALSA LLVM VULKAN .if !exists(${.CURDIR:H:H}/graphics/vulkan-sdk) OPTIONS_EXCLUDE=VULKAN # XXX ports/222175 .endif ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins ALSA_CMAKE_BOOL= USE_ALSA EVDEV_DESC= libevdev-based joystick support EVDEV_CMAKE_BOOL= USE_LIBEVDEV EVDEV_LIB_DEPENDS= libevdev.so:devel/libevdev GDB_DESC= GDB remote stub (powerpc64 target) GDB_CMAKE_BOOL= WITH_GDB LLVM_DESC= LLVM-based PPU recompiler LLVM_BUILD_DEPENDS= llvm40>0:devel/llvm40 LLVM_CMAKE_BOOL_OFF= WITHOUT_LLVM PULSEAUDIO_LIB_DEPENDS= libpulse-simple.so:audio/pulseaudio PULSEAUDIO_CMAKE_BOOL= USE_PULSE VULKAN_DESC= Vulkan renderer VULKAN_BUILD_DEPENDS= ${LOCALBASE}/lib/libglslang.a:devel/glslang VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-sdk VULKAN_CMAKE_BOOL= USE_VULKAN VULKAN_PREBUILT post-patch: @${REINPLACE_CMD} -e '/GIT_BRANCH/s/unknown/master/' \ -e '/GIT_VERSION/s/unknown/${GH_TAGNAME:C/[^-]*-//}/' \ ${WRKSRC}/${PORTNAME}/git-version.cmake .include Index: branches/2017Q4/emulators/rpcs3/distinfo =================================================================== --- branches/2017Q4/emulators/rpcs3/distinfo (revision 452752) +++ branches/2017Q4/emulators/rpcs3/distinfo (revision 452753) @@ -1,15 +1,17 @@ -TIMESTAMP = 1506612197 -SHA256 (RPCS3-rpcs3-v0.0.3-391-geb8af974_GH0.tar.gz) = 0762e86de03c2f1913bf03856c516b9e33405a3767690fa633432b892602e068 -SIZE (RPCS3-rpcs3-v0.0.3-391-geb8af974_GH0.tar.gz) = 3516587 +TIMESTAMP = 1508620480 +SHA256 (RPCS3-rpcs3-v0.0.3-469-g96fd8556_GH0.tar.gz) = a1dc3f4e6ed4b4ea2882408d6a7a658c08937829eab8bbef7396c5e502a0c53a +SIZE (RPCS3-rpcs3-v0.0.3-469-g96fd8556_GH0.tar.gz) = 3535949 SHA256 (RPCS3-hidapi-hidapi-0.8.0-rc1-25-gca39ce8_GH0.tar.gz) = e50e4f4e9035e891e16867e995f44aac87ce734a9dde169f02fc9719b2ce3642 SIZE (RPCS3-hidapi-hidapi-0.8.0-rc1-25-gca39ce8_GH0.tar.gz) = 105623 SHA256 (RPCS3-pugixml-f205aaf_GH0.tar.gz) = 3b2a7e21625d8cbeb3aa1841b8816f6cab0752e89008b9fc67a325c800f153b5 SIZE (RPCS3-pugixml-f205aaf_GH0.tar.gz) = 76332 SHA256 (RPCS3-yaml-cpp-release-0.5.3-62-g017626a_GH0.tar.gz) = 1d4b32443f137c23b68d3cb183ba6fb48eb76be2b0b30016970adff5c770d841 SIZE (RPCS3-yaml-cpp-release-0.5.3-62-g017626a_GH0.tar.gz) = 65888 +SHA256 (akrzemi1-Optional-f27e790_GH0.tar.gz) = d9f81fa3699b724812994897180365b7ee2fdef1549239d5086722bd4552baf1 +SIZE (akrzemi1-Optional-f27e790_GH0.tar.gz) = 16055 SHA256 (kobalicek-asmjit-1370fe6_GH0.tar.gz) = cc064a8e495959ee525803bd83a4f9b2b3bf6e9aacbc7538e8ac3c20fb12e83e SIZE (kobalicek-asmjit-1370fe6_GH0.tar.gz) = 447958 SHA256 (Microsoft-GSL-fc5fce4_GH0.tar.gz) = 2df1538ff240bf4dd3ef44ba8c832451376fff8e74f7734d32fc8c337557a64d SIZE (Microsoft-GSL-fc5fce4_GH0.tar.gz) = 38809 SHA256 (USCiLab-cereal-v1.2.0_GH0.tar.gz) = 1ccf3ed205a7a2f0d6a060415b123f1ae0d984cd4435db01af8de11a2eda49c1 SIZE (USCiLab-cereal-v1.2.0_GH0.tar.gz) = 299883 Index: branches/2017Q4/emulators/rpcs3/files/extra-patch-no-thread_local =================================================================== --- branches/2017Q4/emulators/rpcs3/files/extra-patch-no-thread_local (revision 452752) +++ branches/2017Q4/emulators/rpcs3/files/extra-patch-no-thread_local (revision 452753) @@ -1,95 +1,136 @@ FreeBSD 10.3 lacks __cxa_thread_atexit, so revert https://github.com/RPCS3/rpcs3/commit/c1450ad61627 --- Utilities/Log.cpp.orig 2017-09-19 12:07:07 UTC +++ Utilities/Log.cpp @@ -255,7 +255,7 @@ void logs::message::broadcast(const char* fmt, const f } // Get text - thread_local std::string text; text.clear(); + std::string text; fmt::raw_append(text, fmt, sup, args); std::string prefix = g_tls_log_prefix(); @@ -275,7 +275,7 @@ void logs::message::broadcast(const char* fmt, const f } // Store message additionally - get_logger()->messages.emplace_back(stored_message{*this, stamp, std::move(prefix), text}); + get_logger()->messages.emplace_back(stored_message{*this, stamp, std::move(prefix), std::move(text)}); } } @@ -405,7 +405,7 @@ logs::file_listener::file_listener(const std::string& void logs::file_listener::log(u64 stamp, const logs::message& msg, const std::string& prefix, const std::string& _text) { - thread_local std::string text; + std::string text; text.reserve(prefix.size() + _text.size() + 200); // Used character: U+00B7 (Middle Dot) switch (msg.sev) +--- Utilities/mutex.cpp.orig 2017-10-08 20:37:54 UTC ++++ Utilities/mutex.cpp +@@ -5,8 +5,10 @@ + #include + #include + ++#if 0 + // TLS variable for tracking owned mutexes + thread_local std::vector g_tls_locks; ++#endif + + void shared_mutex::imp_lock_shared(s64 _old) + { +@@ -258,6 +260,7 @@ bool shared_mutex::try_lock_degrade() + return m_value.compare_and_swap_test(0, c_one - c_min); + } + ++#if 0 + safe_reader_lock::safe_reader_lock(shared_mutex& mutex) + : m_mutex(mutex) + , m_is_owned(false) +@@ -332,3 +335,4 @@ safe_writer_lock::~safe_writer_lock() + + // TODO: order locks + } ++#endif +--- Utilities/mutex.h.orig 2017-10-08 20:37:54 UTC ++++ Utilities/mutex.h +@@ -177,6 +177,7 @@ class writer_lock final (public) + } + }; + ++#if 0 + // Safe reader lock. Can be recursive above other safe locks (reader or writer). + class safe_reader_lock final + { +@@ -229,3 +230,4 @@ class safe_writer_lock final (public) + + ~safe_writer_lock(); + }; ++#endif --- Utilities/types.h.orig 2017-08-24 18:20:18 UTC +++ Utilities/types.h @@ -32,6 +32,7 @@ #define SAFE_BUFFERS #define NEVER_INLINE __attribute__((noinline)) #define FORCE_INLINE __attribute__((always_inline)) inline +#define thread_local __thread #endif #define CHECK_SIZE(type, size) static_assert(sizeof(type) == size, "Invalid " #type " type size") --- rpcs3/Emu/System.cpp.orig 2017-08-24 18:20:18 UTC +++ rpcs3/Emu/System.cpp @@ -797,20 +797,26 @@ void Emulator::Stop() s32 error_code::error_report(const fmt_type_info* sup, u64 arg, const fmt_type_info* sup2, u64 arg2) { - static thread_local std::unordered_map g_tls_error_stats; - static thread_local std::string g_tls_error_str; + static thread_local std::unordered_map* g_tls_error_stats{}; + static thread_local std::string* g_tls_error_str{}; - if (g_tls_error_stats.empty()) + if (!g_tls_error_stats) { + g_tls_error_stats = new std::unordered_map; + g_tls_error_str = new std::string; + thread_ctrl::atexit([] { - for (auto&& pair : g_tls_error_stats) + for (auto&& pair : *g_tls_error_stats) { if (pair.second > 3) { LOG_ERROR(GENERAL, "Stat: %s [x%u]", pair.first, pair.second); } } + + delete g_tls_error_stats; + delete g_tls_error_str; }); } @@ -840,15 +846,15 @@ s32 error_code::error_report(const fmt_type_info* sup, } // Format log message (use preallocated buffer) - g_tls_error_str.clear(); - fmt::append(g_tls_error_str, "'%s' failed with 0x%08x%s%s%s%s", func, arg, sup ? " : " : "", std::make_pair(sup, arg), sup2 ? ", " : "", std::make_pair(sup2, arg2)); + g_tls_error_str->clear(); + fmt::append(*g_tls_error_str, "'%s' failed with 0x%08x%s%s%s%s", func, arg, sup ? " : " : "", std::make_pair(sup, arg), sup2 ? ", " : "", std::make_pair(sup2, arg2)); // Update stats and check log threshold - const auto stat = ++g_tls_error_stats[g_tls_error_str]; + const auto stat = ++(*g_tls_error_stats)[*g_tls_error_str]; if (stat <= 3) { - channel->format(level, "%s [%u]", g_tls_error_str, stat); + channel->format(level, "%s [%u]", *g_tls_error_str, stat); } return static_cast(arg); Index: branches/2017Q4 =================================================================== --- branches/2017Q4 (revision 452752) +++ branches/2017Q4 (revision 452753) Property changes on: branches/2017Q4 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r451396,451641,452036,452523,452749