From f875921176038c81b4ae7c113a9ebdc93e03b6aa Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 14 Aug 2012 11:21:48 +0200 Subject: [PATCH] Bitcoin-Qt (Windows only): add version info to Resource File - add version information to bitcoin-qt.rc, which is displayed on Windows, when looking in the executable properties and selecting "Details" - introduce a new clientversion.h (used in bitcoin-qt.rc to generate version information), which takes only the version defines from version.h and is included in it (to allow usage with the windres rc-file compiler) - move #define STRINGIFY(s) #s into clientversion.h as that is used in bitcoin-qt.rc and rename to DO_STRINGIZE(X) - add #define STRINGIZE(X) DO_STRINGIZE(X), which is needed to convert the version defines into a version string in the rc-file - this ensures we only need to update 1 file and have bitcoin-qt.exe version information - for RC-file documentation see: http://msdn.microsoft.com/en-us/library/windows/desktop/aa381058%28v=vs.85%29.aspx --- bitcoin-qt.pro | 3 ++- doc/release-process.txt | 2 +- src/clientversion.h | 19 +++++++++++++++++++ src/qt/res/bitcoin-qt.rc | 16 +++++++++++++--- src/version.cpp | 6 ++---- src/version.h | 9 ++------- 6 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 src/clientversion.h diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 1d2b1dbdc..cdd3bc2b8 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -178,7 +178,8 @@ HEADERS += src/qt/bitcoingui.h \ src/ui_interface.h \ src/qt/rpcconsole.h \ src/version.h \ - src/netbase.h + src/netbase.h \ + src/clientversion.h SOURCES += src/qt/bitcoin.cpp src/qt/bitcoingui.cpp \ src/qt/transactiontablemodel.cpp \ diff --git a/doc/release-process.txt b/doc/release-process.txt index b31b0ab54..8443961d2 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -2,7 +2,7 @@ * update (commit) version in sources bitcoin-qt.pro - src/version.h + src/clientversion.h share/setup.nsi doc/README* diff --git a/src/clientversion.h b/src/clientversion.h new file mode 100644 index 000000000..844eaa37b --- /dev/null +++ b/src/clientversion.h @@ -0,0 +1,19 @@ +#ifndef CLIENTVERSION_H +#define CLIENTVERSION_H + +// +// client versioning +// + +// These need to be macros, as version.cpp's and bitcoin-qt.rc's voodoo requires it +#define CLIENT_VERSION_MAJOR 0 +#define CLIENT_VERSION_MINOR 7 +#define CLIENT_VERSION_REVISION 0 +#define CLIENT_VERSION_BUILD 2 + +// Converts the parameter X to a string after macro replacement on X has been performed. +// Don't merge these into one macro! +#define STRINGIZE(X) DO_STRINGIZE(X) +#define DO_STRINGIZE(X) #X + +#endif // CLIENTVERSION_H diff --git a/src/qt/res/bitcoin-qt.rc b/src/qt/res/bitcoin-qt.rc index bce87d782..834001c0c 100644 --- a/src/qt/res/bitcoin-qt.rc +++ b/src/qt/res/bitcoin-qt.rc @@ -1,10 +1,18 @@ IDI_ICON1 ICON DISCARDABLE "icons/bitcoin.ico" -#include // needed for VERSIONINFO +#include // needed for VERSIONINFO +#include "../../clientversion.h" // holds the needed client version information + +#define VER_PRODUCTVERSION CLIENT_VERSION_MAJOR,CLIENT_VERSION_MINOR,CLIENT_VERSION_REVISION,CLIENT_VERSION_BUILD +#define VER_PRODUCTVERSION_STR STRINGIZE(CLIENT_VERSION_MAJOR) "." STRINGIZE(CLIENT_VERSION_MINOR) "." STRINGIZE(CLIENT_VERSION_REVISION) "." STRINGIZE(CLIENT_VERSION_BUILD) +#define VER_FILEVERSION VER_PRODUCTVERSION +#define VER_FILEVERSION_STR VER_PRODUCTVERSION_STR VS_VERSION_INFO VERSIONINFO -FILEOS VOS_NT_WINDOWS32 -FILETYPE VFT_APP +FILEVERSION VER_FILEVERSION +PRODUCTVERSION VER_PRODUCTVERSION +FILEOS VOS_NT_WINDOWS32 +FILETYPE VFT_APP BEGIN BLOCK "StringFileInfo" BEGIN @@ -12,11 +20,13 @@ BEGIN BEGIN VALUE "CompanyName", "Bitcoin" VALUE "FileDescription", "Bitcoin-Qt (OSS GUI client for Bitcoin)" + VALUE "FileVersion", VER_FILEVERSION_STR VALUE "InternalName", "bitcoin-qt" VALUE "LegalCopyright", "2009-2012 The Bitcoin developers" VALUE "LegalTrademarks1", "Distributed under the MIT/X11 software license, see the accompanying file COPYING or http://www.opensource.org/licenses/mit-license.php." VALUE "OriginalFilename", "bitcoin-qt.exe" VALUE "ProductName", "Bitcoin-Qt" + VALUE "ProductVersion", VER_PRODUCTVERSION_STR END END diff --git a/src/version.cpp b/src/version.cpp index 60b7aae2e..8af406fea 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -39,13 +39,11 @@ const std::string CLIENT_NAME("Satoshi"); # define GIT_COMMIT_DATE "$Format:%cD" #endif -#define STRINGIFY(s) #s - #define BUILD_DESC_FROM_COMMIT(maj,min,rev,build,commit) \ - "v" STRINGIFY(maj) "." STRINGIFY(min) "." STRINGIFY(rev) "." STRINGIFY(build) "-g" commit + "v" DO_STRINGIZE(maj) "." DO_STRINGIZE(min) "." DO_STRINGIZE(rev) "." DO_STRINGIZE(build) "-g" commit #define BUILD_DESC_FROM_UNKNOWN(maj,min,rev,build) \ - "v" STRINGIFY(maj) "." STRINGIFY(min) "." STRINGIFY(rev) "." STRINGIFY(build) "-unk" + "v" DO_STRINGIZE(maj) "." DO_STRINGIZE(min) "." DO_STRINGIZE(rev) "." DO_STRINGIZE(build) "-unk" #ifndef BUILD_DESC # ifdef GIT_COMMIT_ID diff --git a/src/version.h b/src/version.h index f731c4570..b66d05692 100644 --- a/src/version.h +++ b/src/version.h @@ -4,21 +4,16 @@ #ifndef BITCOIN_VERSION_H #define BITCOIN_VERSION_H +#include "clientversion.h" #include // // client versioning // -// These need to be macros, as version.cpp's voodoo requires it -#define CLIENT_VERSION_MAJOR 0 -#define CLIENT_VERSION_MINOR 7 -#define CLIENT_VERSION_REVISION 0 -#define CLIENT_VERSION_BUILD 2 - static const int CLIENT_VERSION = 1000000 * CLIENT_VERSION_MAJOR - + 10000 * CLIENT_VERSION_MINOR + + 10000 * CLIENT_VERSION_MINOR + 100 * CLIENT_VERSION_REVISION + 1 * CLIENT_VERSION_BUILD;