Package: libmpeg3
Version: 1.5
Author: Guillem Jover <guillem@debian.org>
Status: applied
Description:
 Shared library (.so):
 - objects are compiled with -fPIC flag (*.lo).
 - have all needed dependencies explicitly specified, so you will not
   be in http://people.debian.org/~dirson/shlibs/per-maint.txt anymore.
 Static library (.a):
 - objects are compiled without -fPIC flag (*.o).
 Uitilities are linked against shared library, thus reducing space.
 Fixed some warnings in the compiler command line and in the code.
  (activated -Wall for a moment, but after seeing the horror, better don't ;)
 Cleaned a bit upstream Makefile.
 - use explicit CFLAGS when compiling, is easier to trace errors looking
   at the build logs.
 - move $(shell ... ) hack to a proper make target.
 - create a symlink for the current library SONAME.

diff -Naur libmpeg3-1.5/audio/Makefile libmpeg3-1.5-patched/audio/Makefile
--- libmpeg3-1.5/audio/Makefile	2001-10-01 05:18:31.000000000 +0200
+++ libmpeg3-1.5-patched/audio/Makefile	2003-10-31 05:30:58.000000000 +0100
@@ -18,7 +18,7 @@
 all: $(OBJS)
 
 .c.o:
-	$(CC) -c `./c_flags` $*.c
+	$(CC) -c -fPIC `./c_flags` $*.c
 
 .s.o:
 	$(CC) -f elf $*.s
diff -Naur libmpeg3-1.5/audio/mpeg3audio.c libmpeg3-1.5-patched/audio/mpeg3audio.c
--- libmpeg3-1.5/audio/mpeg3audio.c	2001-12-21 19:47:25.000000000 +0100
+++ libmpeg3-1.5-patched/audio/mpeg3audio.c	2003-10-31 06:35:50.000000000 +0100
@@ -284,9 +284,9 @@
 		index = position / MPEG3_AUDIO_CHUNKSIZE;
 		if(index >= track->total_sample_offsets) index = track->total_sample_offsets - 1;
 		title_number = (track->sample_offsets[index] & 
-			0xff00000000000000) >> 56;
+			0xff00000000000000ULL) >> 56;
 		byte = track->sample_offsets[index] &
-			0xffffffffffffff;
+			0xffffffffffffffULL;
 
 		mpeg3bits_open_title(audio->astream, title_number);
 		mpeg3bits_seek_byte(audio->astream, byte);
diff -Naur libmpeg3-1.5/debian/rules libmpeg3-1.5-patched/debian/rules
--- libmpeg3-1.5/debian/rules	2003-10-31 05:33:21.000000000 +0100
+++ libmpeg3-1.5-patched/debian/rules	2003-10-31 06:50:50.000000000 +0100
@@ -11,7 +11,7 @@
 
 # Honor DEB_BUILD_OPTIONS!!!
 # Pass -g to configure *only* if DEB_BUILD_OPTIONS says it.
-CFLAGS="-O2 -W"
+CFLAGS = -O2 -W
 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
 CFLAGS += -g
 endif
diff -Naur libmpeg3-1.5/Makefile libmpeg3-1.5-patched/Makefile
--- libmpeg3-1.5/Makefile	2003-10-31 05:33:21.000000000 +0100
+++ libmpeg3-1.5-patched/Makefile	2003-10-31 07:05:13.000000000 +0100
@@ -3,8 +3,8 @@
 USE_MMX = 0
 USE_CSS = 0
 
-version = 1.5.0
 major = 1
+version = $(major).5.0
 
 #ifeq ($(origin CFLAGS), environment)
 #HAVE_CFLAGS := yes
@@ -15,12 +15,8 @@
 
 OBJDIR := obj
 
-$(shell sh -c 'if ! test -d $(OBJDIR)\; then \
-	mkdir $(OBJDIR)\; \
-	mkdir $(OBJDIR)/audio\; \
-	mkdir $(OBJDIR)/video\; fi' )
 
-ifeq ($strip $(prefix),)
+ifeq ($(strip $(prefix)),)
 PREFIX=/usr
 else
 PREFIX=$(prefix)
