Fix declared dependencies for pkg-config (#12518)

Closes #12439

Closes #12518

PiperOrigin-RevId: 526689125
diff --git a/cmake/install.cmake b/cmake/install.cmake
index f7a0d9e..af891ca 100644
--- a/cmake/install.cmake
+++ b/cmake/install.cmake
@@ -1,5 +1,14 @@
 include(GNUInstallDirs)
 
+foreach(_target IN LISTS protobuf_ABSL_USED_TARGETS)
+  string(REPLACE :: _ _modified_target ${_target})
+  list(APPEND _pc_targets ${_modified_target})
+endforeach()
+list(APPEND _pc_targets "utf8_range")
+
+string(JOIN " " _pc_target_list ${_pc_targets})
+set(_protobuf_PC_REQUIRES ${_pc_target_list})
+
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/protobuf.pc.cmake
                ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc @ONLY)
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/protobuf-lite.pc.cmake
diff --git a/cmake/protobuf-lite.pc.cmake b/cmake/protobuf-lite.pc.cmake
index 9745cb8..7f742c0 100644
--- a/cmake/protobuf-lite.pc.cmake
+++ b/cmake/protobuf-lite.pc.cmake
@@ -6,6 +6,7 @@
 Name: Protocol Buffers
 Description: Google's Data Interchange Format
 Version: @protobuf_VERSION@
+Requires: @_protobuf_PC_REQUIRES@
 Libs: -L${libdir} -lprotobuf-lite @CMAKE_THREAD_LIBS_INIT@
 Cflags: -I${includedir}
 Conflicts: protobuf
diff --git a/cmake/protobuf.pc.cmake b/cmake/protobuf.pc.cmake
index f068e69..21bbf47 100644
--- a/cmake/protobuf.pc.cmake
+++ b/cmake/protobuf.pc.cmake
@@ -6,6 +6,7 @@
 Name: Protocol Buffers
 Description: Google's Data Interchange Format
 Version: @protobuf_VERSION@
+Requires: @_protobuf_PC_REQUIRES@
 Libs: -L${libdir} -lprotobuf @CMAKE_THREAD_LIBS_INIT@
 Cflags: -I${includedir}
 Conflicts: protobuf-lite
diff --git a/third_party/utf8_range/.github/workflows/bazel_tests.yml b/third_party/utf8_range/.github/workflows/bazel_tests.yml
index ae3e970..adf7118 100644
--- a/third_party/utf8_range/.github/workflows/bazel_tests.yml
+++ b/third_party/utf8_range/.github/workflows/bazel_tests.yml
@@ -29,8 +29,15 @@
 
     steps:
       - uses: actions/checkout@v2
+      - name: Setup Bazel
+        run: |
+          echo "BAZEL=bazel" >> $GITHUB_ENV
+          echo "USE_BAZEL_VERSION=5.1.1" >> $GITHUB_ENV
+      - name: Setup Bazel (macOS)
+        if: runner.os == 'macOS'
+        run: echo "BAZEL=bazelisk" >> $GITHUB_ENV
       - name: Install dependencies
         run: sudo apt update && sudo apt install -y ${{ matrix.install }}
         if: matrix.install != ''
       - name: Run tests
-        run: cd ${{ github.workspace }} && CC=${{ matrix.CC }} bazel test --test_output=errors ... ${{ matrix.flags }}
+        run: cd ${{ github.workspace }} && CC=${{ matrix.CC }} ${{ env.BAZEL }} test --test_output=errors ... ${{ matrix.flags }}
diff --git a/third_party/utf8_range/CMakeLists.txt b/third_party/utf8_range/CMakeLists.txt
index 69a4d89..344952d 100644
--- a/third_party/utf8_range/CMakeLists.txt
+++ b/third_party/utf8_range/CMakeLists.txt
@@ -73,6 +73,11 @@
   install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
     DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
   )
+  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/utf8_range.pc.cmake
+                 ${CMAKE_CURRENT_BINARY_DIR}/utf8_range.pc @ONLY)
+  install(
+    FILES ${CMAKE_CURRENT_BINARY_DIR}/utf8_range.pc
+    DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 
   # Install public headers explicitly.
   install(FILES utf8_range.h utf8_validity.h
diff --git a/third_party/utf8_range/cmake/utf8_range.pc.cmake b/third_party/utf8_range/cmake/utf8_range.pc.cmake
new file mode 100644
index 0000000..5801b43
--- /dev/null
+++ b/third_party/utf8_range/cmake/utf8_range.pc.cmake
@@ -0,0 +1,12 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=@CMAKE_INSTALL_PREFIX@
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
+
+Name: UTF8 Range
+Description: Google's UTF8 Library
+Version: 1.0
+Requires: absl_strings
+Libs: -L${libdir} -lprotobuf-lite @CMAKE_THREAD_LIBS_INIT@
+Cflags: -I${includedir}
+Conflicts: protobuf
diff --git a/update_subtrees.sh b/update_subtrees.sh
old mode 100644
new mode 100755
index df75ba3..fee33f5
--- a/update_subtrees.sh
+++ b/update_subtrees.sh
@@ -1,4 +1,4 @@
-#! /bin/bash -eux
+#!/bin/bash -eux
 
 set -eux