Skip to content

Commit 3689232

Browse files
committed
Creating static libraries (*dyn.a) compiled with fPIC, from them I create shared libs\
from static libraries (*dyn.a) the big library libkaldi.so can be created.\ TODOS: polish Makefile, maybe put the rules for creating libkaldi.so to kaldi.mk (e.g. echo them from configure) git-svn-id: https://svn.code.sf.net/p/kaldi/code/sandbox/sharedlibs@2608 5e6a8d80-dfce-4ca6-a32a-6e07a63d50c8
1 parent 35c0518 commit 3689232

File tree

35 files changed

+149
-45
lines changed

35 files changed

+149
-45
lines changed

src/Makefile

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,31 @@ SUBDIRS = base matrix util feat tree thread gmm tied transform sgmm \
99
fstext hmm lm decoder lat cudamatrix nnet \
1010
bin fstbin gmmbin fgmmbin tiedbin sgmmbin featbin \
1111
nnetbin latbin sgmm2 sgmm2bin nnet-cpu nnet-cpubin kwsbin
12+
SUBDIRS_LIB = $(filter-out %bin, $(SUBDIRS))
13+
14+
# FIXME not very good
15+
# I switched to other shell and compiled from there
16+
# it introduced me quite headache
17+
# export KALDILIBDIR := $(shell pwd)/lib
18+
# FIXME Oplatek I set up KALDILIBDIR in configure
19+
KALDILIBDIR = lib
1220

13-
export KALDILIBDIR := $(shell pwd)/lib
1421

1522
# Optional subdirectories
1623
EXT_SUBDIRS = online onlinebin #python-kaldi-decoding
24+
EXT_SUBDIRS_LIB = $(filter-out %bin, $(EXT_SUBDIRS))
1725

18-
all: $(KALDILIBDIR) test_install kaldi.mk $(SUBDIRS)
26+
all: test_install kaldi.mk $(SUBDIRS)
1927
-echo Done
2028

