# Copyright 2015-2019 Google LLC. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. package(default_visibility = ["//visibility:public"]) licenses(["notice"]) # Apache 2.0 exports_files(["COPYING"]) config_setting( name = "has_absl", values = {"define": "absl=1"}, ) prefix_dir = "src/" static_binary = 1 # Core library (lib/) cc_library( name = "fst-decl", hdrs = [prefix_dir + "include/fst/fst-decl.h"], includes = [prefix_dir + "include"], deps = [":base"], ) PUBLIC_HEADERS = [ # One-stop header file which includes the remaining headers below: prefix_dir + "include/fst/fstlib.h", # Fine-grained headers: prefix_dir + "include/fst/accumulator.h", prefix_dir + "include/fst/add-on.h", prefix_dir + "include/fst/arc-arena.h", prefix_dir + "include/fst/arc-map.h", prefix_dir + "include/fst/arc.h", prefix_dir + "include/fst/arcfilter.h", prefix_dir + "include/fst/arcsort.h", prefix_dir + "include/fst/bi-table.h", prefix_dir + "include/fst/cache.h", prefix_dir + "include/fst/closure.h", prefix_dir + "include/fst/compact-fst.h", prefix_dir + "include/fst/complement.h", prefix_dir + "include/fst/compose-filter.h", prefix_dir + "include/fst/compose.h", prefix_dir + "include/fst/concat.h", prefix_dir + "include/fst/connect.h", prefix_dir + "include/fst/const-fst.h", prefix_dir + "include/fst/determinize.h", prefix_dir + "include/fst/dfs-visit.h", prefix_dir + "include/fst/difference.h", prefix_dir + "include/fst/disambiguate.h", prefix_dir + "include/fst/edit-fst.h", prefix_dir + "include/fst/encode.h", prefix_dir + "include/fst/epsnormalize.h", prefix_dir + "include/fst/equal.h", prefix_dir + "include/fst/equivalent.h", prefix_dir + "include/fst/expanded-fst.h", prefix_dir + "include/fst/factor-weight.h", prefix_dir + "include/fst/filter-state.h", prefix_dir + "include/fst/fst.h", prefix_dir + "include/fst/heap.h", prefix_dir + "include/fst/intersect.h", prefix_dir + "include/fst/invert.h", prefix_dir + "include/fst/isomorphic.h", prefix_dir + "include/fst/label-reachable.h", prefix_dir + "include/fst/lookahead-filter.h", prefix_dir + "include/fst/lookahead-matcher.h", prefix_dir + "include/fst/map.h", prefix_dir + "include/fst/matcher-fst.h", prefix_dir + "include/fst/matcher.h", prefix_dir + "include/fst/memory.h", prefix_dir + "include/fst/minimize.h", prefix_dir + "include/fst/mutable-fst.h", prefix_dir + "include/fst/partition.h", prefix_dir + "include/fst/project.h", prefix_dir + "include/fst/properties.h", prefix_dir + "include/fst/prune.h", prefix_dir + "include/fst/push.h", prefix_dir + "include/fst/queue.h", prefix_dir + "include/fst/randequivalent.h", prefix_dir + "include/fst/randgen.h", prefix_dir + "include/fst/rational.h", prefix_dir + "include/fst/relabel.h", prefix_dir + "include/fst/replace-util.h", prefix_dir + "include/fst/replace.h", prefix_dir + "include/fst/reverse.h", prefix_dir + "include/fst/reweight.h", prefix_dir + "include/fst/rmepsilon.h", prefix_dir + "include/fst/rmfinalepsilon.h", prefix_dir + "include/fst/shortest-distance.h", prefix_dir + "include/fst/shortest-path.h", prefix_dir + "include/fst/state-map.h", prefix_dir + "include/fst/state-reachable.h", prefix_dir + "include/fst/state-table.h", prefix_dir + "include/fst/statesort.h", prefix_dir + "include/fst/string.h", prefix_dir + "include/fst/symbol-table-ops.h", prefix_dir + "include/fst/synchronize.h", prefix_dir + "include/fst/test-properties.h", prefix_dir + "include/fst/topsort.h", prefix_dir + "include/fst/union.h", prefix_dir + "include/fst/vector-fst.h", prefix_dir + "include/fst/verify.h", prefix_dir + "include/fst/visit.h", ] # This version does not have the export-dynamic flag set and should not be # used to load dynamic-shared object FST extensions. Please see the # "lib_export_dynamic" target below for binaries that need DSO loading. cc_library( name = "lib_lite", srcs = [ prefix_dir + "lib/fst.cc", prefix_dir + "lib/properties.cc", prefix_dir + "lib/symbol-table-ops.cc", ], hdrs = PUBLIC_HEADERS, copts = ["-Wno-sign-compare"], includes = [prefix_dir + "include"], linkopts = ["-lm"], deps = [ ":base", ":fst-decl", ":icu", ":interval-set", ":register", ":symbol-table", ":union-find", ":util", ":weight", ], ) cc_library( name = "fst", hdrs = PUBLIC_HEADERS, includes = [prefix_dir + "include"], deps = [ ":fst-types", ":lib_lite", ], ) cc_library( name = "lib_export_dynamic", linkopts = ["-Wl,--export-dynamic"], deps = [":fst"], ) cc_library( name = "fst-types", srcs = [prefix_dir + "lib/fst-types.cc"], deps = [":lib_lite"], alwayslink = 1, # because of registration ) cc_library( name = "symbol-table", srcs = [prefix_dir + "lib/symbol-table.cc"], hdrs = [prefix_dir + "include/fst/symbol-table.h"], copts = ["-Wno-sign-compare"], includes = [prefix_dir + "include"], deps = [ ":base", ":util", ], ) cc_library( name = "weight", srcs = [prefix_dir + "lib/weight.cc"], hdrs = [ prefix_dir + "include/fst/expectation-weight.h", prefix_dir + "include/fst/float-weight.h", prefix_dir + "include/fst/lexicographic-weight.h", prefix_dir + "include/fst/pair-weight.h", prefix_dir + "include/fst/power-weight.h", prefix_dir + "include/fst/product-weight.h", prefix_dir + "include/fst/set-weight.h", prefix_dir + "include/fst/signed-log-weight.h", prefix_dir + "include/fst/sparse-power-weight.h", prefix_dir + "include/fst/sparse-tuple-weight.h", prefix_dir + "include/fst/string-weight.h", prefix_dir + "include/fst/tuple-weight.h", prefix_dir + "include/fst/union-weight.h", prefix_dir + "include/fst/weight.h", ], includes = [prefix_dir + "include"], linkopts = ["-lm"], deps = [ ":base", ":util", ], ) cc_library( name = "interval-set", hdrs = [prefix_dir + "include/fst/interval-set.h"], includes = [prefix_dir + "include"], deps = [ ":base", ":util", ], ) cc_library( name = "register", hdrs = [ prefix_dir + "include/fst/generic-register.h", prefix_dir + "include/fst/register.h", ], includes = [prefix_dir + "include"], linkopts = ["-ldl"], deps = [ ":base", ":util", ], ) cc_library( name = "icu", hdrs = [ prefix_dir + "include/fst/icu.h", ], ) cc_library( name = "union-find", hdrs = [prefix_dir + "include/fst/union-find.h"], includes = [prefix_dir + "include"], deps = [":base"], ) cc_library( name = "util", srcs = [ prefix_dir + "lib/mapped-file.cc", prefix_dir + "lib/util.cc", ], hdrs = [ prefix_dir + "include/fst/mapped-file.h", prefix_dir + "include/fst/util.h", ], includes = [prefix_dir + "include"], deps = [":base"], ) cc_library( name = "base", srcs = [ prefix_dir + "lib/compat.cc", prefix_dir + "lib/flags.cc", ], hdrs = [ prefix_dir + "include/fst/compat.h", prefix_dir + "include/fst/config.h", prefix_dir + "include/fst/flags.h", prefix_dir + "include/fst/icu.h", prefix_dir + "include/fst/lock.h", prefix_dir + "include/fst/log.h", prefix_dir + "include/fst/types.h", ], defines = select({ ":has_absl": ["OPENFST_HAS_ABSL=1"], "//conditions:default": [], }), includes = [prefix_dir + "include"], deps = select({ ":has_absl": ["@com_google_absl//absl/synchronization"], "//conditions:default": [], }), ) # Core library tests (test/) cc_test( name = "fst_test", timeout = "short", srcs = [ prefix_dir + "test/fst_test.cc", prefix_dir + "include/fst/test/fst_test.h", ], deps = [":fst"], ) cc_library( name = "weight-tester", testonly = 1, hdrs = [prefix_dir + "include/fst/test/weight-tester.h"], includes = [prefix_dir], deps = [":weight"], ) cc_test( name = "weight_test", timeout = "short", srcs = [prefix_dir + "test/weight_test.cc"], copts = ["-Wno-unused-local-typedefs"], deps = [ ":fst", ":weight-tester", ], ) [ cc_test( name = "algo_test_%s" % weight, srcs = [ prefix_dir + "test/algo_test.cc", prefix_dir + "include/fst/test/algo_test.h", prefix_dir + "include/fst/test/rand-fst.h", ], defines = ["TEST_%s" % weight.upper()], deps = [":fst"], ) for weight in [ "tropical", "log", "minmax", "lexicographic", "power", ] ] # Non-template scripting-language integration (script/) cc_library( name = "fstscript_base", srcs = [ prefix_dir + "script/arciterator-class.cc", prefix_dir + "script/encodemapper-class.cc", prefix_dir + "script/fst-class.cc", prefix_dir + "script/getters.cc", prefix_dir + "script/stateiterator-class.cc", prefix_dir + "script/text-io.cc", prefix_dir + "script/weight-class.cc", ], hdrs = [ prefix_dir + "include/fst/script/arc-class.h", prefix_dir + "include/fst/script/arciterator-class.h", prefix_dir + "include/fst/script/arg-packs.h", prefix_dir + "include/fst/script/encodemapper-class.h", prefix_dir + "include/fst/script/fst-class.h", prefix_dir + "include/fst/script/fstscript-decl.h", prefix_dir + "include/fst/script/fstscript.h", prefix_dir + "include/fst/script/getters.h", prefix_dir + "include/fst/script/register.h", prefix_dir + "include/fst/script/script-impl.h", prefix_dir + "include/fst/script/stateiterator-class.h", prefix_dir + "include/fst/script/text-io.h", prefix_dir + "include/fst/script/weight-class.h", # prefix_dir + "include/fst/script/arcsort.h", prefix_dir + "include/fst/script/closure.h", prefix_dir + "include/fst/script/compile.h", prefix_dir + "include/fst/script/compile-impl.h", prefix_dir + "include/fst/script/compose.h", prefix_dir + "include/fst/script/concat.h", prefix_dir + "include/fst/script/connect.h", prefix_dir + "include/fst/script/convert.h", prefix_dir + "include/fst/script/decode.h", prefix_dir + "include/fst/script/determinize.h", prefix_dir + "include/fst/script/difference.h", prefix_dir + "include/fst/script/disambiguate.h", prefix_dir + "include/fst/script/draw.h", prefix_dir + "include/fst/script/draw-impl.h", prefix_dir + "include/fst/script/encode.h", prefix_dir + "include/fst/script/epsnormalize.h", prefix_dir + "include/fst/script/equal.h", prefix_dir + "include/fst/script/equivalent.h", prefix_dir + "include/fst/script/info.h", prefix_dir + "include/fst/script/info-impl.h", prefix_dir + "include/fst/script/intersect.h", prefix_dir + "include/fst/script/invert.h", prefix_dir + "include/fst/script/isomorphic.h", prefix_dir + "include/fst/script/map.h", prefix_dir + "include/fst/script/minimize.h", prefix_dir + "include/fst/script/print.h", prefix_dir + "include/fst/script/print-impl.h", prefix_dir + "include/fst/script/project.h", prefix_dir + "include/fst/script/prune.h", prefix_dir + "include/fst/script/push.h", prefix_dir + "include/fst/script/randequivalent.h", prefix_dir + "include/fst/script/randgen.h", prefix_dir + "include/fst/script/relabel.h", prefix_dir + "include/fst/script/replace.h", prefix_dir + "include/fst/script/reverse.h", prefix_dir + "include/fst/script/reweight.h", prefix_dir + "include/fst/script/rmepsilon.h", prefix_dir + "include/fst/script/shortest-distance.h", prefix_dir + "include/fst/script/shortest-path.h", prefix_dir + "include/fst/script/synchronize.h", prefix_dir + "include/fst/script/topsort.h", prefix_dir + "include/fst/script/union.h", prefix_dir + "include/fst/script/verify.h", ], copts = ["-Wno-sign-compare"], includes = [prefix_dir + "include"], deps = [":fst"], ) [ cc_library( name = "fstscript_%s" % operation, srcs = [prefix_dir + "script/%s.cc" % operation], hdrs = [prefix_dir + "include/fst/script/%s.h" % operation], includes = [prefix_dir + "include"], deps = [":fstscript_base"], ) for operation in [ "arcsort", "closure", "concat", "connect", "convert", "decode", "determinize", "disambiguate", "encode", "epsnormalize", "equal", "equivalent", "invert", "isomorphic", "map", "minimize", "project", "prune", "push", "randgen", "relabel", "replace", "reverse", "reweight", "synchronize", "topsort", "union", "verify", ] ] cc_library( name = "fstscript_compile", srcs = [prefix_dir + "script/compile.cc"], hdrs = [ prefix_dir + "include/fst/script/compile.h", prefix_dir + "include/fst/script/compile-impl.h", ], includes = [prefix_dir + "include"], deps = [":fstscript_base"], ) cc_library( name = "fstscript_compose", srcs = [prefix_dir + "script/compose.cc"], hdrs = [prefix_dir + "include/fst/script/compose.h"], includes = [prefix_dir + "include"], deps = [ ":fstscript_base", ":fstscript_connect", ], ) cc_library( name = "fstscript_difference", srcs = [prefix_dir + "script/difference.cc"], hdrs = [prefix_dir + "include/fst/script/difference.h"], includes = [prefix_dir + "include"], deps = [ ":fstscript_base", ":fstscript_compose", ], ) cc_library( name = "fstscript_draw", srcs = [prefix_dir + "script/draw.cc"], hdrs = [ prefix_dir + "include/fst/script/draw.h", prefix_dir + "include/fst/script/draw-impl.h", ], includes = [prefix_dir + "include"], deps = [":fstscript_base"], ) cc_library( name = "fstscript_info", srcs = [ prefix_dir + "script/info.cc", prefix_dir + "script/info-impl.cc", ], hdrs = [ prefix_dir + "include/fst/script/info.h", prefix_dir + "include/fst/script/info-impl.h", ], includes = [prefix_dir + "include"], deps = [":fstscript_base"], ) cc_library( name = "fstscript_intersect", srcs = [prefix_dir + "script/intersect.cc"], hdrs = [prefix_dir + "include/fst/script/intersect.h"], includes = [prefix_dir + "include"], deps = [ ":fstscript_base", ":fstscript_compose", ], ) cc_library( name = "fstscript_print", srcs = [prefix_dir + "script/print.cc"], hdrs = [ prefix_dir + "include/fst/script/print.h", prefix_dir + "include/fst/script/print-impl.h", ], includes = [prefix_dir + "include"], deps = [":fstscript_base"], ) cc_library( name = "fstscript_randequivalent", srcs = [prefix_dir + "script/randequivalent.cc"], hdrs = [prefix_dir + "include/fst/script/randequivalent.h"], includes = [prefix_dir + "include"], deps = [ ":fstscript_base", ":fstscript_randgen", ], ) cc_library( name = "fstscript_rmepsilon", srcs = [prefix_dir + "script/rmepsilon.cc"], hdrs = [prefix_dir + "include/fst/script/rmepsilon.h"], includes = [prefix_dir + "include"], deps = [ ":fstscript_base", ":fstscript_shortest_distance", ], ) cc_library( name = "fstscript_shortest_distance", srcs = [prefix_dir + "script/shortest-distance.cc"], hdrs = [prefix_dir + "include/fst/script/shortest-distance.h"], includes = [prefix_dir + "include"], deps = [ ":fstscript_base", ":fstscript_prune", ], ) cc_library( name = "fstscript_shortest_path", srcs = [prefix_dir + "script/shortest-path.cc"], hdrs = [prefix_dir + "include/fst/script/shortest-path.h"], includes = [prefix_dir + "include"], deps = [ ":fstscript_base", ":fstscript_shortest_distance", ], ) cc_library( name = "fstscript", deps = [ ":fstscript_arcsort", ":fstscript_closure", ":fstscript_compile", ":fstscript_compose", ":fstscript_concat", ":fstscript_connect", ":fstscript_convert", ":fstscript_decode", ":fstscript_determinize", ":fstscript_difference", ":fstscript_disambiguate", ":fstscript_draw", ":fstscript_encode", ":fstscript_epsnormalize", ":fstscript_equal", ":fstscript_equivalent", ":fstscript_info", ":fstscript_intersect", ":fstscript_invert", ":fstscript_isomorphic", ":fstscript_map", ":fstscript_minimize", ":fstscript_print", ":fstscript_project", ":fstscript_prune", ":fstscript_push", ":fstscript_randequivalent", ":fstscript_randgen", ":fstscript_relabel", ":fstscript_replace", ":fstscript_reverse", ":fstscript_reweight", ":fstscript_rmepsilon", ":fstscript_shortest_distance", ":fstscript_shortest_path", ":fstscript_synchronize", ":fstscript_topsort", ":fstscript_union", ":fstscript_verify", ], ) # Command-line binaries (bin/) [ cc_binary( name = "fst%s" % operation.replace("_", ""), srcs = [ prefix_dir + "bin/fst%s.cc" % operation.replace("_", ""), prefix_dir + "bin/fst%s-main.cc" % operation.replace("_", ""), ], linkstatic = static_binary, deps = [":fstscript_%s" % operation], ) for operation in [ "arcsort", "closure", "compile", "compose", "concat", "connect", "convert", "determinize", "difference", "disambiguate", "draw", "epsnormalize", "equal", "info", "intersect", "invert", "isomorphic", "map", "minimize", "print", "project", "prune", "push", "randgen", "relabel", "replace", "reverse", "reweight", "rmepsilon", "shortest_distance", "shortest_path", "synchronize", "topsort", "union", ] ] cc_binary( name = "fstencode", srcs = [ prefix_dir + "bin/fstencode.cc", prefix_dir + "bin/fstencode-main.cc", ], linkstatic = static_binary, deps = [ ":fstscript_decode", ":fstscript_encode", ], ) cc_binary( name = "fstequivalent", srcs = [ prefix_dir + "bin/fstequivalent.cc", prefix_dir + "bin/fstequivalent-main.cc", ], linkstatic = static_binary, deps = [ ":fstscript_equivalent", ":fstscript_randequivalent", ], ) cc_binary( name = "fstsymbols", srcs = [ prefix_dir + "bin/fstsymbols.cc", prefix_dir + "bin/fstsymbols-main.cc", ], linkstatic = static_binary, deps = [":fstscript_verify"], ) # Extension: Fst ARchive a/k/a FAR (extensions/far/) cc_library( name = "sttable", srcs = [ prefix_dir + "extensions/far/stlist.cc", prefix_dir + "extensions/far/sttable.cc", ], hdrs = [ prefix_dir + "include/fst/extensions/far/stlist.h", prefix_dir + "include/fst/extensions/far/sttable.h", ], includes = [prefix_dir + "include"], deps = [":util"], ) cc_library( name = "far_base", hdrs = [ prefix_dir + "include/fst/extensions/far/far.h", ], includes = [prefix_dir + "include"], deps = [ ":fst", ":sttable", ], ) cc_library( name = "far", srcs = [prefix_dir + "extensions/far/strings.cc"], hdrs = [ prefix_dir + "include/fst/extensions/far/compile-strings.h", prefix_dir + "include/fst/extensions/far/create.h", prefix_dir + "include/fst/extensions/far/equal.h", prefix_dir + "include/fst/extensions/far/extract.h", prefix_dir + "include/fst/extensions/far/farlib.h", prefix_dir + "include/fst/extensions/far/info.h", prefix_dir + "include/fst/extensions/far/isomorphic.h", prefix_dir + "include/fst/extensions/far/print-strings.h", ], includes = [prefix_dir + "include"], deps = [ ":far_base", ":fst", ], ) cc_library( name = "farscript", srcs = [ prefix_dir + "extensions/far/far-class.cc", prefix_dir + "extensions/far/farscript.cc", prefix_dir + "extensions/far/getters.cc", prefix_dir + "extensions/far/script-impl.cc", prefix_dir + "extensions/far/strings.cc", ], hdrs = [ prefix_dir + "include/fst/extensions/far/compile-strings.h", prefix_dir + "include/fst/extensions/far/far-class.h", prefix_dir + "include/fst/extensions/far/farscript.h", prefix_dir + "include/fst/extensions/far/getters.h", prefix_dir + "include/fst/extensions/far/script-impl.h", ], includes = [prefix_dir + "include"], deps = [ ":base", ":far", ":fstscript_base", ], ) [ cc_binary( name = "far%s" % operation, srcs = [ prefix_dir + "extensions/far/far%s.cc" % operation, prefix_dir + "extensions/far/far%s-main.cc" % operation, ], linkstatic = static_binary, deps = [":farscript"], ) for operation in [ "compilestrings", "create", "equal", "extract", "info", "isomorphic", "printstrings", ] ] # Extension: PushDown Transducers a/k/a PDT (extensions/pdt/) cc_library( name = "pdt", hdrs = [ prefix_dir + "include/fst/extensions/pdt/collection.h", prefix_dir + "include/fst/extensions/pdt/compose.h", prefix_dir + "include/fst/extensions/pdt/expand.h", prefix_dir + "include/fst/extensions/pdt/getters.h", prefix_dir + "include/fst/extensions/pdt/info.h", prefix_dir + "include/fst/extensions/pdt/paren.h", prefix_dir + "include/fst/extensions/pdt/pdt.h", prefix_dir + "include/fst/extensions/pdt/pdtlib.h", prefix_dir + "include/fst/extensions/pdt/replace.h", prefix_dir + "include/fst/extensions/pdt/reverse.h", prefix_dir + "include/fst/extensions/pdt/shortest-path.h", ], includes = [prefix_dir + "include"], deps = [ ":fst", ], ) cc_library( name = "pdtscript", srcs = [ prefix_dir + "extensions/pdt/getters.cc", prefix_dir + "extensions/pdt/pdtscript.cc", ], hdrs = [ prefix_dir + "include/fst/extensions/pdt/getters.h", prefix_dir + "include/fst/extensions/pdt/pdtscript.h", ], includes = [prefix_dir + "include"], deps = [ ":fst", ":fstscript_base", ":pdt", ], ) cc_binary( name = "pdtcompose", srcs = [prefix_dir + "extensions/pdt/pdtcompose.cc"], linkstatic = static_binary, deps = [ ":fstscript_connect", ":pdtscript", ], ) [ cc_binary( name = "pdt%s" % operation, srcs = [prefix_dir + "extensions/pdt/pdt%s.cc" % operation], linkstatic = static_binary, deps = [":pdtscript"], ) for operation in [ "expand", "info", "replace", "reverse", "shortestpath", ] ] # Extension: Multi PushDown Transducers a/k/a MPDT (extensions/mpdt/) cc_library( name = "mpdt", hdrs = [ prefix_dir + "include/fst/extensions/mpdt/compose.h", prefix_dir + "include/fst/extensions/mpdt/expand.h", prefix_dir + "include/fst/extensions/mpdt/info.h", prefix_dir + "include/fst/extensions/mpdt/mpdt.h", prefix_dir + "include/fst/extensions/mpdt/mpdtlib.h", prefix_dir + "include/fst/extensions/mpdt/read_write_utils.h", prefix_dir + "include/fst/extensions/mpdt/reverse.h", ], includes = [prefix_dir + "include"], deps = [ ":fst", ":pdt", ], ) cc_library( name = "mpdtscript", srcs = [prefix_dir + "extensions/mpdt/mpdtscript.cc"], hdrs = [prefix_dir + "include/fst/extensions/mpdt/mpdtscript.h"], includes = [prefix_dir + "include"], deps = [ ":fst", ":fstscript_base", ":mpdt", ":pdtscript", ], ) cc_binary( name = "mpdtcompose", srcs = [prefix_dir + "extensions/mpdt/mpdtcompose.cc"], linkstatic = static_binary, deps = [ ":fstscript_connect", ":mpdtscript", ], ) [ cc_binary( name = "mpdt%s" % operation, srcs = [prefix_dir + "extensions/mpdt/mpdt%s.cc" % operation], linkstatic = static_binary, deps = [":mpdtscript"], ) for operation in [ "expand", "info", "reverse", ] ] # Extension: LOUDS compressed n-gram language models (extensions/ngram/) cc_library( name = "ngram", srcs = [ prefix_dir + "extensions/ngram/bitmap-index.cc", prefix_dir + "extensions/ngram/ngram-fst.cc", prefix_dir + "extensions/ngram/nthbit.cc", ], hdrs = [ prefix_dir + "include/fst/extensions/ngram/bitmap-index.h", prefix_dir + "include/fst/extensions/ngram/ngram-fst.h", prefix_dir + "include/fst/extensions/ngram/nthbit.h", ], includes = [prefix_dir + "include"], deps = [ ":fst", ], ) # TODO: Extensions compact, compress, const, linear, lookahead, python, special