blob: 80099546a5e35fc43de9460668a0bd1791cede83 [file] [log] [blame]
# 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"],
)