@@ -40,7 +36,7 @@
 ifeq ($(ARCH), i386)
   USE_MMX = 0
   ifneq ($(HAVE_CFLAGS), yes)
-    CFLAGS += -O2 -D_FILE_OFFSET_BITS=64 -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2
+    CFLAGS += -O2 -D_FILE_OFFSET_BITS=64 -fomit-frame-pointer -falign-loops=2 -falign-jumps=2 -falign-functions=2
   endif
 endif
 
@@ -55,21 +51,9 @@
   NASMOBJS = $(OBJDIR)/video/reconmmx.o
 endif
 
-
-
-
-
-
-
-
 #CFLAGS += -g
 
 
-
-
-
-
-
 UTILOBJS = \
 	$(OBJDIR)/mpeg3cat.o \
 	$(OBJDIR)/mpeg3dump.o \
@@ -113,40 +97,51 @@
 	$(OBJDIR)/video/vlc.o \
 	$(OBJDIR)/workarounds.o
 
+SOBJS = $(OBJS:.o=.lo)
+
+
 OUTPUT = $(OBJDIR)/libmpeg3.a
-SHAREDOUTPUT = $(OBJDIR)/libmpeg3.so.$(version)
+SHLIB_FULLNAME = libmpeg3.so.$(version)
+SHLIB_SONAME = libmpeg3.so.$(major)
+SHAREDOUTPUT = $(OBJDIR)/$(SHLIB_FULLNAME)
 UTILS = $(OBJDIR)/mpeg3dump $(OBJDIR)/mpeg3cat $(OBJDIR)/mpeg3toc $(OBJDIR)/mpeg3split
 LIBS = -lm -lpthread
 
 
-$(shell echo $(CFLAGS) > $(OBJDIR)/c_flags)
+all: $(OBJDIR) $(OUTPUT) $(SHAREDOUTPUT) util
 
-
-all: $(OUTPUT) $(SHAREDOUTPUT) util
+$(OBJDIR):
+	mkdir $(OBJDIR)
+	mkdir $(OBJDIR)/audio
+	mkdir $(OBJDIR)/video
 
 $(OUTPUT): $(OBJS) $(ASMOBJS) $(NASMOBJS) $(UTILOBJS)
 	ar rcs $(OUTPUT) $(OBJS) $(ASMOBJS) $(NASMOBJS)
 
-$(SHAREDOUTPUT): $(OBJS) $(ASMOBJS) $(NASMOBJS)
-	gcc -shared -fPIC -o $(SHAREDOUTPUT) $(OBJS) $(ASMOBJS) $(NASMOBJS) -Wl,-soname -Wl,libmpeg3.so.1
-	cd $(OBJDIR) && ln -s libmpeg3.so.$(version) libmpeg3.so && cd ..
-
-$(OBJDIR)/mpeg3dump: $(OUTPUT)
-	$(CC) -o $(OBJDIR)/mpeg3dump mpeg3dump.c $(OUTPUT) $(LIBS)
+$(SHAREDOUTPUT): $(SOBJS) $(ASMOBJS) $(NASMOBJS)
+	gcc -shared -fPIC -o $(SHAREDOUTPUT) \
+	  $(LIBS) $(SOBJS) $(ASMOBJS) $(NASMOBJS) \
+	  -Wl,-soname -Wl,$(SHLIB_SONAME)
+	( cd $(OBJDIR); \
+	  ln -s $(SHLIB_FULLNAME) libmpeg3.so; \
+	  ln -s $(SHLIB_FULLNAME) $(SHLIB_SONAME) \
+	)
+
+$(OBJDIR)/mpeg3dump: $(SHAREDOUTPUT)
+	$(CC) -o $(OBJDIR)/mpeg3dump mpeg3dump.c $(SHAREDOUTPUT)
+
+$(OBJDIR)/mpeg3cat: $(SHAREDOUTPUT)
+	$(CC) -o $(OBJDIR)/mpeg3cat mpeg3cat.c $(SHAREDOUTPUT)
 
