1CXX := g++ 2DEFINES := -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS 3DEFINES += -D__STDC_LIMIT_MACROS 4INCLUDES := -I. 5CXXFLAGS := -W -Wall -g -std=c++11 6ALL_CXXFLAGS := -MMD -MP $(DEFINES) $(INCLUDES) $(CXXFLAGS) 7LIBWEBMA := libwebm.a 8LIBWEBMSO := libwebm.so 9WEBMOBJS := mkvmuxer/mkvmuxer.o mkvmuxer/mkvmuxerutil.o mkvmuxer/mkvwriter.o 10WEBMOBJS += mkvparser/mkvparser.o mkvparser/mkvreader.o 11WEBMOBJS += common/file_util.o common/hdr_util.o 12OBJSA := $(WEBMOBJS:.o=_a.o) 13OBJSSO := $(WEBMOBJS:.o=_so.o) 14VTTOBJS := webvtt/vttreader.o webvtt/webvttparser.o sample_muxer_metadata.o 15EXEOBJS := mkvmuxer_sample.o mkvparser_sample.o dumpvtt.o vttdemux.o 16EXES := mkvparser_sample mkvmuxer_sample dumpvtt vttdemux 17DEPS := $(WEBMOBJS:.o=.d) $(OBJECTS1:.o=.d) $(OBJECTS2:.o=.d) 18DEPS += $(OBJECTS3:.o=.d) $(OBJECTS4:.o=.d) $(OBJSA:.o=.d) $(OBJSSO:.o=.d) 19DEPS += $(VTTOBJS:.o=.d) $(EXEOBJS:.o=.d) 20CLEAN := $(EXEOBJS) $(VTTOBJS) $(WEBMOBJS) $(OBJSA) $(OBJSSO) $(LIBWEBMA) 21CLEAN += $(LIBWEBMSO) $(EXES) $(DEPS) $(INFOOBJS) 22 23all: $(EXES) 24 25mkvparser_sample: mkvparser_sample.o $(LIBWEBMA) 26 $(CXX) $^ -o $@ 27 28mkvmuxer_sample: mkvmuxer_sample.o $(VTTOBJS) $(LIBWEBMA) 29 $(CXX) $^ -o $@ 30 31dumpvtt: dumpvtt.o $(VTTOBJS) $(WEBMOBJS) 32 $(CXX) $^ -o $@ 33 34vttdemux: vttdemux.o $(VTTOBJS) $(LIBWEBMA) 35 $(CXX) $^ -o $@ 36 37shared: $(LIBWEBMSO) 38 39libwebm.a: $(OBJSA) 40 $(AR) rcs $@ $^ 41 42libwebm.so: $(OBJSSO) 43 $(CXX) $(ALL_CXXFLAGS) -shared $(OBJSSO) -o $(LIBWEBMSO) 44 45%.o: %.cc 46 $(CXX) -c $(ALL_CXXFLAGS) $< -o $@ 47%_a.o: %.cc 48 $(CXX) -c $(ALL_CXXFLAGS) $< -o $@ 49%_so.o: %.cc 50 $(CXX) -c $(ALL_CXXFLAGS) -fPIC $< -o $@ 51 52clean: 53 $(RM) -f $(CLEAN) Makefile.bak 54 55ifneq ($(MAKECMDGOALS), clean) 56 -include $(DEPS) 57endif 58