1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
Description: Use Debian's system mimalloc instead of vendoring.
Forwarded: not-needed
Index: arrow/cpp/cmake_modules/ThirdpartyToolchain.cmake
===================================================================
--- arrow.orig/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ arrow/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -2323,70 +2323,9 @@ if(ARROW_MIMALLOC)
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}"
- )
-
- 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")
- 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)
+ find_package(mimalloc REQUIRED)
+ add_library(mimalloc::mimalloc ALIAS mimalloc)
+ list(APPEND ARROW_SHARED_LINK_LIBS mimalloc::mimalloc)
endif()
# ----------------------------------------------------------------------
|