You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2024/02/05 23:51:04 UTC
(arrow) branch main updated: GH-39930: [C++] Use Requires instead of Libs for system RE2 in arrow.pc (#39932)
This is an automated email from the ASF dual-hosted git repository.
kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new 9db823b45f GH-39930: [C++] Use Requires instead of Libs for system RE2 in arrow.pc (#39932)
9db823b45f is described below
commit 9db823b45fd4ae455c531e944681c898bede7d53
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Tue Feb 6 08:50:58 2024 +0900
GH-39930: [C++] Use Requires instead of Libs for system RE2 in arrow.pc (#39932)
### Rationale for this change
We chose Libs{,.private} with libre2.a for system RE2 in GH-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.
### What changes are included in this PR?
Let's use "Requires{,.private} re2" instead of Libs{,.private}. I hope recent re2.pc doesn't add "-std=c++11".
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* Closes: #39930
Authored-by: Sutou Kouhei <ko...@clear-code.com>
Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
cpp/cmake_modules/ThirdpartyToolchain.cmake | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 6bb9c0f6af..0238c26c0f 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -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()