From 3f28da61de286edeed235b26409aca0b4ba8606a Mon Sep 17 00:00:00 2001 From: Jeremy Kolb Date: Sun, 25 May 2008 14:09:56 +0000 Subject: [PATCH] Add version information to DLLs. Patch by Jeremy Kolb. Originally committed as revision 13379 to svn://svn.ffmpeg.org/ffmpeg/trunk --- common.mak | 7 ++++-- configure | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 <$TMPRC +#include +#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