Skip to content

Commit

Permalink
Fix finding the system xml2
Browse files Browse the repository at this point in the history
  • Loading branch information
Tom-Newton committed Aug 7, 2023
1 parent fc6cda5 commit 0555db0
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 29 deletions.
58 changes: 32 additions & 26 deletions cpp/cmake_modules/ThirdpartyToolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ set(ARROW_THIRDPARTY_DEPENDENCIES
xsimd
ZLIB
zstd
xml2
LibXml2
)

# For backward compatibility. We use "BOOST_SOURCE" if "Boost_SOURCE"
Expand Down Expand Up @@ -216,8 +216,8 @@ macro(build_dependency DEPENDENCY_NAME)
build_zstd()
elseif("${DEPENDENCY_NAME}" STREQUAL "AZURE_SDK")
build_azuresdk()
elseif("${DEPENDENCY_NAME}" STREQUAL "xml2")
build_xml2()
elseif("${DEPENDENCY_NAME}" STREQUAL "LibXml2")
build_libxml2()
else()
message(FATAL_ERROR "Unknown thirdparty dependency to build: ${DEPENDENCY_NAME}")
endif()
Expand All @@ -237,6 +237,7 @@ macro(provide_find_module PACKAGE_NAME ARROW_CMAKE_PACKAGE_NAME)
endmacro()

macro(resolve_dependency DEPENDENCY_NAME)
message(STATUS "Resolving dependency ${DEPENDENCY_NAME}")
set(options)
set(one_value_args
ARROW_CMAKE_PACKAGE_NAME
Expand Down Expand Up @@ -287,12 +288,15 @@ macro(resolve_dependency DEPENDENCY_NAME)
if(COMPATIBLE)
set(${DEPENDENCY_NAME}_SOURCE "SYSTEM")
else()
message(STATUS "Using bundled ${DEPENDENCY_NAME}")
build_dependency(${DEPENDENCY_NAME})
set(${DEPENDENCY_NAME}_SOURCE "BUNDLED")
endif()
elseif(${DEPENDENCY_NAME}_SOURCE STREQUAL "BUNDLED")
message(STATUS "Using bundled2 ${DEPENDENCY_NAME}")
build_dependency(${DEPENDENCY_NAME})
elseif(${DEPENDENCY_NAME}_SOURCE STREQUAL "SYSTEM")
message(STATUS "Using system ${DEPENDENCY_NAME}, ${FIND_PACKAGE_ARGUMENTS}")
find_package(${FIND_PACKAGE_ARGUMENTS} REQUIRED)
if(ARG_FORCE_ANY_NEWER_VERSION AND ARG_REQUIRED_VERSION)
if(${${PACKAGE_NAME}_VERSION} VERSION_LESS ${ARG_REQUIRED_VERSION})
Expand Down Expand Up @@ -379,7 +383,7 @@ endif()
# Enable Azure
if(ARROW_AZURE)
set(ARROW_WITH_AZURE_SDK ON)
set(ARROW_WITH_XML2 ON)
set(ARROW_WITH_LIBXML2 ON)
endif()

if(ARROW_JSON)
Expand Down Expand Up @@ -693,11 +697,11 @@ else()
)
endif()

