Commit 320d060a authored by Diego Biurrun's avatar Diego Biurrun

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.

Originally committed as revision 4909 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 53862e0f
......@@ -31,7 +31,10 @@ echo " --enable-a52 enable GPLed A52 support [default=no]"
echo " --enable-a52bin open liba52.so.0 at runtime [default=no]"
echo " --enable-dts enable GPLed DTS support [default=no]"
echo " --enable-pp enable GPLed postprocessing support [default=no]"
echo " --enable-static build static libraries [default=yes]"
echo " --disable-static do not build static libraries [default=no]"
echo " --enable-shared build shared libraries [default=no]"
echo " --disable-shared do not build shared libraries [default=yes]"
echo " --enable-amr_nb enable amr_nb float audio codec"
echo " --enable-amr_nb-fixed use fixed point for amr-nb codec"
echo " --enable-amr_wb enable amr_wb float audio codec"
......@@ -206,6 +209,7 @@ mingw32="no"
mingwce="no"
cygwin="no"
os2="no"
lstatic="yes"
lshared="no"
optimize="yes"
debug="yes"
......@@ -549,8 +553,14 @@ for opt do
;;
--enable-mingwce) mingwce="yes"
;;
--enable-static) lstatic="yes"
;;
--disable-static) lstatic="no"
;;
--enable-shared) lshared="yes"
;;
--disable-shared) lshared="no"
;;
--disable-debug) debug="no"
;;
--disable-opts) optimize="no"
......@@ -607,6 +617,17 @@ for opt do
esac
done
# we need to build at least one lib type
if test "$lstatic" = "no" && test "$lshared" = "no" ; then
cat <<EOF
At least one library type must be built.
Specify --enable-static to build the static libraries or --enable-shared to
build the shared libraries as well. To only build the shared libraries specify
--disable-static in addition to --enable-shared.
EOF
exit 1;
fi
if test "$theora" = "yes" ; then
if test "$libogg" = "no"; then
echo "libogg must be enabled to enable Theora."
......@@ -869,6 +890,15 @@ $cc -o $TMPE $TMPC 2> /dev/null || mmi="no"
fi
if test "$mingw32" = "yes" -o "$mingwce" = "yes"; then
if test "$lshared" = "yes" && test "$lstatic" = "yes" ; then
cat <<EOF
You can only build one library type at once on MinGW.
Specify --disable-static --enable-shared to only build
the shared libraries. To build only the static libraries
you don't need to pass additional options.
EOF
exit 1
fi
v4l="no"
bktr="no"
audio_oss="no"
......@@ -1296,6 +1326,7 @@ echo "pp support $pp"
echo "debug symbols $debug"
echo "strip symbols $dostrip"
echo "optimize $optimize"
echo "static $lstatic"
echo "shared $lshared"
echo "video hooking $vhook"
echo "SDL support $sdl"
......@@ -1364,7 +1395,9 @@ echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
echo "BUILDSUF=$BUILDSUF" >> config.mak
echo "LIBPREF=$LIBPREF" >> config.mak
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
echo "LIB=$LIB" >> config.mak
if test "$lstatic" = "yes" ; then
echo "LIB=$LIB" >> config.mak
fi
echo "SLIBPREF=$SLIBPREF" >> config.mak
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
......@@ -1508,6 +1541,7 @@ lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h
if test "$lshared" = "yes" ; then
echo "#define BUILD_SHARED_AV 1" >> $TMPH
echo "BUILD_SHARED=yes" >> config.mak
echo "PIC=-fPIC -DPIC" >> config.mak
echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
......
......@@ -11,7 +11,7 @@ CFLAGS=$(OPTFLAGS) -DHAVE_AV_CONFIG_H -I.. -I$(SRC_PATH)/libavutil -D_FILE_OFFSE
#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= bitstream.o utils.o mem.o allcodecs.o \
......@@ -449,6 +449,7 @@ dep: depend
clean: $(CLEANAMR)
rm -f *.o *.d *~ *.a *.lib *.so *.dylib *.dll \
*.dll.a *.def *.exp \
i386/*.o i386/*~ \
armv4l/*.o armv4l/*~ \
mlib/*.o mlib/*~ \
......
......@@ -10,7 +10,7 @@ CFLAGS=$(OPTFLAGS) -I.. -I$(SRC_PATH) -I$(SRC_PATH)/libavutil -I$(SRC_PATH)/liba
#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= utils.o cutils.o os_support.o allformats.o
......@@ -157,7 +157,8 @@ install-headers:
g++ $(subst -Wall,,$(CFLAGS)) -c -o $@ $<
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
......
......@@ -6,11 +6,11 @@ include ../config.mak
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 @@ depend: $(SRCS)
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
......
......@@ -247,6 +247,13 @@ static inline float floorf(float f) {
#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 @@ void print_stats(void);
#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 @@ static inline int clip_uint8(int a)
}
/* 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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment