blob: a3a03bd1867ee94a7c000210c34fe1c19c92cebe [file] [log] [blame]
load("@rules_java//java:java_binary.bzl", "java_binary")
load("@rules_java//java:java_library.bzl", "java_library")
load(":javacc_bootstrap.bzl", "javacc_bootstrap")
JAVAC_OPTS = [
"-XepAllErrorsAsWarnings",
"-Xep:ComparisonOutOfRange:OFF",
"-Xep:ChainingConstructorIgnoresParameter:OFF",
"-Xlint:-dep-ann",
]
JAR_RESOURCES = glob(["src/main/resources/**/*"])
JAVACC_PARSER_SRCS = glob([
"src/main/java/org/javacc/parser/**/*.java",
"src/main/java/org/javacc/utils/**/*.java",
])
JTREE_SRCS = glob([
"src/main/java/org/javacc/jjtree/**/*.java",
])
java_library(
name = "javacc_version",
srcs = ["src/main/java/org/javacc/Version.java"],
)
java_library(
name = "javacc_parser",
srcs = JAVACC_PARSER_SRCS + [
":javacc_stage2_ConditionParser",
":javacc_stage2_JavaCC",
],
javacopts = JAVAC_OPTS,
deps = [":javacc_version"],
)
java_binary(
name = "javacc",
srcs = ["src/main/java/javacc.java"],
javacopts = JAVAC_OPTS,
main_class = "javacc",
resources = JAR_RESOURCES,
visibility = ["//visibility:public"],
deps = [":javacc_parser"],
)
java_binary(
name = "jjdoc",
srcs = ["src/main/java/jjdoc.java"] + glob([
"src/main/java/org/javacc/jjdoc/**/*.java",
]),
javacopts = JAVAC_OPTS,
main_class = "jjdoc",
visibility = ["//visibility:public"],
deps = [":javacc_parser"],
)
java_binary(
name = "jjtree",
srcs = JTREE_SRCS + [
"src/main/java/jjtree.java",
":javacc_stage2_JJTree",
":jtree_stage2_JJTree_java",
],
javacopts = JAVAC_OPTS,
main_class = "jjtree",
resources = JAR_RESOURCES,
visibility = ["//visibility:public"],
deps = [
":javacc_parser",
":javacc_version",
],
)
# javacc bootstrap {{{
JAVACC_JJ_OUTS = [
"JavaCCParser.java",
"JavaCCParserConstants.java",
"JavaCCParserTokenManager.java",
"JavaCharStream.java",
"ParseException.java",
"TokenMgrError.java",
]
CONDITION_PARSER_JJ_OUTS = [
"ConditionParser.java",
"ConditionParserConstants.java",
"ConditionParserTokenManager.java",
"JavaCharStream.java",
"ParseException.java",
"Token.java",
"TokenMgrError.java",
]
javacc_bootstrap(
name = "javacc_stage1_JavaCC",
src = "src/main/javacc/JavaCC.jj",
outs = JAVACC_JJ_OUTS,
javacc = "//bootstrap:javacc_stage1",
)
javacc_bootstrap(
name = "javacc_stage1_ConditionParser",
src = "src/main/javacc/ConditionParser.jj",
outs = CONDITION_PARSER_JJ_OUTS,
javacc = "//bootstrap:javacc_stage1",
)
javacc_bootstrap(
name = "javacc_stage2_JavaCC",
src = "src/main/javacc/JavaCC.jj",
outs = JAVACC_JJ_OUTS,
javacc = ":javacc_stage2",
)
javacc_bootstrap(
name = "javacc_stage2_ConditionParser",
src = "src/main/javacc/ConditionParser.jj",
outs = CONDITION_PARSER_JJ_OUTS,
javacc = ":javacc_stage2",
)
java_binary(
name = "javacc_stage2",
srcs = JAVACC_PARSER_SRCS + [
"src/main/java/javacc.java",
":javacc_stage1_ConditionParser",
":javacc_stage1_JavaCC",
],
javacopts = JAVAC_OPTS,
main_class = "javacc",
resources = JAR_RESOURCES,
deps = [":javacc_version"],
)
# }}}
# jtree bootstrap {{{
JJTREE_JJ_OUTS = [
"JavaCharStream.java",
"JJTreeParserConstants.java",
"JJTreeParser.java",
"JJTreeParserTokenManager.java",
"ParseException.java",
"TokenMgrError.java",
]
JJTREE_JJT_OUTS = [
"ASTBNFAssignment.java",
"ASTBNFChoice.java",
"ASTBNFLookahead.java",
"ASTBNFNonTerminal.java",
"ASTBNFOneOrMore.java",
"ASTBNFParenthesized.java",
"ASTBNFSequence.java",
"ASTBNFTryBlock.java",
"ASTBNFZeroOrMore.java",
"ASTBNFZeroOrOne.java",
"ASTCharDescriptor.java",
"ASTPrimaryExpression.java",
"ASTProductions.java",
"ASTRECharList.java",
"ASTREChoice.java",
"ASTREEOF.java",
"ASTRE.java",
"ASTRENamed.java",
"ASTREOneOrMore.java",
"ASTREParenthesized.java",
"ASTREReference.java",
"ASTRESequence.java",
"ASTRESpec.java",
"ASTREStringLiteral.java",
"ASTREZeroOrMore.java",
"ASTREZeroOrOne.java",
"ASTRRepetitionRange.java",
"ASTTokenDecls.java",
"JJTJJTreeParserState.java",
"JJTreeParserTreeConstants.java",
"Node.java",
"SimpleNode.java",
]
javacc_bootstrap(
name = "jtree_stage1_JJTree",
src = "src/main/jjtree/JJTree.jjt",
outs = ["JJTree.jj"] + JJTREE_JJT_OUTS,
javacc = "//bootstrap:jjtree_stage1",
)
filegroup(
name = "jtree_stage1_JJTree_java",
srcs = [":jtree_stage1_JJTree"],
output_group = "java_files",
)
filegroup(
name = "jtree_stage1_JJTree_jj",
srcs = [":jtree_stage1_JJTree"],
output_group = "jj_files",
)
javacc_bootstrap(
name = "javacc_stage1_JJTree",
src = ":jtree_stage1_JJTree_jj",
outs = JJTREE_JJ_OUTS,
javacc = ":javacc",
)
java_binary(
name = "jjtree_stage2",
srcs = JTREE_SRCS + [
"src/main/java/jjtree.java",
":javacc_stage1_JJTree",
":jtree_stage1_JJTree_java",
],
javacopts = JAVAC_OPTS,
main_class = "jjtree",
resources = JAR_RESOURCES,
deps = [
":javacc_parser",
":javacc_version",
],
)
javacc_bootstrap(
name = "jtree_stage2_JJTree",
src = "src/main/jjtree/JJTree.jjt",
outs = ["JJTree.jj"] + JJTREE_JJT_OUTS,
javacc = ":jjtree_stage2",
)
filegroup(
name = "jtree_stage2_JJTree_java",
srcs = [":jtree_stage2_JJTree"],
output_group = "java_files",
)
filegroup(
name = "jtree_stage2_JJTree_jj",
srcs = [":jtree_stage2_JJTree"],
output_group = "jj_files",
)
javacc_bootstrap(
name = "javacc_stage2_JJTree",
src = ":jtree_stage2_JJTree_jj",
outs = JJTREE_JJ_OUTS,
javacc = ":javacc",
)
# }}}