[FFmpeg-devel] [PATCH] Add versioning information to dlls
Jeremy Kolb
jkolb
Thu May 22 16:20:59 CEST 2008
Jeremy Kolb wrote:
> Ramiro Polla wrote:
>
>>>>> This patch adds support for generating .rc files and then linking
>>>>> them with the dlls created by ffmpeg. This information can be used
>>>>> to identify the product version by the user and is also available to
>>>>> installer programs for ease of updating etc.
>>>>>
>>>>>
>>>>>
>>>> Diego, Mans, ping?
>>>>
>>>>
>> [...]
>>
>>
>>
>>> +# 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//`
>>> +
>>> + case "$license" in
>>> + 'GPL' | 'LGPL')
>>> + license_str="This FFmpeg build is distributed under the terms of the GNU $license.\r\n"
>>> + ;;
>>> + 'unredistributable')
>>> + license_str="This FFmpeg build may not be distributed publicly.\r\n"
>>> + ;;
>>> + esac
>>>
>>>
>> I'm pretty sure this can be simplified. Something like:
>>
>> 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"
>>
>>
>>
>
> Ah that is cleaner. My bash skills leave something to be desired.
>
>
>>> +
>>> + 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"
>>>
>>>
>> Get the version information from av*.h
>>
>>
>>
>
> that would be for $version, $major and $version_commas correct?
>
>
Actually the versions come from those files, see get_version.
>> [...]
>>
>>
>>> Index: subdir.mak
>>> ===================================================================
>>> --- subdir.mak (revision 13216)
>>> +++ subdir.mak (working copy)
>>> @@ -27,7 +27,9 @@
>>> $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR)
>>> cd ./$(SUBDIR) && $(LN_S) $(SLIBNAME_WITH_MAJOR) $(SLIBNAME)
>>>
>>> -$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS)
>>> +$(SUBDIR)$(SLIB_EXTRA_OBJS): $(SLIB_EXTRA_DEP)
>>>
>>>
>> ^
>>
>>
>>> +
>>> +$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SUBDIR)$(SLIB_EXTRA_OBJS)
>>> $(SLIB_CREATE_DEF_CMD)
>>> $(CC) $(SHFLAGS) $(FFLDFLAGS) -o $$@ $$^ $(FFEXTRALIBS) $(EXTRAOBJS)
>>> $(SLIB_EXTRA_CMD)
>>> Index: common.mak
>>> ===================================================================
>>> --- common.mak (revision 13216)
>>> +++ common.mak (working copy)
>>> @@ -32,6 +32,9 @@
>>> %.d: %.cpp
>>> $(DEPEND_CMD) > $@
>>>
>>> +%.rco: %.rc
>>> + windres -I$(BUILD_ROOT) $< $@
>>> +
>>> %$(EXESUF): %.c
>>>
>>> install: install-libs install-headers
>>> @@ -66,9 +69,9 @@
>>> 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
>>>
>>>
>> ^
>>
>> There are a few trailing whitespaces in your patch. It's an item on the
>> patch submission checklist Diego pointed out.
>>
>>
>>
>
> Thought I had got all of those. Good catch.
>
>
>> You can also let the dependency files (.d) check for version.h and
>> av*.h. Just add a rule for %.d: %.rc, add the extra objs to DEPS, and
>> make a DEPEND_CMD for .rc files that treats them as C files (-xc flag
>> for gcc). That way you can avoid SLIB_EXTRA_DEP.
>>
>> Ramiro Polla
>>
>>
>>
> Can you elaborate?
>
> Jeremy
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at mplayerhq.hu
> https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
>
>
More information about the ffmpeg-devel
mailing list