Copilot commented on code in PR #50006:
URL: https://github.com/apache/arrow/pull/50006#discussion_r3277969431
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -2782,34 +2782,29 @@ if(ARROW_BUILD_BENCHMARKS)
FALSE)
endif()
-macro(build_rapidjson)
- message(STATUS "Building RapidJSON from source")
- set(RAPIDJSON_PREFIX
- "${CMAKE_CURRENT_BINARY_DIR}/rapidjson_ep/src/rapidjson_ep-install")
- set(RAPIDJSON_CMAKE_ARGS
- ${EP_COMMON_CMAKE_ARGS}
- -DRAPIDJSON_BUILD_DOC=OFF
- -DRAPIDJSON_BUILD_EXAMPLES=OFF
- -DRAPIDJSON_BUILD_TESTS=OFF
- "-DCMAKE_INSTALL_PREFIX=${RAPIDJSON_PREFIX}")
-
- externalproject_add(rapidjson_ep
- ${EP_COMMON_OPTIONS}
- PREFIX "${CMAKE_BINARY_DIR}"
- URL ${RAPIDJSON_SOURCE_URL}
- URL_HASH
"SHA256=${ARROW_RAPIDJSON_BUILD_SHA256_CHECKSUM}"
- CMAKE_ARGS ${RAPIDJSON_CMAKE_ARGS})
+function(build_rapidjson)
+ list(APPEND CMAKE_MESSAGE_INDENT "RapidJSON: ")
+ message(STATUS "Building from source")
- set(RAPIDJSON_INCLUDE_DIR "${RAPIDJSON_PREFIX}/include")
- # The include directory must exist before it is referenced by a target.
- file(MAKE_DIRECTORY "${RAPIDJSON_INCLUDE_DIR}")
+ fetchcontent_declare(rapidjson
+ ${FC_DECLARE_COMMON_OPTIONS} OVERRIDE_FIND_PACKAGE
+ URL ${RAPIDJSON_SOURCE_URL}
+ URL_HASH
"SHA256=${ARROW_RAPIDJSON_BUILD_SHA256_CHECKSUM}")
+ prepare_fetchcontent()
+ set(RAPIDJSON_BUILD_DOC OFF)
+ set(RAPIDJSON_BUILD_EXAMPLES OFF)
+ set(RAPIDJSON_BUILD_TESTS OFF)
+ fetchcontent_makeavailable(rapidjson)
add_library(RapidJSON INTERFACE IMPORTED)
- target_include_directories(RapidJSON INTERFACE "${RAPIDJSON_INCLUDE_DIR}")
- add_dependencies(RapidJSON rapidjson_ep)
+ target_include_directories(RapidJSON INTERFACE
"${rapidjson_SOURCE_DIR}/include")
+ add_dependencies(RapidJSON rapidjson)
Review Comment:
`fetchcontent_makeavailable(rapidjson)` may define a CMake target for
RapidJSON itself (depending on RapidJSON's bundled CMake). Unconditionally
creating an imported target named `RapidJSON` here can therefore conflict with
an existing target and fail configuration. Consider mirroring the pattern in
`cpp/cmake_modules/FindRapidJSONAlt.cmake` (it only defines `RapidJSON` if `NOT
TARGET RapidJSON`) and, similarly, guard or remove `add_dependencies(RapidJSON
rapidjson)` since it assumes a target named `rapidjson` exists.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]