diff options
author | Timothy Gu <timothygu99@gmail.com> | 2013-12-10 17:32:56 -0800 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-12-11 19:27:35 +0100 |
commit | d6c5fd9f15c1c6e2f5dc8131bffe8997eee7aa6b (patch) | |
tree | 8a436c53fb59ec0c0262e3178ed413bdb727ac25 /tools | |
parent | 572965c9a6b8173d918dea392aadfee1d44d7f47 (diff) | |
download | ffmpeg-d6c5fd9f15c1c6e2f5dc8131bffe8997eee7aa6b.tar.gz |
tools/: Add gen-rc tool for generating Windows resource files
Signed-off-by: Timothy Gu <timothygu99@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/gen-rc | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/tools/gen-rc b/tools/gen-rc new file mode 100755 index 0000000000..d9ca37e9ff --- /dev/null +++ b/tools/gen-rc @@ -0,0 +1,121 @@ +#!/bin/sh +# +# Copyright (c) 2012 James Almer +# Copyright (c) 2013 Tiancheng "Timothy" Gu +# +# This file is part of FFmpeg. +# +# FFmpeg is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# FFmpeg is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with FFmpeg; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +## Help +die() { + cat <<EOF >&2 +This script is used to generate Windows resources file for the FFmpeg libraries. +The output .rc file is to be compiled by windres(1). It is mainly useful for +FFmpeg developers to tweak and regenerate all resources files at once. + +Usage: $0 <libname> <comment> + +The script will output the file to '<libname>/<libname-without-lib>res.rc'. + +Example: $0 libavcodec 'FFmpeg codecs library' +EOF + exit 1 +} + +# Script to generate all: +# (to remove prefix '# ' and add 'tools/' as prefix: sed -r 's/^.{2}/tools\//') +# gen-rc libavutil "FFmpeg utility library" +# gen-rc libavcodec "FFmpeg codec library" +# gen-rc libavformat "FFmpeg container format library" +# gen-rc libavdevice "FFmpeg device handling library" +# gen-rc libavfilter "FFmpeg audio/video filtering library" +# gen-rc libpostproc "FFmpeg postprocessing library" +# gen-rc libavresample "Libav audio resampling library" +# gen-rc libswscale "FFmpeg image rescaling library" +# gen-rc libswresample "FFmpeg audio resampling library" + +## Sanity checks and argument parsing +if test $# -lt 2 || test $# -gt 3; then + die +fi + +name=$1 +shortname=${name#lib} +comment=$2 +capname=`echo $name | awk '{print toupper($0)}'` +version=${capname}_VERSION + +mkdir -p "$name" +output="$name/${shortname}res.rc" + +## REAL magic +cat <<EOF > $output +/* + * Windows resource file for $name + * + * Copyright (C) 2012 James Almer + * Copyright (C) 2013 Tiancheng "Timothy" Gu + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <windows.h> +#include "$name/version.h" +#include "libavutil/ffversion.h" +#include "config.h" + +1 VERSIONINFO +FILEVERSION ${version}_MAJOR, ${version}_MINOR, ${version}_MICRO, 0 +PRODUCTVERSION ${version}_MAJOR, ${version}_MINOR, ${version}_MICRO, 0 +FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +FILEOS VOS_NT_WINDOWS32 +FILETYPE VFT_DLL +{ + BLOCK "StringFileInfo" + { + BLOCK "040904B0" + { + VALUE "CompanyName", "FFmpeg Project" + VALUE "FileDescription", "$comment" + VALUE "FileVersion", AV_STRINGIFY($version) + VALUE "InternalName", "$name" + VALUE "LegalCopyright", "Copyright (C) 2000-" AV_STRINGIFY(CONFIG_THIS_YEAR) " FFmpeg Project" + VALUE "OriginalFilename", "$shortname" BUILDSUF "-" AV_STRINGIFY(${version}_MAJOR) SLIBSUF + VALUE "ProductName", "FFmpeg" + VALUE "ProductVersion", FFMPEG_VERSION + } + } + + BLOCK "VarFileInfo" + { + VALUE "Translation", 0x0409, 0x04B0 + } +} +EOF |