include global_config

OBJDIR := $(shell uname --machine)

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

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

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

ifeq ($(USE_DV), 1)
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
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)/edts.o \
	$(OBJDIR)/elst.o \
	$(OBJDIR)/graphics.o \
	$(OBJDIR)/hdlr.o \
	$(OBJDIR)/ima4.o \
	$(OBJDIR)/jpeg.o \
	$(OBJDIR)/jpeg_old.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
ifeq ($(USE_DV), 1)
OBJS += \
	${OBJDIR}/dv.o \
	${OBJDIR}/libdv.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
endif
ifeq ($(USE_FIREWIRE),1)
OBJS += \
	$(OBJDIR)/libraw1394/eventloop.o \
	$(OBJDIR)/libraw1394/fcp.o \
	$(OBJDIR)/libraw1394/iso.o \
	$(OBJDIR)/libraw1394/main.o \
	$(OBJDIR)/libraw1394/readwrite.o
endif


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

all: $(OUTPUT)

$(OUTPUT): $(DVMMXOBJ) $(OBJS) $(DVMMXOBJS)
	ar rcs $(OUTPUT) $(OBJS) $(DVMMXOBJS)

$(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:
	@echo "You really don't want to install this hacked version"
	@echo "of quicktime4linux. It is only useful for compiling"
	@echo "the MJPEG-tools."
	@echo "Use ./configure --with-quicktime=/path/to/here to let"
	@echo "the MJPEG-tools find this quicktime4linux version."
	@echo
	@echo "To install this package anyway, use 'make install_real'"

install_real:
	cp $(OBJDIR)/libquicktime.a /usr/lib/libquicktime.a
	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)/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

























































































































