Skip to content

Commit dbae7fa

Browse files
committed
Add script to automatically put the Kaldi libraries we link with in the right order; use it to modify the Makefiles. Minor top-level Makefile fix.
1 parent da465d8 commit dbae7fa

File tree

42 files changed

+239
-134
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+239
-134
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
#!/usr/bin/env bash
2+
3+
# run this from ../..
4+
5+
if [ "$1" == "--really" ]; then
6+
really_do_it=true
7+
else
8+
really_do_it=false
9+
echo "$0: this will not really do anything, use --really for that."
10+
fi
11+
12+
13+
cd src
14+
15+
cat Makefile | perl -e ' @libdirs = (); while(<>){ if ($x && m/(\S+)\:/) { push @libdirs, $1; chop; print "$_ .phony\n"; } if (m/have inter-dependencies/) {$x=1;}} print("all: " . join(" ", @libdirs) . "\n"); print(".phony:\n")' > Makefile.temp
16+
17+
# for each directory this automatic rule says, just print its name.
18+
echo '%:' >> Makefile.temp
19+
printf '\techo ${@F}\n' >> Makefile.temp
20+
21+
# the following prints out the directory names in the order we want to
22+
# have them in the ADDLIBS in the individual Makefiles; note, 'tac' reverses
23+
# the order of its input lines.
24+
make -s -f Makefile.temp all | grep -v all | grep -v .phony | tac > library_order
25+
26+
echo "Library order is:"
27+
cat library_order
28+
29+
for f in */Makefile; do
30+
echo "$0: processing $f"
31+
cat $f | perl -e '
32+
open(F, "<library_order") || die "opening file library_order";
33+
$n = 1;
34+
while (<F>) { chop; $library_name_to_order{$_} = $n; $order_to_library_name{$n} = $_; $n++; }
35+
while(<>) {
36+
if (m/^ADDLIBS = (.+)/) {
37+
@addlibs = ();
38+
$cur_line = $1;
39+
while (1) {
40+
if ($cur_line =~ s/\\$//) { $had_backslash = 1; } else { $had_backslash = 0; }
41+
@A = split(" ", $cur_line);
42+
push @addlibs, @A;
43+
if (!$had_backslash) { last; } # break from the while loop.
44+
if (!($cur_line = <>)) { last; }
45+
}
46+
@weird_libs = ();
47+
%normal_lib_names = {};
48+
foreach $lib (@addlibs) {
49+
if ($lib =~ m|^\.\./([a-z]+)/kaldi-([a-z]+)\.a$| && $1 == $2 && defined $library_name_to_order{$1}) {
50+
$normal_lib_names{$1} = 1;
51+
} else { push @weird_libs, $lib; }
52+
}
53+
@normalized_addlibs = ();
54+
for ($k = 1; $k < $n; $k++) {
55+
$test_name = $order_to_library_name{$k};
56+
if (defined $normal_lib_names{$test_name}) {
57+
push @normalized_addlibs, "../$test_name/kaldi-$test_name.a";
58+
}
59+
}
60+
if (@weird_libs > 0) { print STDERR "Unexpected libraries: " . join(":", @weird_libs); }
61+
# unexpected libraries that aren not part of the normal list will go last.
62+
push @normalized_addlibs, @weird_libs;
63+
@rearranged_lines = ();
64+
$cur_line = "";
65+
$max_partial_line_size = 70; # after the initial "ADDLIBS = " or spaces.
66+
foreach $lib (@normalized_addlibs) {
67+
if (length($cur_line . $lib . " ") > $max_partial_line_size) {
68+
push @rearranged_lines, $cur_line; $cur_line = "";
69+
}
70+
$cur_line .= ($lib . " ");
71+
}
72+
if ($cur_line ne "") { push @rearranged_lines, $cur_line; }
73+
$num_lines = @rearranged_lines;
74+
for ($k = 0; $k < $num_lines; $k++) {
75+
if ($k == 0) { print "ADDLIBS = "; } else { print " "; }
76+
print $rearranged_lines[$k];
77+
if ($k + 1 < $num_lines) { print "\\\n"; } else { print "\n"; }
78+
}
79+
} else {
80+
print;
81+
}
82+
} ' > temp_makefile
83+
diff $f temp_makefile
84+
if $really_do_it; then
85+
cp temp_makefile $f
86+
fi
87+
done
88+
89+
rm library_order Makefile.temp

src/Makefile

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ $(EXT_SUBDIRS) : mklibdir
146146
#1)The tools depend on all the libraries
147147

148148
bin fstbin gmmbin fgmmbin sgmmbin sgmm2bin featbin nnetbin nnet2bin nnet3bin chainbin latbin ivectorbin lmbin kwsbin online2bin: \
149-
base matrix util feat tree optimization thread gmm transform sgmm sgmm2 fstext hmm \
149+
base matrix util feat tree thread gmm transform sgmm sgmm2 fstext hmm \
150150
lm decoder lat cudamatrix nnet nnet2 nnet3 ivector chain kws online2
151151

152152
#2)The libraries have inter-dependencies
@@ -156,7 +156,6 @@ thread: base
156156
util: base matrix thread
157157
feat: base matrix util gmm transform tree thread
158158
tree: base util thread matrix
159-
optimization: base matrix
160159
gmm: base util matrix tree thread
161160
transform: base util matrix gmm tree thread
162161
sgmm: base util matrix gmm tree transform thread hmm
@@ -173,8 +172,8 @@ nnet3: base util matrix thread lat gmm hmm tree transform cudamatrix chain fstex
173172
chain: lat hmm tree fstext matrix cudamatrix util thread base
174173
ivector: base util matrix thread transform tree gmm
175174
#3)Dependencies for optional parts of Kaldi
176-
onlinebin: base matrix util feat tree optimization gmm transform sgmm sgmm2 fstext hmm lm decoder lat cudamatrix nnet nnet2 online thread
177-
# python-kaldi-decoding: base matrix util feat tree optimization thread gmm transform sgmm sgmm2 fstext hmm decoder lat online
175+
onlinebin: base matrix util feat tree gmm transform sgmm sgmm2 fstext hmm lm decoder lat cudamatrix nnet nnet2 online thread
176+
# python-kaldi-decoding: base matrix util feat tree thread gmm transform sgmm sgmm2 fstext hmm decoder lat online
178177
online: decoder gmm transform feat matrix util base lat hmm thread tree
179178
online2: decoder gmm transform feat matrix util base lat hmm thread tree ivector cudamatrix nnet2 nnet3 chain
180179
kws: base util thread hmm tree matrix lat

src/bin/Makefile

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ BINFILES = align-equal align-equal-compiled acc-tree-stats \
2929

3030
OBJFILES =
3131

32-
ADDLIBS = ../lm/kaldi-lm.a ../decoder/kaldi-decoder.a ../lat/kaldi-lat.a \
33-
../hmm/kaldi-hmm.a ../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
34-
../tree/kaldi-tree.a ../matrix/kaldi-matrix.a ../util/kaldi-util.a \
35-
../base/kaldi-base.a ../thread/kaldi-thread.a ../fstext/kaldi-fstext.a
32+
ADDLIBS = ../decoder/kaldi-decoder.a ../lat/kaldi-lat.a ../lm/kaldi-lm.a \
33+
../fstext/kaldi-fstext.a ../hmm/kaldi-hmm.a \
34+
../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
35+
../tree/kaldi-tree.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
36+
../matrix/kaldi-matrix.a ../base/kaldi-base.a
3637

3738

3839
TESTFILES =

src/chain/Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ endif
1515

1616
LIBNAME = kaldi-chain
1717

18-
ADDLIBS = ../lat/kaldi-lat.a ../hmm/kaldi-hmm.a ../tree/kaldi-tree.a \
19-
../fstext/kaldi-fstext.a \
20-
../cudamatrix/kaldi-cudamatrix.a ../matrix/kaldi-matrix.a \
21-
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a
18+
ADDLIBS = ../cudamatrix/kaldi-cudamatrix.a ../lat/kaldi-lat.a \
19+
../fstext/kaldi-fstext.a ../hmm/kaldi-hmm.a ../tree/kaldi-tree.a \
20+
../util/kaldi-util.a ../thread/kaldi-thread.a \
21+
../matrix/kaldi-matrix.a ../base/kaldi-base.a
2222

2323
# Make sure we have CUDA_ARCH from kaldi.mk,
2424
ifeq ($(CUDA), true)

src/chainbin/Makefile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ cuda-compiled.o: ../kaldi.mk
2020

2121
TESTFILES =
2222

23-
ADDLIBS = ../nnet3/kaldi-nnet3.a ../chain/kaldi-chain.a ../gmm/kaldi-gmm.a \
24-
../decoder/kaldi-decoder.a ../lat/kaldi-lat.a ../hmm/kaldi-hmm.a \
25-
../transform/kaldi-transform.a ../tree/kaldi-tree.a \
26-
../cudamatrix/kaldi-cudamatrix.a \
27-
../matrix/kaldi-matrix.a ../fstext/kaldi-fstext.a \
28-
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a
23+
ADDLIBS = ../chain/kaldi-chain.a ../cudamatrix/kaldi-cudamatrix.a \
24+
../decoder/kaldi-decoder.a ../lat/kaldi-lat.a \
25+
../fstext/kaldi-fstext.a ../hmm/kaldi-hmm.a \
26+
../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
27+
../tree/kaldi-tree.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
28+
../matrix/kaldi-matrix.a ../base/kaldi-base.a ../nnet3/kaldi-nnet3.a
2929

3030
include ../makefiles/default_rules.mk

src/cudamatrix/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ endif
1818

1919
LIBNAME = kaldi-cudamatrix
2020

21-
ADDLIBS = ../matrix/kaldi-matrix.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
22-
../base/kaldi-base.a
21+
ADDLIBS = ../util/kaldi-util.a ../thread/kaldi-thread.a \
22+
../matrix/kaldi-matrix.a ../base/kaldi-base.a
2323

2424
# Make sure we have CUDA_ARCH from kaldi.mk,
2525
ifeq ($(CUDA), true)

src/decoder/Makefile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ OBJFILES = training-graph-compiler.o lattice-simple-decoder.o lattice-faster-dec
1111

1212
LIBNAME = kaldi-decoder
1313

14-
ADDLIBS = ../transform/kaldi-transform.a ../tree/kaldi-tree.a ../lat/kaldi-lat.a \
15-
../sgmm/kaldi-sgmm.a ../gmm/kaldi-gmm.a ../hmm/kaldi-hmm.a ../util/kaldi-util.a \
16-
../thread/kaldi-thread.a ../matrix/kaldi-matrix.a ../base/kaldi-base.a
14+
ADDLIBS = ../lat/kaldi-lat.a ../sgmm/kaldi-sgmm.a ../hmm/kaldi-hmm.a \
15+
../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
16+
../tree/kaldi-tree.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
17+
../matrix/kaldi-matrix.a ../base/kaldi-base.a
1718

1819
include ../makefiles/default_rules.mk
1920

src/feat/Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ OBJFILES = feature-functions.o feature-mfcc.o feature-plp.o feature-fbank.o \
1616

1717
LIBNAME = kaldi-feat
1818

19-
ADDLIBS = ../transform/kaldi-transform.a ../gmm/kaldi-gmm.a ../tree/kaldi-tree.a \
20-
../util/kaldi-util.a ../thread/kaldi-thread.a ../matrix/kaldi-matrix.a ../base/kaldi-base.a
19+
ADDLIBS = ../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
20+
../tree/kaldi-tree.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
21+
../matrix/kaldi-matrix.a ../base/kaldi-base.a
2122

2223
include ../makefiles/default_rules.mk
2324

src/featbin/Makefile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ OBJFILES =
2121

2222
TESTFILES =
2323

24-
ADDLIBS = ../feat/kaldi-feat.a ../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
25-
../tree/kaldi-tree.a ../matrix/kaldi-matrix.a ../hmm/kaldi-hmm.a \
26-
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a
24+
ADDLIBS = ../hmm/kaldi-hmm.a ../feat/kaldi-feat.a \
25+
../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
26+
../tree/kaldi-tree.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
27+
../matrix/kaldi-matrix.a ../base/kaldi-base.a
2728

2829
include ../makefiles/default_rules.mk
2930

src/fgmmbin/Makefile

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ OBJFILES =
1616

1717
TESTFILES =
1818

19-
ADDLIBS = ../decoder/kaldi-decoder.a ../lat/kaldi-lat.a ../feat/kaldi-feat.a \
20-
../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
21-
../hmm/kaldi-hmm.a ../tree/kaldi-tree.a ../matrix/kaldi-matrix.a \
22-
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a
19+
ADDLIBS = ../decoder/kaldi-decoder.a ../lat/kaldi-lat.a ../hmm/kaldi-hmm.a \
20+
../feat/kaldi-feat.a ../transform/kaldi-transform.a \
21+
../gmm/kaldi-gmm.a ../tree/kaldi-tree.a ../util/kaldi-util.a \
22+
../thread/kaldi-thread.a ../matrix/kaldi-matrix.a \
23+
../base/kaldi-base.a
2324

2425
include ../makefiles/default_rules.mk

0 commit comments

Comments
 (0)