include global_config

OBJDIR := $(shell uname --machine)

$(shell sh -c 'if ! test -d $(OBJDIR)\; then \
	mkdir $(OBJDIR)\; \
	mkdir $(OBJDIR)/jpeg\; \
	mkdir $(OBJDIR)/libraw1394\; \
	mkdir $(OBJDIR)/libdv\; fi' )

ifeq ($(OBJDIR), alpha)
  USE_MMX = 0
endif

ifeq ($(USE_MMX), 1)
CFLAGS += -DARCH_X86

DVMMXOBJ = libdv/asmoff.h

DVMMXOBJS = \
  $(OBJDIR)/libdv/dct_block_mmx.o \
  $(OBJDIR)/libdv/encode_x86.o \
  $(OBJDIR)/libdv/idct_block_mmx.o \
  $(OBJDIR)/libdv/vlc_x86.o \
  $(OBJDIR)/libdv/quant_x86.o \
  $(OBJDIR)/libdv/rgbtoyuv.o \
  $(OBJDIR)/libdv/transpose_x86.o
endif

OBJS = \
	$(OBJDIR)/atom.o \
	$(OBJDIR)/cmodel_default.o \
	$(OBJDIR)/cmodel_yuv420p.o \
	$(OBJDIR)/cmodel_yuv422.o \
	$(OBJDIR)/codecs.o \
	$(OBJDIR)/colormodels.o \
	$(OBJDIR)/ctab.o \
	$(OBJDIR)/dinf.o \
	$(OBJDIR)/dref.o \
	$(OBJDIR)/dv.o \
	$(OBJDIR)/edts.o \
	$(OBJDIR)/elst.o \
	$(OBJDIR)/graphics.o \
	$(OBJDIR)/hdlr.o \
	$(OBJDIR)/ima4.o \
	$(OBJDIR)/jpeg.o \
	$(OBJDIR)/jpeg_old.o \
	$(OBJDIR)/libdv.o \
	$(OBJDIR)/libmjpeg.o \
	$(OBJDIR)/matrix.o \
	$(OBJDIR)/mdat.o \
	$(OBJDIR)/mdhd.o \
	$(OBJDIR)/mdia.o \
	$(OBJDIR)/minf.o \
	$(OBJDIR)/moov.o \
	$(OBJDIR)/mvhd.o \
	$(OBJDIR)/plugin.o \
	$(OBJDIR)/qtpng.o \
	$(OBJDIR)/quicktime.o \
	$(OBJDIR)/raw.o \
	$(OBJDIR)/rawaudio.o \
	$(OBJDIR)/smhd.o \
	$(OBJDIR)/stbl.o \
	$(OBJDIR)/stco.o \
	$(OBJDIR)/stsc.o \
	$(OBJDIR)/stsd.o \
	$(OBJDIR)/stsdtable.o \
	$(OBJDIR)/stss.o \
	$(OBJDIR)/stsz.o \
	$(OBJDIR)/stts.o \
	$(OBJDIR)/tkhd.o \
	$(OBJDIR)/trak.o \
	$(OBJDIR)/twos.o \
	$(OBJDIR)/udta.o \
	$(OBJDIR)/ulaw.o \
	$(OBJDIR)/util.o \
	$(OBJDIR)/vmhd.o \
	$(OBJDIR)/workarounds.o \
	$(OBJDIR)/yuv2.o \
	$(OBJDIR)/yuv4.o \
	$(OBJDIR)/yv12.o \
	$(OBJDIR)/jpeg/jcapimin.o \
	$(OBJDIR)/jpeg/jcapistd.o \
	$(OBJDIR)/jpeg/jctrans.o \
	$(OBJDIR)/jpeg/jcparam.o \
	$(OBJDIR)/jpeg/jdatadst.o \
	$(OBJDIR)/jpeg/jcinit.o \
	$(OBJDIR)/jpeg/jcmaster.o \
	$(OBJDIR)/jpeg/jcmarker.o \
	$(OBJDIR)/jpeg/jcmainct.o \
	$(OBJDIR)/jpeg/jcprepct.o \
	$(OBJDIR)/jpeg/jccoefct.o \
	$(OBJDIR)/jpeg/jccolor.o \
	$(OBJDIR)/jpeg/jcsample.o \
	$(OBJDIR)/jpeg/jchuff.o \
	$(OBJDIR)/jpeg/jcphuff.o \
	$(OBJDIR)/jpeg/jcdctmgr.o \
	$(OBJDIR)/jpeg/jfdctfst.o \
	$(OBJDIR)/jpeg/jfdctflt.o \
	$(OBJDIR)/jpeg/jfdctint.o \
	$(OBJDIR)/jpeg/jdapimin.o \
	$(OBJDIR)/jpeg/jdapistd.o \
	$(OBJDIR)/jpeg/jdtrans.o \
	$(OBJDIR)/jpeg/jdatasrc.o \
	$(OBJDIR)/jpeg/jdmaster.o \
	$(OBJDIR)/jpeg/jdinput.o \
	$(OBJDIR)/jpeg/jdmarker.o \
	$(OBJDIR)/jpeg/jdhuff.o \
	$(OBJDIR)/jpeg/jdphuff.o \
	$(OBJDIR)/jpeg/jdmainct.o \
	$(OBJDIR)/jpeg/jdcoefct.o \
	$(OBJDIR)/jpeg/jdpostct.o \
	$(OBJDIR)/jpeg/jddctmgr.o \
	$(OBJDIR)/jpeg/jidctfst.o \
	$(OBJDIR)/jpeg/jidctflt.o \
	$(OBJDIR)/jpeg/jidctint.o \
	$(OBJDIR)/jpeg/jidctred.o \
	$(OBJDIR)/jpeg/jdsample.o \
	$(OBJDIR)/jpeg/jdcolor.o \
	$(OBJDIR)/jpeg/jquant1.o \
	$(OBJDIR)/jpeg/jquant2.o \
	$(OBJDIR)/jpeg/jdmerge.o \
	$(OBJDIR)/jpeg/jcomapi.o \
	$(OBJDIR)/jpeg/jutils.o \
	$(OBJDIR)/jpeg/jerror.o \
	$(OBJDIR)/jpeg/jmemmgr.o \
	$(OBJDIR)/jpeg/jmemnobs.o \
	$(OBJDIR)/libdv/YUY2.o \
	$(OBJDIR)/libdv/YV12.o \
	$(OBJDIR)/libdv/audio.o \
	$(OBJDIR)/libdv/bitstream.o \
	$(OBJDIR)/libdv/dct.o \
	$(OBJDIR)/libdv/dv.o \
	$(OBJDIR)/libdv/encode.o \
	$(OBJDIR)/libdv/idct_248.o \
	$(OBJDIR)/libdv/parse.o \
	$(OBJDIR)/libdv/place.o \
	$(OBJDIR)/libdv/quant.o \
	$(OBJDIR)/libdv/rgb.o \
	$(OBJDIR)/libdv/util.o \
	$(OBJDIR)/libdv/vlc.o \
	$(OBJDIR)/libdv/weighting.o \
	$(OBJDIR)/libraw1394/eventloop.o \
	$(OBJDIR)/libraw1394/fcp.o \
	$(OBJDIR)/libraw1394/iso.o \
	$(OBJDIR)/libraw1394/main.o \
	$(OBJDIR)/libraw1394/readwrite.o


