diff options
author | 2018-06-14 08:27:30 -0700 | |
---|---|---|
committer | 2018-06-14 08:28:50 -0700 | |
commit | 0c7e80c5491d3207181566c0b17b0d63fc415e14 (patch) | |
tree | d3af9ed7ca3e967d82319895b705bbc11e0173bf /src/main/java/com/google/devtools/build/lib/rules/cpp | |
parent | 3695591d4b40497380640d7886c55a00d4d3fd70 (diff) |
Expose new methods in CcToolchainProvider to eventually replace skylark callables that depend on CToolchain in CppConfiguration.
PiperOrigin-RevId: 200559893
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java index 615193d837..02dcdbeca8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java @@ -968,7 +968,67 @@ public final class CcToolchainProvider extends ToolchainInfo implements CcToolch return CppHelper.getDynamicLinkOptions(cppConfiguration, this, sharedLib); } + /** + * WARNING: This method is only added to allow incremental migration of existing users. Please do + * not use in new code. Will be removed soon as part of the new Skylark API to the C++ toolchain. + * + * Returns the execution path to the linker binary to use for this build. Relative paths are + * relative to the execution root. + */ + @Override + public String getLdExecutableForSkylark() { + PathFragment ldExecutable = getToolPathFragment(CppConfiguration.Tool.LD); + return ldExecutable != null ? ldExecutable.getPathString() : ""; + } + + /** + * WARNING: This method is only added to allow incremental migration of existing users. Please do + * not use in new code. Will be removed soon as part of the new Skylark API to the C++ toolchain. + * + * Returns the path to the GNU binutils 'objcopy' binary to use for this build. (Corresponds to + * $(OBJCOPY) in make-dbg.) Relative paths are relative to the execution root. + */ + @Override + public String getObjCopyExecutableForSkylark() { + PathFragment objCopyExecutable = getToolPathFragment(Tool.OBJCOPY); + return objCopyExecutable != null ? objCopyExecutable.getPathString() : ""; + } + + @Override + public String getCppExecutableForSkylark() { + PathFragment cppExecutable = getToolPathFragment(Tool.GCC); + return cppExecutable != null ? cppExecutable.getPathString() : ""; + } + + @Override + public String getCpreprocessorExecutableForSkylark() { + PathFragment cpreprocessorExecutable = getToolPathFragment(Tool.CPP); + return cpreprocessorExecutable != null ? cpreprocessorExecutable.getPathString() : ""; + } + + @Override + public String getNmExecutableForSkylark() { + PathFragment nmExecutable = getToolPathFragment(Tool.NM); + return nmExecutable != null ? nmExecutable.getPathString() : ""; + } + @Override + public String getObjdumpExecutableForSkylark() { + PathFragment objdumpExecutable = getToolPathFragment(Tool.OBJDUMP); + return objdumpExecutable != null ? objdumpExecutable.getPathString() : ""; + } + + @Override + public String getArExecutableForSkylark() { + PathFragment arExecutable = getToolPathFragment(Tool.AR); + return arExecutable != null ? arExecutable.getPathString() : ""; + } + + @Override + public String getStripExecutableForSkylark() { + PathFragment stripExecutable = getToolPathFragment(Tool.STRIP); + return stripExecutable != null ? stripExecutable.getPathString() : ""; + } // Not all of CcToolchainProvider is exposed to Skylark, which makes implementing deep equality // impossible: if Java-only parts are considered, the behavior is surprising in Skylark, if they |