-$(OBJDIR)/mpeg3cat: $(OUTPUT)
-	$(CC) -o $(OBJDIR)/mpeg3cat mpeg3cat.c $(OUTPUT) $(LIBS)
+$(OBJDIR)/mpeg3toc: $(SHAREDOUTPUT)
+	$(CC) -o $(OBJDIR)/mpeg3toc mpeg3toc.c $(SHAREDOUTPUT)
 
-$(OBJDIR)/mpeg3toc: $(OUTPUT)
-	$(CC) -o $(OBJDIR)/mpeg3toc mpeg3toc.c $(OUTPUT) $(LIBS)
+$(OBJDIR)/mpeg3split: $(SHAREDOUTPUT)
+	$(CC) -o $(OBJDIR)/mpeg3split mpeg3split.c $(SHAREDOUTPUT)
 
-$(OBJDIR)/mpeg3split: $(OUTPUT)
-	$(CC) -o $(OBJDIR)/mpeg3split mpeg3split.c $(OUTPUT) $(LIBS)
-
-$(OBJDIR)/mpeg2qt: $(OUTPUT)
+$(OBJDIR)/mpeg2qt: $(SHAREDOUTPUT)
 	$(CC) -o $(OBJDIR)/mpeg2qt mpeg2qt.c \
-		$(OUTPUT) \
-		$(LIBS) \
+		$(SHAREDOUTPUT) \
 		-I. \
 		-I../quicktime \
 		../quicktime/$(OBJDIR)/libquicktime.a \
@@ -170,94 +165,63 @@
 	rm -rf $(OBJDIR)
 
 backup: clean