OUTPUT = $(OBJDIR)/libquicktime.a
SHAREDOUTPUT = $(OBJDIR)/libquicktime.so
export CFLAGS

all: $(OUTPUT)

$(OUTPUT): $(DVMMXOBJ) $(OBJS) $(DVMMXOBJS)
	ar rcs $(OUTPUT) $(OBJS) $(DVMMXOBJS)
#	g++ -shared -o $(SHAREDOUTPUT) $(OBJS)

$(OBJDIR)/qtdump: $(OBJDIR)/dump.o $(OUTPUT)
	$(CC) -o $(OBJDIR)/qtdump $(OBJDIR)/dump.o $(OUTPUT) -lpng -lz -lpthread -lglib -ldl -lm

$(OBJDIR)/make_streamable: $(OBJDIR)/make_streamable.o $(OUTPUT)
	$(CC) -o $(OBJDIR)/make_streamable $(OBJDIR)/make_streamable.o $(OUTPUT) -lpng -lz -lpthread -lglib -ldl -lm

$(OBJDIR)/dechunk: $(OBJDIR)/dechunk.o $(OUTPUT)
	$(CC) -o $(OBJDIR)/dechunk $(OBJDIR)/dechunk.o $(OUTPUT) -lpng -lz -lpthread -lglib -ldl -lm

