#
# Makefile for LinuxVideoEditor (lve and tools)
#
include ./global_config
CC  = g++
INCLUDE = -I../mpeg2dec/include/ -I../ffmpeg/libavcodec/ 
CFLAGS += -g -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
CFLAGS += $(INCLUDE)
#
# END OF USER CONFIGURATION
LIB_MPEG2  = -L../mpeg2dec/libmpeg2/.libs/ -lmpeg2 
LIB_FFMPEG = -L../ffmpeg/libavcodec -lavcodec
#
SRC_WRAP = frame_srv.c decoder.c lve_read.c 
OBJ_WRAP = $(SRC_WRAP:.c=.o) 
LIB_WRAP = -L./ -llve
SRC_LVE = lve.c lve_config.c display.c region.c rglist.c lve_ev.c lve_gui.c mediafile.c scenelst.c media.c edit.c DT_drawtext.c audio.c
OBJ_LVE = $(SRC_LVE:.c=.o)
LIB_LVE = $(LIB_MPEG2)
LIB_LVE += $(LIB_FFMPEG)
LIB_LVE += -lSDL -lpthread 

all: liblve.a lve lvefilter lvemkidx lvedump lvemkdvd lvedemux lvemux lverepair lverequant

clean:
	rm -f *.a *.o *% *~ core liblve.a lve lvemkidx lvedump lvemkdvd lvedemux lvemux lverepair lverequant global_config

global_config: Makefile global_config.gcc295 global_config.gcc330
	rm -f global_config
	gcc -v 2>&1 | grep -q 'version 3' && \
	ln -s global_config.gcc330 global_config || \
	ln -s global_config.gcc295 global_config

lve: $(OBJ_LVE) $(SRC_WRAP) liblve.a
	$(CC) $(CFLAGS) -o lve $(OBJ_LVE) $(LIB_WRAP) $(LIB_LVE)

lvefilter:
	gcc -o ../bin/lvefilter lvefilter.c


lvemkidx: lvemkidx.o frame_srv.o liblve.a
	$(CC) -o lvemkidx lvemkidx.o $(LIB_WRAP) $(LIB_MPEG2) $(LIB_FFMPEG)

lvedump: lvedump.o frame_srv.o ffmpeg_aenc.o mux_out.o liblve.a
	$(CC) -o lvedump lvedump.o ffmpeg_aenc.o mux_out.o $(LIB_WRAP) $(LIB_MPEG2) $(LIB_FFMPEG)

lvemkdvd: lvemkdvd.o 
	$(CC) -o lvemkdvd lve_config.o lvemkdvd.o -lpthread

lvedemux: lvedemux.o frame_srv.o liblve.a
	$(CC) -o lvedemux lvedemux.o $(LIB_WRAP) $(LIB_MPEG2) $(LIB_FFMPEG)

lverepair: lverepair.o frame_srv.o liblve.a
	$(CC) -o lverepair lverepair.o $(LIB_WRAP) $(LIB_MPEG2) $(LIB_FFMPEG)

lverequant: m2v_requant.o
	$(CC) -o lverequant m2v_requant.o 

lvemux: lvemux.o mux_out.o
	$(CC) -o lvemux mux_out.o lvemux.o -lpthread

liblve.a: $(OBJ_WRAP)
	ar -rcs liblve.a $(OBJ_WRAP)

lve.o: lve.c lve_ctx.h lve.h region.h display.h lve_gui.h lve_ev.h rglist.h scenelst.h mediafile.h decoder.h frame_srv.h
lve_config.o: lve_config.c lve_config.h lve.h
display.o: display.c lve_ctx.h lve.h display.h DT_drawtext.h
region.o: region.c lve_ctx.h region.h rglist.h DT_drawtext.h
rglist.o: rglist.c lve_ctx.h region.h rglist.h 
lve_ev.o: lve_ev.c lve_ctx.h lve.h lve_ev.h region.h
lve_gui.o: lve_gui.c lve_ctx.h lve.h region.h lve_gui.h rglist.h scenelst.h mediafile.h
mediafile.o: mediafile.c mediafile.h lve.h
scenelst.o: scenelst.c lve_ctx.h lve.h display.h scenelst.h rglist.h mediafile.h yuv2rgb16.h
media.o: media.c lve_ctx.h lve.h display.h scenelst.h rglist.h media.h mediafile.h
edit.o: edit.c lve_ctx.h lve.h display.h scenelst.h rglist.h edit.h mediafile.h
DT_drawtext.o: DT_drawtext.c DT_drawtext.h
audio.o: audio.c audio.h
#
decoder.o: decoder.h decoder.c frame_srv.h
frame_srv.o: frame_srv.c frame_srv.h
lve_read.o: lve_read.c lve_read.h 
#
lvemkidx.o: lvemkidx.c decoder.h frame_srv.h
#
lvedump.o: lvedump.c decoder.h media_buf.h frame_srv.h lve_read.h mux_out.o ffmpeg_aenc.h
ffmpeg_aenc.o: ffmpeg_aenc.c ffmpeg_aenc.h
#
lvemkdvd.o: lvemkdvd.c lve_config.h media_buf.h
#
lvedemux.o: lvedemux.c frame_srv.h
#
lverepair.o: lverepair.c frame_srv.h decoder.h
#
m2v_requant.o: m2v_requant.c m2v_getvlc.h m2v_putvlc.h
#
lvemux.o: lvemux.c mux_out.h
mux_out.o: mux_out.c mux_out.h
#