]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/kaldi.git/blob - src/makefiles/default_rules.mk
Merge pull request #79 from workflow-demo-org/master
[processor-sdk/kaldi.git] / src / makefiles / default_rules.mk
1 ifeq ($(KALDI_FLAVOR), dynamic)
2   ifeq ($(shell uname), Darwin)
3     XLDLIBS := $(LDLIBS)
4     ifdef LIBNAME
5       LIBFILE = lib$(LIBNAME).dylib
6       #LDLIBS  += -l$(LIBNAME)
7     endif
8     LDFLAGS += -L$(KALDILIBDIR) -Wl,-rpath -Wl,$(KALDILIBDIR)
9     XDEPENDS = $(foreach dep,$(ADDLIBS), $(dir $(dep))/lib$(notdir $(basename $(dep))).dylib )
10     XLDLIBS += $(foreach dep,$(ADDLIBS), -l$(notdir $(basename $(dep))) )
11   else
12     ifeq ($(shell uname), Linux)
13       ifdef LIBNAME
14         LIBFILE = lib$(LIBNAME).so
15         #LDLIBS  += -l$(LIBNAME)
16       endif
17       LDFLAGS += -Wl,-rpath=$(shell readlink -f $(KALDILIBDIR)) -L.
18       LDFLAGS += $(foreach dep,$(ADDLIBS), -L$(dir $(dep)) )
19       XDEPENDS = $(foreach dep,$(ADDLIBS), $(dir $(dep))/lib$(notdir $(basename $(dep))).so )
20     else  # Platform not supported
21       $(error Dynamic libraries not supported on this platform. Run configure with --static flag. )
22     endif
23   endif
24   LDLIBS  += $(foreach dep,$(ADDLIBS), -l$(notdir $(basename $(dep))) )
25 else
26   ifdef LIBNAME
27     LIBFILE = $(LIBNAME).a
28   endif
29   XDEPENDS = $(ADDLIBS)
30 endif
32 all: $(LIBFILE) $(BINFILES)
34 $(LIBFILE): $(OBJFILES)
35         $(AR) -cru $(LIBNAME).a $(OBJFILES)
36         $(RANLIB) $(LIBNAME).a
37 ifeq ($(KALDI_FLAVOR), dynamic)
38 ifeq ($(shell uname), Darwin)
39         $(CXX) -dynamiclib -o $@ -install_name @rpath/$@ -framework Accelerate $(LDFLAGS) $(XLDLIBS) $(OBJFILES) $(LDLIBS)
40         rm -f $(KALDILIBDIR)/$@; ln -s $(shell pwd)/$@ $(KALDILIBDIR)/$@
41 else
42 ifeq ($(shell uname), Linux)
43         # Building shared library from static (static was compiled with -fPIC)
44         $(CXX) -shared -o $@ -Wl,--no-undefined -Wl,--as-needed  -Wl,-soname=$@,--whole-archive $(LIBNAME).a -Wl,--no-whole-archive  $(LDFLAGS) $(XDEPENDS) $(LDLIBS)
45         rm -f $(KALDILIBDIR)/$@; ln -s $(shell pwd)/$@ $(KALDILIBDIR)/$@
46         #cp $@ $(KALDILIBDIR)
47 else  # Platform not supported
48         $(error Dynamic libraries not supported on this platform. Run configure with --static flag. )
49 endif
50 endif
51 endif
54 $(BINFILES): $(LIBFILE) $(XDEPENDS)
57 # Rule below would expand to, e.g.:
58 # ../base/kaldi-base.a:
59 #       make -c ../base kaldi-base.a
60 # -c option to make is same as changing directory.
61 %.a:
62         $(MAKE) -C ${@D} ${@F}
64 %.so:
65         $(MAKE) -C ${@D} ${@F}
67 clean:
68         -rm -f *.o *.a *.so $(TESTFILES) $(BINFILES) $(TESTOUTPUTS) tmp* *.tmp *.testlog
70 $(TESTFILES): $(LIBFILE) $(XDEPENDS)
72 test_compile: $(TESTFILES)
74 test: test_compile
75         @{ result=0;                    \
76         for x in $(TESTFILES); do       \
77           printf "Running $$x ...";     \
78           ./$$x >$$x.testlog 2>&1;      \
79           if [ $$? -ne 0 ]; then        \
80             echo "... FAIL $$x";        \
81             result=1;                   \
82             if [ -n "$TRAVIS" ] && [ -f core ] && command -v gdb >/dev/null 2>&1; then  \
83               gdb $$x core -ex "thread apply all bt" -batch >>$$x.testlog 2>&1;         \
84               rm -rf core;              \
85             fi;                         \
86           else                          \
87             echo "... SUCCESS";         \
88             rm -f $$x.testlog;          \
89           fi;                           \
90         done;                           \
91         exit $$result; }
93 .valgrind: $(BINFILES) $(TESTFILES)
96 depend:
97         -$(CXX) -M $(CXXFLAGS) *.cc > .depend.mk
99 # removing automatic making of "depend" as it's quite slow.
100 #.depend.mk: depend
101 -include .depend.mk