Skip to content

Commit d2a08ea

Browse files
committed
Use fetchcontent for xsimd
1 parent 3f4a04e commit d2a08ea

1 file changed

Lines changed: 20 additions & 17 deletions

File tree

cpp/cmake_modules/ThirdpartyToolchain.cmake

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2822,28 +2822,31 @@ if(ARROW_WITH_RAPIDJSON)
28222822
FALSE)
28232823
endif()
28242824

2825-
macro(build_xsimd)
2825+
function(build_xsimd)
2826+
list(APPEND CMAKE_MESSAGE_INDENT "xsimd: ")
28262827
message(STATUS "Building xsimd from source")
2827-
set(XSIMD_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/xsimd_ep/src/xsimd_ep-install")
2828-
set(XSIMD_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${XSIMD_PREFIX}")
28292828

2830-
externalproject_add(xsimd_ep
2831-
${EP_COMMON_OPTIONS}
2832-
PREFIX "${CMAKE_BINARY_DIR}"
2833-
URL ${XSIMD_SOURCE_URL}
2834-
URL_HASH "SHA256=${ARROW_XSIMD_BUILD_SHA256_CHECKSUM}"
2835-
CMAKE_ARGS ${XSIMD_CMAKE_ARGS})
2836-
2837-
set(XSIMD_INCLUDE_DIR "${XSIMD_PREFIX}/include")
2838-
# The include directory must exist before it is referenced by a target.
2839-
file(MAKE_DIRECTORY "${XSIMD_INCLUDE_DIR}")
2829+
fetchcontent_declare(xsimd
2830+
${FC_DECLARE_COMMON_OPTIONS} OVERRIDE_FIND_PACKAGE
2831+
URL ${XSIMD_SOURCE_URL}
2832+
URL_HASH "SHA256=${ARROW_XSIMD_BUILD_SHA256_CHECKSUM}")
2833+
fetchcontent_makeavailable(xsimd)
28402834

2835+
set(xsimd_INCLUDE_DIR "${xsimd_SOURCE_DIR}/include")
28412836
add_library(arrow::xsimd INTERFACE IMPORTED)
2842-
target_include_directories(arrow::xsimd INTERFACE "${XSIMD_INCLUDE_DIR}")
2843-
add_dependencies(arrow::xsimd xsimd_ep)
2837+
target_include_directories(arrow::xsimd INTERFACE "${xsimd_INCLUDE_DIR}")
28442838

2845-
set(XSIMD_VENDORED TRUE)
2846-
endmacro()
2839+
set(XSIMD_VENDORED
2840+
TRUE
2841+
PARENT_SCOPE)
2842+
set(xsimd_INCLUDE_DIR
2843+
"${xsimd_INCLUDE_DIR}"
2844+
PARENT_SCOPE)
2845+
set(xsimd_FOUND
2846+
TRUE
2847+
PARENT_SCOPE)
2848+
list(POP_BACK CMAKE_MESSAGE_INDENT)
2849+
endfunction()
28472850

28482851
# Xsimd is mandatory as its CPU feature detection is the basis for Arrow CpuInfo
28492852
resolve_dependency(xsimd

0 commit comments

Comments
 (0)