From d6c5fd9f15c1c6e2f5dc8131bffe8997eee7aa6b Mon Sep 17 00:00:00 2001 From: Timothy Gu Date: Tue, 10 Dec 2013 17:32:56 -0800 Subject: [PATCH] tools/: Add gen-rc tool for generating Windows resource files Signed-off-by: Timothy Gu Signed-off-by: Michael Niedermayer --- tools/gen-rc | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100755 tools/gen-rc 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 <&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 + +The script will output the file to '/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 < $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 +#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