|  | # Copyright 2018 The Fuchsia Authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | GEN_SRCS_LEX = [ | 
|  | "fuchsia/developer/plugin/fidl/fidl/FidlLexer.java", | 
|  | ] | 
|  |  | 
|  | genrule( | 
|  | name = "fidl_lex_gen", | 
|  | srcs = ["FidlLexer.flex"], | 
|  | outs = GEN_SRCS_LEX, | 
|  | cmd = "$(location //third_party/jflex:jflex_bin) -d $(@D) $<", | 
|  | tools = ["//third_party/jflex:jflex_bin"], | 
|  | ) | 
|  |  | 
|  | java_binary( | 
|  | name = "grammar_kit_bin", | 
|  | main_class = "org.intellij.grammar.Main", | 
|  | runtime_deps = [ | 
|  | "@grammar_kit", | 
|  | "@intellij_ce_2020_1_4//:sdk", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | # These files must be updated manually whenever definitions are added to or | 
|  | # removed from the BNF file. | 
|  | GEN_SRCS_PARSE = [ | 
|  | "fuchsia/developer/plugin/fidl/parser/Parser.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlVisitor.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/Types.java", | 
|  |  | 
|  | # One file per BNF construct | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlAttribute.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlAttributes.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlAttributeArg.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlAttributeArgs.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlAttributeSignature.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlAttributeBlock.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlCompoundIdentifier.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlConstant.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlConstDeclaration.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlDeclaration.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlDeclarationList.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlDeclarationModifiers.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlDocComments.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlIdentifierToken.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlInlineLayout.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlIntegralLiteral.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlLayout.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlLayoutBody.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlLayoutDeclaration.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlLayoutKind.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlLayoutParameter.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlLayoutParameters.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlLayoutSubtype.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlLibraryHeader.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlLiteral.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlMemberField.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlNumericLiteral.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlOrdinal.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlOrdinalLayout.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlOrdinalLayoutMember.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlParameterList.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlProtocolCompose.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlProtocolDeclaration.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlProtocolEvent.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlProtocolMember.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlProtocolMethod.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlResourceDeclaration.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlResourceProperties.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlServiceDeclaration.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlServiceMember.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlStructLayout.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlStructLayoutMember.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlTypeAliasDeclaration.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlTypeConstraint.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlTypeConstraints.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlTypeConstructor.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlUsing.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlUsingList.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlValueLayout.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/FidlValueLayoutMember.java", | 
|  |  | 
|  | # One impl file per BNF construct | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlAttributeImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlAttributesImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlAttributeArgImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlAttributeArgsImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlAttributeSignatureImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlAttributeBlockImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlCompoundIdentifierImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlConstantImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlConstDeclarationImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlDeclarationImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlDeclarationListImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlDeclarationModifiersImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlDocCommentsImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlIdentifierTokenImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlInlineLayoutImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlIntegralLiteralImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlLayoutImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlLayoutBodyImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlLayoutDeclarationImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlLayoutKindImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlLayoutParameterImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlLayoutParametersImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlLayoutSubtypeImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlLibraryHeaderImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlLiteralImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlMemberFieldImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlNumericLiteralImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlOrdinalImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlOrdinalLayoutImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlOrdinalLayoutMemberImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlParameterListImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlProtocolComposeImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlProtocolDeclarationImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlProtocolEventImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlProtocolMemberImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlProtocolMethodImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlResourceDeclarationImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlResourcePropertiesImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlServiceDeclarationImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlServiceMemberImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlStructLayoutImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlStructLayoutMemberImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlTypeAliasDeclarationImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlTypeConstraintImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlTypeConstraintsImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlTypeConstructorImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlUsingImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlUsingListImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlValueLayoutImpl.java", | 
|  | "fuchsia/developer/plugin/fidl/psi/impl/FidlValueLayoutMemberImpl.java", | 
|  | ] | 
|  |  | 
|  | genrule( | 
|  | name = "fidl_grammar_gen", | 
|  | srcs = ["Fidl.bnf"], | 
|  | outs = GEN_SRCS_PARSE, | 
|  | cmd = "$(location :grammar_kit_bin) $(@D) $<", | 
|  | tools = [":grammar_kit_bin"], | 
|  | ) | 
|  |  | 
|  | GEN_SRCS = GEN_SRCS_LEX + GEN_SRCS_PARSE | 
|  |  | 
|  | java_library( | 
|  | name = "fidl", | 
|  | srcs = GEN_SRCS + glob(["*.java"]) + glob(["psi/*.java"]), | 
|  | resources = [ | 
|  | "icons/B.png", | 
|  | "icons/C.png", | 
|  | "icons/E.png", | 
|  | "icons/F.png", | 
|  | "icons/M.png", | 
|  | "icons/P.png", | 
|  | "icons/S.png", | 
|  | "icons/T.png", | 
|  | "icons/U.png", | 
|  | "icons/X.png", | 
|  | "icons/fuchsia-logo.svg", | 
|  | "icons/fuchsia-logo@2x.svg", | 
|  | "icons/fuchsia-logo@2x_dark.svg", | 
|  | "icons/fuchsia-logo_dark.svg", | 
|  | ], | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | "@google_bazel_common//third_party/java/guava", | 
|  | "@grammar_kit", | 
|  | "@intellij_ce_2020_1_4//:annotations", | 
|  | "@intellij_ce_2020_1_4//:platform-api", | 
|  | "@intellij_ce_2020_1_4//:util", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | filegroup( | 
|  | name = "icons", | 
|  | srcs = [ | 
|  | "icons/fuchsia-logo.svg", | 
|  | "icons/fuchsia-logo@2x.svg", | 
|  | "icons/fuchsia-logo@2x_dark.svg", | 
|  | "icons/fuchsia-logo_dark.svg", | 
|  | ], | 
|  | visibility = ["//visibility:public"], | 
|  | ) |