$(OBJDIR)/rechunk: $(OBJDIR)/rechunk.o $(OUTPUT)
	$(CC) -o $(OBJDIR)/rechunk $(OBJDIR)/rechunk.o $(OUTPUT) -lpng -lz -lpthread -lglib -ldl -lm

$(OBJDIR)/recover: $(OBJDIR)/recover.o $(OUTPUT)
	$(CC) -o $(OBJDIR)/recover $(OBJDIR)/recover.o $(OUTPUT) -lpng -lz -lpthread -lglib -ldl -lm

$(OBJDIR)/yuv4toyuv: $(OBJDIR)/yuv4toyuv.o $(OUTPUT)
	$(CC) -o $(OBJDIR)/yuv4toyuv $(OBJDIR)/yuv4toyuv.o $(OUTPUT) -lpng -lz -lpthread -lglib -ldl -lm

$(OBJDIR)/qtinfo: $(OBJDIR)/qtinfo.o
	$(CC) -o $(OBJDIR)/qtinfo $(OBJDIR)/qtinfo.o $(OUTPUT) -lpng -lz -lpthread -lglib -ldl -lm

util:  $(OBJDIR)/qtdump $(OBJDIR)/make_streamable $(OBJDIR)/qtinfo $(OBJDIR)/dechunk $(OBJDIR)/yuv4toyuv $(OBJDIR)/recover $(OBJDIR)/rechunk
	

clean:
	rm -rf $(OBJDIR)
	rm -rf .deps

wc:
	cat *.c *.h | wc

backup: clean
	cd .. && \
	tar zcvf quicktime.tar.gz quicktime

install:
	cp libquicktime.so /usr/lib/libquicktime.so.1
	ln -s /usr/lib/libquicktime.so.1 /usr/lib/libquicktime.so
	cp quicktime.h qtprivate.h /usr/include

$(OBJDIR)/dump.o \
$(OBJDIR)/make_streamable.o \
$(OBJDIR)/dechunk.o \
$(OBJDIR)/recover.o \
$(OBJDIR)/yuv4toyuv.o \
$(OBJDIR)/qtinfo.o \
$(OBJDIR)/rechunk.o \
$(OBJS):
	$(CC) -c `./c_flags` $(subst $(OBJDIR)/,, $*.c) -o $*.o

$(DVMMXOBJ):
	$(CC) `./c_flags` libdv/gasmoff.c -o $(OBJDIR)/gasmoff -lm
	$(OBJDIR)/gasmoff > libdv/asmoff.h

$(DVMMXOBJS):
	$(CC) -c `./c_flags` $(subst $(OBJDIR)/,, $*.S) -o $*.o

