xref: /aosp_15_r20/external/grpc-grpc/cmake/re2.cmake (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker# Copyright 2017 gRPC authors.
2*cc02d7e2SAndroid Build Coastguard Worker#
3*cc02d7e2SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
4*cc02d7e2SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*cc02d7e2SAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*cc02d7e2SAndroid Build Coastguard Worker#
7*cc02d7e2SAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
8*cc02d7e2SAndroid Build Coastguard Worker#
9*cc02d7e2SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*cc02d7e2SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
11*cc02d7e2SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cc02d7e2SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*cc02d7e2SAndroid Build Coastguard Worker# limitations under the License.
14*cc02d7e2SAndroid Build Coastguard Worker
15*cc02d7e2SAndroid Build Coastguard Worker# The CMakeLists.txt for re2 doesn't propagate include directories
16*cc02d7e2SAndroid Build Coastguard Worker# transitively so `_gRPC_RE2_INCLUDE_DIR` should be set for gRPC
17*cc02d7e2SAndroid Build Coastguard Worker# to find header files.
18*cc02d7e2SAndroid Build Coastguard Worker
19*cc02d7e2SAndroid Build Coastguard Workerif(gRPC_RE2_PROVIDER STREQUAL "module")
20*cc02d7e2SAndroid Build Coastguard Worker  if(NOT RE2_ROOT_DIR)
21*cc02d7e2SAndroid Build Coastguard Worker    set(RE2_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/re2)
22*cc02d7e2SAndroid Build Coastguard Worker  endif()
23*cc02d7e2SAndroid Build Coastguard Worker  if(EXISTS "${RE2_ROOT_DIR}/CMakeLists.txt")
24*cc02d7e2SAndroid Build Coastguard Worker    # Explicitly disable BUILD_TESTING to avoid re2's CMakeLists.txt triggering https://github.com/grpc/grpc/issues/23586
25*cc02d7e2SAndroid Build Coastguard Worker    option(BUILD_TESTING "re2.cmake explicitly disabled CTest's BUILD_TESTING option." OFF)
26*cc02d7e2SAndroid Build Coastguard Worker
27*cc02d7e2SAndroid Build Coastguard Worker    include_directories("${RE2_ROOT_DIR}")
28*cc02d7e2SAndroid Build Coastguard Worker    add_subdirectory(${RE2_ROOT_DIR} third_party/re2)
29*cc02d7e2SAndroid Build Coastguard Worker
30*cc02d7e2SAndroid Build Coastguard Worker    if(TARGET re2)
31*cc02d7e2SAndroid Build Coastguard Worker      set(_gRPC_RE2_LIBRARIES re2)
32*cc02d7e2SAndroid Build Coastguard Worker      set(_gRPC_RE2_INCLUDE_DIR "${RE2_ROOT_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/third_party/re2")
33*cc02d7e2SAndroid Build Coastguard Worker      if(gRPC_INSTALL AND _gRPC_INSTALL_SUPPORTED_FROM_MODULE)
34*cc02d7e2SAndroid Build Coastguard Worker        install(TARGETS re2 EXPORT gRPCTargets
35*cc02d7e2SAndroid Build Coastguard Worker          RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
36*cc02d7e2SAndroid Build Coastguard Worker          LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
37*cc02d7e2SAndroid Build Coastguard Worker          ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR})
38*cc02d7e2SAndroid Build Coastguard Worker      endif()
39*cc02d7e2SAndroid Build Coastguard Worker    endif()
40*cc02d7e2SAndroid Build Coastguard Worker  else()
41*cc02d7e2SAndroid Build Coastguard Worker    message(WARNING "gRPC_RE2_PROVIDER is \"module\" but RE2_ROOT_DIR(${RE2_ROOT_DIR}) is wrong")
42*cc02d7e2SAndroid Build Coastguard Worker  endif()
43*cc02d7e2SAndroid Build Coastguard Worker  if(gRPC_INSTALL AND NOT _gRPC_INSTALL_SUPPORTED_FROM_MODULE)
44*cc02d7e2SAndroid Build Coastguard Worker    message(WARNING "gRPC_INSTALL will be forced to FALSE because gRPC_RE2_PROVIDER is \"module\"  and CMake version (${CMAKE_VERSION}) is less than 3.13.")
45*cc02d7e2SAndroid Build Coastguard Worker    set(gRPC_INSTALL FALSE)
46*cc02d7e2SAndroid Build Coastguard Worker  endif()
47*cc02d7e2SAndroid Build Coastguard Workerelseif(gRPC_RE2_PROVIDER STREQUAL "package")
48*cc02d7e2SAndroid Build Coastguard Worker  find_package(re2 REQUIRED)
49*cc02d7e2SAndroid Build Coastguard Worker  if(TARGET re2::re2)
50*cc02d7e2SAndroid Build Coastguard Worker    set(_gRPC_RE2_LIBRARIES re2::re2)
51*cc02d7e2SAndroid Build Coastguard Worker  endif()
52*cc02d7e2SAndroid Build Coastguard Worker  set(_gRPC_FIND_RE2 "if(NOT re2_FOUND)\n  find_package(re2)\nendif()")
53*cc02d7e2SAndroid Build Coastguard Workerendif()
54