Skip to content

Commit fd44d07

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

1 file changed

Lines changed: 21 additions & 17 deletions

File tree

cpp/cmake_modules/ThirdpartyToolchain.cmake

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2822,28 +2822,32 @@ 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+
prepare_fetchcontent()
2830+
fetchcontent_declare(xsimd
2831+
${FC_DECLARE_COMMON_OPTIONS} OVERRIDE_FIND_PACKAGE
2832+
URL ${XSIMD_SOURCE_URL}
2833+
URL_HASH "SHA256=${ARROW_XSIMD_BUILD_SHA256_CHECKSUM}")
2834+
fetchcontent_makeavailable(xsimd)
28402835

2836+
set(xsimd_INCLUDE_DIR "${xsimd_SOURCE_DIR}/include")
28412837
add_library(arrow::xsimd INTERFACE IMPORTED)
2842-
target_include_directories(arrow::xsimd INTERFACE "${XSIMD_INCLUDE_DIR}")
2843-
add_dependencies(arrow::xsimd xsimd_ep)
2838+
target_include_directories(arrow::xsimd INTERFACE "${xsimd_INCLUDE_DIR}")
28442839

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

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

0 commit comments

Comments
 (0)