$(OBJDIR)/atom.o:			  atom.c
$(OBJDIR)/cmodel_default.o:		  cmodel_default.c
$(OBJDIR)/cmodel_yuv420p.o:		  cmodel_yuv420p.c
$(OBJDIR)/cmodel_yuv422.o:		  cmodel_yuv422.c
$(OBJDIR)/codecs.o:			  codecs.c
$(OBJDIR)/colormodels.o:		  colormodels.c
$(OBJDIR)/ctab.o:			  ctab.c
$(OBJDIR)/dechunk.o:			  dechunk.c
$(OBJDIR)/dinf.o:			  dinf.c
$(OBJDIR)/dref.o:			  dref.c
$(OBJDIR)/dump.o:			  dump.c
$(OBJDIR)/dv.o:			  dv.c
$(OBJDIR)/edts.o:			  edts.c
$(OBJDIR)/elst.o:			  elst.c
$(OBJDIR)/graphics.o:			  graphics.c
$(OBJDIR)/hdlr.o:			  hdlr.c
$(OBJDIR)/ima4.o:			  ima4.c
$(OBJDIR)/jpeg.o:			  jpeg.c
$(OBJDIR)/jpeg_old.o:			  jpeg_old.c
$(OBJDIR)/libdv.o:			  libdv.c
$(OBJDIR)/libmjpeg.o:			  libmjpeg.c
$(OBJDIR)/make_streamable.o:			make_streamable.c
$(OBJDIR)/matrix.o:			  matrix.c
$(OBJDIR)/mdat.o:			  mdat.c
$(OBJDIR)/mdhd.o:			  mdhd.c
$(OBJDIR)/mdia.o:			  mdia.c
$(OBJDIR)/minf.o:			  minf.c
$(OBJDIR)/moov.o:			  moov.c
$(OBJDIR)/mvhd.o:			  mvhd.c
$(OBJDIR)/plugin.o:			  plugin.c
$(OBJDIR)/qtinfo.o:			  qtinfo.c
$(OBJDIR)/qtpng.o:			  qtpng.c
$(OBJDIR)/quicktime.o: 		  quicktime.c
$(OBJDIR)/raw.o:			  raw.c
$(OBJDIR)/rawaudio.o:			  rawaudio.c
$(OBJDIR)/rechunk.o:			  rechunk.c
$(OBJDIR)/recover.o:			  recover.c
$(OBJDIR)/smhd.o:			  smhd.c
$(OBJDIR)/stbl.o:			  stbl.c
$(OBJDIR)/stco.o:			  stco.c
$(OBJDIR)/stsc.o:			  stsc.c
$(OBJDIR)/stsd.o:			  stsd.c
$(OBJDIR)/stsdtable.o: 		  stsdtable.c
$(OBJDIR)/stss.o:			  stss.c
$(OBJDIR)/stsz.o:			  stsz.c
$(OBJDIR)/stts.o:			  stts.c
$(OBJDIR)/tkhd.o:			  tkhd.c
$(OBJDIR)/trak.o:			  trak.c
$(OBJDIR)/twos.o:			  twos.c
$(OBJDIR)/udta.o:			  udta.c
$(OBJDIR)/ulaw.o:			  ulaw.c
$(OBJDIR)/util.o:			  util.c
$(OBJDIR)/vmhd.o:			  vmhd.c
$(OBJDIR)/workarounds.o:		  workarounds.c
$(OBJDIR)/yuv2.o:			  yuv2.c
$(OBJDIR)/yuv4.o:			  yuv4.c
$(OBJDIR)/yuv4toyuv.o:			  yuv4toyuv.c
$(OBJDIR)/yv12.o:			  yv12.c
$(OBJDIR)/jpeg/jcapimin.o:		  jpeg/jcapimin.c
$(OBJDIR)/jpeg/jcapistd.o:		  jpeg/jcapistd.c
$(OBJDIR)/jpeg/jctrans.o:		  jpeg/jctrans.c
$(OBJDIR)/jpeg/jcparam.o:		  jpeg/jcparam.c
$(OBJDIR)/jpeg/jdatadst.o:		  jpeg/jdatadst.c
$(OBJDIR)/jpeg/jcinit.o:		  jpeg/jcinit.c
$(OBJDIR)/jpeg/jcmaster.o:		  jpeg/jcmaster.c
$(OBJDIR)/jpeg/jcmarker.o:		  jpeg/jcmarker.c
$(OBJDIR)/jpeg/jcmainct.o:		  jpeg/jcmainct.c
$(OBJDIR)/jpeg/jcprepct.o:		  jpeg/jcprepct.c
$(OBJDIR)/jpeg/jccoefct.o:		  jpeg/jccoefct.c
$(OBJDIR)/jpeg/jccolor.o:		  jpeg/jccolor.c
$(OBJDIR)/jpeg/jcsample.o:		  jpeg/jcsample.c
$(OBJDIR)/jpeg/jchuff.o:		  jpeg/jchuff.c
$(OBJDIR)/jpeg/jcphuff.o:		  jpeg/jcphuff.c
$(OBJDIR)/jpeg/jcdctmgr.o:		  jpeg/jcdctmgr.c
$(OBJDIR)/jpeg/jfdctfst.o:		  jpeg/jfdctfst.c
$(OBJDIR)/jpeg/jfdctflt.o:		  jpeg/jfdctflt.c
$(OBJDIR)/jpeg/jfdctint.o:		  jpeg/jfdctint.c
$(OBJDIR)/jpeg/jdapimin.o:		  jpeg/jdapimin.c
$(OBJDIR)/jpeg/jdapistd.o:		  jpeg/jdapistd.c
$(OBJDIR)/jpeg/jdtrans.o:		  jpeg/jdtrans.c
$(OBJDIR)/jpeg/jdatasrc.o:		  jpeg/jdatasrc.c
$(OBJDIR)/jpeg/jdmaster.o:		  jpeg/jdmaster.c
$(OBJDIR)/jpeg/jdinput.o:		  jpeg/jdinput.c
$(OBJDIR)/jpeg/jdmarker.o:		  jpeg/jdmarker.c
$(OBJDIR)/jpeg/jdhuff.o:		  jpeg/jdhuff.c
$(OBJDIR)/jpeg/jdphuff.o:		  jpeg/jdphuff.c
$(OBJDIR)/jpeg/jdmainct.o:		  jpeg/jdmainct.c
$(OBJDIR)/jpeg/jdcoefct.o:		  jpeg/jdcoefct.c
$(OBJDIR)/jpeg/jdpostct.o:		  jpeg/jdpostct.c
$(OBJDIR)/jpeg/jddctmgr.o:		  jpeg/jddctmgr.c
$(OBJDIR)/jpeg/jidctfst.o:		  jpeg/jidctfst.c
$(OBJDIR)/jpeg/jidctflt.o:		  jpeg/jidctflt.c
$(OBJDIR)/jpeg/jidctint.o:		  jpeg/jidctint.c
$(OBJDIR)/jpeg/jidctred.o:		  jpeg/jidctred.c
$(OBJDIR)/jpeg/jdsample.o:		  jpeg/jdsample.c
$(OBJDIR)/jpeg/jdcolor.o:		  jpeg/jdcolor.c
$(OBJDIR)/jpeg/jquant1.o:		  jpeg/jquant1.c
$(OBJDIR)/jpeg/jquant2.o:		  jpeg/jquant2.c
$(OBJDIR)/jpeg/jdmerge.o:		  jpeg/jdmerge.c
$(OBJDIR)/jpeg/jcomapi.o:		  jpeg/jcomapi.c
$(OBJDIR)/jpeg/jutils.o:		  jpeg/jutils.c
$(OBJDIR)/jpeg/jerror.o:		  jpeg/jerror.c
$(OBJDIR)/jpeg/jmemmgr.o:		  jpeg/jmemmgr.c
$(OBJDIR)/jpeg/jmemnobs.o:		  jpeg/jmemnobs.c
$(OBJDIR)/libdv/YUY2.o:		  libdv/YUY2.c
$(OBJDIR)/libdv/YV12.o:		  libdv/YV12.c
$(OBJDIR)/libdv/audio.o:		  libdv/audio.c
$(OBJDIR)/libdv/bitstream.o:		  libdv/bitstream.c
$(OBJDIR)/libdv/dct.o: 		  libdv/dct.c
$(OBJDIR)/libdv/dv.o:			  libdv/dv.c
$(OBJDIR)/libdv/encode.o:                 libdv/encode.c
$(OBJDIR)/libdv/idct_248.o:		  libdv/idct_248.c
$(OBJDIR)/libdv/parse.o:		  libdv/parse.c
$(OBJDIR)/libdv/place.o:		  libdv/place.c
$(OBJDIR)/libdv/quant.o:		  libdv/quant.c
$(OBJDIR)/libdv/rgb.o: 		  libdv/rgb.c
$(OBJDIR)/libdv/util.o:		  libdv/util.c
$(OBJDIR)/libdv/vlc.o: 		  libdv/vlc.c
$(OBJDIR)/libdv/weighting.o:		  libdv/weighting.c
$(OBJDIR)/libraw1394/eventloop.o:	  libraw1394/eventloop.c
$(OBJDIR)/libraw1394/fcp.o:		  libraw1394/fcp.c
$(OBJDIR)/libraw1394/iso.o:		  libraw1394/iso.c
$(OBJDIR)/libraw1394/main.o:		  libraw1394/main.c
$(OBJDIR)/libraw1394/readwrite.o:	  libraw1394/readwrite.c

























































































































