1 # Copyright 2015-2019 Google LLC. All Rights Reserved.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 package(default_visibility = ["//visibility:public"])
17 licenses(["notice"]) # Apache 2.0
19 exports_files(["COPYING"])
23 values = {"define": "absl=1"},
34 hdrs = [prefix_dir + "include/fst/fst-decl.h"],
35 includes = [prefix_dir + "include"],
40 # One-stop header file which includes the remaining headers below:
41 prefix_dir + "include/fst/fstlib.h",
43 # Fine-grained headers:
44 prefix_dir + "include/fst/accumulator.h",
45 prefix_dir + "include/fst/add-on.h",
46 prefix_dir + "include/fst/arc-arena.h",
47 prefix_dir + "include/fst/arc-map.h",
48 prefix_dir + "include/fst/arc.h",
49 prefix_dir + "include/fst/arcfilter.h",
50 prefix_dir + "include/fst/arcsort.h",
51 prefix_dir + "include/fst/bi-table.h",
52 prefix_dir + "include/fst/cache.h",
53 prefix_dir + "include/fst/closure.h",
54 prefix_dir + "include/fst/compact-fst.h",
55 prefix_dir + "include/fst/complement.h",
56 prefix_dir + "include/fst/compose-filter.h",
57 prefix_dir + "include/fst/compose.h",
58 prefix_dir + "include/fst/concat.h",
59 prefix_dir + "include/fst/connect.h",
60 prefix_dir + "include/fst/const-fst.h",
61 prefix_dir + "include/fst/determinize.h",
62 prefix_dir + "include/fst/dfs-visit.h",
63 prefix_dir + "include/fst/difference.h",
64 prefix_dir + "include/fst/disambiguate.h",
65 prefix_dir + "include/fst/edit-fst.h",
66 prefix_dir + "include/fst/encode.h",
67 prefix_dir + "include/fst/epsnormalize.h",
68 prefix_dir + "include/fst/equal.h",
69 prefix_dir + "include/fst/equivalent.h",
70 prefix_dir + "include/fst/expanded-fst.h",
71 prefix_dir + "include/fst/factor-weight.h",
72 prefix_dir + "include/fst/filter-state.h",
73 prefix_dir + "include/fst/fst.h",
74 prefix_dir + "include/fst/heap.h",
75 prefix_dir + "include/fst/intersect.h",
76 prefix_dir + "include/fst/invert.h",
77 prefix_dir + "include/fst/isomorphic.h",
78 prefix_dir + "include/fst/label-reachable.h",
79 prefix_dir + "include/fst/lookahead-filter.h",
80 prefix_dir + "include/fst/lookahead-matcher.h",
81 prefix_dir + "include/fst/map.h",
82 prefix_dir + "include/fst/matcher-fst.h",
83 prefix_dir + "include/fst/matcher.h",
84 prefix_dir + "include/fst/memory.h",
85 prefix_dir + "include/fst/minimize.h",
86 prefix_dir + "include/fst/mutable-fst.h",
87 prefix_dir + "include/fst/partition.h",
88 prefix_dir + "include/fst/project.h",
89 prefix_dir + "include/fst/properties.h",
90 prefix_dir + "include/fst/prune.h",
91 prefix_dir + "include/fst/push.h",
92 prefix_dir + "include/fst/queue.h",
93 prefix_dir + "include/fst/randequivalent.h",
94 prefix_dir + "include/fst/randgen.h",
95 prefix_dir + "include/fst/rational.h",
96 prefix_dir + "include/fst/relabel.h",
97 prefix_dir + "include/fst/replace-util.h",
98 prefix_dir + "include/fst/replace.h",
99 prefix_dir + "include/fst/reverse.h",
100 prefix_dir + "include/fst/reweight.h",
101 prefix_dir + "include/fst/rmepsilon.h",
102 prefix_dir + "include/fst/rmfinalepsilon.h",
103 prefix_dir + "include/fst/shortest-distance.h",
104 prefix_dir + "include/fst/shortest-path.h",
105 prefix_dir + "include/fst/state-map.h",
106 prefix_dir + "include/fst/state-reachable.h",
107 prefix_dir + "include/fst/state-table.h",
108 prefix_dir + "include/fst/statesort.h",
109 prefix_dir + "include/fst/string.h",
110 prefix_dir + "include/fst/symbol-table-ops.h",
111 prefix_dir + "include/fst/synchronize.h",
112 prefix_dir + "include/fst/test-properties.h",
113 prefix_dir + "include/fst/topsort.h",
114 prefix_dir + "include/fst/union.h",
115 prefix_dir + "include/fst/vector-fst.h",
116 prefix_dir + "include/fst/verify.h",
117 prefix_dir + "include/fst/visit.h",
120 # This version does not have the export-dynamic flag set and should not be
121 # used to load dynamic-shared object FST extensions. Please see the
122 # "lib_export_dynamic" target below for binaries that need DSO loading.
126 prefix_dir + "lib/fst.cc",
127 prefix_dir + "lib/properties.cc",
128 prefix_dir + "lib/symbol-table-ops.cc",
130 hdrs = PUBLIC_HEADERS,
131 copts = ["-Wno-sign-compare"],
132 includes = [prefix_dir + "include"],
149 hdrs = PUBLIC_HEADERS,
150 includes = [prefix_dir + "include"],
158 name = "lib_export_dynamic",
159 linkopts = ["-Wl,--export-dynamic"],
165 srcs = [prefix_dir + "lib/fst-types.cc"],
166 deps = [":lib_lite"],
167 alwayslink = 1, # because of registration
171 name = "symbol-table",
172 srcs = [prefix_dir + "lib/symbol-table.cc"],
173 hdrs = [prefix_dir + "include/fst/symbol-table.h"],
174 copts = ["-Wno-sign-compare"],
175 includes = [prefix_dir + "include"],
184 srcs = [prefix_dir + "lib/weight.cc"],
186 prefix_dir + "include/fst/expectation-weight.h",
187 prefix_dir + "include/fst/float-weight.h",
188 prefix_dir + "include/fst/lexicographic-weight.h",
189 prefix_dir + "include/fst/pair-weight.h",
190 prefix_dir + "include/fst/power-weight.h",
191 prefix_dir + "include/fst/product-weight.h",
192 prefix_dir + "include/fst/set-weight.h",
193 prefix_dir + "include/fst/signed-log-weight.h",
194 prefix_dir + "include/fst/sparse-power-weight.h",
195 prefix_dir + "include/fst/sparse-tuple-weight.h",
196 prefix_dir + "include/fst/string-weight.h",
197 prefix_dir + "include/fst/tuple-weight.h",
198 prefix_dir + "include/fst/union-weight.h",
199 prefix_dir + "include/fst/weight.h",
201 includes = [prefix_dir + "include"],
210 name = "interval-set",
211 hdrs = [prefix_dir + "include/fst/interval-set.h"],
212 includes = [prefix_dir + "include"],
222 prefix_dir + "include/fst/generic-register.h",
223 prefix_dir + "include/fst/register.h",
225 includes = [prefix_dir + "include"],
236 prefix_dir + "include/fst/icu.h",
242 hdrs = [prefix_dir + "include/fst/union-find.h"],
243 includes = [prefix_dir + "include"],
250 prefix_dir + "lib/mapped-file.cc",
251 prefix_dir + "lib/util.cc",
254 prefix_dir + "include/fst/mapped-file.h",
255 prefix_dir + "include/fst/util.h",
257 includes = [prefix_dir + "include"],
264 prefix_dir + "lib/compat.cc",
265 prefix_dir + "lib/flags.cc",
268 prefix_dir + "include/fst/compat.h",
269 prefix_dir + "include/fst/config.h",
270 prefix_dir + "include/fst/flags.h",
271 prefix_dir + "include/fst/icu.h",
272 prefix_dir + "include/fst/lock.h",
273 prefix_dir + "include/fst/log.h",
274 prefix_dir + "include/fst/types.h",
277 ":has_absl": ["OPENFST_HAS_ABSL=1"],
278 "//conditions:default": [],
280 includes = [prefix_dir + "include"],
282 ":has_absl": ["@com_google_absl//absl/synchronization"],
283 "//conditions:default": [],
287 # Core library tests (test/)
293 prefix_dir + "test/fst_test.cc",
294 prefix_dir + "include/fst/test/fst_test.h",
300 name = "weight-tester",
302 hdrs = [prefix_dir + "include/fst/test/weight-tester.h"],
303 includes = [prefix_dir],
308 name = "weight_test",
310 srcs = [prefix_dir + "test/weight_test.cc"],
311 copts = ["-Wno-unused-local-typedefs"],
320 name = "algo_test_%s" % weight,
322 prefix_dir + "test/algo_test.cc",
323 prefix_dir + "include/fst/test/algo_test.h",
324 prefix_dir + "include/fst/test/rand-fst.h",
326 defines = ["TEST_%s" % weight.upper()],
338 # Non-template scripting-language integration (script/)
341 name = "fstscript_base",
343 prefix_dir + "script/arciterator-class.cc",
344 prefix_dir + "script/encodemapper-class.cc",
345 prefix_dir + "script/fst-class.cc",
346 prefix_dir + "script/getters.cc",
347 prefix_dir + "script/stateiterator-class.cc",
348 prefix_dir + "script/text-io.cc",
349 prefix_dir + "script/weight-class.cc",
352 prefix_dir + "include/fst/script/arc-class.h",
353 prefix_dir + "include/fst/script/arciterator-class.h",
354 prefix_dir + "include/fst/script/arg-packs.h",
355 prefix_dir + "include/fst/script/encodemapper-class.h",
356 prefix_dir + "include/fst/script/fst-class.h",
357 prefix_dir + "include/fst/script/fstscript-decl.h",
358 prefix_dir + "include/fst/script/fstscript.h",
359 prefix_dir + "include/fst/script/getters.h",
360 prefix_dir + "include/fst/script/register.h",
361 prefix_dir + "include/fst/script/script-impl.h",
362 prefix_dir + "include/fst/script/stateiterator-class.h",
363 prefix_dir + "include/fst/script/text-io.h",
364 prefix_dir + "include/fst/script/weight-class.h",
366 prefix_dir + "include/fst/script/arcsort.h",
367 prefix_dir + "include/fst/script/closure.h",
368 prefix_dir + "include/fst/script/compile.h",
369 prefix_dir + "include/fst/script/compile-impl.h",
370 prefix_dir + "include/fst/script/compose.h",
371 prefix_dir + "include/fst/script/concat.h",
372 prefix_dir + "include/fst/script/connect.h",
373 prefix_dir + "include/fst/script/convert.h",
374 prefix_dir + "include/fst/script/decode.h",
375 prefix_dir + "include/fst/script/determinize.h",
376 prefix_dir + "include/fst/script/difference.h",
377 prefix_dir + "include/fst/script/disambiguate.h",
378 prefix_dir + "include/fst/script/draw.h",
379 prefix_dir + "include/fst/script/draw-impl.h",
380 prefix_dir + "include/fst/script/encode.h",
381 prefix_dir + "include/fst/script/epsnormalize.h",
382 prefix_dir + "include/fst/script/equal.h",
383 prefix_dir + "include/fst/script/equivalent.h",
384 prefix_dir + "include/fst/script/info.h",
385 prefix_dir + "include/fst/script/info-impl.h",
386 prefix_dir + "include/fst/script/intersect.h",
387 prefix_dir + "include/fst/script/invert.h",
388 prefix_dir + "include/fst/script/isomorphic.h",
389 prefix_dir + "include/fst/script/map.h",
390 prefix_dir + "include/fst/script/minimize.h",
391 prefix_dir + "include/fst/script/print.h",
392 prefix_dir + "include/fst/script/print-impl.h",
393 prefix_dir + "include/fst/script/project.h",
394 prefix_dir + "include/fst/script/prune.h",
395 prefix_dir + "include/fst/script/push.h",
396 prefix_dir + "include/fst/script/randequivalent.h",
397 prefix_dir + "include/fst/script/randgen.h",
398 prefix_dir + "include/fst/script/relabel.h",
399 prefix_dir + "include/fst/script/replace.h",
400 prefix_dir + "include/fst/script/reverse.h",
401 prefix_dir + "include/fst/script/reweight.h",
402 prefix_dir + "include/fst/script/rmepsilon.h",
403 prefix_dir + "include/fst/script/shortest-distance.h",
404 prefix_dir + "include/fst/script/shortest-path.h",
405 prefix_dir + "include/fst/script/synchronize.h",
406 prefix_dir + "include/fst/script/topsort.h",
407 prefix_dir + "include/fst/script/union.h",
408 prefix_dir + "include/fst/script/verify.h",
410 copts = ["-Wno-sign-compare"],
411 includes = [prefix_dir + "include"],
417 name = "fstscript_%s" % operation,
418 srcs = [prefix_dir + "script/%s.cc" % operation],
419 hdrs = [prefix_dir + "include/fst/script/%s.h" % operation],
420 includes = [prefix_dir + "include"],
421 deps = [":fstscript_base"],
456 name = "fstscript_compile",
457 srcs = [prefix_dir + "script/compile.cc"],
459 prefix_dir + "include/fst/script/compile.h",
460 prefix_dir + "include/fst/script/compile-impl.h",
462 includes = [prefix_dir + "include"],
463 deps = [":fstscript_base"],
467 name = "fstscript_compose",
468 srcs = [prefix_dir + "script/compose.cc"],
469 hdrs = [prefix_dir + "include/fst/script/compose.h"],
470 includes = [prefix_dir + "include"],
473 ":fstscript_connect",
478 name = "fstscript_difference",
479 srcs = [prefix_dir + "script/difference.cc"],
480 hdrs = [prefix_dir + "include/fst/script/difference.h"],
481 includes = [prefix_dir + "include"],
484 ":fstscript_compose",
489 name = "fstscript_draw",
490 srcs = [prefix_dir + "script/draw.cc"],
492 prefix_dir + "include/fst/script/draw.h",
493 prefix_dir + "include/fst/script/draw-impl.h",
495 includes = [prefix_dir + "include"],
496 deps = [":fstscript_base"],
500 name = "fstscript_info",
502 prefix_dir + "script/info.cc",
503 prefix_dir + "script/info-impl.cc",
506 prefix_dir + "include/fst/script/info.h",
507 prefix_dir + "include/fst/script/info-impl.h",
509 includes = [prefix_dir + "include"],
510 deps = [":fstscript_base"],
514 name = "fstscript_intersect",
515 srcs = [prefix_dir + "script/intersect.cc"],
516 hdrs = [prefix_dir + "include/fst/script/intersect.h"],
517 includes = [prefix_dir + "include"],
520 ":fstscript_compose",
525 name = "fstscript_print",
526 srcs = [prefix_dir + "script/print.cc"],
528 prefix_dir + "include/fst/script/print.h",
529 prefix_dir + "include/fst/script/print-impl.h",
531 includes = [prefix_dir + "include"],
532 deps = [":fstscript_base"],
536 name = "fstscript_randequivalent",
537 srcs = [prefix_dir + "script/randequivalent.cc"],
538 hdrs = [prefix_dir + "include/fst/script/randequivalent.h"],
539 includes = [prefix_dir + "include"],
542 ":fstscript_randgen",
547 name = "fstscript_rmepsilon",
548 srcs = [prefix_dir + "script/rmepsilon.cc"],
549 hdrs = [prefix_dir + "include/fst/script/rmepsilon.h"],
550 includes = [prefix_dir + "include"],
553 ":fstscript_shortest_distance",
558 name = "fstscript_shortest_distance",
559 srcs = [prefix_dir + "script/shortest-distance.cc"],
560 hdrs = [prefix_dir + "include/fst/script/shortest-distance.h"],
561 includes = [prefix_dir + "include"],
569 name = "fstscript_shortest_path",
570 srcs = [prefix_dir + "script/shortest-path.cc"],
571 hdrs = [prefix_dir + "include/fst/script/shortest-path.h"],
572 includes = [prefix_dir + "include"],
575 ":fstscript_shortest_distance",
582 ":fstscript_arcsort",
583 ":fstscript_closure",
584 ":fstscript_compile",
585 ":fstscript_compose",
587 ":fstscript_connect",
588 ":fstscript_convert",
590 ":fstscript_determinize",
591 ":fstscript_difference",
592 ":fstscript_disambiguate",
595 ":fstscript_epsnormalize",
597 ":fstscript_equivalent",
599 ":fstscript_intersect",
601 ":fstscript_isomorphic",
603 ":fstscript_minimize",
605 ":fstscript_project",
608 ":fstscript_randequivalent",
609 ":fstscript_randgen",
610 ":fstscript_relabel",
611 ":fstscript_replace",
612 ":fstscript_reverse",
613 ":fstscript_reweight",
614 ":fstscript_rmepsilon",
615 ":fstscript_shortest_distance",
616 ":fstscript_shortest_path",
617 ":fstscript_synchronize",
618 ":fstscript_topsort",
624 # Command-line binaries (bin/)
628 name = "fst%s" % operation.replace("_", ""),
630 prefix_dir + "bin/fst%s.cc" % operation.replace("_", ""),
631 prefix_dir + "bin/fst%s-main.cc" % operation.replace("_", ""),
633 linkstatic = static_binary,
634 deps = [":fstscript_%s" % operation],
677 prefix_dir + "bin/fstencode.cc",
678 prefix_dir + "bin/fstencode-main.cc",
680 linkstatic = static_binary,
688 name = "fstequivalent",
690 prefix_dir + "bin/fstequivalent.cc",
691 prefix_dir + "bin/fstequivalent-main.cc",
693 linkstatic = static_binary,
695 ":fstscript_equivalent",
696 ":fstscript_randequivalent",
703 prefix_dir + "bin/fstsymbols.cc",
704 prefix_dir + "bin/fstsymbols-main.cc",
706 linkstatic = static_binary,
707 deps = [":fstscript_verify"],
710 # Extension: Fst ARchive a/k/a FAR (extensions/far/)
715 prefix_dir + "extensions/far/stlist.cc",
716 prefix_dir + "extensions/far/sttable.cc",
719 prefix_dir + "include/fst/extensions/far/stlist.h",
720 prefix_dir + "include/fst/extensions/far/sttable.h",
722 includes = [prefix_dir + "include"],
729 prefix_dir + "include/fst/extensions/far/far.h",
731 includes = [prefix_dir + "include"],
740 srcs = [prefix_dir + "extensions/far/strings.cc"],
742 prefix_dir + "include/fst/extensions/far/compile-strings.h",
743 prefix_dir + "include/fst/extensions/far/create.h",
744 prefix_dir + "include/fst/extensions/far/equal.h",
745 prefix_dir + "include/fst/extensions/far/extract.h",
746 prefix_dir + "include/fst/extensions/far/farlib.h",
747 prefix_dir + "include/fst/extensions/far/info.h",
748 prefix_dir + "include/fst/extensions/far/isomorphic.h",
749 prefix_dir + "include/fst/extensions/far/print-strings.h",
751 includes = [prefix_dir + "include"],
761 prefix_dir + "extensions/far/far-class.cc",
762 prefix_dir + "extensions/far/farscript.cc",
763 prefix_dir + "extensions/far/getters.cc",
764 prefix_dir + "extensions/far/script-impl.cc",
765 prefix_dir + "extensions/far/strings.cc",
768 prefix_dir + "include/fst/extensions/far/compile-strings.h",
769 prefix_dir + "include/fst/extensions/far/far-class.h",
770 prefix_dir + "include/fst/extensions/far/farscript.h",
771 prefix_dir + "include/fst/extensions/far/getters.h",
772 prefix_dir + "include/fst/extensions/far/script-impl.h",
774 includes = [prefix_dir + "include"],
784 name = "far%s" % operation,
786 prefix_dir + "extensions/far/far%s.cc" % operation,
787 prefix_dir + "extensions/far/far%s-main.cc" % operation,
789 linkstatic = static_binary,
790 deps = [":farscript"],
803 # Extension: PushDown Transducers a/k/a PDT (extensions/pdt/)
808 prefix_dir + "include/fst/extensions/pdt/collection.h",
809 prefix_dir + "include/fst/extensions/pdt/compose.h",
810 prefix_dir + "include/fst/extensions/pdt/expand.h",
811 prefix_dir + "include/fst/extensions/pdt/getters.h",
812 prefix_dir + "include/fst/extensions/pdt/info.h",
813 prefix_dir + "include/fst/extensions/pdt/paren.h",
814 prefix_dir + "include/fst/extensions/pdt/pdt.h",
815 prefix_dir + "include/fst/extensions/pdt/pdtlib.h",
816 prefix_dir + "include/fst/extensions/pdt/replace.h",
817 prefix_dir + "include/fst/extensions/pdt/reverse.h",
818 prefix_dir + "include/fst/extensions/pdt/shortest-path.h",
820 includes = [prefix_dir + "include"],
829 prefix_dir + "extensions/pdt/getters.cc",
830 prefix_dir + "extensions/pdt/pdtscript.cc",
833 prefix_dir + "include/fst/extensions/pdt/getters.h",
834 prefix_dir + "include/fst/extensions/pdt/pdtscript.h",
836 includes = [prefix_dir + "include"],
846 srcs = [prefix_dir + "extensions/pdt/pdtcompose.cc"],
847 linkstatic = static_binary,
849 ":fstscript_connect",
856 name = "pdt%s" % operation,
857 srcs = [prefix_dir + "extensions/pdt/pdt%s.cc" % operation],
858 linkstatic = static_binary,
859 deps = [":pdtscript"],
870 # Extension: Multi PushDown Transducers a/k/a MPDT (extensions/mpdt/)
875 prefix_dir + "include/fst/extensions/mpdt/compose.h",
876 prefix_dir + "include/fst/extensions/mpdt/expand.h",
877 prefix_dir + "include/fst/extensions/mpdt/info.h",
878 prefix_dir + "include/fst/extensions/mpdt/mpdt.h",
879 prefix_dir + "include/fst/extensions/mpdt/mpdtlib.h",
880 prefix_dir + "include/fst/extensions/mpdt/read_write_utils.h",
881 prefix_dir + "include/fst/extensions/mpdt/reverse.h",
883 includes = [prefix_dir + "include"],
892 srcs = [prefix_dir + "extensions/mpdt/mpdtscript.cc"],
893 hdrs = [prefix_dir + "include/fst/extensions/mpdt/mpdtscript.h"],
894 includes = [prefix_dir + "include"],
904 name = "mpdtcompose",
905 srcs = [prefix_dir + "extensions/mpdt/mpdtcompose.cc"],
906 linkstatic = static_binary,
908 ":fstscript_connect",
915 name = "mpdt%s" % operation,
916 srcs = [prefix_dir + "extensions/mpdt/mpdt%s.cc" % operation],
917 linkstatic = static_binary,
918 deps = [":mpdtscript"],
927 # Extension: LOUDS compressed n-gram language models (extensions/ngram/)
932 prefix_dir + "extensions/ngram/bitmap-index.cc",
933 prefix_dir + "extensions/ngram/ngram-fst.cc",
934 prefix_dir + "extensions/ngram/nthbit.cc",
937 prefix_dir + "include/fst/extensions/ngram/bitmap-index.h",
938 prefix_dir + "include/fst/extensions/ngram/ngram-fst.h",
939 prefix_dir + "include/fst/extensions/ngram/nthbit.h",
941 includes = [prefix_dir + "include"],
947 # TODO: Extensions compact, compress, const, linear, lookahead, python, special