From 80e5beb7d17831f566ea2c362dd9d49b41684055 Mon Sep 17 00:00:00 2001 From: Yun Peng Date: Wed, 22 Nov 2017 07:20:09 -0800 Subject: Check if win_def_file attribute exists before getting its value Because CcProtoAspect.java also uses CcLibraryHelper.java to generate linking action, but cc_proto_library doesn't have win_def_file attribute. Fix https://github.com/bazelbuild/bazel/issues/4126 Change-Id: I1b819c926c8025a49fea756bcaeb237824cb098e PiperOrigin-RevId: 176653922 --- .../java/com/google/devtools/build/lib/rules/cpp/CppModel.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules') diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java index 261f3281cc..5a51cb012f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java @@ -14,6 +14,8 @@ package com.google.devtools.build.lib.rules.cpp; +import static com.google.devtools.build.lib.packages.BuildType.LABEL; + import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.base.Predicates; @@ -1467,7 +1469,10 @@ public final class CppModel { } // If user specifies a custom DEF file, then we use this one instead of the generated one. - Artifact customDefFile = ruleContext.getPrerequisiteArtifact("win_def_file", Mode.TARGET); + Artifact customDefFile = null; + if (ruleContext.isAttrDefined("win_def_file", LABEL)) { + customDefFile = ruleContext.getPrerequisiteArtifact("win_def_file", Mode.TARGET); + } if (customDefFile != null) { dynamicLinkActionBuilder.setDefFile(customDefFile); } -- cgit v1.2.3