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>
This commit is contained in:
		
							parent
							
								
									572965c9a6
								
							
						
					
					
						commit
						d6c5fd9f15
					
				
							
								
								
									
										121
									
								
								tools/gen-rc
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										121
									
								
								tools/gen-rc
									
									
									
									
									
										Executable file
									
								
							| @ -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 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user