11import os
22import sys
33import re
4+ import fnmatch
45import argparse
56
67# earily parse, will refernece args globally
@@ -34,9 +35,20 @@ def is_test_source(f):
3435def is_source (f ):
3536 return f .endswith (".cc" ) and not is_test_source (f )
3637
37- def dir_name_to_lib_target (dir_name ):
38+ def lib_dir_name_to_lib_target (dir_name ):
3839 return "kaldi-" + dir_name
3940
41+ def bin_dir_name_to_lib_target (dir_name ):
42+ """return the primary lib target for all executable targets in this bin dir"""
43+ assert is_bin_dir (dir_name )
44+ if dir_name == "bin" :
45+ # NOTE: "kaldi-util" might be a more strict primary lib target...
46+ return "kaldi-hmm"
47+ elif dir_name == "fstbin" :
48+ return "kaldi-fstext"
49+ else :
50+ return "kaldi-" + dir_name [:- 3 ]
51+
4052def wrap_notwin32_condition (should_wrap , lines ):
4153 if isinstance (lines , str ):
4254 lines = [lines ]
@@ -48,42 +60,73 @@ def wrap_notwin32_condition(should_wrap, lines):
4860
4961def get_exe_additional_depends (t ):
5062 additional = {
51- "transform-feats" : ["transform" ],
52- "interpolate-pitch" : ["transform" ],
63+ # solve bin
64+ "align-*" : ["decoder" ],
65+ "compile-*graph*" : ["decoder" ],
66+ "decode-faster" : ["decoder" ],
67+ "latgen-faster-mapped" : ["decoder" ],
68+ "latgen-faster-mapped-parallel" : ["decoder" ],
69+ "latgen-incremental-mapped" : ["decoder" ],
70+ "decode-faster-mapped" : ["decoder" ],
71+ "sum-lda-accs" : ["transform" ],
72+ "sum-mllt-accs" : ["transform" ],
73+ "est-mllt" : ["transform" ],
74+ "est-lda" : ["transform" ],
75+ "acc-lda" : ["transform" ],
76+ "build-pfile-from-ali" : ["gmm" ],
77+ "make-*-transducer" : ["fstext" ],
78+ "phones-to-prons" : ["fstext" ],
79+
80+ # solve gmmbin
5381 "post-to-feats" : ["hmm" ],
5482 "append-post-to-feats" : ["hmm" ],
83+ "gmm-*" : ["hmm" , "transform" ],
84+ "gmm-latgen-*" : ["decoder" ],
85+ "gmm-decode-*" : ["decoder" ],
86+ "gmm-align" : ["decoder" ],
87+ "gmm-align-compiled" : ["decoder" ],
5588 "gmm-est-fmllr-gpost" : ["sgmm2" , "hmm" ],
56- "gmm-est-fmllr" : ["hmm" , "transform" ],
57- "gmm-latgen-faster" : ["decoder" ],
58- "gmm-transform-means" : ["hmm" ],
59- "gmm-post-to-gpost" : ["hmm" ],
60- "gmm-init-lvtln" : ["transform" ],
6189 "gmm-rescore-lattice" : ["hmm" , "lat" ],
62- "gmm-est-fmllr-global" : ["transform" ],
63- "gmm-copy" : ["hmm" ],
64- "gmm-train-lvtln-special" : ["transform" , "hmm" ],
65- "gmm-est-map" : ["hmm" ],
66- "gmm-acc-stats2" : ["hmm" ],
67- "gmm-decode-faster-regtree-mllr" : ["decoder" ],
68- "gmm-global-est-fmllr" : ["transform" ],
69- "gmm-est-basis-fmllr" : ["hmm" , "transform" ],
70- "gmm-init-model" : ["hmm" ],
71- "gmm-est-weights-ebw" : ["hmm" ],
72- "gmm-init-biphone" : ["hmm" ],
73- "gmm-compute-likes" : ["hmm" ],
74- "gmm-est-fmllr-raw-gpost" : ["hmm" , "transform" ],
75- # gmm-* is a bottom case, it will add link dependencies to all other
76- # target whose names start with gmm-, it is harmless, but will increase
77- # link time. Better to avoid it at best.
78- "gmm-*" : ["hmm" , "transform" , "lat" , "decoder" ],
90+
91+ # solve fstbin
92+ "make-grammar-fst" : ["decoder" ],
93+
94+ # solve sgmm2bin
95+ "sgmm2-*" : ["hmm" ],
96+ "sgmm2-latgen-faster*" : ["decoder" ],
97+ "sgmm2-align-compiled" : ["decoder" ],
98+ "sgmm2-rescore-lattice" : ["lat" ],
99+ "init-ubm" : ["hmm" ],
100+
101+ # solve nnetbin
102+ "nnet-train-mmi-sequential" : ["lat" ],
103+ "nnet-train-mpe-sequential" : ["lat" ],
104+
105+ # solve nnet2bin
106+ "nnet-latgen-faster*" : ["fstext" , "decoder" ],
107+ "nnet-align-compiled" : ["decoder" ],
108+ "nnet1-to-raw-nnet" : ["nnet" ],
109+
110+ # solve chainbin
111+ "nnet3-chain-*" : ["nnet3" ],
112+
113+ # solve latbin
114+ "lattice-compose" : ["fstext" ],
115+ "lattice-lmrescore" : ["fstext" ],
116+ "lattice-lmrescore-*" : ["fstext" , "rnnlm" ],
117+
118+ # solve ivectorbin
119+ "ivector-extract*" : ["hmm" ],
120+
121+ # solve kwsbin
122+ "generate-proxy-keywords" : ["fstext" ],
123+ "transcripts-to-fsts" : ["fstext" ],
79124 }
80- if t in additional :
81- return list (map (lambda name : dir_name_to_lib_target (name ), additional [t ]))
82- elif (t .split ("-" , 1 )[0 ] + "-*" ) in additional :
83- wildcard = (t .split ("-" , 1 )[0 ] + "-*" )
84- return list (map (lambda name : dir_name_to_lib_target (name ), additional [wildcard ]))
85- else :
86- return []
125+ l = []
126+ for pattern in additional .keys ():
127+ if fnmatch .fnmatch (t , pattern ):
128+ l .extend (list (map (lambda name : lib_dir_name_to_lib_target (name ), additional [pattern ])))
129+ return sorted (list (set (l )))
87130
88131def disable_for_win32 (t ):
89132 disabled = [
@@ -98,7 +141,7 @@ def disable_for_win32(t):
98141class CMakeListsHeaderLibrary (object ):
99142 def __init__ (self , dir_name ):
100143 self .dir_name = dir_name
101- self .target_name = dir_name_to_lib_target (self .dir_name )
144+ self .target_name = lib_dir_name_to_lib_target (self .dir_name )
102145 self .header_list = []
103146
104147 def add_header (self , filename ):
@@ -123,8 +166,8 @@ def gen_code(self):
123166
124167 ret .append ("add_library(" + self .target_name + " INTERFACE)" )
125168 ret .append ("target_include_directories(" + self .target_name + " INTERFACE " )
126- ret .append (" $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>" )
127- ret .append (" $<INSTALL_INTERFACE:include/kaldi>" )
169+ ret .append (" $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>" )
170+ ret .append (" $<INSTALL_INTERFACE:include/kaldi>" )
128171 ret .append (")\n " )
129172
130173 ret .append ("""
@@ -139,7 +182,7 @@ class CMakeListsLibrary(object):
139182
140183 def __init__ (self , dir_name ):
141184 self .dir_name = dir_name
142- self .target_name = dir_name_to_lib_target (self .dir_name )
185+ self .target_name = lib_dir_name_to_lib_target (self .dir_name )
143186 self .header_list = []
144187 self .source_list = []
145188 self .cuda_source_list = []
@@ -241,7 +284,7 @@ def __init__(self, dir_name, filename):
241284 self .list = []
242285 exe_name = os .path .splitext (os .path .basename (filename ))[0 ]
243286 file_name = filename
244- depend = dir_name_to_lib_target (dir_name [: - 3 ] )
287+ depend = bin_dir_name_to_lib_target (dir_name )
245288 self .list .append ((exe_name , file_name , depend ))
246289
247290 def gen_code (self ):
0 commit comments