changeset 22:3b56407b3f96 libavutil

On MinGW it is not possible to build shared and static libraries at once. Add means to disable building the static libraries and fix a few issues with the MinGW build. All the hard work done by Alexander Strasser, minor changes by myself.
author diego
date Mon, 30 Jan 2006 00:22:41 +0000
parents 734ef282845e
children f70fdc881a24
files Makefile common.h
diffstat 2 files changed, 13 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Sun Jan 29 18:32:55 2006 +0000
+++ b/Makefile	Mon Jan 30 00:22:41 2006 +0000
@@ -6,11 +6,11 @@
 VPATH=$(SRC_PATH)/libavutil
 
 # NOTE: -I.. is needed to include config.h
-CFLAGS=$(OPTFLAGS) -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
+CFLAGS=$(OPTFLAGS) -DHAVE_AV_CONFIG_H -DBUILD_AVUTIL -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
 
 #FIXME: This should be in configure/config.mak
 ifeq ($(CONFIG_WIN32),yes)
-    LDFLAGS=-Wl,--output-def,$(@:.dll=.def)
+    LDFLAGS=-Wl,--output-def,$(@:.dll=.def),--out-implib,lib$(SLIBNAME:$(SLIBSUF)=.dll.a)
 endif
 
 OBJS= mathematics.o \
@@ -53,7 +53,8 @@
 dep:	depend
 
 clean:
-	rm -f *.o *.d *~ *.a *.lib *.so *.dylib *.dll
+	rm -f *.o *.d *~ *.a *.lib *.so *.dylib *.dll \
+	      *.lib *.def *.dll.a *.exp
 
 distclean: clean
 	rm -f .depend
--- a/common.h	Sun Jan 29 18:32:55 2006 +0000
+++ b/common.h	Mon Jan 30 00:22:41 2006 +0000
@@ -247,6 +247,13 @@
 
 #ifdef HAVE_AV_CONFIG_H
 
+#if defined(__MINGW32__) && !defined(BUILD_AVUTIL) && defined(BUILD_SHARED_AV)
+#  define FF_IMPORT_ATTR __declspec(dllimport)
+#else
+#  define FF_IMPORT_ATTR
+#endif
+
+
 #    include "bswap.h"
 
 // Use rip-relative addressing if compiling PIC code on x86-64.
@@ -345,7 +352,7 @@
 #endif
 
 /* misc math functions */
-extern const uint8_t ff_log2_tab[256];
+extern FF_IMPORT_ATTR const uint8_t ff_log2_tab[256];
 
 static inline int av_log2(unsigned int v)
 {
@@ -423,7 +430,7 @@
 }
 
 /* math */
-extern const uint8_t ff_sqrt_tab[128];
+extern FF_IMPORT_ATTR const uint8_t ff_sqrt_tab[128];
 
 int64_t ff_gcd(int64_t a, int64_t b);