Add link_flags and libs methods to the C++ Skylark API

--
MOS_MIGRATED_REVID=95783111
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
index 4506ee4..1840a35 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
@@ -14,8 +14,10 @@
 
 package com.google.devtools.build.lib.rules.cpp;
 
+import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.rules.SkylarkApiProvider;
 import com.google.devtools.build.lib.syntax.SkylarkCallable;
 import com.google.devtools.build.lib.syntax.SkylarkModule;
@@ -40,4 +42,38 @@
     CppCompilationContext ccContext = getInfo().getProvider(CppCompilationContext.class);
     return ccContext.getDeclaredIncludeSrcs();
   }
+
+  @SkylarkCallable(
+      name = "libs",
+      structField = true,
+      doc =
+          "Returns the immutable set of libraries for either "
+              + "FULLY STATIC mode (linkopts=[\"-static\"]) or MOSTLY STATIC mode (linkstatic=1) "
+              + "(possibly empty but never None)")
+  public NestedSet<Artifact> getLibraries() {
+    NestedSetBuilder<Artifact> libs = NestedSetBuilder.linkOrder();
+    CcLinkParamsProvider ccLinkParams = getInfo().getProvider(CcLinkParamsProvider.class);
+    if (ccLinkParams == null) {
+      return libs.build();
+    }
+    for (LinkerInput lib : ccLinkParams.getCcLinkParams(true, false).getLibraries()) {
+      libs.add(lib.getArtifact());
+    }
+    return libs.build();
+  }
+
+  @SkylarkCallable(
+      name = "link_flags",
+      structField = true,
+      doc =
+          "Returns the immutable list of flags given to the C++ linker command for either "
+              + "FULLY STATIC mode (linkopts=[\"-static\"]) or MOSTLY STATIC mode (linkstatic=1) "
+              + "(possibly empty but never None)")
+  public ImmutableList<String> getLinkopts() {
+    CcLinkParamsProvider ccLinkParams = getInfo().getProvider(CcLinkParamsProvider.class);
+    if (ccLinkParams == null) {
+      return ImmutableList.of();
+    }
+    return ccLinkParams.getCcLinkParams(true, false).flattenedLinkopts();
+  }
 }