21-
22-
$(KALDILIBDIR):
23-
mkdir -p $(KALDILIBDIR)
24-
25-
biglib: $(SUBDIRS)
29+
biglib: $(SUBDIRS_LIB)
2630
#ifeq ($(KALDI_FLAVOR), dynamic)
27-
-mkdir -p $(KALDILIBDIR)
28-
find $(filter-out %bin,$^) -name *.o | xargs gcc -shared -o $(KALDILIBDIR)/libkaldi.so -Wl,-soname=libkaldi.so
31+
gcc -shared -o $(KALDILIBDIR)/libkaldi.so -Wl,-soname=libkaldi.so,--whole-archive $(SUBDIRS_LIB:=/*dyn.a) -Wl,--no-whole-archive
2932
#endif
3033

31-
biglibext: $(EXT_SUBDIRS)
34+
biglibext: $(EXT_SUBDIRS_LIB)
3235
#ifeq ($(KALDI_FLAVOR), dynamic)
33-
mkdir -p $(KALDILIBDIR)
34-
find $(filter-out %bin,$^) -name *.o | xargs gcc -shared -o $(KALDILIBDIR)/libkaldiext.so -Wl,-soname=libkaldiext.so
36+
gcc -shared -o $(KALDILIBDIR)/libkaldi_ext.so -Wl,-soname=libkaldi.so,--whole-archive $(EXT_SUBDIRS_LIB:=/*dyn.a) -Wl,--no-whole-archive
3537
#endif
3638

3739
kaldi.mk:

src/base/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ all: $(LIBFILE) $(BINFILES)
3232

3333
$(LIBFILE): $(OBJFILES)
3434
ifeq ($(KALDI_FLAVOR), dynamic)
35-
$(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
35+
# $(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
36+
$(AR) -cru $(LIBNAME)-dyn.a $(OBJFILES)
37+
$(RANLIB) $(LIBNAME)-dyn.a
38+
$(CXX) -shared -o $@ -Wl,-soname=$@,--whole-archive $(LIBNAME)-dyn.a -Wl,--no-whole-archive
3639
cp $@ $(KALDILIBDIR)
3740
else
3841
$(AR) -cru $(LIBNAME).a $(OBJFILES)

src/bin/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ all: $(LIBFILE) $(BINFILES)
6161

6262
$(LIBFILE): $(OBJFILES)
6363
ifeq ($(KALDI_FLAVOR), dynamic)
64-
$(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
64+
# $(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
65+
$(AR) -cru $(LIBNAME)-dyn.a $(OBJFILES)
66+
$(RANLIB) $(LIBNAME)-dyn.a
67+
$(CXX) -shared -o $@ -Wl,-soname=$@,--whole-archive $(LIBNAME)-dyn.a -Wl,--no-whole-archive
6568
cp $@ $(KALDILIBDIR)
6669
else
6770
$(AR) -cru $(LIBNAME).a $(OBJFILES)

src/configure

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,9 @@ fi
499499
cp makefiles/common.mk kaldi.mk
500500
if $dynamic_kaldi ; then
501501
echo "KALDI_FLAVOR = dynamic" >> kaldi.mk
502+
KALDILIBDIR=`pwd`/lib
503+
mkdir -p "$KALDILIBDIR"
504+
echo "KALDILIBDIR = $KALDILIBDIR" >> kaldi.mk
502505
fi
503506

504507
# Most of the OS-specific steps below will append to kaldi.mk

src/cudamatrix/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ all: $(LIBFILE) $(BINFILES)
6868

6969
$(LIBFILE): $(OBJFILES)
7070
ifeq ($(KALDI_FLAVOR), dynamic)
71-
$(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
71+
# $(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
72+
$(AR) -cru $(LIBNAME)-dyn.a $(OBJFILES)
73+
$(RANLIB) $(LIBNAME)-dyn.a
74+
$(CXX) -shared -o $@ -Wl,-soname=$@,--whole-archive $(LIBNAME)-dyn.a -Wl,--no-whole-archive
7275
cp $@ $(KALDILIBDIR)
7376
else
7477
$(AR) -cru $(LIBNAME).a $(OBJFILES)

src/decoder/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ all: $(LIBFILE) $(BINFILES)
3535

3636
$(LIBFILE): $(OBJFILES)
3737
ifeq ($(KALDI_FLAVOR), dynamic)
38-
$(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
38+
# $(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
39+
$(AR) -cru $(LIBNAME)-dyn.a $(OBJFILES)
40+
$(RANLIB) $(LIBNAME)-dyn.a
41+
$(CXX) -shared -o $@ -Wl,-soname=$@,--whole-archive $(LIBNAME)-dyn.a -Wl,--no-whole-archive
3942
cp $@ $(KALDILIBDIR)
4043
else
4144
$(AR) -cru $(LIBNAME).a $(OBJFILES)

src/feat/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ all: $(LIBFILE) $(BINFILES)
3535

3636
$(LIBFILE): $(OBJFILES)
3737
ifeq ($(KALDI_FLAVOR), dynamic)
38-
$(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
38+
# $(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
39+
$(AR) -cru $(LIBNAME)-dyn.a $(OBJFILES)
40+
$(RANLIB) $(LIBNAME)-dyn.a
41+
$(CXX) -shared -o $@ -Wl,-soname=$@,--whole-archive $(LIBNAME)-dyn.a -Wl,--no-whole-archive
3942
cp $@ $(KALDILIBDIR)
4043
else
4144
$(AR) -cru $(LIBNAME).a $(OBJFILES)

src/featbin/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@ all: $(LIBFILE) $(BINFILES)
4444

4545
$(LIBFILE): $(OBJFILES)
4646
ifeq ($(KALDI_FLAVOR), dynamic)
47-
$(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
47+
# $(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
48+
$(AR) -cru $(LIBNAME)-dyn.a $(OBJFILES)
49+
$(RANLIB) $(LIBNAME)-dyn.a
50+
$(CXX) -shared -o $@ -Wl,-soname=$@,--whole-archive $(LIBNAME)-dyn.a -Wl,--no-whole-archive
4851
cp $@ $(KALDILIBDIR)
4952
else
5053
$(AR) -cru $(LIBNAME).a $(OBJFILES)

src/fgmmbin/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@ all: $(LIBFILE) $(BINFILES)
4040

4141
$(LIBFILE): $(OBJFILES)
4242
ifeq ($(KALDI_FLAVOR), dynamic)
43-
$(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
43+
# $(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
44+
$(AR) -cru $(LIBNAME)-dyn.a $(OBJFILES)
45+
$(RANLIB) $(LIBNAME)-dyn.a
46+
$(CXX) -shared -o $@ -Wl,-soname=$@,--whole-archive $(LIBNAME)-dyn.a -Wl,--no-whole-archive
4447
cp $@ $(KALDILIBDIR)
4548
else
4649
$(AR) -cru $(LIBNAME).a $(OBJFILES)

src/fstbin/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ all: $(LIBFILE) $(BINFILES)
4747

4848
$(LIBFILE): $(OBJFILES)
4949
ifeq ($(KALDI_FLAVOR), dynamic)
50-
$(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
50+
# $(CXX) -shared -o $(LIBFILE) -Wl,-soname=$(LIBFILE) $(OBJFILES)
51+
$(AR) -cru $(LIBNAME)-dyn.a $(OBJFILES)
52+
$(RANLIB) $(LIBNAME)-dyn.a
53+
$(CXX) -shared -o $@ -Wl,-soname=$@,--whole-archive $(LIBNAME)-dyn.a -Wl,--no-whole-archive
5154
cp $@ $(KALDILIBDIR)
5255
else
5356
$(AR) -cru $(LIBNAME).a $(OBJFILES)

0 commit comments

Comments
 (0)