summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Kolb <jkolb@wsi.com>2008-05-25 14:09:56 +0000
committerRamiro Polla <ramiro.polla@gmail.com>2008-05-25 14:09:56 +0000
commit3f28da61de286edeed235b26409aca0b4ba8606a (patch)
tree900657045c63d76f8c0203676d76b688eee53d73
parent5b0e7dacd83580a9a4faf0535606fcf47844ee1d (diff)
Add version information to DLLs.
Patch by Jeremy Kolb. Originally committed as revision 13379 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--common.mak7
-rwxr-xr-xconfigure72
2 files changed, 77 insertions, 2 deletions
diff --git a/common.mak b/common.mak
index 88a816efed..609ff3f811 100644
--- a/common.mak
+++ b/common.mak
@@ -32,6 +32,9 @@ CFLAGS = -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
%.d: %.cpp
$(DEPEND_CMD) > $@
+%.rco: %.rc
+ windres -I$(BUILD_ROOT) $< $@
+
%$(EXESUF): %.c
install: install-libs install-headers
@@ -66,9 +69,9 @@ checkheaders: $(filter-out %_template.ho,$(ALLHEADERS:.h=.ho))
DEPS := $(OBJS:.o=.d)
depend dep: $(DEPS)
-CLEANSUFFIXES = *.o *~ *.ho
+CLEANSUFFIXES = *.o *~ *.ho *.rco
LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp *.map
-DISTCLEANSUFFIXES = *.d
+DISTCLEANSUFFIXES = *.d *.rc
define RULES
$(SUBDIR)%$(EXESUF): $(SUBDIR)%.o
diff --git a/configure b/configure
index 86394e9d3d..a0f9a5f63e 100755
--- a/configure
+++ b/configure
@@ -1084,6 +1084,7 @@ TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}${EXESUF}"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
+TMPRC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.rc"
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPSH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh"
@@ -1236,12 +1237,15 @@ case $target_os in
VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
fi
disable ffserver
+ enabled shared && enable dllinfo
SLIBPREF=""
SLIBSUF=".dll"
EXESUF=".exe"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
SLIB_EXTRA_CMD='-lib /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
+ SLIB_EXTRA_OBJS="dllinfo.rco"
+ SLIB_EXTRA_DEP='$(SUBDIR)../version.h'
SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"'
SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
@@ -2069,6 +2073,8 @@ if enabled shared; then
echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
+ echo "SLIB_EXTRA_OBJS=${SLIB_EXTRA_OBJS}" >> config.mak
+ echo "SLIB_EXTRA_DEP=${SLIB_EXTRA_DEP}" >> config.mak
echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
fi
@@ -2215,3 +2221,69 @@ else
pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "$pkg_requires libavcodec = $LIBAVCODEC_VERSION"
apply libswscale.pc sed s/^Libs:.*$/Libs:/
fi
+
+# build dll configuration for windows.
+
+dllinfo_generate() {
+ name=$1
+ description=$2
+ version=$3
+ major=${version%%.*}
+ version_commas=`echo $version | tr . ,`,0
+ dllname=`echo $name | sed s/lib//`
+
+ license_str="This FFmpeg build is distributed under the terms of the GNU $license.\r\n"
+ test "$license" = "unredistributable" &&
+ license_str="This FFmpeg build may not be distributed publicly.\r\n"
+
+ cat <<EOF >$TMPRC
+#include <WinVer.h>
+#include "version.h"
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION $version_commas
+ PRODUCTVERSION $version_commas
+ FILEFLAGSMASK 0x17L
+ FILEFLAGS 0x0L
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "$license_str"
+ "Source code is available at http://ffmpeg.org"
+ VALUE "CompanyName", "FFmpeg"
+ VALUE "FileDescription", "$description"
+ VALUE "FileVersion", "$version"
+ VALUE "InternalName", "$name"
+ VALUE "LegalCopyright", "(C) 2000-2008 Fabrice Bellard, et al."
+ VALUE "LegalTrademarks", "FFmpeg"
+ VALUE "OriginalFilename", "$dllname-$major.dll"
+ VALUE "ProductName", "$name"
+ VALUE "ProductVersion", FFMPEG_VERSION
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+EOF
+
+ if ! cmp -s $TMPRC $name/dllinfo.rc; then
+ mv -f $TMPRC $name/dllinfo.rc
+ fi
+ rm -f $TMPRC
+}
+
+if test "$dllinfo" = "yes"; then
+ dllinfo_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
+ dllinfo_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION"
+ dllinfo_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION"
+ dllinfo_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION"
+ dllinfo_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION"
+ dllinfo_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
+ dllinfo_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION"
+fi