This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH v2] Added file properties to windows gdb executable for all mingw32 builds.
- From: Bernd Bunk <bernd dot bunk at intel dot com>
- To: tromey at redhat dot com, palves at redhat dot com
- Cc: gdb-patches at sourceware dot org, Bernd Bunk <bernd dot bunk at intel dot com>
- Date: Thu, 22 Aug 2013 10:56:06 +0200
- Subject: [PATCH v2] Added file properties to windows gdb executable for all mingw32 builds.
On Windows OS it is customary that executables and DLL's show file properties.
These contain product name/version, file name/version, company/copyright info.
File properties are visible by right-click on the file, selecting properties \ details.
This patch adds file properties to the gdb executable for all mingw builds.
2013-08-14 Bernd Bunk <bernd.bunk@intel.com>
* Makefile.in (win_exe_properties.h): Add rule to create
win_exe_properties.h header file with file property information.
(win_exe_properties.o): Added rule to build the resource file.
* configure: Add win_exe_properties.o to mingw32 specific
objects.
* common/create-win_exe_properties.sh: Shell script to
create a win_exe_properties.h header file containing all
information/defines for the gdb executable file properties.
New file.
* win_exe_properties.rc: Resource file implementing
gdb executable file properties for windows/mingw32 builds.
It includes auto-generated win_exe_properties.h file with
property information. New file.
Signed-off-by: Bernd Bunk <bernd.bunk@intel.com>
---
gdb/Makefile.in | 7 ++
gdb/common/create-win_exe_properties.sh | 115 +++++++++++++++++++++++++++++++
gdb/configure | 9 +++
gdb/win_exe_properties.rc | 61 ++++++++++++++++
4 files changed, 192 insertions(+), 0 deletions(-)
create mode 100644 gdb/common/create-win_exe_properties.sh
create mode 100644 gdb/win_exe_properties.rc
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 45cddaf..425793f 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1426,6 +1426,13 @@ $(srcdir)/copying.c: @MAINTAINER_MODE_TRUE@ $(srcdir)/../COPYING3 $(srcdir)/copy
< $(srcdir)/../COPYING3 > $(srcdir)/copying.tmp
mv $(srcdir)/copying.tmp $(srcdir)/copying.c
+win_exe_properties.h: Makefile version.in common/create-win_exe_properties.sh
+ $(SHELL) $(srcdir)/common/create-win_exe_properties.sh $(srcdir) \
+ "$(host_alias)" "$(target_alias)" win_exe_properties.h
+
+win_exe_properties.o: win_exe_properties.h win_exe_properties.rc
+ $(WINDRES) $(srcdir)/win_exe_properties.rc win_exe_properties.o
+
version.c: Makefile version.in $(srcdir)/../bfd/version.h $(srcdir)/common/create-version.sh
$(SHELL) $(srcdir)/common/create-version.sh $(srcdir) \
$(host_alias) $(target_alias) version.c
diff --git a/gdb/common/create-win_exe_properties.sh b/gdb/common/create-win_exe_properties.sh
new file mode 100644
index 0000000..4942024
--- /dev/null
+++ b/gdb/common/create-win_exe_properties.sh
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+# Create windows executable file properties for GDB on Windows.
+# These are visible in context menu Properties / Details on the GDB
+# executable on Windows.
+#
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# Contributed by Intel Corporation
+#
+# This file is part of GDB.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Create win_exe_properties.h from given parameters
+# Usage:
+# create-win_exe_properties.sh PATH-TO-GDB-SRCDIR HOST_ALIAS \
+# TARGET_ALIAS OUTPUT-FILE-NAME OPTIONS
+#
+# see also environment variable below to customize some of the
+# description fields.
+#
+
+# shell parameters
+srcdir="$1"
+host_alias="$2"
+target_alias="$3"
+output="$4"
+
+if [ $# -ne 4 ] ; then
+ echo "usage: $0 PATH-TO-GDB-SRCDIR HOST_ALIAS TARGET_ALIAS OUTPUT-FILE-NAME" >&2
+ exit 1
+fi
+
+# default option values
+# keep these defaults in sync with gdb/top.c print_gdb_version()
+version=`cat $srcdir/version.in`
+company_name="Free Software Foundation, Inc."
+file_description="gdb"
+product_name="gdb"
+configured=""
+if [ -n "$host_alias" ] ; then
+ file_description="gdb for $host_alias"
+ product_name="gdb for $host_alias"
+ configured="This GDB was configured as \"\"$host_alias\"\"."
+fi
+internal_name="gdb.exe"
+original_filename="gdb.exe"
+copyright="Copyright (C) 2013 Free Software Foundation, Inc."
+ license=\
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+Type \"\"show copying\"\" and \"\"show warranty\"\" for details."
+support="For bug reporting instructions, please see:
+<http://www.gnu.org/software/gdb/bugs/>."
+
+# check for environment variables to replace certain file properties
+[ -n "$WIN_EXE_VERSION" ] && version=$WIN_EXE_VERSION
+[ -n "$WIN_EXE_COMPANY_NAME" ] && company_name=$WIN_EXE_COMPANY_NAME
+[ -n "$WIN_EXE_FILE_DESCRIPTION" ] && file_description=$WIN_EXE_FILE_DESCRIPTION
+[ -n "$WIN_EXE_PRODUCT_NAME" ] && product_name=$WIN_EXE_PRODUCT_NAME
+[ -n "$WIN_EXE_INTERNAL_NAME" ] && internal_name=$WIN_EXE_INTERNAL_NAME
+[ -n "$WIN_EXE_ORIGINAL_FILENAME" ] && original_filename=$WIN_EXE_ORIGINAL_FILENAME
+[ -n "$WIN_EXE_COPYRIGHT" ] && copyright=$WIN_EXE_COPYRIGHT
+[ -n "$WIN_EXE_LICENSE" ] && license=$WIN_EXE_LICENSE
+[ -n "$WIN_EXE_CONFIGURED" ] && configured=$WIN_EXE_CONFIGURED
+[ -n "$WIN_EXE_SUPPORT" ] && support=$WIN_EXE_SUPPORT
+
+# combine complete copyright message
+# Windows file property dialog only shows ONE line (with scrollbar)
+# so do not separate with newlines but use spaces instead!
+copyright_all=`echo $copyright $license $configured $support`
+
+# remove "#" at the beginning and internal version at the end
+version=`echo ${version%-*} | sed -e "s/#//"`
+
+# split version
+IFS_BAK="$IFS"
+IFS='.'
+array=($version)
+version_major=${array[0]}
+version_minor=${array[1]}
+version_build=${array[2]}
+IFS="$IFS_BAK"
+[ -z "$version_major" ] && version_major=0
+[ -z "$version_minor" ] && version_minor=0
+[ -z "$version_build" ] && version_build=0
+
+# write version into output file
+echo "#define FP_VERSION_MAJOR $version_major" > $srcdir/$output
+echo "#define FP_VERSION_MINOR $version_minor" >> $srcdir/$output
+echo "#define FP_VERSION_BUILD $version_build" >> $srcdir/$output
+echo "#define FP_VERSION_ALL \"$version_major.$version_minor.$version_build\"" >> $srcdir/$output
+
+echo "" >> $srcdir/$output
+
+# write other file properties into output file
+echo "#define FP_COMPANY_NAME \"$company_name\"" >> $srcdir/$output
+echo "#define FP_FILE_DESCRIPTION \"$file_description\"" >> $srcdir/$output
+echo "#define FP_INTERNAL_NAME \"$internal_name\"" >> $srcdir/$output
+echo "#define FP_COPYRIGHT \"$copyright_all\"" >> $srcdir/$output
+echo "#define FP_ORIGINAL_FILENAME \"$original_filename\"" >> $srcdir/$output
+echo "#define FP_PRODUCT_NAME \"$product_name\"" >> $srcdir/$output
diff --git a/gdb/configure b/gdb/configure
index 8067825..5afea6a 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -6988,6 +6988,15 @@ case $host_os in
;;
esac
+# If we build for mingw32/Windows, then also build file properties
+# for GDB executable.
+case $host_os in
+ *mingw32*)
+ CONFIG_OBS="$CONFIG_OBS win_exe_properties.o"
+ ;;
+esac
+
+
# These are the libraries checked by Readline.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tgetent" >&5
$as_echo_n "checking for library containing tgetent... " >&6; }
diff --git a/gdb/win_exe_properties.rc b/gdb/win_exe_properties.rc
new file mode 100644
index 0000000..270c04c
--- /dev/null
+++ b/gdb/win_exe_properties.rc
@@ -0,0 +1,61 @@
+/* Windows executable properties for GDB on Windows.
+ These are visible in context menu Properties / Details on the GDB
+ executable on Windows.
+
+ Copyright (C) 2013 Free Software Foundation, Inc.
+
+ Contributed by Intel Corporation.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Value defines for windows executable file properties of GDB on Windows.
+ Patch this header file using create-win_exe_properties.sh during gdb build
+ to customize the file properties. */
+#include "win_exe_properties.h"
+
+#include "afxres.h"
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION FP_VERSION_MAJOR,FP_VERSION_MINOR,FP_VERSION_BUILD,0
+ PRODUCTVERSION FP_VERSION_MAJOR,FP_VERSION_MINOR,FP_VERSION_BUILD,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", FP_COMPANY_NAME
+ VALUE "FileDescription", FP_FILE_DESCRIPTION
+ VALUE "FileVersion", FP_VERSION_ALL
+ VALUE "InternalName", FP_INTERNAL_NAME
+ VALUE "LegalCopyright", FP_COPYRIGHT
+ VALUE "OriginalFilename", FP_ORIGINAL_FILENAME
+ VALUE "ProductName", FP_PRODUCT_NAME
+ VALUE "ProductVersion", FP_VERSION_ALL
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
--
1.7.1