# Makefile for ffmpegsumo

.PHONY: all

all: libffmpegsumo.so

# makefile variables

prefix = /usr
exec_prefix = /usr
includedir = /usr/include
libdir = /usr/lib64

CC	= gcc
AS	= yasm -f elf
# Either ia32 or x64
ARCH	=
ASFLAGS = 
INCDIR	= -I$(srcdir)/config -I$(srcdir)/config/$(ARCH)/ -I$(srcdir) -I$(includedir)/vpx
DEFS	= -DHAVE_AV_CONFIG_H -D_POSIX_C_SOURCE=200112 -D_ISOC99_SOURCE -D_LARGEFILE_SOURCE 
OPTFLAGS= -O2 -g
COMMONCFLAGS = -fomit-frame-pointer -std=c99 -pthread -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Wno-deprecated-declarations
CFLAGS	= $(OPTFLAGS) 
ifeq "$(ARCH)" "ia32"
CFLAGS  = $(OPTFLAGS) $(COMMONCFLAGS)
FPICFLAGS =
ASFLAGS = -DARCH_X86_32 -m x86 -I$(srcdir)/config/$(ARCH)/ -Pconfig.asm
endif
ifeq "$(ARCH)" "x64"
FPICFLAGS = -fPIC -DPIC
ASFLAGS = -DARCH_X86_64 -m amd64 -DPIC -I$(srcdir)/config/$(ARCH)/ -Pconfig.asm
endif
CFLAGS  = $(OPTFLAGS) $(FPICFLAGS) $(COMMONCFLAGS)
LIBS	= -lm -lvpx -lz
COMPILE = $(CC) $(DEFS) $(INCDIR) $(CFLAGS)
INSTALL	= /usr/bin/install -c

srcdir = .
top_srcdir = .
top_builddir = 

# implicit rules for object files

%.c.o: %.c
	$(COMPILE) -c $< -o $@

%.asm.o: %.asm
	$(AS) $(ASFLAGS) $< -o $@

