Make C++ archiving use action_configs instead of hardcoded flags

RELNOTES: Use action_config in crosstool for static library archiving, remove ar_flag.
PiperOrigin-RevId: 157685703
diff --git a/tools/cpp/CROSSTOOL.tpl b/tools/cpp/CROSSTOOL.tpl
index d705bea..60a7711 100644
--- a/tools/cpp/CROSSTOOL.tpl
+++ b/tools/cpp/CROSSTOOL.tpl
@@ -444,6 +444,7 @@
       tool_path: 'wrapper/bin/msvc_link.bat'
     }
     implies: 'nologo'
+    implies: 'archiver_flags'
     implies: 'input_param_flags'
     implies: 'linker_param_file'
     implies: 'msvc_env'
@@ -456,6 +457,7 @@
       tool_path: 'wrapper/bin/msvc_link.bat'
     }
     implies: 'nologo'
+    implies: 'archiver_flags'
     implies: 'input_param_flags'
     implies: 'linker_param_file'
     implies: 'msvc_env'
@@ -470,6 +472,7 @@
       tool_path: 'wrapper/bin/msvc_link.bat'
     }
     implies: 'nologo'
+    implies: 'archiver_flags'
     implies: 'input_param_flags'
     implies: 'linker_param_file'
     implies: 'msvc_env'
@@ -482,6 +485,7 @@
       tool_path: 'wrapper/bin/msvc_link.bat'
     }
     implies: 'nologo'
+    implies: 'archiver_flags'
     implies: 'input_param_flags'
     implies: 'linker_param_file'
     implies: 'msvc_env'
@@ -561,15 +565,26 @@
   }
 
   feature {
+    name: 'archiver_flags'
+    flag_set {
+      expand_if_all_available: 'output_execpath'
+      action: 'c++-link-static-library'
+      action: 'c++-link-alwayslink-static-library'
+      action: 'c++-link-pic-static-library'
+      action: 'c++-link-alwayslink-pic-static-library'
+      flag_group {
+        flag: 'rcsD'
+        flag: '%{output_execpath}'
+      }
+    }
+  }
+
+  feature {
     name: 'input_param_flags'
     flag_set {
       expand_if_all_available: 'library_search_directories'
       action: 'c++-link-executable'
       action: 'c++-link-dynamic-library'
-      action: 'c++-link-static-library'
-      action: 'c++-link-alwayslink-static-library'
-      action: 'c++-link-pic-static-library'
-      action: 'c++-link-alwayslink-pic-static-library'
       flag_group {
         iterate_over: 'library_search_directories'
         flag: "-L%{library_search_directories}"
@@ -579,10 +594,6 @@
       expand_if_all_available: 'libopts'
       action: 'c++-link-executable'
       action: 'c++-link-dynamic-library'
-      action: 'c++-link-static-library'
-      action: 'c++-link-alwayslink-static-library'
-      action: 'c++-link-pic-static-library'
-      action: 'c++-link-alwayslink-pic-static-library'
       flag_group {
         flag: '%{libopts}'
       }