if(DEFINED ENV{ARROW_XML2_URL})
set(XML2_SOURCE_URL "$ENV{ARROW_XML2_URL}")
if(DEFINED ENV{ARROW_LIBXML2_URL})
set(LIBXML2_SOURCE_URL "$ENV{ARROW_LIBXML2_URL}")
else()
set_urls(XML2_SOURCE_URL
"https://github.com/GNOME/libxml2/archive/refs/tags/${ARROW_XML2_BUILD_VERSION}.tar.gz"
set_urls(LIBXML2_SOURCE_URL
"https://github.com/GNOME/libxml2/archive/refs/tags/${ARROW_LIBXML2_BUILD_VERSION}.tar.gz"
)
endif()

Expand Down Expand Up @@ -5072,11 +5076,11 @@ endif()
# ----------------------------------------------------------------------
# Azure SDK and dependencies

macro(build_xml2)
macro(build_libxml2)
message(STATUS "Building xml2 from source")
# "Build" xml2
set(XML2_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/xml2_ep-install")
set(XML2_INCLUDE_DIR "${XML2_PREFIX}/include")
# "Build" LibXml2
set(LIBXML2_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/xml2_ep-install")
set(LIBXML2_INCLUDE_DIR "${LIBXML2_PREFIX}/include")

set(XML2_CMAKE_ARGS
${EP_COMMON_CMAKE_ARGS}
Expand All @@ -5090,33 +5094,35 @@ macro(build_xml2)
-DBUILD_SHARED_LIBS=OFF)

set(_XML2_STATIC_LIBRARY
"${XML2_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}xml2${CMAKE_STATIC_LIBRARY_SUFFIX}"
"${LIBXML2_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}xml2${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
set(XML2_BUILD_BYPRODUCTS ${_XML2_STATIC_LIBRARY})

externalproject_add(xml2_ep
externalproject_add(libxml2_ep
${EP_LOG_OPTIONS}
INSTALL_DIR ${XML2_PREFIX}
URL ${XML2_SOURCE_URL}
URL_HASH "SHA256=${ARROW_XML2_BUILD_SHA256_CHECKSUM}"
INSTALL_DIR ${LIBXML2_PREFIX}
URL ${LIBXML2_SOURCE_URL}
URL_HASH "SHA256=${ARROW_LIBXML2_BUILD_SHA256_CHECKSUM}"
CMAKE_ARGS ${XML2_CMAKE_ARGS}
BUILD_BYPRODUCTS ${XML2_BUILD_BYPRODUCTS})

# Work around https://gitlab.kitware.com/cmake/cmake/issues/15052
file(MAKE_DIRECTORY "${XML2_INCLUDE_DIR}")
file(MAKE_DIRECTORY "${LIBXML2_INCLUDE_DIR}")
add_library(LibXml2::LibXml2 STATIC IMPORTED)
set_target_properties(LibXml2::LibXml2
PROPERTIES IMPORTED_LOCATION ${_XML2_STATIC_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES
"${XML2_INCLUDE_DIR}")
"${LIBXML2_INCLUDE_DIR}")
add_dependencies(LibXml2::LibXml2 xml2_ep)
set(XML2_VENDORED TRUE)
set(LIBXML2_VENDORED TRUE)
endmacro()
if(ARROW_WITH_XML2)
resolve_dependency(xml2)
get_target_property(xml2_INCLUDE_DIR LibXml2::LibXml2
if(ARROW_WITH_LIBXML2)
message(STATUS "Building LibXml2 from source")
resolve_dependency(LibXml2)
message(STATUS "Resolved LibXml2")
get_target_property(LIBXML2_INCLUDE_DIR LibXml2::LibXml2
INTERFACE_INCLUDE_DIRECTORIES)
message(STATUS "Found xml2 headers: ${xml2_INCLUDE_DIR}")
message(STATUS "Found xml2 headers: ${LIBXML2_INCLUDE_DIR}")
endif()

macro(build_azuresdk)
Expand All @@ -5130,8 +5136,8 @@ macro(build_azuresdk)
${ARROW_OPENSSL_REQUIRED_VERSION})
endif()

if(XML2_VENDORED)
add_dependencies(azure_sdk_dependencies xml2_ep)
if(LIBXML2_VENDORED)
add_dependencies(azure_sdk_dependencies libxml2_ep)
endif()

set(AZURESDK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/azuresdk_ep-install")
Expand Down
6 changes: 3 additions & 3 deletions cpp/thirdparty/versions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ ARROW_UCX_BUILD_VERSION=1.12.1
ARROW_UCX_BUILD_SHA256_CHECKSUM=9bef31aed0e28bf1973d28d74d9ac4f8926c43ca3b7010bd22a084e164e31b71
ARROW_UTF8PROC_BUILD_VERSION=v2.7.0
ARROW_UTF8PROC_BUILD_SHA256_CHECKSUM=4bb121e297293c0fd55f08f83afab6d35d48f0af4ecc07523ad8ec99aa2b12a1
ARROW_XML2_BUILD_VERSION=v2.11.4
ARROW_XML2_BUILD_SHA256_CHECKSUM=2fd59eccfe277f7b7dec8836254acbebd24af33857a018dd64ddcf92d88d7f7e
ARROW_LIBXML2_BUILD_VERSION=v2.11.4
ARROW_LIBXML2_BUILD_SHA256_CHECKSUM=2fd59eccfe277f7b7dec8836254acbebd24af33857a018dd64ddcf92d88d7f7e
ARROW_XSIMD_BUILD_VERSION=9.0.1
ARROW_XSIMD_BUILD_SHA256_CHECKSUM=b1bb5f92167fd3a4f25749db0be7e61ed37e0a5d943490f3accdcd2cd2918cc0
ARROW_ZLIB_BUILD_VERSION=1.2.13
Expand Down Expand Up @@ -158,7 +158,7 @@ DEPENDENCIES=(
"ARROW_LZ4_URL lz4-${ARROW_LZ4_BUILD_VERSION}.tar.gz https://github.com/lz4/lz4/archive/${ARROW_LZ4_BUILD_VERSION}.tar.gz"
"ARROW_MIMALLOC_URL mimalloc-${ARROW_MIMALLOC_BUILD_VERSION}.tar.gz https://github.com/microsoft/mimalloc/archive/${ARROW_MIMALLOC_BUILD_VERSION}.tar.gz"
"ARROW_NLOHMANN_JSON_URL nlohmann-json-${ARROW_NLOHMANN_JSON_BUILD_VERSION}.tar.gz https://github.com/nlohmann/json/archive/refs/tags/${ARROW_NLOHMANN_JSON_BUILD_VERSION}.tar.gz"
"ARROW_XML2_URL xml2-${ARROW_XML2_BUILD_VERSION}.tar.gz https://github.com/GNOME/libxml2/archive/refs/tags/${ARROW_XML2_BUILD_VERSION}.tar.gz"
"ARROW_LIBXML2_URL xml2-${ARROW_LIBXML2_BUILD_VERSION}.tar.gz https://github.com/GNOME/libxml2/archive/refs/tags/${ARROW_LIBXML2_BUILD_VERSION}.tar.gz"
"ARROW_OPENTELEMETRY_URL opentelemetry-cpp-${ARROW_OPENTELEMETRY_BUILD_VERSION}.tar.gz https://github.com/open-telemetry/opentelemetry-cpp/archive/refs/tags/${ARROW_OPENTELEMETRY_BUILD_VERSION}.tar.gz"
"ARROW_OPENTELEMETRY_PROTO_URL opentelemetry-proto-${ARROW_OPENTELEMETRY_PROTO_BUILD_VERSION}.tar.gz https://github.com/open-telemetry/opentelemetry-proto/archive/refs/tags/${ARROW_OPENTELEMETRY_PROTO_BUILD_VERSION}.tar.gz"
"ARROW_ORC_URL orc-${ARROW_ORC_BUILD_VERSION}.tar.gz https://archive.apache.org/dist/orc/orc-${ARROW_ORC_BUILD_VERSION}/orc-${ARROW_ORC_BUILD_VERSION}.tar.gz"
Expand Down

0 comments on commit 0555db0

Please sign in to comment.