sources = libavcodec/allcodecs.c.o	\
	  libavcodec/audioconvert.c.o	\
	  libavcodec/avfft.c.o		\
	  libavcodec/avpacket.c.o	\
	  libavcodec/bitstream.c.o	\
	  libavcodec/bitstream_filter.c.o	\
	  libavcodec/dsputil.c.o	\
	  libavcodec/faanidct.c.o	\
	  libavcodec/fft_fixed.c.o	\
	  libavcodec/fft_float.c.o	\
          libavcodec/flac.c.o		\
          libavcodec/flac_parser.c.o	\
          libavcodec/flacdata.c.o	\
          libavcodec/flacdec.c.o	\
	  libavcodec/fmtconvert.c.o	\
	  libavcodec/golomb.c.o		\
          libavcodec/h264pred.c.o	\
	  libavcodec/imgconvert.c.o	\
	  libavcodec/jrevdct.c.o	\
	  libavcodec/mdct_fixed.c.o	\
	  libavcodec/mdct_float.c.o	\
	  libavcodec/mpeg12data.c.o	\
	  libavcodec/mpeg4audio.c.o	\
	  libavcodec/mpegaudiodata.c.o	\
	  libavcodec/options.c.o	\
	  libavcodec/parser.c.o		\
	  libavcodec/pcm.c.o		\
	  libavcodec/pthread.c.o	\
	  libavcodec/raw.c.o		\
	  libavcodec/rawdec.c.o		\
	  libavcodec/rdft.c.o		\
	  libavcodec/simple_idct.c.o	\
	  libavcodec/utils.c.o		\
	  libavcodec/vorbis.c.o		\
	  libavcodec/vorbis_data.c.o	\
	  libavcodec/vorbisdec.c.o	\
	  libavcodec/vp3.c.o		\
	  libavcodec/vp3dsp.c.o		\
          libavcodec/vp56rac.c.o	\
          libavcodec/vp8.c.o		\
          libavcodec/vp8_parser.c.o	\
          libavcodec/vp8dsp.c.o		\
	  libavcodec/xiph.c.o		\
	  libavformat/allformats.c.o	\
	  libavformat/avio.c.o		\
	  libavformat/aviobuf.c.o	\
	  libavformat/cutils.c.o	\
          libavformat/flacdec.c.o	\
	  libavformat/id3v1.c.o		\
	  libavformat/id3v2.c.o		\
	  libavformat/isom.c.o		\
	  libavformat/matroska.c.o	\
	  libavformat/matroskadec.c.o	\
	  libavformat/metadata.c.o	\
	  libavformat/oggdec.c.o	\
          libavformat/oggparsecelt.c.o	\
          libavformat/oggparseflac.c.o	\
	  libavformat/oggparseogm.c.o	\
	  libavformat/oggparseskeleton.c.o	\
	  libavformat/oggparsetheora.c.o	\
	  libavformat/oggparsevorbis.c.o	\
	  libavformat/options.c.o	\
	  libavformat/pcm.c.o		\
          libavformat/rawdec.c.o	\
	  libavformat/riff.c.o		\
	  libavformat/rm.c.o		\
	  libavformat/rmdec.c.o		\
	  libavformat/seek.c.o		\
	  libavformat/utils.c.o		\
	  libavformat/vorbiscomment.c.o	\
	  libavformat/wav.c.o		\
	  libavutil/audioconvert.c.o	\
	  libavutil/avstring.c.o	\
	  libavutil/base64.c.o		\
	  libavutil/cpu.c.o		\
	  libavutil/crc.c.o		\
          libavutil/dict.c.o		\
	  libavutil/eval.c.o		\
          libavutil/fifo.c.o		\
	  libavutil/imgutils.c.o	\
	  libavutil/intfloat_readwrite.c.o	\
	  libavutil/inverse.c.o		\
          libavutil/lfg.c.o		\
	  libavutil/log.c.o		\
	  libavutil/lzo.c.o		\
	  libavutil/mathematics.c.o	\
          libavutil/md5.c.o		\
	  libavutil/mem.c.o		\
	  libavutil/opt.c.o		\
	  libavutil/parseutils.c.o	\
	  libavutil/pixdesc.c.o		\
	  libavutil/random_seed.c.o	\
	  libavutil/rational.c.o	\
	  libavutil/samplefmt.c.o	\
	  libavutil/utils.c.o		\
          libavutil/x86/cpu.c.o		\
	  libavcodec/x86/dsputil_mmx.c.o	\
	  libavcodec/x86/fdct_mmx.c.o	\
	  libavcodec/x86/fft.c.o		\
	  libavcodec/x86/fft_sse.c.o	\
	  libavcodec/x86/fmtconvert_mmx.c.o	\
	  libavcodec/x86/h264_intrapred_init.c.o	\
	  libavcodec/x86/idct_mmx_xvid.c.o	\
	  libavcodec/x86/idct_sse2_xvid.c.o	\
	  libavcodec/x86/motion_est_mmx.c.o	\
          libavcodec/x86/mpegvideo_mmx.c.o	\
	  libavcodec/x86/simple_idct_mmx.c.o	\
          libavcodec/x86/vp8dsp-init.c.o	\
	  libavcodec/x86/deinterlace.asm.o	\
	  libavcodec/x86/dsputil_yasm.asm.o	\
	  libavcodec/x86/fft_mmx.asm.o	\
	  libavcodec/x86/fmtconvert.asm.o	\
	  libavcodec/x86/h264_chromamc.asm.o	\
          libavcodec/x86/h264_chromamc_10bit.asm.o	\
	  libavcodec/x86/h264_intrapred.asm.o	\
	  libavcodec/x86/h264_intrapred_10bit.asm.o	\
          libavcodec/x86/h264_qpel_10bit.asm.o	\
	  libavcodec/x86/vp3dsp.asm.o		\
          libavcodec/x86/vp8dsp.asm.o

# ffmpegsumo 

libffmpegsumo.so: $(sources)
	$(COMPILE) -shared -pthread $(LIBS) -Wl,-Bsymbolic -Wl,--no-undefined -Wl,-soname,$@.0 -z noexecstack -o $@.0.0.0 $^
	ln -s $@.0.0.0 $@

.PHONY: clean install

install:
	$(INSTALL) -d $(DESTDIR)$(libdir)
	$(INSTALL) -d $(DESTDIR)$(includedir)/ffmpegsumo/libavcodec/x86
	$(INSTALL) -d $(DESTDIR)$(includedir)/ffmpegsumo/libavcore/
	$(INSTALL) -d $(DESTDIR)$(includedir)/ffmpegsumo/libavformat/
	$(INSTALL) -d $(DESTDIR)$(includedir)/ffmpegsumo/libavutil/x86
	$(INSTALL) -m 0644 libavcodec/*.h $(DESTDIR)$(includedir)/ffmpegsumo/libavcodec/
	$(INSTALL) -m 0644 libavcodec/x86/*.h $(DESTDIR)$(includedir)/ffmpegsumo/libavcodec/x86/
	$(INSTALL) -m 0644 libavformat/*.h $(DESTDIR)$(includedir)/ffmpegsumo/libavformat/
	$(INSTALL) -m 0644 libavutil/*.h $(DESTDIR)$(includedir)/ffmpegsumo/libavutil/
	$(INSTALL) -m 0644 libavutil/x86/*.h $(DESTDIR)$(includedir)/ffmpegsumo/libavutil/x86/
	if [ -f libffmpegsumo.so.0.0.0 ]; then cp libffmpegsumo.so.0.0.0 $(DESTDIR)$(libdir)/; fi

uninstall:
	rm -f $(DESTDIR)$(libdir)/libffmpegsumo.so*

clean:
	rm -rf $(sources) libffmpegsumo.so*

# EOF
