Imported Upstream version 1.7.8
[platform/upstream/openfst.git] / BUILD.bazel
1 # Copyright 2015-2019 Google LLC. All Rights Reserved.
2 #
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
6 #
7 #     http://www.apache.org/licenses/LICENSE-2.0
8 #
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.
14
15 package(default_visibility = ["//visibility:public"])
16
17 licenses(["notice"])  # Apache 2.0
18
19 exports_files(["COPYING"])
20
21 config_setting(
22     name = "has_absl",
23     values = {"define": "absl=1"},
24 )
25
26 prefix_dir = "src/"
27
28 static_binary = 1
29
30 # Core library (lib/)
31
32 cc_library(
33     name = "fst-decl",
34     hdrs = [prefix_dir + "include/fst/fst-decl.h"],
35     includes = [prefix_dir + "include"],
36     deps = [":base"],
37 )
38
39 PUBLIC_HEADERS = [
40     # One-stop header file which includes the remaining headers below:
41     prefix_dir + "include/fst/fstlib.h",
42
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",
118 ]
119
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.
123 cc_library(
124     name = "lib_lite",
125     srcs = [
126         prefix_dir + "lib/fst.cc",
127         prefix_dir + "lib/properties.cc",
128         prefix_dir + "lib/symbol-table-ops.cc",
129     ],
130     hdrs = PUBLIC_HEADERS,
131     copts = ["-Wno-sign-compare"],
132     includes = [prefix_dir + "include"],
133     linkopts = ["-lm"],
134     deps = [
135         ":base",
136         ":fst-decl",
137         ":icu",
138         ":interval-set",
139         ":register",
140         ":symbol-table",
141         ":union-find",
142         ":util",
143         ":weight",
144     ],
145 )
146
147 cc_library(
148     name = "fst",
149     hdrs = PUBLIC_HEADERS,
150     includes = [prefix_dir + "include"],
151     deps = [
152         ":fst-types",
153         ":lib_lite",
154     ],
155 )
156
157 cc_library(
158     name = "lib_export_dynamic",
159     linkopts = ["-Wl,--export-dynamic"],
160     deps = [":fst"],
161 )
162
163 cc_library(
164     name = "fst-types",
165     srcs = [prefix_dir + "lib/fst-types.cc"],
166     deps = [":lib_lite"],
167     alwayslink = 1,  # because of registration
168 )
169
170 cc_library(
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"],
176     deps = [
177         ":base",
178         ":util",
179     ],
180 )
181
182 cc_library(
183     name = "weight",
184     srcs = [prefix_dir + "lib/weight.cc"],
185     hdrs = [
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",
200     ],
201     includes = [prefix_dir + "include"],
202     linkopts = ["-lm"],
203     deps = [
204         ":base",
205         ":util",
206     ],
207 )
208
209 cc_library(
210     name = "interval-set",
211     hdrs = [prefix_dir + "include/fst/interval-set.h"],
212     includes = [prefix_dir + "include"],
213     deps = [
214         ":base",
215         ":util",
216     ],
217 )
218
219 cc_library(
220     name = "register",
221     hdrs = [
222         prefix_dir + "include/fst/generic-register.h",
223         prefix_dir + "include/fst/register.h",
224     ],
225     includes = [prefix_dir + "include"],
226     linkopts = ["-ldl"],
227     deps = [
228         ":base",
229         ":util",
230     ],
231 )
232
233 cc_library(
234     name = "icu",
235     hdrs = [
236         prefix_dir + "include/fst/icu.h",
237     ],
238 )
239
240 cc_library(
241     name = "union-find",
242     hdrs = [prefix_dir + "include/fst/union-find.h"],
243     includes = [prefix_dir + "include"],
244     deps = [":base"],
245 )
246
247 cc_library(
248     name = "util",
249     srcs = [
250         prefix_dir + "lib/mapped-file.cc",
251         prefix_dir + "lib/util.cc",
252     ],
253     hdrs = [
254         prefix_dir + "include/fst/mapped-file.h",
255         prefix_dir + "include/fst/util.h",
256     ],
257     includes = [prefix_dir + "include"],
258     deps = [":base"],
259 )
260
261 cc_library(
262     name = "base",
263     srcs = [
264         prefix_dir + "lib/compat.cc",
265         prefix_dir + "lib/flags.cc",
266     ],
267     hdrs = [
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",
275     ],
276     defines = select({
277         ":has_absl": ["OPENFST_HAS_ABSL=1"],
278         "//conditions:default": [],
279     }),
280     includes = [prefix_dir + "include"],
281     deps = select({
282         ":has_absl": ["@com_google_absl//absl/synchronization"],
283         "//conditions:default": [],
284     }),
285 )
286
287 # Core library tests (test/)
288
289 cc_test(
290     name = "fst_test",
291     timeout = "short",
292     srcs = [
293         prefix_dir + "test/fst_test.cc",
294         prefix_dir + "include/fst/test/fst_test.h",
295     ],
296     deps = [":fst"],
297 )
298
299 cc_library(
300     name = "weight-tester",
301     testonly = 1,
302     hdrs = [prefix_dir + "include/fst/test/weight-tester.h"],
303     includes = [prefix_dir],
304     deps = [":weight"],
305 )
306
307 cc_test(
308     name = "weight_test",
309     timeout = "short",
310     srcs = [prefix_dir + "test/weight_test.cc"],
311     copts = ["-Wno-unused-local-typedefs"],
312     deps = [
313         ":fst",
314         ":weight-tester",
315     ],
316 )
317
318 [
319     cc_test(
320         name = "algo_test_%s" % weight,
321         srcs = [
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",
325         ],
326         defines = ["TEST_%s" % weight.upper()],
327         deps = [":fst"],
328     )
329     for weight in [
330         "tropical",
331         "log",
332         "minmax",
333         "lexicographic",
334         "power",
335     ]
336 ]
337
338 # Non-template scripting-language integration (script/)
339
340 cc_library(
341     name = "fstscript_base",
342     srcs = [
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",
350     ],
351     hdrs = [
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",
365         #
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",
409     ],
410     copts = ["-Wno-sign-compare"],
411     includes = [prefix_dir + "include"],
412     deps = [":fst"],
413 )
414
415 [
416     cc_library(
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"],
422     )
423     for operation in [
424         "arcsort",
425         "closure",
426         "concat",
427         "connect",
428         "convert",
429         "decode",
430         "determinize",
431         "disambiguate",
432         "encode",
433         "epsnormalize",
434         "equal",
435         "equivalent",
436         "invert",
437         "isomorphic",
438         "map",
439         "minimize",
440         "project",
441         "prune",
442         "push",
443         "randgen",
444         "relabel",
445         "replace",
446         "reverse",
447         "reweight",
448         "synchronize",
449         "topsort",
450         "union",
451         "verify",
452     ]
453 ]
454
455 cc_library(
456     name = "fstscript_compile",
457     srcs = [prefix_dir + "script/compile.cc"],
458     hdrs = [
459         prefix_dir + "include/fst/script/compile.h",
460         prefix_dir + "include/fst/script/compile-impl.h",
461     ],
462     includes = [prefix_dir + "include"],
463     deps = [":fstscript_base"],
464 )
465
466 cc_library(
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"],
471     deps = [
472         ":fstscript_base",
473         ":fstscript_connect",
474     ],
475 )
476
477 cc_library(
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"],
482     deps = [
483         ":fstscript_base",
484         ":fstscript_compose",
485     ],
486 )
487
488 cc_library(
489     name = "fstscript_draw",
490     srcs = [prefix_dir + "script/draw.cc"],
491     hdrs = [
492         prefix_dir + "include/fst/script/draw.h",
493         prefix_dir + "include/fst/script/draw-impl.h",
494     ],
495     includes = [prefix_dir + "include"],
496     deps = [":fstscript_base"],
497 )
498
499 cc_library(
500     name = "fstscript_info",
501     srcs = [
502         prefix_dir + "script/info.cc",
503         prefix_dir + "script/info-impl.cc",
504     ],
505     hdrs = [
506         prefix_dir + "include/fst/script/info.h",
507         prefix_dir + "include/fst/script/info-impl.h",
508     ],
509     includes = [prefix_dir + "include"],
510     deps = [":fstscript_base"],
511 )
512
513 cc_library(
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"],
518     deps = [
519         ":fstscript_base",
520         ":fstscript_compose",
521     ],
522 )
523
524 cc_library(
525     name = "fstscript_print",
526     srcs = [prefix_dir + "script/print.cc"],
527     hdrs = [
528         prefix_dir + "include/fst/script/print.h",
529         prefix_dir + "include/fst/script/print-impl.h",
530     ],
531     includes = [prefix_dir + "include"],
532     deps = [":fstscript_base"],
533 )
534
535 cc_library(
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"],
540     deps = [
541         ":fstscript_base",
542         ":fstscript_randgen",
543     ],
544 )
545
546 cc_library(
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"],
551     deps = [
552         ":fstscript_base",
553         ":fstscript_shortest_distance",
554     ],
555 )
556
557 cc_library(
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"],
562     deps = [
563         ":fstscript_base",
564         ":fstscript_prune",
565     ],
566 )
567
568 cc_library(
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"],
573     deps = [
574         ":fstscript_base",
575         ":fstscript_shortest_distance",
576     ],
577 )
578
579 cc_library(
580     name = "fstscript",
581     deps = [
582         ":fstscript_arcsort",
583         ":fstscript_closure",
584         ":fstscript_compile",
585         ":fstscript_compose",
586         ":fstscript_concat",
587         ":fstscript_connect",
588         ":fstscript_convert",
589         ":fstscript_decode",
590         ":fstscript_determinize",
591         ":fstscript_difference",
592         ":fstscript_disambiguate",
593         ":fstscript_draw",
594         ":fstscript_encode",
595         ":fstscript_epsnormalize",
596         ":fstscript_equal",
597         ":fstscript_equivalent",
598         ":fstscript_info",
599         ":fstscript_intersect",
600         ":fstscript_invert",
601         ":fstscript_isomorphic",
602         ":fstscript_map",
603         ":fstscript_minimize",
604         ":fstscript_print",
605         ":fstscript_project",
606         ":fstscript_prune",
607         ":fstscript_push",
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",
619         ":fstscript_union",
620         ":fstscript_verify",
621     ],
622 )
623
624 # Command-line binaries (bin/)
625
626 [
627     cc_binary(
628         name = "fst%s" % operation.replace("_", ""),
629         srcs = [
630             prefix_dir + "bin/fst%s.cc" % operation.replace("_", ""),
631             prefix_dir + "bin/fst%s-main.cc" % operation.replace("_", ""),
632         ],
633         linkstatic = static_binary,
634         deps = [":fstscript_%s" % operation],
635     )
636     for operation in [
637         "arcsort",
638         "closure",
639         "compile",
640         "compose",
641         "concat",
642         "connect",
643         "convert",
644         "determinize",
645         "difference",
646         "disambiguate",
647         "draw",
648         "epsnormalize",
649         "equal",
650         "info",
651         "intersect",
652         "invert",
653         "isomorphic",
654         "map",
655         "minimize",
656         "print",
657         "project",
658         "prune",
659         "push",
660         "randgen",
661         "relabel",
662         "replace",
663         "reverse",
664         "reweight",
665         "rmepsilon",
666         "shortest_distance",
667         "shortest_path",
668         "synchronize",
669         "topsort",
670         "union",
671     ]
672 ]
673
674 cc_binary(
675     name = "fstencode",
676     srcs = [
677         prefix_dir + "bin/fstencode.cc",
678         prefix_dir + "bin/fstencode-main.cc",
679     ],
680     linkstatic = static_binary,
681     deps = [
682         ":fstscript_decode",
683         ":fstscript_encode",
684     ],
685 )
686
687 cc_binary(
688     name = "fstequivalent",
689     srcs = [
690         prefix_dir + "bin/fstequivalent.cc",
691         prefix_dir + "bin/fstequivalent-main.cc",
692     ],
693     linkstatic = static_binary,
694     deps = [
695         ":fstscript_equivalent",
696         ":fstscript_randequivalent",
697     ],
698 )
699
700 cc_binary(
701     name = "fstsymbols",
702     srcs = [
703         prefix_dir + "bin/fstsymbols.cc",
704         prefix_dir + "bin/fstsymbols-main.cc",
705     ],
706     linkstatic = static_binary,
707     deps = [":fstscript_verify"],
708 )
709
710 # Extension: Fst ARchive a/k/a FAR (extensions/far/)
711
712 cc_library(
713     name = "sttable",
714     srcs = [
715         prefix_dir + "extensions/far/stlist.cc",
716         prefix_dir + "extensions/far/sttable.cc",
717     ],
718     hdrs = [
719         prefix_dir + "include/fst/extensions/far/stlist.h",
720         prefix_dir + "include/fst/extensions/far/sttable.h",
721     ],
722     includes = [prefix_dir + "include"],
723     deps = [":util"],
724 )
725
726 cc_library(
727     name = "far_base",
728     hdrs = [
729         prefix_dir + "include/fst/extensions/far/far.h",
730     ],
731     includes = [prefix_dir + "include"],
732     deps = [
733         ":fst",
734         ":sttable",
735     ],
736 )
737
738 cc_library(
739     name = "far",
740     srcs = [prefix_dir + "extensions/far/strings.cc"],
741     hdrs = [
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",
750     ],
751     includes = [prefix_dir + "include"],
752     deps = [
753         ":far_base",
754         ":fst",
755     ],
756 )
757
758 cc_library(
759     name = "farscript",
760     srcs = [
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",
766     ],
767     hdrs = [
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",
773     ],
774     includes = [prefix_dir + "include"],
775     deps = [
776         ":base",
777         ":far",
778         ":fstscript_base",
779     ],
780 )
781
782 [
783     cc_binary(
784         name = "far%s" % operation,
785         srcs = [
786             prefix_dir + "extensions/far/far%s.cc" % operation,
787             prefix_dir + "extensions/far/far%s-main.cc" % operation,
788         ],
789         linkstatic = static_binary,
790         deps = [":farscript"],
791     )
792     for operation in [
793         "compilestrings",
794         "create",
795         "equal",
796         "extract",
797         "info",
798         "isomorphic",
799         "printstrings",
800     ]
801 ]
802
803 # Extension: PushDown Transducers a/k/a PDT (extensions/pdt/)
804
805 cc_library(
806     name = "pdt",
807     hdrs = [
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",
819     ],
820     includes = [prefix_dir + "include"],
821     deps = [
822         ":fst",
823     ],
824 )
825
826 cc_library(
827     name = "pdtscript",
828     srcs = [
829         prefix_dir + "extensions/pdt/getters.cc",
830         prefix_dir + "extensions/pdt/pdtscript.cc",
831     ],
832     hdrs = [
833         prefix_dir + "include/fst/extensions/pdt/getters.h",
834         prefix_dir + "include/fst/extensions/pdt/pdtscript.h",
835     ],
836     includes = [prefix_dir + "include"],
837     deps = [
838         ":fst",
839         ":fstscript_base",
840         ":pdt",
841     ],
842 )
843
844 cc_binary(
845     name = "pdtcompose",
846     srcs = [prefix_dir + "extensions/pdt/pdtcompose.cc"],
847     linkstatic = static_binary,
848     deps = [
849         ":fstscript_connect",
850         ":pdtscript",
851     ],
852 )
853
854 [
855     cc_binary(
856         name = "pdt%s" % operation,
857         srcs = [prefix_dir + "extensions/pdt/pdt%s.cc" % operation],
858         linkstatic = static_binary,
859         deps = [":pdtscript"],
860     )
861     for operation in [
862         "expand",
863         "info",
864         "replace",
865         "reverse",
866         "shortestpath",
867     ]
868 ]
869
870 # Extension: Multi PushDown Transducers a/k/a MPDT (extensions/mpdt/)
871
872 cc_library(
873     name = "mpdt",
874     hdrs = [
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",
882     ],
883     includes = [prefix_dir + "include"],
884     deps = [
885         ":fst",
886         ":pdt",
887     ],
888 )
889
890 cc_library(
891     name = "mpdtscript",
892     srcs = [prefix_dir + "extensions/mpdt/mpdtscript.cc"],
893     hdrs = [prefix_dir + "include/fst/extensions/mpdt/mpdtscript.h"],
894     includes = [prefix_dir + "include"],
895     deps = [
896         ":fst",
897         ":fstscript_base",
898         ":mpdt",
899         ":pdtscript",
900     ],
901 )
902
903 cc_binary(
904     name = "mpdtcompose",
905     srcs = [prefix_dir + "extensions/mpdt/mpdtcompose.cc"],
906     linkstatic = static_binary,
907     deps = [
908         ":fstscript_connect",
909         ":mpdtscript",
910     ],
911 )
912
913 [
914     cc_binary(
915         name = "mpdt%s" % operation,
916         srcs = [prefix_dir + "extensions/mpdt/mpdt%s.cc" % operation],
917         linkstatic = static_binary,
918         deps = [":mpdtscript"],
919     )
920     for operation in [
921         "expand",
922         "info",
923         "reverse",
924     ]
925 ]
926
927 # Extension: LOUDS compressed n-gram language models (extensions/ngram/)
928
929 cc_library(
930     name = "ngram",
931     srcs = [
932         prefix_dir + "extensions/ngram/bitmap-index.cc",
933         prefix_dir + "extensions/ngram/ngram-fst.cc",
934         prefix_dir + "extensions/ngram/nthbit.cc",
935     ],
936     hdrs = [
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",
940     ],
941     includes = [prefix_dir + "include"],
942     deps = [
943         ":fst",
944     ],
945 )
946
947 # TODO: Extensions compact, compress, const, linear, lookahead, python, special