Skip to content

Commit

Permalink
apacheGH-39930: [C++] Use Requires instead of Libs for system RE2 in …
Browse files Browse the repository at this point in the history
…arrow.pc

We chose Libs{,.private} with libre2.a for system RE2 in
apacheGH-10626. Because "Require{,.private} re2" may add "-std=c++11". If
"-std=c++11" was added, users can't build Apache Arrow C++ because
Apache Arrow C++ requires C++17 or later.

But this approach doesn't work with RE2 2024-06-01 or later because it
at least requires Abseil. If we keep the Libs{,.private} approach, we
also need to add Abseil libraries to Libs{,.private}. But it's
unmaintainable.

Let's use "Requires{,.private} re2" instead of Libs{,.private}. I hope
recent re2.pc doesn't add "-std=c++11".
  • Loading branch information
kou committed Feb 4, 2024
1 parent 22f2cfd commit 943d927
Showing 1 changed file with 5 additions and 10 deletions.
15 changes: 5 additions & 10 deletions cpp/cmake_modules/ThirdpartyToolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2594,16 +2594,11 @@ macro(build_re2)
endmacro()

if(ARROW_WITH_RE2)
# Don't specify "PC_PACKAGE_NAMES re2" here because re2.pc may
# include -std=c++11. It's not compatible with C source and C++
# source not uses C++ 11.
resolve_dependency(re2 HAVE_ALT TRUE)
if(${re2_SOURCE} STREQUAL "SYSTEM" AND ARROW_BUILD_STATIC)
get_target_property(RE2_TYPE re2::re2 TYPE)
if(NOT RE2_TYPE STREQUAL "INTERFACE_LIBRARY")
string(APPEND ARROW_PC_LIBS_PRIVATE " $<TARGET_FILE:re2::re2>")
endif()
endif()
resolve_dependency(re2
HAVE_ALT
TRUE
PC_PACKAGE_NAMES
re2)
add_definitions(-DARROW_WITH_RE2)
endif()

Expand Down

0 comments on commit 943d927

Please sign in to comment.