Files
openRuyi/SPECS/arrow/0001-use-system-mimalloc-shared-library.patch
2026-03-18 09:16:00 +00:00

86 lines
3.4 KiB
Diff

--- arrow-apache-arrow-23.0.1/cpp/cmake_modules/ThirdpartyToolchain.cmake.orig
+++ arrow-apache-arrow-23.0.1/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -2321,72 +2321,21 @@
if(ARROW_MIMALLOC)
if(NOT ARROW_ENABLE_THREADING)
message(FATAL_ERROR "Can't use mimalloc with ARROW_ENABLE_THREADING=OFF")
- endif()
-
- message(STATUS "Building (vendored) mimalloc from source")
- # We only use a vendored mimalloc as we want to control its build options.
-
- set(MIMALLOC_LIB_BASE_NAME "mimalloc")
- if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG")
- set(MIMALLOC_LIB_BASE_NAME "${MIMALLOC_LIB_BASE_NAME}-${LOWERCASE_BUILD_TYPE}")
endif()
- set(MIMALLOC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/mimalloc_ep/src/mimalloc_ep")
- set(MIMALLOC_INCLUDE_DIR "${MIMALLOC_PREFIX}/include")
- set(MIMALLOC_STATIC_LIB
- "${MIMALLOC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${MIMALLOC_LIB_BASE_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
- )
+ message(STATUS "Using system mimalloc shared library")
+ find_package(mimalloc REQUIRED)
- set(MIMALLOC_C_FLAGS ${EP_C_FLAGS})
- if(MINGW)
- # Workaround https://github.com/microsoft/mimalloc/issues/910 on RTools40
- set(MIMALLOC_C_FLAGS "${MIMALLOC_C_FLAGS} -DERROR_COMMITMENT_MINIMUM=635")
+ if(NOT TARGET mimalloc::mimalloc)
+ add_library(mimalloc::mimalloc SHARED IMPORTED)
+ find_library(MIMALLOC_LIB mimalloc)
+ find_path(MIMALLOC_INCLUDE_DIR mimalloc.h)
+ set_target_properties(mimalloc::mimalloc PROPERTIES
+ IMPORTED_LOCATION "${MIMALLOC_LIB}")
+ target_include_directories(mimalloc::mimalloc INTERFACE "${MIMALLOC_INCLUDE_DIR}")
endif()
- set(MIMALLOC_PATCH_COMMAND "")
- if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG")
- find_program(PATCH patch REQUIRED)
- set(MIMALLOC_PATCH_COMMAND ${PATCH} -p1 -i
- ${CMAKE_CURRENT_LIST_DIR}/mimalloc-1138.patch)
- endif()
-
- set(MIMALLOC_CMAKE_ARGS
- ${EP_COMMON_CMAKE_ARGS}
- "-DCMAKE_C_FLAGS=${MIMALLOC_C_FLAGS}"
- "-DCMAKE_INSTALL_PREFIX=${MIMALLOC_PREFIX}"
- -DMI_INSTALL_TOPLEVEL=ON
- -DMI_OVERRIDE=OFF
- -DMI_LOCAL_DYNAMIC_TLS=ON
- -DMI_BUILD_OBJECT=OFF
- -DMI_BUILD_SHARED=OFF
- -DMI_BUILD_TESTS=OFF
- # GH-47229: Force mimalloc to generate armv8.0 binary
- -DMI_NO_OPT_ARCH=ON)
-
- externalproject_add(mimalloc_ep
- ${EP_COMMON_OPTIONS}
- URL ${MIMALLOC_SOURCE_URL}
- URL_HASH "SHA256=${ARROW_MIMALLOC_BUILD_SHA256_CHECKSUM}"
- PATCH_COMMAND ${MIMALLOC_PATCH_COMMAND}
- CMAKE_ARGS ${MIMALLOC_CMAKE_ARGS}
- BUILD_BYPRODUCTS "${MIMALLOC_STATIC_LIB}")
-
- file(MAKE_DIRECTORY ${MIMALLOC_INCLUDE_DIR})
-
- add_library(mimalloc::mimalloc STATIC IMPORTED)
- set_target_properties(mimalloc::mimalloc PROPERTIES IMPORTED_LOCATION
- "${MIMALLOC_STATIC_LIB}")
- target_include_directories(mimalloc::mimalloc BEFORE
- INTERFACE "${MIMALLOC_INCLUDE_DIR}")
- target_link_libraries(mimalloc::mimalloc INTERFACE Threads::Threads)
- if(WIN32)
- target_link_libraries(mimalloc::mimalloc INTERFACE "bcrypt.lib" "psapi.lib")
- endif()
- add_dependencies(mimalloc::mimalloc mimalloc_ep)
-
- list(APPEND ARROW_BUNDLED_STATIC_LIBS mimalloc::mimalloc)
-
- set(mimalloc_VENDORED TRUE)
+ set(mimalloc_VENDORED FALSE)
endif()
# ----------------------------------------------------------------------