-	cd .. && \
-	tar zcf libmpeg3.tar.gz libmpeg3
+	( cd .. && \
+	tar zcf libmpeg3.tar.gz libmpeg3 )
+	
 
 wc:
 	cat *.c *.h audio/*.c audio/*.h video/*.c video/*.h | wc
 
-$(OBJS): 
-	$(CC) -c `cat $(OBJDIR)/c_flags` $(subst $(OBJDIR)/,, $*.c) -o $*.o
-$(ASMOBJS): 
-	$(CC) -c `cat $(OBJDIR)/c_flags` $(subst $(OBJDIR)/,, $*.S) -o $*.o
-$(NASMOBJS): 
-	$(NASM) -f elf $(subst $(OBJDIR)/,, $*.s) -o $*.o
-
-$(OBJDIR)/bitstream.o:  			    bitstream.c
-$(OBJDIR)/mpeg3dump.o: 				    mpeg3dump.c
-$(OBJDIR)/libmpeg3.o: 				    libmpeg3.c
-$(OBJDIR)/mpeg3atrack.o: 			    mpeg3atrack.c
-$(OBJDIR)/mpeg3cat.o: 				    mpeg3cat.c
-$(OBJDIR)/mpeg3css.o: 				    mpeg3css.c
-$(OBJDIR)/mpeg3demux.o: 			    mpeg3demux.c
-$(OBJDIR)/mpeg3ifo.o: 				    mpeg3ifo.c
-$(OBJDIR)/mpeg3io.o: 				    mpeg3io.c
-$(OBJDIR)/mpeg3split.o: 			    mpeg3split.c
-$(OBJDIR)/mpeg3title.o: 			    mpeg3title.c
-$(OBJDIR)/mpeg3toc.o: 				    mpeg3toc.c
-$(OBJDIR)/mpeg3toc3.o:  			    mpeg3toc3.c
-$(OBJDIR)/mpeg3vtrack.o: 			    mpeg3vtrack.c
-$(OBJDIR)/audio/ac3.o:  			    audio/ac3.c
-$(OBJDIR)/audio/bit_allocation.o: 		    audio/bit_allocation.c
-$(OBJDIR)/audio/dct.o:  			    audio/dct.c
-$(OBJDIR)/audio/exponents.o: 			    audio/exponents.c
-$(OBJDIR)/audio/header.o: 			    audio/header.c
-$(OBJDIR)/audio/layer2.o: 			    audio/layer2.c
-$(OBJDIR)/audio/layer3.o: 			    audio/layer3.c
-$(OBJDIR)/audio/mantissa.o: 			    audio/mantissa.c
-$(OBJDIR)/audio/mpeg3audio.o: 			    audio/mpeg3audio.c
-$(OBJDIR)/audio/pcm.o:  			    audio/pcm.c
-$(OBJDIR)/audio/synthesizers.o: 		    audio/synthesizers.c
-$(OBJDIR)/audio/tables.o: 			    audio/tables.c
-$(OBJDIR)/video/getpicture.o: 			    video/getpicture.c
-$(OBJDIR)/video/headers.o: 			    video/headers.c
-$(OBJDIR)/video/idct.o: 			    video/idct.c
-$(OBJDIR)/video/macroblocks.o:  		    video/macroblocks.c
-$(OBJDIR)/video/mmxtest.o: 			    video/mmxtest.c
-$(OBJDIR)/video/motion.o: 			    video/motion.c
-$(OBJDIR)/video/mpeg3video.o: 			    video/mpeg3video.c
-$(OBJDIR)/video/output.o: 			    video/output.c
-$(OBJDIR)/video/reconstruct.o:  		    video/reconstruct.c
-$(OBJDIR)/video/seek.o: 			    video/seek.c
-$(OBJDIR)/video/slice.o: 			    video/slice.c
-$(OBJDIR)/video/vlc.o:  			    video/vlc.c
-$(OBJDIR)/workarounds.o:  			    workarounds.c
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+$(OBJS):
+	$(CC) -c $(CFLAGS) $< -o $@
+$(SOBJS):
+	$(CC) -c $(CFLAGS) -fPIC $< -o $@
+$(ASMOBJS):
+	$(CC) -c $(CLFAGS) $< -o $@
+$(NASMOBJS):
+	$(NASM) -f elf $< -o $@
+
+$(OBJDIR)/bitstream.o $(OBJDIR)/bitstream.lo: bitstream.c
+$(OBJDIR)/mpeg3dump.o $(OBJDIR)/mpeg3dump.lo: mpeg3dump.c
+$(OBJDIR)/libmpeg3.o $(OBJDIR)/libmpeg3.lo: libmpeg3.c
+$(OBJDIR)/mpeg3atrack.o $(OBJDIR)/mpeg3atrack.lo: mpeg3atrack.c
+$(OBJDIR)/mpeg3cat.o $(OBJDIR)/mpeg3cat.lo: mpeg3cat.c
+$(OBJDIR)/mpeg3css.o $(OBJDIR)/mpeg3css.lo: mpeg3css.c
+$(OBJDIR)/mpeg3demux.o $(OBJDIR)/mpeg3demux.lo: mpeg3demux.c
+$(OBJDIR)/mpeg3ifo.o $(OBJDIR)/mpeg3ifo.lo: mpeg3ifo.c
+$(OBJDIR)/mpeg3io.o $(OBJDIR)/mpeg3io.lo: mpeg3io.c
+$(OBJDIR)/mpeg3split.o $(OBJDIR)/mpeg3split.lo: mpeg3split.c
+$(OBJDIR)/mpeg3title.o $(OBJDIR)/mpeg3title.lo: mpeg3title.c
+$(OBJDIR)/mpeg3toc.o $(OBJDIR)/mpeg3toc.lo: mpeg3toc.c
+$(OBJDIR)/mpeg3toc3.o $(OBJDIR)/mpeg3toc3.lo: mpeg3toc3.c
+$(OBJDIR)/mpeg3vtrack.o $(OBJDIR)/mpeg3vtrack.lo: mpeg3vtrack.c
+$(OBJDIR)/audio/ac3.o $(OBJDIR)/audio/ac3.lo: audio/ac3.c
+$(OBJDIR)/audio/exponents.o $(OBJDIR)/audio/exponents.lo: audio/exponents.c
+$(OBJDIR)/audio/dct.o $(OBJDIR)/audio/dct.lo: audio/dct.c
+$(OBJDIR)/audio/header.o $(OBJDIR)/audio/header.lo: audio/header.c
+$(OBJDIR)/audio/layer2.o $(OBJDIR)/audio/layer2.lo: audio/layer2.c
+$(OBJDIR)/audio/layer3.o $(OBJDIR)/audio/layer3.lo: audio/layer3.c
+$(OBJDIR)/audio/mantissa.o $(OBJDIR)/audio/mantissa.lo: audio/mantissa.c
+$(OBJDIR)/audio/mpeg3audio.o $(OBJDIR)/audio/mpeg3audio.lo: audio/mpeg3audio.c
+$(OBJDIR)/audio/pcm.o $(OBJDIR)/audio/pcm.lo: audio/pcm.c
+$(OBJDIR)/audio/tables.o $(OBJDIR)/audio/tables.lo: audio/tables.c
+$(OBJDIR)/audio/bit_allocation.o $(OBJDIR)/audio/bit_allocation.lo: \
+	audio/bit_allocation.c
+$(OBJDIR)/audio/synthesizers.o $(OBJDIR)/audio/synthesizers.lo: \
+	audio/synthesizers.c
+$(OBJDIR)/video/getpicture.o $(OBJDIR)/video/getpicture.lo: video/getpicture.c
+$(OBJDIR)/video/headers.o $(OBJDIR)/video/headers.lo: video/headers.c
+$(OBJDIR)/video/idct.o $(OBJDIR)/video/idct.lo: video/idct.c
+$(OBJDIR)/video/macroblocks.o $(OBJDIR)/video/macroblocks.lo: \
+	video/macroblocks.c
+$(OBJDIR)/video/mmxtest.o $(OBJDIR)/video/mmxtest.lo: video/mmxtest.c
+$(OBJDIR)/video/motion.o $(OBJDIR)/video/motion.lo: video/motion.c
+$(OBJDIR)/video/mpeg3video.o $(OBJDIR)/video/mpeg3video.lo: video/mpeg3video.c
+$(OBJDIR)/video/output.o $(OBJDIR)/video/output.lo: video/output.c
+$(OBJDIR)/video/reconstruct.o $(OBJDIR)/video/reconstruct.lo: \
+	video/reconstruct.c
+$(OBJDIR)/video/seek.o $(OBJDIR)/video/seek.lo: video/seek.c
+$(OBJDIR)/video/slice.o $(OBJDIR)/video/slice.lo: video/slice.c
+$(OBJDIR)/video/vlc.o $(OBJDIR)/video/vlc.lo: video/vlc.c
+$(OBJDIR)/workarounds.o $(OBJDIR)/workarounds.lo: workarounds.c
 
diff -Naur libmpeg3-1.5/video/Makefile libmpeg3-1.5-patched/video/Makefile
--- libmpeg3-1.5/video/Makefile	2001-10-01 05:18:31.000000000 +0200
+++ libmpeg3-1.5-patched/video/Makefile	2003-10-31 05:30:46.000000000 +0100
@@ -19,7 +19,7 @@
 all: $(OBJS) $(MMXOBJS2)
 
 .c.o:
-	$(CC) -c `./c_flags` $*.c
+	$(CC) -c -fPIC `./c_flags` $*.c
 
 .s.o:
 	$(NASM) -f elf $*.s
diff -Naur libmpeg3-1.5/video/seek.c libmpeg3-1.5-patched/video/seek.c
--- libmpeg3-1.5/video/seek.c	2001-12-26 16:15:55.000000000 +0100
+++ libmpeg3-1.5-patched/video/seek.c	2003-10-31 07:05:29.000000000 +0100
@@ -239,9 +239,9 @@
 
 					frame = track->keyframe_numbers[i];
 					title_number = (track->frame_offsets[frame] & 
-						0xff00000000000000) >> 56;
+						0xff00000000000000ULL) >> 56;
 					byte = track->frame_offsets[frame] & 
-						  0xffffffffffffff;
+						  0xffffffffffffffULL;
 
 					video->framenum = track->keyframe_numbers[i];
 
