1 # libmatroska core Makefile (used in cygwin)
2 # $Id: Makefile 1254 2006-06-02 14:32:52Z mosu $
3 # Author: Steve Lhomme <robux4 @ users.sf.net>
4 # Author: Moritz Bunkus <moritz @ bunkus.org>
7 # The library is built without debug information. If you want
8 # debug information to be included then compile with
14 includedir=$(INCDIR)/matroska
23 INSTALL_OPTS_LIB = -m 644
24 INSTALL_DIR_OPTS = -m 755
26 ifneq (,$(shell $(CXX) -v 2>&1 | tail -n 1 | grep -i mingw))
27 $(error Please use the Makefile in ../mingw32)
33 LIBEBML_INCLUDE_DIR=$(INCDIR)/ebml
34 LIBEBML_LIB_DIR=$(LIBDIR)
43 INCLUDE_DIR=$(CWD)/matroska
44 MUX_SRC_DIR=$(CWD)/test/mux/
45 TAG_SRC_DIR=$(CWD)/test/tags/
48 INCLUDE=-I$(CWD)/. -I$(LIBEBML_INCLUDE_DIR)
50 MUX_LIBS=-lmatroska -lebml $(LIBICONV)
54 LIBRARY_SO=libmatroska.so
55 LIBRARY_SO_VER=libmatroska.so.0
58 sources:=$(wildcard ${SRC_DIR}*$(EXTENSION))
60 # header files; replace .cxx extension with .h
61 headers:=$(patsubst %$(EXTENSION),%.h,$(sources))
63 # object files; replace .cxx extension with .o
64 objects:=$(patsubst %$(EXTENSION),%.o,$(sources))
66 objects_so:=$(patsubst %$(EXTENSION),%.lo,$(sources))
68 WARNINGFLAGS=-Wall -Wno-unknown-pragmas -ansi -fno-gnu-keywords -D_GNU_SOURCE \
70 COMPILEFLAGS=$(DEBUGFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(WARNINGFLAGS) $(INCLUDE)
71 LINKFLAGS=-L. -L$(LIBEBML_LIB_DIR) $(LDFLAGS)
72 DEPENDFLAGS = $(CXXFLAGS) $(INCLUDE)
74 ifeq (Darwin,$(shell uname -s))
77 all: staticlib sharedlib
82 sharedlib: $(LIBRARY_SO)
85 @echo "Use the 'staticlib', 'sharedlib' or 'all' targets."
90 $(CXX) -c $(COMPILEFLAGS) -o $@ $<
93 $(CXX) -c $(COMPILEFLAGS) -fPIC -o $@ $<
95 $(LIBRARY): $(objects)
99 $(LIBRARY_SO): $(objects_so)
100 $(CXX) -shared -Wl,-soname,$(LIBRARY_SO_VER) -o $(LIBRARY_SO_VER) $(objects_so) -L$(LIBEBML_LIB_DIR) -lebml
102 ln -s $(LIBRARY_SO_VER) $(LIBRARY_SO)
105 rm -f $(objects) $(objects_so)
108 rm -f $(LIBRARY_SO_VER)
112 rm -f test6 test8 test9 test6.o test8.o test9.o
114 distclean dist-clean: clean
118 @echo Calculating dependecies:
121 @for i in $(sources); do \
122 o="`echo $$i | sed -e 's/\.c$$/.o/' -e 's/\.cpp$$/.o/'`" ; \
123 echo ' ' $$i: $$o ; \
124 $(CXX) $(DEPENDFLAGS) -MM -MT $$o $$i >> .depend ; \
129 test6: test6.o $(LIBRARY) $(LIBRARY_SO)
130 $(LD) -o $@ $(LINKFLAGS) $< $(MUX_LIBS)
132 test6.o: $(MUX_SRC_DIR)test6.cpp
133 $(CXX) -c $(COMPILEFLAGS) -o $@ $<
135 test8: test8.o $(LIBRARY) $(LIBRARY_SO)
136 $(LD) -o $@ $(LINKFLAGS) $< $(MUX_LIBS)
138 test8.o: $(MUX_SRC_DIR)test8.cpp
139 $(CXX) -c $(COMPILEFLAGS) -o $@ $<
141 test9: test9.o $(LIBRARY) $(LIBRARY_SO)
142 $(LD) -o $@ $(LINKFLAGS) $< $(MUX_LIBS)
144 test9.o: $(TAG_SRC_DIR)test9.cpp
145 $(CXX) -c $(COMPILEFLAGS) -o $@ $<
147 ifeq (Darwin,$(shell uname -s))
148 install: install_staticlib install_headers
150 install: install_staticlib install_sharedlib install_headers
154 $(INSTALL) $(INSTALL_DIR_OPTS) -d $(includedir)
155 for i in $(INCLUDE_DIR)/*.h; do \
156 $(INSTALL) $(INSTALL_OPTS) $$i $(includedir) ; \
158 $(INSTALL) $(INSTALL_DIR_OPTS) -d $(includedir)/c
159 for i in $(INCLUDE_DIR)/c/*.h; do \
160 $(INSTALL) $(INSTALL_OPTS) $$i $(includedir)/c ; \
163 install_staticlib: $(LIBRARY)
164 $(INSTALL) $(INSTALL_DIR_OPTS) -d $(libdir)
165 $(INSTALL) $(INSTALL_OPTS_LIB) $(LIBRARY) $(libdir)
167 install_sharedlib: $(LIBRARY_SO)
168 $(INSTALL) $(INSTALL_DIR_OPTS) -d $(libdir)
169 $(INSTALL) $(INSTALL_OPTS_LIB) $(LIBRARY_SO_VER) $(libdir)
170 ln -fs $(LIBRARY_SO_VER) $(libdir)/$(LIBRARY_SO)
172 ifneq ($(wildcard .depend),)