folly: Update to 2025.06.16.00 (#24578)

This commit is contained in:
Алексей
2025-06-19 13:49:59 +03:00
committed by GitHub
parent 5724f4b3c0
commit fb1ae7210a
3 changed files with 3692 additions and 227 deletions

View File

@@ -3,10 +3,11 @@
_realname=folly
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=2025.05.19.00
pkgrel=2
pkgver=2025.06.16.00
pkgrel=1
pkgdesc="An open-source C++ library developed and used at Facebook (mingw-w64)"
arch=('any')
_use_nglog=yes
mingw_arch=('mingw64' 'ucrt64' 'clang64')
url='https://github.com/facebook/folly'
license=('spdx:Apache-2.0')
@@ -14,11 +15,11 @@ depends=("${MINGW_PACKAGE_PREFIX}-boost"
"${MINGW_PACKAGE_PREFIX}-bzip2"
"${MINGW_PACKAGE_PREFIX}-double-conversion"
"${MINGW_PACKAGE_PREFIX}-fmt"
"${MINGW_PACKAGE_PREFIX}-glog"
$([[ "$_use_nglog" == "yes" ]] && echo "${MINGW_PACKAGE_PREFIX}-ng-log" || echo "${MINGW_PACKAGE_PREFIX}-glog")
#"${MINGW_PACKAGE_PREFIX}-jemalloc"
#"${MINGW_PACKAGE_PREFIX}-libbacktrace" # Libraries seems not provide needed functions for symbolizer.
#"${MINGW_PACKAGE_PREFIX}-libdwarf"
#"${MINGW_PACKAGE_PREFIX}-libunwind"
"${MINGW_PACKAGE_PREFIX}-libunwind"
"${MINGW_PACKAGE_PREFIX}-libevent"
"${MINGW_PACKAGE_PREFIX}-libsodium"
"${MINGW_PACKAGE_PREFIX}-lz4"
@@ -30,15 +31,33 @@ depends=("${MINGW_PACKAGE_PREFIX}-boost"
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-fast_float")
"${MINGW_PACKAGE_PREFIX}-fast_float"
$([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] && echo "${MINGW_PACKAGE_PREFIX}-winpthreads-stub") # GCC toolchain implicitly include <pthread.h> and its defines, so it not possible to build without pthread
)
source=("https://github.com/facebook/folly/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
folly.patch)
sha256sums=('c60daf2e709e0a3fd428d09a1e3439c1836189d4248189a1a45f33500de90eac'
'0afa584acdb7405c571f9e3adbff9f476d9d91eb0100cae35fe4d0e51f6af43f')
folly.patch
folly-nglog.patch)
sha256sums=('14f391742f05d452b965447d4324ac3d9021c7c9b96230ad47b3b54e71dbffa7'
'ada968fb10e771f11e6b8e26304265ce2eb96f3072874a653fff862a443d4f5a'
'5fae2635a7df54bd912f230bbee45274c2d2e0ee8b4bc7b1350d9d1e74ec24c8')
prepare() {
cd ${_realname}-${pkgver}
patch -p1 -i ${srcdir}/folly.patch
cd ${_realname}-${pkgver}
patch -p1 -i ${srcdir}/folly.patch
if [[ "${_use_nglog}" == "yes" ]]; then
patch -p1 -i ${srcdir}/folly-nglog.patch
fi
# Use packages config scripts to properly find targets
rm -f build/fbcode_builder/CMake/FindDoubleConversion.cmake
rm -f build/fbcode_builder/CMake/FindGflags.cmake
rm -f build/fbcode_builder/CMake/FindGlog.cmake
rm -f build/fbcode_builder/CMake/FindLibevent.cmake
rm -f CMake/FindFastFloat.cmake
rm -f CMake/FindFmt.cmake
rm -f CMake/FindLZ4.cmake
rm -f CMake/FindSnappy.cmake
}
build() {

File diff suppressed because it is too large Load Diff

View File

@@ -1,39 +1,6 @@
diff -Naur folly-main-orig/CMake/FindLibJemalloc.cmake folly-main/CMake/FindLibJemalloc.cmake
--- folly-main-orig/CMake/FindLibJemalloc.cmake 1970-01-01 03:00:00.000000000 +0300
+++ folly-main/CMake/FindLibJemalloc.cmake 2025-05-21 13:01:50.340883400 +0300
@@ -0,0 +1,29 @@
+# Copyright (c) Meta Platforms, Inc. and affiliates.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+find_path(LIBJEMALLOC_INCLUDE_DIR NAMES jemalloc.h PATH_SUFFIXES jemalloc)
+mark_as_advanced(LIBJEMALLOC_INCLUDE_DIR)
+
+find_library(LIBJEMALLOC_LIBRARY NAMES jemalloc)
+mark_as_advanced(LIBJEMALLOC_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ LIBJEMALLOC
+ REQUIRED_VARS LIBJEMALLOC_LIBRARY LIBJEMALLOC_INCLUDE_DIR)
+
+if(LIBJEMALLOC_FOUND)
+ set(LIBJEMALLOC_LIBRARIES ${LIBJEMALLOC_LIBRARY})
+ set(LIBJEMALLOC_INCLUDE_DIRS ${LIBJEMALLOC_INCLUDE_DIR})
+endif()
diff -Naur folly-main-orig/CMake/FollyConfigChecks.cmake folly-main/CMake/FollyConfigChecks.cmake
--- folly-main-orig/CMake/FollyConfigChecks.cmake 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/CMake/FollyConfigChecks.cmake 2025-05-21 12:18:34.623875900 +0300
diff -Naur folly-2025.06.16.00-orig/CMake/FollyConfigChecks.cmake folly-2025.06.16.00/CMake/FollyConfigChecks.cmake
--- folly-2025.06.16.00-orig/CMake/FollyConfigChecks.cmake 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/CMake/FollyConfigChecks.cmake 2025-06-17 11:05:27.043694600 +0300
@@ -24,12 +24,6 @@
list(APPEND FOLLY_CXX_FLAGS -Wno-psabi)
endif()
@@ -47,9 +14,9 @@ diff -Naur folly-main-orig/CMake/FollyConfigChecks.cmake folly-main/CMake/FollyC
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
# clang only rejects unknown warning flags if -Werror=unknown-warning-option
# is also specified.
diff -Naur folly-main-orig/CMake/folly-config.cmake.in folly-main/CMake/folly-config.cmake.in
--- folly-main-orig/CMake/folly-config.cmake.in 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/CMake/folly-config.cmake.in 2025-05-20 21:57:30.035632300 +0300
diff -Naur folly-2025.06.16.00-orig/CMake/folly-config.cmake.in folly-2025.06.16.00/CMake/folly-config.cmake.in
--- folly-2025.06.16.00-orig/CMake/folly-config.cmake.in 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/CMake/folly-config.cmake.in 2025-06-17 11:05:27.085003500 +0300
@@ -29,10 +29,21 @@
set(FOLLY_LIBRARIES Folly::folly)
@@ -74,9 +41,9 @@ diff -Naur folly-main-orig/CMake/folly-config.cmake.in folly-main/CMake/folly-co
COMPONENTS
context
filesystem
diff -Naur folly-main-orig/CMake/folly-deps.cmake folly-main/CMake/folly-deps.cmake
--- folly-main-orig/CMake/folly-deps.cmake 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/CMake/folly-deps.cmake 2025-05-21 15:56:39.093604400 +0300
diff -Naur folly-2025.06.16.00-orig/CMake/folly-deps.cmake folly-2025.06.16.00/CMake/folly-deps.cmake
--- folly-2025.06.16.00-orig/CMake/folly-deps.cmake 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/CMake/folly-deps.cmake 2025-06-17 11:05:27.085003500 +0300
@@ -25,7 +25,7 @@
)
if("${BOOST_LINK_STATIC}" STREQUAL "auto")
@@ -95,7 +62,7 @@ diff -Naur folly-main-orig/CMake/folly-deps.cmake folly-main/CMake/folly-deps.cm
COMPONENTS
context
filesystem
@@ -45,17 +45,35 @@
@@ -45,35 +45,91 @@
thread
REQUIRED
)
@@ -104,7 +71,30 @@ diff -Naur folly-main-orig/CMake/folly-deps.cmake folly-main/CMake/folly-deps.cm
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIRS})
-find_package(DoubleConversion MODULE REQUIRED)
+option(BUILD_WITH_JEMALLOC "Add support using jemalloc" ON)
-list(APPEND FOLLY_LINK_LIBRARIES ${DOUBLE_CONVERSION_LIBRARY})
-list(APPEND FOLLY_INCLUDE_DIRECTORIES ${DOUBLE_CONVERSION_INCLUDE_DIR})
-
-find_package(FastFloat MODULE REQUIRED)
-list(APPEND FOLLY_INCLUDE_DIRECTORIES ${FASTFLOAT_INCLUDE_DIR})
-
-find_package(Gflags MODULE)
-set(FOLLY_HAVE_LIBGFLAGS ${LIBGFLAGS_FOUND})
-if(LIBGFLAGS_FOUND)
- list(APPEND FOLLY_LINK_LIBRARIES ${LIBGFLAGS_LIBRARY})
- list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBGFLAGS_INCLUDE_DIR})
- set(FOLLY_LIBGFLAGS_LIBRARY ${LIBGFLAGS_LIBRARY})
- set(FOLLY_LIBGFLAGS_INCLUDE ${LIBGFLAGS_INCLUDE_DIR})
-endif()
-
-find_package(Glog MODULE)
-set(FOLLY_HAVE_LIBGLOG ${GLOG_FOUND})
-list(APPEND FOLLY_LINK_LIBRARIES ${GLOG_LIBRARY})
-list(APPEND FOLLY_INCLUDE_DIRECTORIES ${GLOG_INCLUDE_DIR})
-
-find_package(LibEvent MODULE REQUIRED)
-list(APPEND FOLLY_LINK_LIBRARIES ${LIBEVENT_LIB})
-list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBEVENT_INCLUDE_DIR})
+option(BUILD_WITH_JEMALLOC "Add support using jemalloc" OFF)
+if (BUILD_WITH_JEMALLOC)
+ if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ CHECK_INCLUDE_FILE_CXX(malloc_np.h FOLLY_USE_JEMALLOC)
@@ -119,58 +109,159 @@ diff -Naur folly-main-orig/CMake/folly-deps.cmake folly-main/CMake/folly-deps.cm
+endif()
+
+find_package(double-conversion CONFIG REQUIRED)
+set(DOUBLE_CONVERSION_LIBRARY double-conversion::double-conversion)
list(APPEND FOLLY_LINK_LIBRARIES ${DOUBLE_CONVERSION_LIBRARY})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${DOUBLE_CONVERSION_INCLUDE_DIR})
-find_package(FastFloat MODULE REQUIRED)
-list(APPEND FOLLY_INCLUDE_DIRECTORIES ${FASTFLOAT_INCLUDE_DIR})
+if(double-conversion_FOUND)
+ if (TARGET double-conversion::double-conversion)
+ get_target_property(DOUBLE_CONVERSION_LIBRARY double-conversion::double-conversion IMPORTED_LOCATION)
+ if (NOT DOUBLE_CONVERSION_LIBRARY)
+ get_target_property(DOUBLE_CONVERSION_LIBRARY double-conversion::double-conversion IMPORTED_LOCATION_RELEASE)
+ endif ()
+ message(STATUS "double-conversion::double-conversion library: ${DOUBLE_CONVERSION_LIBRARY}")
+ endif ()
+ list(APPEND FOLLY_LINK_LIBRARIES double-conversion::double-conversion)
+ list(APPEND FOLLY_INCLUDE_DIRECTORIES ${DOUBLE_CONVERSION_INCLUDE_DIR})
+endif()
+
+find_package(FastFloat CONFIG REQUIRED)
+list(APPEND FOLLY_LINK_LIBRARIES FastFloat::fast_float)
-find_package(Gflags MODULE)
+
+set(GFLAGS_USE_TARGET_NAMESPACE ON)
+find_package(LIBGFLAGS NAMES gflags REQUIRED)
+set(LIBGFLAGS_LIBRARY gflags::gflags)
set(FOLLY_HAVE_LIBGFLAGS ${LIBGFLAGS_FOUND})
if(LIBGFLAGS_FOUND)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBGFLAGS_LIBRARY})
@@ -64,16 +82,22 @@
set(FOLLY_LIBGFLAGS_INCLUDE ${LIBGFLAGS_INCLUDE_DIR})
endif()
-find_package(Glog MODULE)
+find_package(GLOG NAMES glog REQUIRED)
+set(GLOG_LIBRARY glog::glog)
set(FOLLY_HAVE_LIBGLOG ${GLOG_FOUND})
list(APPEND FOLLY_LINK_LIBRARIES ${GLOG_LIBRARY})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${GLOG_INCLUDE_DIR})
-find_package(LibEvent MODULE REQUIRED)
+find_package(LIBEVENT NAMES Libevent REQUIRED)
+set(LIBEVENT_LIB libevent::core libevent::extra)
+if(NOT WIN32)
+ list(APPEND LIBEVENT_LIB libevent::pthreads)
+find_package(gflags REQUIRED)
+set(FOLLY_HAVE_LIBGFLAGS ${gflags_FOUND})
+if(gflags_FOUND)
+ if (TARGET gflags::gflags)
+ get_target_property(LIBGFLAGS_LIBRARY gflags::gflags IMPORTED_LOCATION)
+ if (NOT LIBGFLAGS_LIBRARY)
+ get_target_property(LIBGFLAGS_LIBRARY gflags::gflags IMPORTED_LOCATION_RELEASE)
+ endif ()
+ message(STATUS "gflags::gflags library: ${LIBGFLAGS_LIBRARY}")
+ endif ()
+ list(APPEND FOLLY_LINK_LIBRARIES gflags::gflags)
+ list(APPEND FOLLY_INCLUDE_DIRECTORIES ${gflags_INCLUDE_DIR})
+endif()
+
+find_package(glog REQUIRED)
+set(FOLLY_HAVE_LIBGLOG ${glog_FOUND})
+if(glog_FOUND)
+ if (TARGET glog::glog)
+ get_target_property(GLOG_LIBRARY glog::glog IMPORTED_LOCATION)
+ if (NOT GLOG_LIBRARY)
+ get_target_property(GLOG_LIBRARY glog::glog IMPORTED_LOCATION_RELEASE)
+ endif ()
+ message(STATUS "glog::glog library: ${GLOG_LIBRARY}")
+ endif ()
+ list(APPEND FOLLY_LINK_LIBRARIES glog::glog)
+ list(APPEND FOLLY_INCLUDE_DIRECTORIES ${GLOG_INCLUDE_DIR})
+endif()
+
+set(OPENSSL_USE_STATIC_LIBS ON)
+set(LIBEVENT_STATIC_LINK ON)
+find_package(Libevent CONFIG REQUIRED)
+set(FOLLY_HAVE_LIBEVENT ${Libevent_FOUND})
+if(Libevent_FOUND)
+ if (TARGET libevent::core)
+ get_target_property(LIBEVENT_CORE_LIBRARY libevent::core IMPORTED_LOCATION)
+ if (NOT LIBEVENT_CORE_LIBRARY)
+ get_target_property(LIBEVENT_CORE_LIBRARY libevent::core IMPORTED_LOCATION_RELEASE)
+ endif ()
+ message(STATUS "libevent::core library: ${LIBEVENT_CORE_LIBRARY}")
+ endif ()
+ set(LIBEVENT_LIBS libevent::core libevent::extra)
+ if(NOT WIN32)
+ list(APPEND LIBEVENT_LIBS libevent::pthreads)
+ endif()
+ list(APPEND FOLLY_LINK_LIBRARIES ${LIBEVENT_LIBS})
+ list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBEVENT_INCLUDE_DIR})
+endif()
list(APPEND FOLLY_LINK_LIBRARIES ${LIBEVENT_LIB})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBEVENT_INCLUDE_DIR})
find_package(ZLIB MODULE)
+set(ZLIB_LIBRARIES ZLIB::ZLIB)
set(FOLLY_HAVE_LIBZ ${ZLIB_FOUND})
if (ZLIB_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${ZLIB_INCLUDE_DIRS})
@@ -113,7 +137,8 @@
list(APPEND FOLLY_LINK_LIBRARIES ${LZ4_LIBRARY})
@@ -81,7 +137,8 @@
list(APPEND CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARIES})
endif()
-find_package(OpenSSL 1.1.1 MODULE REQUIRED)
+find_package(OpenSSL CONFIG REQUIRED)
+message(STATUS "OpenSSL library: ${OPENSSL_LIBRARIES}")
list(APPEND FOLLY_LINK_LIBRARIES ${OPENSSL_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${OPENSSL_INCLUDE_DIR})
list(APPEND CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
@@ -92,11 +149,18 @@
list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARIES})
endif()
-find_package(BZip2 MODULE)
-set(FOLLY_HAVE_LIBBZ2 ${BZIP2_FOUND})
-if (BZIP2_FOUND)
+find_package(BZip2 CONFIG)
+set(FOLLY_HAVE_LIBBZ2 ${BZip2_FOUND})
+if (BZip2_FOUND)
+ if (TARGET BZip2::BZip2)
+ get_target_property(BZIP2_LIBRARIES BZip2::BZip2 IMPORTED_LOCATION)
+ if (NOT BZIP2_LIBRARIES)
+ get_target_property(BZIP2_LIBRARIES BZip2::BZip2 IMPORTED_LOCATION_RELEASE)
+ endif ()
+ message(STATUS "BZip2::BZip2 library: ${BZIP2_LIBRARIES}")
+ endif ()
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${BZIP2_INCLUDE_DIRS})
- list(APPEND FOLLY_LINK_LIBRARIES ${BZIP2_LIBRARIES})
+ list(APPEND FOLLY_LINK_LIBRARIES BZip2::BZip2)
endif()
find_package(LibLZMA MODULE)
@@ -106,25 +170,40 @@
list(APPEND FOLLY_LINK_LIBRARIES ${LIBLZMA_LIBRARIES})
endif()
-find_package(LZ4 MODULE)
-set(FOLLY_HAVE_LIBLZ4 ${LZ4_FOUND})
-if (LZ4_FOUND)
+find_package(lz4 CONFIG)
+set(FOLLY_HAVE_LIBLZ4 ${lz4_FOUND})
+if (lz4_FOUND)
+ if (TARGET lz4::lz4)
+ get_target_property(LZ4_LIBRARY lz4::lz4 IMPORTED_LOCATION)
+ if (NOT LZ4_LIBRARY)
+ get_target_property(LZ4_LIBRARY lz4::lz4 IMPORTED_LOCATION_RELEASE)
+ endif ()
+ message(STATUS "lz4::lz4 library: ${LZ4_LIBRARY}")
+ endif ()
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LZ4_INCLUDE_DIR})
- list(APPEND FOLLY_LINK_LIBRARIES ${LZ4_LIBRARY})
+ list(APPEND FOLLY_LINK_LIBRARIES lz4::lz4)
endif()
-find_package(Zstd MODULE)
+find_package(ZSTD NAMES zstd)
+set(ZSTD_LIBRARY zstd::libzstd)
+find_package(ZSTD CONFIG COMPONENTS zstd::libzstd_static)
+set(ZSTD_LIBRARY zstd::libzstd_static)
set(FOLLY_HAVE_LIBZSTD ${ZSTD_FOUND})
if(ZSTD_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${ZSTD_INCLUDE_DIR})
@@ -174,7 +199,12 @@
list(APPEND FOLLY_LINK_LIBRARIES ${ZSTD_LIBRARY})
endif()
-find_package(Snappy MODULE)
-set(FOLLY_HAVE_LIBSNAPPY ${SNAPPY_FOUND})
-if (SNAPPY_FOUND)
+find_package(Snappy CONFIG)
+set(FOLLY_HAVE_LIBSNAPPY ${Snappy_FOUND})
+if(Snappy_FOUND)
+ if (TARGET Snappy::snappy)
+ get_target_property(SNAPPY_LIBRARY Snappy::snappy IMPORTED_LOCATION)
+ if (NOT SNAPPY_LIBRARY)
+ get_target_property(SNAPPY_LIBRARY Snappy::snappy IMPORTED_LOCATION_RELEASE)
+ endif ()
+ message(STATUS "Snappy::snappy library: ${SNAPPY_LIBRARY}")
+ endif ()
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${SNAPPY_INCLUDE_DIR})
- list(APPEND FOLLY_LINK_LIBRARIES ${SNAPPY_LIBRARY})
+ list(APPEND FOLLY_LINK_LIBRARIES Snappy::snappy)
endif()
find_package(LibDwarf)
@@ -174,7 +253,12 @@
CHECK_INCLUDE_FILE_CXX(elf.h FOLLY_HAVE_ELF)
find_package(Backtrace)
@@ -184,9 +275,27 @@ diff -Naur folly-main-orig/CMake/folly-deps.cmake folly-main/CMake/folly-deps.cm
set(FOLLY_HAVE_DWARF ${LIBDWARF_FOUND})
if (NOT WIN32 AND NOT APPLE)
set(FOLLY_USE_SYMBOLIZER ON)
diff -Naur folly-main-orig/CMakeLists.txt folly-main/CMakeLists.txt
--- folly-main-orig/CMakeLists.txt 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/CMakeLists.txt 2025-05-21 23:56:20.741478900 +0300
@@ -315,7 +399,16 @@
# Fallback on a normal search on the current system
find_package(Fmt MODULE REQUIRED)
endif()
-target_link_libraries(folly_deps INTERFACE fmt::fmt)
+if(fmt_FOUND)
+ if (TARGET fmt::fmt)
+ get_target_property(FMT_LIBRARY fmt::fmt IMPORTED_LOCATION)
+ if (NOT FMT_LIBRARY)
+ get_target_property(FMT_LIBRARY fmt::fmt IMPORTED_LOCATION_RELEASE)
+ endif ()
+ message(STATUS "fmt::fmt library: ${FMT_LIBRARY}")
+ endif ()
+ target_link_libraries(folly_deps INTERFACE fmt::fmt)
+endif()
list(REMOVE_DUPLICATES FOLLY_INCLUDE_DIRECTORIES)
target_include_directories(folly_deps INTERFACE ${FOLLY_INCLUDE_DIRECTORIES})
diff -Naur folly-2025.06.16.00-orig/CMakeLists.txt folly-2025.06.16.00/CMakeLists.txt
--- folly-2025.06.16.00-orig/CMakeLists.txt 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/CMakeLists.txt 2025-06-17 11:05:27.085003500 +0300
@@ -134,6 +134,9 @@
include(folly-deps) # Find the required packages
@@ -197,9 +306,9 @@ diff -Naur folly-main-orig/CMakeLists.txt folly-main/CMakeLists.txt
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/CMake/folly-config.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/folly/folly-config.h
diff -Naur folly-main-orig/build/fbcode_builder/CMake/FBBuildOptions.cmake folly-main/build/fbcode_builder/CMake/FBBuildOptions.cmake
--- folly-main-orig/build/fbcode_builder/CMake/FBBuildOptions.cmake 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/build/fbcode_builder/CMake/FBBuildOptions.cmake 2025-05-21 23:53:42.017222900 +0300
diff -Naur folly-2025.06.16.00-orig/build/fbcode_builder/CMake/FBBuildOptions.cmake folly-2025.06.16.00/build/fbcode_builder/CMake/FBBuildOptions.cmake
--- folly-2025.06.16.00-orig/build/fbcode_builder/CMake/FBBuildOptions.cmake 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/build/fbcode_builder/CMake/FBBuildOptions.cmake 2025-06-17 11:05:27.098901800 +0300
@@ -9,7 +9,7 @@
# is generally discouraged.
mark_as_advanced(USE_STATIC_DEPS_ON_UNIX)
@@ -209,9 +318,9 @@ diff -Naur folly-main-orig/build/fbcode_builder/CMake/FBBuildOptions.cmake folly
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE)
endif()
endfunction()
diff -Naur folly-main-orig/folly/CPortability.h folly-main/folly/CPortability.h
--- folly-main-orig/folly/CPortability.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/CPortability.h 2025-05-21 23:11:31.353889900 +0300
diff -Naur folly-2025.06.16.00-orig/folly/CPortability.h folly-2025.06.16.00/folly/CPortability.h
--- folly-2025.06.16.00-orig/folly/CPortability.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/CPortability.h 2025-06-17 11:05:27.098901800 +0300
@@ -243,7 +243,7 @@
#endif
@@ -221,9 +330,9 @@ diff -Naur folly-main-orig/folly/CPortability.h folly-main/folly/CPortability.h
#define FOLLY_ATTR_WEAK_SYMBOLS_COMPILE_TIME __attribute__((__weak__))
#else
#define FOLLY_ATTR_WEAK_SYMBOLS_COMPILE_TIME
diff -Naur folly-main-orig/folly/FileUtil.cpp folly-main/folly/FileUtil.cpp
--- folly-main-orig/folly/FileUtil.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/FileUtil.cpp 2025-05-20 22:17:26.205685300 +0300
diff -Naur folly-2025.06.16.00-orig/folly/FileUtil.cpp folly-2025.06.16.00/folly/FileUtil.cpp
--- folly-2025.06.16.00-orig/folly/FileUtil.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/FileUtil.cpp 2025-06-17 11:05:27.114607500 +0300
@@ -95,7 +95,7 @@
int fdatasyncNoInt(int fd) {
#if defined(__APPLE__)
@@ -233,9 +342,21 @@ diff -Naur folly-main-orig/folly/FileUtil.cpp folly-main/folly/FileUtil.cpp
return int(wrapNoInt(fsync, fd));
#else
return int(wrapNoInt(fdatasync, fd));
diff -Naur folly-main-orig/folly/String.cpp folly-main/folly/String.cpp
--- folly-main-orig/folly/String.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/String.cpp 2025-05-20 23:39:22.580514500 +0300
diff -Naur folly-2025.06.16.00-orig/folly/Portability.h folly-2025.06.16.00/folly/Portability.h
--- folly-2025.06.16.00-orig/folly/Portability.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/Portability.h 2025-06-17 11:05:27.098901800 +0300
@@ -656,7 +656,7 @@
#if defined(__NVCC__)
// For now, NVCC matches other compilers but does not offer coroutines.
#define FOLLY_HAS_COROUTINES 0
-#elif defined(_WIN32) && defined(__clang__) && !defined(LLVM_COROUTINES) && \
+#elif defined(_MSVC) && defined(__clang__) && !defined(LLVM_COROUTINES) && \
!defined(LLVM_COROUTINES_CPP20)
// LLVM and MSVC coroutines are ABI incompatible, so for the MSVC implementation
// of <experimental/coroutine> on Windows we *don't* have coroutines.
diff -Naur folly-2025.06.16.00-orig/folly/String.cpp folly-2025.06.16.00/folly/String.cpp
--- folly-2025.06.16.00-orig/folly/String.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/String.cpp 2025-06-17 11:05:27.114607500 +0300
@@ -504,7 +504,7 @@
// https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/strerror_r.3.html
@@ -245,9 +366,9 @@ diff -Naur folly-main-orig/folly/String.cpp folly-main/folly/String.cpp
// mingw64 has no strerror_r, but Windows has strerror_s, which C11 added
// as well. So maybe we should use this across all platforms (together
// with strerrorlen_s). Note strerror_r and _s have swapped args.
diff -Naur folly-main-orig/folly/concurrency/CacheLocality.cpp folly-main/folly/concurrency/CacheLocality.cpp
--- folly-main-orig/folly/concurrency/CacheLocality.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/concurrency/CacheLocality.cpp 2025-05-20 22:16:01.440046300 +0300
diff -Naur folly-2025.06.16.00-orig/folly/concurrency/CacheLocality.cpp folly-2025.06.16.00/folly/concurrency/CacheLocality.cpp
--- folly-2025.06.16.00-orig/folly/concurrency/CacheLocality.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/concurrency/CacheLocality.cpp 2025-06-17 11:05:27.114607500 +0300
@@ -16,7 +16,7 @@
#include <folly/concurrency/CacheLocality.h>
@@ -257,9 +378,9 @@ diff -Naur folly-main-orig/folly/concurrency/CacheLocality.cpp folly-main/folly/
#define _GNU_SOURCE 1 // for RTLD_NOLOAD
#include <dlfcn.h>
#endif
diff -Naur folly-main-orig/folly/detail/IPAddressSource.h folly-main/folly/detail/IPAddressSource.h
--- folly-main-orig/folly/detail/IPAddressSource.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/detail/IPAddressSource.h 2025-05-20 22:17:04.261353400 +0300
diff -Naur folly-2025.06.16.00-orig/folly/detail/IPAddressSource.h folly-2025.06.16.00/folly/detail/IPAddressSource.h
--- folly-2025.06.16.00-orig/folly/detail/IPAddressSource.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/detail/IPAddressSource.h 2025-06-17 11:05:27.130676100 +0300
@@ -243,7 +243,7 @@
}
@@ -269,9 +390,9 @@ diff -Naur folly-main-orig/folly/detail/IPAddressSource.h folly-main/folly/detai
const uint16_t* bytes = reinterpret_cast<const uint16_t*>(&in6Addr.u.Word);
#else
const uint16_t* bytes = reinterpret_cast<const uint16_t*>(&in6Addr.s6_addr16);
diff -Naur folly-main-orig/folly/external/farmhash/farmhash.cpp folly-main/folly/external/farmhash/farmhash.cpp
--- folly-main-orig/folly/external/farmhash/farmhash.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/external/farmhash/farmhash.cpp 2025-05-20 22:24:30.302119200 +0300
diff -Naur folly-2025.06.16.00-orig/folly/external/farmhash/farmhash.cpp folly-2025.06.16.00/folly/external/farmhash/farmhash.cpp
--- folly-2025.06.16.00-orig/folly/external/farmhash/farmhash.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/external/farmhash/farmhash.cpp 2025-06-17 11:05:27.141186500 +0300
@@ -126,7 +126,7 @@
#if defined(FARMHASH_UNKNOWN_ENDIAN) || !defined(bswap_64)
@@ -281,10 +402,10 @@ diff -Naur folly-main-orig/folly/external/farmhash/farmhash.cpp folly-main/folly
#undef bswap_32
#undef bswap_64
diff -Naur folly-main-orig/folly/lang/Exception.cpp folly-main/folly/lang/Exception.cpp
--- folly-main-orig/folly/lang/Exception.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/lang/Exception.cpp 2025-05-20 22:31:12.601395600 +0300
@@ -282,7 +282,7 @@
diff -Naur folly-2025.06.16.00-orig/folly/lang/Exception.cpp folly-2025.06.16.00/folly/lang/Exception.cpp
--- folly-2025.06.16.00-orig/folly/lang/Exception.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/lang/Exception.cpp 2025-06-17 11:05:27.162393900 +0300
@@ -283,7 +283,7 @@
#endif // defined(__FreeBSD__)
@@ -293,7 +414,7 @@ diff -Naur folly-main-orig/folly/lang/Exception.cpp folly-main/folly/lang/Except
#if defined(__clang__)
struct _s_ThrowInfo; // compiler intrinsic in msvc
@@ -299,7 +299,7 @@
@@ -300,7 +300,7 @@
void* __GetExceptionInfo(_E); // builtin
#endif
@@ -302,7 +423,7 @@ diff -Naur folly-main-orig/folly/lang/Exception.cpp folly-main/folly/lang/Except
// implementations ---
@@ -516,7 +516,7 @@
@@ -517,7 +517,7 @@
#endif // defined(__FreeBSD__)
@@ -311,7 +432,7 @@ diff -Naur folly-main-orig/folly/lang/Exception.cpp folly-main/folly/lang/Except
template <typename T>
static T* win32_decode_pointer(T* ptr) {
@@ -630,7 +630,7 @@
@@ -631,7 +631,7 @@
return nullptr;
}
@@ -320,9 +441,9 @@ diff -Naur folly-main-orig/folly/lang/Exception.cpp folly-main/folly/lang/Except
} // namespace detail
diff -Naur folly-main-orig/folly/logging/example/CMakeLists.txt folly-main/folly/logging/example/CMakeLists.txt
--- folly-main-orig/folly/logging/example/CMakeLists.txt 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/logging/example/CMakeLists.txt 2025-05-20 23:30:30.455738700 +0300
diff -Naur folly-2025.06.16.00-orig/folly/logging/example/CMakeLists.txt folly-2025.06.16.00/folly/logging/example/CMakeLists.txt
--- folly-2025.06.16.00-orig/folly/logging/example/CMakeLists.txt 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/logging/example/CMakeLists.txt 2025-06-17 11:05:27.171587300 +0300
@@ -13,7 +13,7 @@
# limitations under the License.
@@ -332,20 +453,9 @@ diff -Naur folly-main-orig/folly/logging/example/CMakeLists.txt folly-main/folly
add_library(logging_example_lib lib.cpp)
target_link_libraries(logging_example_lib folly)
diff -Naur folly-main-orig/folly/memory/Malloc.h folly-main/folly/memory/Malloc.h
--- folly-main-orig/folly/memory/Malloc.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/memory/Malloc.h 2025-05-21 22:35:25.907468900 +0300
@@ -27,7 +27,6 @@
#include <folly/Portability.h>
#include <folly/lang/Exception.h>
-#include <folly/portability/Malloc.h>
/**
* Define various MALLOCX_* macros normally provided by jemalloc. We define
diff -Naur folly-main-orig/folly/net/NetOps.h folly-main/folly/net/NetOps.h
--- folly-main-orig/folly/net/NetOps.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/net/NetOps.h 2025-05-21 12:26:34.799595000 +0300
diff -Naur folly-2025.06.16.00-orig/folly/net/NetOps.h folly-2025.06.16.00/folly/net/NetOps.h
--- folly-2025.06.16.00-orig/folly/net/NetOps.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/net/NetOps.h 2025-06-17 11:05:27.178152800 +0300
@@ -17,6 +17,7 @@
#pragma once
@@ -367,9 +477,9 @@ diff -Naur folly-main-orig/folly/net/NetOps.h folly-main/folly/net/NetOps.h
using nfds_t = int;
using sa_family_t = ADDRESS_FAMILY;
diff -Naur folly-main-orig/folly/net/detail/SocketFileDescriptorMap.cpp folly-main/folly/net/detail/SocketFileDescriptorMap.cpp
--- folly-main-orig/folly/net/detail/SocketFileDescriptorMap.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/net/detail/SocketFileDescriptorMap.cpp 2025-05-20 22:33:55.882930100 +0300
diff -Naur folly-2025.06.16.00-orig/folly/net/detail/SocketFileDescriptorMap.cpp folly-2025.06.16.00/folly/net/detail/SocketFileDescriptorMap.cpp
--- folly-2025.06.16.00-orig/folly/net/detail/SocketFileDescriptorMap.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/net/detail/SocketFileDescriptorMap.cpp 2025-06-17 11:05:27.178152800 +0300
@@ -16,7 +16,7 @@
#include <folly/net/detail/SocketFileDescriptorMap.h>
@@ -379,9 +489,9 @@ diff -Naur folly-main-orig/folly/net/detail/SocketFileDescriptorMap.cpp folly-ma
#include <shared_mutex>
#include <unordered_map>
diff -Naur folly-main-orig/folly/net/detail/SocketFileDescriptorMap.h folly-main/folly/net/detail/SocketFileDescriptorMap.h
--- folly-main-orig/folly/net/detail/SocketFileDescriptorMap.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/net/detail/SocketFileDescriptorMap.h 2025-05-20 22:34:21.297497500 +0300
diff -Naur folly-2025.06.16.00-orig/folly/net/detail/SocketFileDescriptorMap.h folly-2025.06.16.00/folly/net/detail/SocketFileDescriptorMap.h
--- folly-2025.06.16.00-orig/folly/net/detail/SocketFileDescriptorMap.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/net/detail/SocketFileDescriptorMap.h 2025-06-17 11:05:27.178152800 +0300
@@ -28,7 +28,7 @@
namespace netops {
namespace detail {
@@ -391,9 +501,9 @@ diff -Naur folly-main-orig/folly/net/detail/SocketFileDescriptorMap.h folly-main
static int close(int fd) noexcept;
static int close(SOCKET sock) noexcept;
diff -Naur folly-main-orig/folly/portability/Dirent.cpp folly-main/folly/portability/Dirent.cpp
--- folly-main-orig/folly/portability/Dirent.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Dirent.cpp 2025-05-20 22:37:01.772159400 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/Dirent.cpp folly-2025.06.16.00/folly/portability/Dirent.cpp
--- folly-2025.06.16.00-orig/folly/portability/Dirent.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Dirent.cpp 2025-06-17 11:05:27.194147700 +0300
@@ -17,6 +17,7 @@
#include <folly/portability/Dirent.h>
@@ -402,9 +512,9 @@ diff -Naur folly-main-orig/folly/portability/Dirent.cpp folly-main/folly/portabi
#include <stdlib.h>
#include <string>
diff -Naur folly-main-orig/folly/portability/Fcntl.h folly-main/folly/portability/Fcntl.h
--- folly-main-orig/folly/portability/Fcntl.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Fcntl.h 2025-05-21 09:13:03.800953900 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/Fcntl.h folly-2025.06.16.00/folly/portability/Fcntl.h
--- folly-2025.06.16.00-orig/folly/portability/Fcntl.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Fcntl.h 2025-06-17 11:05:27.194147700 +0300
@@ -60,6 +60,9 @@
#ifdef _WIN32
@@ -415,45 +525,45 @@ diff -Naur folly-main-orig/folly/portability/Fcntl.h folly-main/folly/portabilit
#else
#define FOLLY_PORT_WIN32_OPEN_BINARY 0
#endif
diff -Naur folly-main-orig/folly/portability/PThread.h folly-main/folly/portability/PThread.h
--- folly-main-orig/folly/portability/PThread.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/PThread.h 2025-05-20 22:22:18.933354700 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/PThread.h folly-2025.06.16.00/folly/portability/PThread.h
--- folly-2025.06.16.00-orig/folly/portability/PThread.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/PThread.h 2025-06-17 11:05:27.210312200 +0300
@@ -18,7 +18,7 @@
#include <folly/portability/Config.h>
-#if !defined(_WIN32)
+#if !defined(_MSC_VER)
+#if FOLLY_HAVE_PTHREAD && !defined(_MSC_VER)
#include <pthread.h>
diff -Naur folly-main-orig/folly/portability/Sched.cpp folly-main/folly/portability/Sched.cpp
--- folly-main-orig/folly/portability/Sched.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Sched.cpp 2025-05-21 12:37:07.785957100 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/Sched.cpp folly-2025.06.16.00/folly/portability/Sched.cpp
--- folly-2025.06.16.00-orig/folly/portability/Sched.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Sched.cpp 2025-06-17 11:05:27.210312200 +0300
@@ -16,7 +16,7 @@
#include <folly/portability/Sched.h>
-#ifdef _WIN32
+#ifdef _MSC_VER
+#if !FOLLY_HAVE_PTHREAD && defined(_WIN32)
#include <thread>
namespace folly {
diff -Naur folly-main-orig/folly/portability/Sched.h folly-main/folly/portability/Sched.h
--- folly-main-orig/folly/portability/Sched.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Sched.h 2025-05-21 12:37:10.761884600 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/Sched.h folly-2025.06.16.00/folly/portability/Sched.h
--- folly-2025.06.16.00-orig/folly/portability/Sched.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Sched.h 2025-06-17 11:05:27.225991300 +0300
@@ -16,7 +16,7 @@
#pragma once
-#ifndef _WIN32
+#ifndef _MSC_VER
+#if FOLLY_HAVE_PTHREAD && !defined(_MSC_VER)
#include <sched.h>
#else
#define SCHED_OTHER 0
diff -Naur folly-main-orig/folly/portability/Sockets.cpp folly-main/folly/portability/Sockets.cpp
--- folly-main-orig/folly/portability/Sockets.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Sockets.cpp 2025-05-20 23:34:05.022205900 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/Sockets.cpp folly-2025.06.16.00/folly/portability/Sockets.cpp
--- folly-2025.06.16.00-orig/folly/portability/Sockets.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Sockets.cpp 2025-06-17 11:05:27.225991300 +0300
@@ -16,7 +16,7 @@
#include <folly/portability/Sockets.h>
@@ -463,9 +573,9 @@ diff -Naur folly-main-orig/folly/portability/Sockets.cpp folly-main/folly/portab
#include <errno.h>
#include <fcntl.h>
diff -Naur folly-main-orig/folly/portability/Stdlib.cpp folly-main/folly/portability/Stdlib.cpp
--- folly-main-orig/folly/portability/Stdlib.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Stdlib.cpp 2025-05-20 22:19:19.977479900 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/Stdlib.cpp folly-2025.06.16.00/folly/portability/Stdlib.cpp
--- folly-2025.06.16.00-orig/folly/portability/Stdlib.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Stdlib.cpp 2025-06-17 11:05:27.225991300 +0300
@@ -29,6 +29,8 @@
namespace folly {
namespace portability {
@@ -492,9 +602,9 @@ diff -Naur folly-main-orig/folly/portability/Stdlib.cpp folly-main/folly/portabi
if (unsetenv(s.c_str()) != 0)
return -1;
}
diff -Naur folly-main-orig/folly/portability/Stdlib.h folly-main/folly/portability/Stdlib.h
--- folly-main-orig/folly/portability/Stdlib.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Stdlib.h 2025-05-20 22:18:38.966292700 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/Stdlib.h folly-2025.06.16.00/folly/portability/Stdlib.h
--- folly-2025.06.16.00-orig/folly/portability/Stdlib.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Stdlib.h 2025-06-17 11:05:27.241766600 +0300
@@ -62,9 +62,11 @@
#endif
@@ -507,9 +617,9 @@ diff -Naur folly-main-orig/folly/portability/Stdlib.h folly-main/folly/portabili
int setenv(const char* name, const char* value, int overwrite);
int unsetenv(const char* name);
#endif
diff -Naur folly-main-orig/folly/portability/String.cpp folly-main/folly/portability/String.cpp
--- folly-main-orig/folly/portability/String.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/String.cpp 2025-05-21 10:43:34.837969600 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/String.cpp folly-2025.06.16.00/folly/portability/String.cpp
--- folly-2025.06.16.00-orig/folly/portability/String.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/String.cpp 2025-06-17 11:05:27.241766600 +0300
@@ -38,6 +38,7 @@
memset(s, 0, n);
}
@@ -526,9 +636,9 @@ diff -Naur folly-main-orig/folly/portability/String.cpp folly-main/folly/portabi
char* strtok_r(char* str, char const* delim, char** ctx) {
return strtok_s(str, delim, ctx);
diff -Naur folly-main-orig/folly/portability/String.h folly-main/folly/portability/String.h
--- folly-main-orig/folly/portability/String.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/String.h 2025-05-21 10:43:25.880266800 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/String.h folly-2025.06.16.00/folly/portability/String.h
--- folly-2025.06.16.00-orig/folly/portability/String.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/String.h 2025-06-17 11:05:27.259769900 +0300
@@ -32,8 +32,10 @@
#ifdef _WIN32
extern "C" {
@@ -540,9 +650,9 @@ diff -Naur folly-main-orig/folly/portability/String.h folly-main/folly/portabili
char* strtok_r(char* str, char const* delim, char** ctx);
}
#endif
diff -Naur folly-main-orig/folly/portability/SysStat.h folly-main/folly/portability/SysStat.h
--- folly-main-orig/folly/portability/SysStat.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/SysStat.h 2025-05-20 22:24:06.736832100 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/SysStat.h folly-2025.06.16.00/folly/portability/SysStat.h
--- folly-2025.06.16.00-orig/folly/portability/SysStat.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/SysStat.h 2025-06-17 11:05:27.259769900 +0300
@@ -23,6 +23,7 @@
#ifdef _WIN32
#include <folly/portability/SysTypes.h>
@@ -559,9 +669,9 @@ diff -Naur folly-main-orig/folly/portability/SysStat.h folly-main/folly/portabil
// This isn't defined anywhere, so give a sane value.
#define MAXSYMLINKS 255
diff -Naur folly-main-orig/folly/portability/SysTime.cpp folly-main/folly/portability/SysTime.cpp
--- folly-main-orig/folly/portability/SysTime.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/SysTime.cpp 2025-05-20 22:30:19.798320400 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/SysTime.cpp folly-2025.06.16.00/folly/portability/SysTime.cpp
--- folly-2025.06.16.00-orig/folly/portability/SysTime.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/SysTime.cpp 2025-06-17 11:05:27.271786500 +0300
@@ -21,6 +21,8 @@
#include <cstdint>
@@ -579,9 +689,9 @@ diff -Naur folly-main-orig/folly/portability/SysTime.cpp folly-main/folly/portab
void timeradd(timeval* a, timeval* b, timeval* res) {
res->tv_sec = a->tv_sec + b->tv_sec;
diff -Naur folly-main-orig/folly/portability/SysTime.h folly-main/folly/portability/SysTime.h
--- folly-main-orig/folly/portability/SysTime.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/SysTime.h 2025-05-20 22:30:08.431176900 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/SysTime.h folly-2025.06.16.00/folly/portability/SysTime.h
--- folly-2025.06.16.00-orig/folly/portability/SysTime.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/SysTime.h 2025-06-17 11:05:27.273556100 +0300
@@ -42,7 +42,9 @@
// a global field that contains information on the current timezone.
// As such "timezone" is not a good name to use inside of C/C++ code on
@@ -592,9 +702,9 @@ diff -Naur folly-main-orig/folly/portability/SysTime.h folly-main/folly/portabil
void timeradd(timeval* a, timeval* b, timeval* res);
void timersub(timeval* a, timeval* b, timeval* res);
}
diff -Naur folly-main-orig/folly/portability/SysTypes.h folly-main/folly/portability/SysTypes.h
--- folly-main-orig/folly/portability/SysTypes.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/SysTypes.h 2025-05-20 22:15:00.197577200 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/SysTypes.h folly-2025.06.16.00/folly/portability/SysTypes.h
--- folly-2025.06.16.00-orig/folly/portability/SysTypes.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/SysTypes.h 2025-06-17 11:05:27.283343200 +0300
@@ -24,7 +24,9 @@
// This is a massive pain to have be an `int` due to the pthread implementation
// we support, but it's far more compatible with the rest of the windows world
@@ -609,17 +719,33 @@ diff -Naur folly-main-orig/folly/portability/SysTypes.h folly-main/folly/portabi
#define HAVE_MODE_T 1
// The Windows headers don't define this anywhere, nor do any of the libs
// that Folly depends on, so define it here.
+#ifdef _MSC_VER
+#ifndef _MODE_T_
using mode_t = unsigned int;
#endif
#endif
+
+#endif
diff -Naur folly-main-orig/folly/portability/Time.cpp folly-main/folly/portability/Time.cpp
--- folly-main-orig/folly/portability/Time.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Time.cpp 2025-05-20 22:42:52.370456500 +0300
@@ -287,6 +287,8 @@
diff -Naur folly-2025.06.16.00-orig/folly/portability/Time.cpp folly-2025.06.16.00/folly/portability/Time.cpp
--- folly-2025.06.16.00-orig/folly/portability/Time.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Time.cpp 2025-06-17 11:05:27.289196400 +0300
@@ -169,6 +169,7 @@
return result;
}
+#if !FOLLY_HAVE_PTHREAD
extern "C" int clock_getres(clockid_t clock_id, struct timespec* res) {
if (!res) {
errno = EFAULT;
@@ -275,6 +276,7 @@
return -1;
}
}
+#endif
#else
#error No clock_gettime(3) compatibility wrapper available for this platform.
#endif
@@ -287,6 +289,8 @@
#include <folly/portability/Windows.h>
extern "C" {
@@ -628,7 +754,7 @@ diff -Naur folly-main-orig/folly/portability/Time.cpp folly-main/folly/portabili
char* asctime_r(const tm* tm, char* buf) {
char tmpBuf[64];
if (asctime_s(tmpBuf, tm)) {
@@ -312,13 +314,6 @@
@@ -312,13 +316,6 @@
return nullptr;
}
@@ -642,7 +768,7 @@ diff -Naur folly-main-orig/folly/portability/Time.cpp folly-main/folly/portabili
int nanosleep(const struct timespec* request, struct timespec* remain) {
Sleep((DWORD)((request->tv_sec * 1000) + (request->tv_nsec / 1000000)));
if (remain != nullptr) {
@@ -327,6 +322,14 @@
@@ -327,6 +324,14 @@
}
return 0;
}
@@ -657,10 +783,21 @@ diff -Naur folly-main-orig/folly/portability/Time.cpp folly-main/folly/portabili
char* strptime(
const char* __restrict s,
diff -Naur folly-main-orig/folly/portability/Time.h folly-main/folly/portability/Time.h
--- folly-main-orig/folly/portability/Time.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Time.h 2025-05-20 22:42:39.937207500 +0300
@@ -59,11 +59,13 @@
diff -Naur folly-2025.06.16.00-orig/folly/portability/Time.h folly-2025.06.16.00/folly/portability/Time.h
--- folly-2025.06.16.00-orig/folly/portability/Time.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Time.h 2025-06-17 11:05:27.289196400 +0300
@@ -50,20 +50,24 @@
#define CLOCK_PROCESS_CPUTIME_ID 2
#define CLOCK_THREAD_CPUTIME_ID 3
+#if !FOLLY_HAVE_PTHREAD
typedef uint8_t clockid_t;
extern "C" int clock_gettime(clockid_t clk_id, struct timespec* ts);
extern "C" int clock_getres(clockid_t clk_id, struct timespec* ts);
#endif
+#endif
#ifdef _WIN32
#define TM_YEAR_BASE (1900)
extern "C" {
@@ -675,9 +812,9 @@ diff -Naur folly-main-orig/folly/portability/Time.h folly-main/folly/portability
char* strptime(
const char* __restrict buf,
const char* __restrict fmt,
diff -Naur folly-main-orig/folly/portability/Unistd.cpp folly-main/folly/portability/Unistd.cpp
--- folly-main-orig/folly/portability/Unistd.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Unistd.cpp 2025-05-20 22:38:16.870565700 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/Unistd.cpp folly-2025.06.16.00/folly/portability/Unistd.cpp
--- folly-2025.06.16.00-orig/folly/portability/Unistd.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Unistd.cpp 2025-06-17 11:05:27.299093100 +0300
@@ -255,9 +255,11 @@
return _locking(fd, cmd, len);
}
@@ -690,9 +827,9 @@ diff -Naur folly-main-orig/folly/portability/Unistd.cpp folly-main/folly/portabi
ssize_t pread(int fd, void* buf, size_t count, off_t offset) {
const bool is64Bit = false;
diff -Naur folly-main-orig/folly/portability/Unistd.h folly-main/folly/portability/Unistd.h
--- folly-main-orig/folly/portability/Unistd.h 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/portability/Unistd.h 2025-05-21 23:01:06.689277200 +0300
diff -Naur folly-2025.06.16.00-orig/folly/portability/Unistd.h folly-2025.06.16.00/folly/portability/Unistd.h
--- folly-2025.06.16.00-orig/folly/portability/Unistd.h 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/portability/Unistd.h 2025-06-17 11:05:27.305083500 +0300
@@ -59,7 +59,7 @@
// Windows is weird and doesn't actually defined these
// for the parameters to access, so we have to do it ourselves -_-...
@@ -712,9 +849,9 @@ diff -Naur folly-main-orig/folly/portability/Unistd.h folly-main/folly/portabili
ssize_t pread(int fd, void* buf, size_t count, off_t offset);
ssize_t pread64(int fd, void* buf, size_t count, off64_t offset);
ssize_t pwrite(int fd, const void* buf, size_t count, off_t offset);
diff -Naur folly-main-orig/folly/system/ThreadId.cpp folly-main/folly/system/ThreadId.cpp
--- folly-main-orig/folly/system/ThreadId.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/system/ThreadId.cpp 2025-05-21 13:10:56.580443600 +0300
diff -Naur folly-2025.06.16.00-orig/folly/system/ThreadId.cpp folly-2025.06.16.00/folly/system/ThreadId.cpp
--- folly-2025.06.16.00-orig/folly/system/ThreadId.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/system/ThreadId.cpp 2025-06-17 11:05:27.305083500 +0300
@@ -29,7 +29,7 @@
uint64_t getCurrentThreadID() {
#if defined(__APPLE__)
@@ -724,19 +861,19 @@ diff -Naur folly-main-orig/folly/system/ThreadId.cpp folly-main/folly/system/Thr
return uint64_t(GetCurrentThreadId());
#else
return uint64_t(pthread_self());
diff -Naur folly-main-orig/folly/system/ThreadName.cpp folly-main/folly/system/ThreadName.cpp
--- folly-main-orig/folly/system/ThreadName.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/system/ThreadName.cpp 2025-05-21 14:59:44.368296200 +0300
diff -Naur folly-2025.06.16.00-orig/folly/system/ThreadName.cpp folly-2025.06.16.00/folly/system/ThreadName.cpp
--- folly-2025.06.16.00-orig/folly/system/ThreadName.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/system/ThreadName.cpp 2025-06-17 11:05:27.321075500 +0300
@@ -48,6 +48,8 @@
// pthread_setname_np was introduced in Android NDK version 9
#elif defined(__ANDROID__) && __ANDROID_API__ >= 9
#define FOLLY_HAS_PTHREAD_SETNAME_NP_THREAD_NAME 1
+#elif defined(__MINGW32__)
+#elif FOLLY_HAVE_PTHREAD && defined(__MINGW32__)
+#define FOLLY_HAS_PTHREAD_SETNAME_NP_THREAD_NAME 1
#else
#define FOLLY_HAS_PTHREAD_SETNAME_NP_THREAD_NAME 0
#endif
@@ -58,27 +60,52 @@
@@ -58,24 +60,51 @@
#define FOLLY_HAS_PTHREAD_SETNAME_NP_NAME 0
#endif // defined(__APPLE__)
@@ -782,6 +919,7 @@ diff -Naur folly-main-orig/folly/system/ThreadName.cpp folly-main/folly/system/T
+ return t.id;
+}
+
+#ifdef FOLLY_HAVE_PTHREAD
pthread_t stdTidToPthreadId(std::thread::id tid) {
- static_assert(
- std::is_same<pthread_t, std::thread::native_handle_type>::value,
@@ -799,11 +937,8 @@ diff -Naur folly-main-orig/folly/system/ThreadName.cpp folly-main/folly/system/T
+ pthread_t id = reinterpret_cast<pthread_t>(h);
return id;
}
-#endif
} // namespace
@@ -235,6 +262,7 @@
#endif
@@ -235,6 +264,7 @@
TNIUnion tniUnion = {0x1000, trimmed, id, 0};
@@ -811,7 +946,7 @@ diff -Naur folly-main-orig/folly/system/ThreadName.cpp folly-main/folly/system/T
// SEH requires no use of C++ object destruction semantics in this stack
// frame.
__try {
@@ -245,20 +273,13 @@
@@ -245,20 +275,13 @@
: EXCEPTION_EXECUTE_HANDLER) {
// Swallow the exception when a debugger isn't attached.
}
@@ -835,27 +970,27 @@ diff -Naur folly-main-orig/folly/system/ThreadName.cpp folly-main/folly/system/T
// First, try the Windows 10 1607 SetThreadDescription call.
if (setThreadNameWindowsViaDescription(id, name)) {
return true;
@@ -273,7 +294,7 @@
@@ -273,7 +296,7 @@
} // namespace
bool setThreadName(std::thread::id tid, StringPiece name) {
-#ifdef _WIN32
+#ifndef FOLLY_HAVE_PTHREAD
+#if !FOLLY_HAVE_PTHREAD && defined(_WIN32)
return setThreadNameWindows(tid, name);
#else
return setThreadName(stdTidToPthreadId(tid), name);
@@ -281,7 +302,7 @@
@@ -281,7 +304,7 @@
}
bool setThreadName(pthread_t pid, StringPiece name) {
-#ifdef _WIN32
+#ifdef _MSC_VER
+#if !FOLLY_HAVE_PTHREAD && defined(_WIN32)
static_assert(
sizeof(unsigned int) == sizeof(std::thread::id),
"This assumes std::thread::id is a thin wrapper around "
diff -Naur folly-main-orig/folly/testing/TestUtil.cpp folly-main/folly/testing/TestUtil.cpp
--- folly-main-orig/folly/testing/TestUtil.cpp 2025-05-20 03:05:48.000000000 +0300
+++ folly-main/folly/testing/TestUtil.cpp 2025-05-20 23:28:03.250541600 +0300
diff -Naur folly-2025.06.16.00-orig/folly/testing/TestUtil.cpp folly-2025.06.16.00/folly/testing/TestUtil.cpp
--- folly-2025.06.16.00-orig/folly/testing/TestUtil.cpp 2025-06-16 00:19:41.000000000 +0300
+++ folly-2025.06.16.00/folly/testing/TestUtil.cpp 2025-06-17 11:05:27.321075500 +0300
@@ -146,7 +146,7 @@
namespace detail {