#
# Makefile for PDecoder and its netscape plugin
#
# 03.01.97 jw.
#

### Irix5
ARCH		= irix.irix5
TOP		= ../../..
CC		= cc
OPTFLAGS	= -g
CFLAGS		= $(OPTFLAGS) -Iinclude -I$(TOP)/include -DWITHOUT_VIS -DWITHOUT_THREADS -DWITHOUT_DGA -DWITHOUT_AUDIO
LDLIBS		= -lXext -lX11
VIS		=


GCC		= XXX
$(GCC)CC	= gcc
$(GCC)OPTFLAGS	= -ggdb -DWITHOUT_VIS -DWITHOUT_DGA -DWITHOUT_THREADS -DWITHOUT_AUDIO
# -pedantic removed, as "ANSI C does not support `long long'"
$(GCC)CFLAGS	= $(OPTFLAGS) -pipe -ansi -Wall -Iinclude 
$(GCC)LDLIBS	= -L/usr/openwin/lib -lXext -lX11 #-ldga -lm -lthread

SHELL		= /bin/sh
AR		= ar
ARFLAGS		= -rs
RANLIB		= ranlib
CPP_DEPEND	= gcc -MM $(CFLAGS)
MODMAKE		= mod/modmake -v -$(CC)

NAME		= PDecoder
LIBNAME		= libPDecode.a

SRCS		= \
	audio.c\
	Timer.c\
	display.c\
	yuv.c\
	dither.c\
	KhorosIO.c\
	Crop.c\
	VectorField.c\
	error.c\
	Headers.c\
	Image.c\
	DPCM.c\
	Interpolation.c\
	Codebook.c\
	BlockDecoder.c\
	HalfPelMotion.c\
	DecodeIPicture.c\
	DecodePPicture.c\
	BufferHandling.c\
	Input.c\
	Process.c\
	ExtVect.c

OBJS 		= \
	audio.o\
	Timer.o\
	display.o\
	dither.o\
	yuv.o\
	KhorosIO.o\
	Crop.o\
	VectorField.o\
	error.o\
	Headers.o\
	Image.o\
	DPCM.o\
	Interpolation.o\
	Codebook.o\
	BlockDecoder.o\
	HalfPelMotion.o\
	DecodeIPicture.o\
	DecodePPicture.o\
	BufferHandling.o\
	Input.o\
	Process.o\
	ExtVect.o

ROBJS		= \
	audio.ro\
	Timer.ro\
	display.ro\
	dither.ro\
	yuv.ro\
	KhorosIO.ro\
	Crop.ro\
	VectorField.ro\
	error.ro\
	Headers.ro\
	Image.ro\
	DPCM.ro\
	Interpolation.ro\
	Codebook.ro\
	BlockDecoder.ro\
	HalfPelMotion.ro\
	DecodeIPicture.ro\
	DecodePPicture.ro\
	BufferHandling.ro\
	Input.ro\
	Process.ro\
	ExtVect.ro

.SUFFIXES: .so .ro .o .c .h .sh

### .ro files are relocatable objects, used to bind shared library (.so) objects
### how to generate .ro files:
### Bloody stupid /opt/SUNWspro/bin/cc refuses to compile, if output file 
### does not match *.o -- Thus we need a very silly move from *.ro.o to *.ro
.c.ro:
	@eval `$(MODMAKE) %CC %CFLAGS $(CFLAGS) -c $< -o $@.o`
	mv $@.o $@


EXPORTS		= 'CC=$(CC)' 'C_FLAGS=$(CFLAGS)'
CLEANOBJECTS	= $(NAME) $(OBJS) mod_main.o np_main.o $(ROBJS) a.out core mon.out
SUBDIRS		= mod Tools

all:: $(NAME) modmake $(ROBJS)

all clean::
	-@for i in $(SUBDIRS); do \
	( set -x; cd $$i; $(MAKE) $(M_FLAGS) $(EXPORTS) $@ ); done

install:: all
	cp $(NAME) ../../../bin/$(ARCH)

modmake:	
	cd mod; $(MAKE) $(M_FLAGS) $(EXPORTS) all

P$(NAME): 
#	touch include/Input.h
	-$(MAKE) $(M_FLAGS) GCC=$(GCC) 'CFLAGS=$(CFLAGS) -DPICTBUF' MAIN=np_main $(NAME)

$(LIBNAME): $(OBJS) np_main.o
	rm -f $@
	ar cr $@ $(OBJS) np_main.o
	$(RANLIB) $@

$(NAME): $(LIBNAME) mod_main.o
	-$(CC) $(CFLAGS) -o PDecoder mod_main.o $(LIBNAME) $(LDLIBS)

yuv.o: yuv.c
	$(CC) $(CFLAGS) -c $(VIS) yuv.c

display.o: display.c
	$(CC) $(CFLAGS) -c $(VIS) display.c

motestsad.o: motestsad.c
	$(CC) $(CFLAGS) -c $(VIS) motestsad.c

HalfPelMotion.o: HalfPelMotion.c
	$(CC) $(CFLAGS) -c $(VIS) HalfPelMotion.c

HalfPelMotionBP.o: HalfPelMotionBP.c
	$(CC) $(CFLAGS) -c $(VIS) HalfPelMotionBP.c

Interpolation.o: Interpolation.c
	$(CC) $(CFLAGS) -c $(VIS) Interpolation.c

yuv.ro: yuv.c
	@eval `$(MODMAKE) %CC %CFLAGS $(CFLAGS) -o $@.o -c $(VIS) yuv.c`
	mv $@.o $@

display.ro: display.c
	@eval `$(MODMAKE) %CC %CFLAGS $(CFLAGS) -o $@.o -DQUIET -c $(VIS) display.c`
	mv $@.o $@

motestsad.ro: motestsad.c
	@eval `$(MODMAKE) %CC %CFLAGS $(CFLAGS) -o $@.o -c $(VIS) motestsad.c`
	mv $@.o $@

HalfPelMotion.ro: HalfPelMotion.c
	@eval `$(MODMAKE) %CC %CFLAGS $(CFLAGS) -o $@.o -c $(VIS) HalfPelMotion.c`
	mv $@.o $@

HalfPelMotionBP.ro: HalfPelMotionBP.c
	@eval `$(MODMAKE) %CC %CFLAGS $(CFLAGS) -o $@.o -c $(VIS) HalfPelMotionBP.c`
	mv $@.o $@

Interpolation.ro: Interpolation.c
	@eval `$(MODMAKE) %CC %CFLAGS $(CFLAGS) -o $@.o -c $(VIS) Interpolation.c`
	mv $@.o $@


lint::
	lint -I include -I /usr/openwin/include $(SRCS) main.c

clean::
	rm -f $(CLEANOBJECTS)
	rm -f *_pure_*.o 

tar dist:
	tar cvf - Codebooks *.c *.il Makefile */*.h */*.c */*.html \
	*/*/*.h */*/*.c */Makefile \
	| gzip > pdecoder.tgz
  
depend:
	cp Makefile Makefile~
	sed -e '/^\# DO NOT DELETE THIS LINE /q' < Makefile > Makefile.d
	for i in $(SRCS) main.c np_main.c; do echo $$i; $(CPP_DEPEND) $$i | sed -e 's/^\([^ ]*\)\.o:/\1.o \1.ro:/' >> Makefile.d; done 
	mv Makefile.d Makefile

depend.x11:
	makedepend -- $(CFLAGS) -- $(SRCS) main.c np_main.c

# DO NOT DELETE THIS LINE -- make depend depends on it.
