1
0
Fork 0

Add Version information & icons to the windows binaries.

This commit is contained in:
Willi Goesgens 2015-07-17 16:36:40 +02:00
parent 998a614531
commit edabac8927
7 changed files with 355 additions and 21 deletions

View File

@ -15,7 +15,7 @@ cmake_minimum_required(VERSION 2.6)
################################################################################
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE string "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE string "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
endif ()
################################################################################
@ -41,6 +41,18 @@ set(TEST_GEO_SUITE geo_suite)
set(V8_VERSION 4.3.61)
set(ARANGODB_DISPLAY_NAME "ArangoDB")
set(ARANGODB_URL_INFO_ABOUT "http://www.arangodb.org")
set(ARANGODB_CONTACT "hackers@arangodb.org")
set(ARANGODB_FRIENDLY_STRING "ArangoDB - the multi-purpose database")
set(ARANGOB_FRIENDLY_STRING "ArangoBench - stresstester")
set(ARANGO_DUMP_FRIENDLY_STRING "arangodump - export whole databases from ArangoDB to JSON")
set(ARANGO_IMP_FRIENDLY_STRING "arangoimp - import CSV files into ArangoDB")
set(ARANGO_RESTORE_HELP_LINK "arangrestore - import dumpfiles created with arangodump into ArangoDB")
set(ARANGOSH_HELP_LINK "arangosh - commandline client of ArangoDB")
################################################################################
### @brief BUILD_PACKAGE
###
@ -271,7 +283,7 @@ if (USE_RELATIVE)
set(TRI_SBINDIR "${CMAKE_INSTALL_PREFIX}/sbin")
endif ()
else()
else() # USE_RELATIVE
################################################################################
### @brief SYSTEM CONFIGURATION DIRECTORY (/etc)
@ -369,6 +381,28 @@ else()
set(TRI_SBINDIR "${CMAKE_INSTALL_PREFIX}/sbin")
endif ()
endif () # USE_RELATIVE
if (MSVC)
################################################################################
### @brief icon paths for windows
################################################################################
file(TO_NATIVE_PATH "${TRI_RESOURCEDIR}/Icons/arangodb.ico" RELATIVE_ARANGO_ICON)
file(TO_NATIVE_PATH "${PROJECT_SOURCE_DIR}/Installation/Windows/Icons/arangodb.bmp" ARANGO_IMG)
file(TO_NATIVE_PATH "${PROJECT_SOURCE_DIR}/Installation/Windows/Icons/arangodb.ico" ARANGO_ICON)
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ARANGO_IMG "${ARANGO_IMG}")
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ARANGO_ICON "${ARANGO_ICON}")
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" RELATIVE_ARANGO_ICON "${RELATIVE_ARANGO_ICON}")
################################################################################
### @brief Versioning for windows
################################################################################
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/Installation/Windows/version)
include("${PROJECT_SOURCE_DIR}/Installation/Windows/version/generate_product_version.cmake")
endif ()
@ -892,13 +926,6 @@ if (MSVC)
endif()
file(TO_NATIVE_PATH "${TRI_RESOURCEDIR}/Icons/arangodb.ico" RELATIVE_ARANGO_ICON)
file(TO_NATIVE_PATH "${PROJECT_SOURCE_DIR}/Installation/Windows/Icons/arangodb.bmp" ARANGO_IMG)
file(TO_NATIVE_PATH "${PROJECT_SOURCE_DIR}/Installation/Windows/Icons/arangodb.ico" ARANGO_ICON)
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ARANGO_IMG "${ARANGO_IMG}")
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ARANGO_ICON "${ARANGO_ICON}")
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" RELATIVE_ARANGO_ICON "${RELATIVE_ARANGO_ICON}")
message(STATUS "ARANGO_IMG: ${ARANGO_IMG}")
message(STATUS "ARANGO_ICON: ${ARANGO_ICON}")
@ -910,20 +937,20 @@ if (MSVC)
set(CPACK_NSIS_DEFINES "
!define BITS ${BITS}
!define TRI_FRIENDLY_SVC_NAME 'ArangoDB - the multi-purpose database'
!define TRI_FRIENDLY_SVC_NAME '${ARANGODB_FRIENDLY_STRING}'
!define TRI_AARDVARK_URL 'http://127.0.0.1:8529'
")
set(CPACK_PACKAGE_ICON ${ARANGO_ICON})
set(CPACK_PACKAGE_ICON ${ARANGO_ICON})
set(CPACK_NSIS_MODIFY_PATH ON)
set(CPACK_NSIS_MUI_ICON ${ARANGO_ICON})
set(CPACK_NSIS_MUI_UNIICON ${ARANGO_ICON})
set(CPACK_NSIS_MODIFY_PATH ON)
set(CPACK_NSIS_MUI_ICON ${ARANGO_ICON})
set(CPACK_NSIS_MUI_UNIICON ${ARANGO_ICON})
set(CPACK_NSIS_INSTALLED_ICON_NAME ${RELATIVE_ARANGO_ICON})
set(CPACK_NSIS_DISPLAY_NAME, "ArangoDB")
set(CPACK_NSIS_HELP_LINK "http://www.arangodb.org")
set(CPACK_NSIS_URL_INFO_ABOUT "http://www.arangodb.org")
set(CPACK_NSIS_CONTACT "hackers@arangodb.org")
set(CPACK_NSIS_DISPLAY_NAME, ${ARANGODB_DISPLAY_NAME})
set(CPACK_NSIS_HELP_LINK ${ARANGODB_HELP_LINK})
set(CPACK_NSIS_URL_INFO_ABOUT ${ARANGODB_URL_INFO_ABOUT})
set(CPACK_NSIS_CONTACT ${ARANGODB_CONTACT})
##############################################################################
## etcd

View File

@ -78,7 +78,7 @@ remove-automagic:
### @brief make love
################################################################################
love:
love:
@echo ArangoDB loves you
## -----------------------------------------------------------------------------
@ -328,7 +328,7 @@ winXX-cmake: checkcmake
cd Build$(BITS) && cmake \
-G "$(TARGET)" \
-D "ARANGODB_VERSION=${VERSION}" \
-D "CMAKE_BUILD_TYPE=RelWithDebInfo" \
-D "CMAKE_BUILD_TYPE=RelWithDebInfo" \
-D "BUILD_TYPE=RelWithDebInfo" \
-D "CPACK_PACKAGE_VERSION_MAJOR=${VERSION_MAJOR}" \
-D "CPACK_PACKAGE_VERSION_MINOR=${VERSION_MINOR}" \
@ -340,6 +340,7 @@ winXX-cmake: checkcmake
..
winXX-build:
cp Installation/Windows/Icons/arangodb.ico Build$(BITS)
cd Build$(BITS) && cmake --build . --config $(BUILD_TARGET)
packXX:

View File

@ -0,0 +1,82 @@
#pragma once
#ifndef PRODUCT_VERSION_MAJOR
#define PRODUCT_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@
#endif
#ifndef PRODUCT_VERSION_MINOR
#define PRODUCT_VERSION_MINOR @PRODUCT_VERSION_MINOR@
#endif
#ifndef PRODUCT_VERSION_PATCH
#define PRODUCT_VERSION_PATCH @PRODUCT_VERSION_PATCH@
#endif
#ifndef PRODUCT_VERSION_BUILD
#define PRODUCT_VERSION_BUILD @PRODUCT_VERSION_REVISION@
#endif
#ifndef FILE_VERSION_MAJOR
#define FILE_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@
#endif
#ifndef FILE_VERSION_MINOR
#define FILE_VERSION_MINOR @PRODUCT_VERSION_MINOR@
#endif
#ifndef FILE_VERSION_PATCH
#define FILE_VERSION_PATCH @PRODUCT_VERSION_PATCH@
#endif
#ifndef FILE_VERSION_BUILD
#define FILE_VERSION_BUILD @PRODUCT_VERSION_REVISION@
#endif
#ifndef __TO_STRING
#define __TO_STRING_IMPL(x) #x
#define __TO_STRING(x) __TO_STRING_IMPL(x)
#endif
#define PRODUCT_VERSION_MAJOR_MINOR_STR __TO_STRING(PRODUCT_VERSION_MAJOR) "." __TO_STRING(PRODUCT_VERSION_MINOR)
#define PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR PRODUCT_VERSION_MAJOR_MINOR_STR "." __TO_STRING(PRODUCT_VERSION_PATCH)
#define PRODUCT_VERSION_FULL_STR PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(PRODUCT_VERSION_BUILD)
#define PRODUCT_VERSION_RESOURCE PRODUCT_VERSION_MAJOR,PRODUCT_VERSION_MINOR,PRODUCT_VERSION_PATCH,PRODUCT_VERSION_BUILD
#define PRODUCT_VERSION_RESOURCE_STR PRODUCT_VERSION_FULL_STR "\0"
#define FILE_VERSION_MAJOR_MINOR_STR __TO_STRING(FILE_VERSION_MAJOR) "." __TO_STRING(FILE_VERSION_MINOR)
#define FILE_VERSION_MAJOR_MINOR_PATCH_STR FILE_VERSION_MAJOR_MINOR_STR "." __TO_STRING(FILE_VERSION_PATCH)
#define FILE_VERSION_FULL_STR FILE_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(FILE_VERSION_BUILD)
#define FILE_VERSION_RESOURCE FILE_VERSION_MAJOR,FILE_VERSION_MINOR,FILE_VERSION_PATCH,FILE_VERSION_BUILD
#define FILE_VERSION_RESOURCE_STR FILE_VERSION_FULL_STR "\0"
#ifndef PRODUCT_INON
#define PRODUCT_ICON "@PRODUCT_ICON@"
#endif
#ifndef PRODUCT_COMMENTS
#define PRODUCT_COMMENTS "@PRODUCT_COMMENTS@\0"
#endif
#ifndef PRODUCT_COMPANY_NAME
#define PRODUCT_COMPANY_NAME "@PRODUCT_COMPANY_NAME@\0"
#endif
#ifndef PRODUCT_COMPANY_COPYRIGHT
#define PRODUCT_COMPANY_COPYRIGHT "@PRODUCT_COMPANY_COPYRIGHT@\0"
#endif
#ifndef PRODUCT_FILE_DESCRIPTION
#define PRODUCT_FILE_DESCRIPTION "@PRODUCT_FILE_DESCRIPTION@\0"
#endif
#ifndef PRODUCT_INTERNAL_NAME
#define PRODUCT_INTERNAL_NAME "@PRODUCT_NAME@\0"
#endif
#ifndef PRODUCT_ORIGINAL_FILENAME
#define PRODUCT_ORIGINAL_FILENAME "@PRODUCT_ORIGINAL_FILENAME@\0"
#endif
#ifndef PRODUCT_BUNDLE
#define PRODUCT_BUNDLE "@PRODUCT_BUNDLE@\0"
#endif

View File

@ -0,0 +1,40 @@
#include "VersionInfo.h"
#include "winres.h"
IDI_ICON1 ICON PRODUCT_ICON
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
VS_VERSION_INFO VERSIONINFO
FILEVERSION FILE_VERSION_RESOURCE
PRODUCTVERSION PRODUCT_VERSION_RESOURCE
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041904b0"
BEGIN
VALUE "Comments", PRODUCT_COMMENTS
VALUE "CompanyName", PRODUCT_COMPANY_NAME
VALUE "FileDescription", PRODUCT_FILE_DESCRIPTION
VALUE "FileVersion", FILE_VERSION_RESOURCE_STR
VALUE "InternalName", PRODUCT_INTERNAL_NAME
VALUE "LegalCopyright", PRODUCT_COMPANY_COPYRIGHT
VALUE "OriginalFilename", PRODUCT_ORIGINAL_FILENAME
VALUE "ProductName", PRODUCT_BUNDLE
VALUE "ProductVersion", PRODUCT_VERSION_RESOURCE_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x419, 1200
END
END

View File

@ -0,0 +1,107 @@
include (CMakeParseArguments)
set (GenerateProductVersionCurrentDir ${CMAKE_CURRENT_LIST_DIR})
# generate_product_version() function
#
# This function uses VersionInfo.in template file and VersionResource.rc file
# to generate WIN32 resource with version information and general resource strings.
#
# Usage:
# generate_product_version(
# SomeOutputResourceVariable
# NAME MyGreatProject
# ICON ${PATH_TO_APP_ICON}
# VERSION_MAJOR 2
# VERSION_MINOR 3
# VERSION_PATH ${BUILD_COUNTER}
# VERSION_REVISION ${BUILD_REVISION}
# )
# where BUILD_COUNTER and BUILD_REVISION could be values from your CI server.
#
# You can use generated resource for your executable targets:
# add_executable(target-name ${target-files} ${SomeOutputResourceVariable})
#
# You can specify resource strings in arguments:
# NAME - name of executable (no defaults, ex: Microsoft Word)
# BUNDLE - bundle (${NAME} is default, ex: Microsoft Office)
# ICON - path to application icon (${CMAKE_SOURCE_DIR}/product.ico by default)
# VERSION_MAJOR - 1 is default
# VERSION_MINOR - 0 is default
# VERSION_PATCH - 0 is default
# VERSION_REVISION - 0 is default
# COMPANY_NAME - your company name (no defaults)
# COMPANY_COPYRIGHT - ${COMPANY_NAME} (C) Copyright ${CURRENT_YEAR} is default
# COMMENTS - ${NAME} v${VERSION_MAJOR}.${VERSION_MINOR} is default
# ORIGINAL_FILENAME - ${NAME} is default
# INTERNAL_NAME - ${NAME} is default
# FILE_DESCRIPTION - ${NAME} is default
function(generate_product_version outfiles)
set (options)
set (oneValueArgs
NAME
BUNDLE
ICON
VERSION_MAJOR
VERSION_MINOR
VERSION_PATCH
VERSION_REVISION
COMPANY_NAME
COMPANY_COPYRIGHT
COMMENTS
ORIGINAL_FILENAME
INTERNAL_NAME
FILE_DESCRIPTION)
set (multiValueArgs)
cmake_parse_arguments(PRODUCT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if (NOT PRODUCT_BUNDLE OR "${PRODUCT_BUNDLE}" STREQUAL "")
set(PRODUCT_BUNDLE "${PRODUCT_NAME}")
endif()
if (NOT PRODUCT_ICON OR "${PRODUCT_ICON}" STREQUAL "")
set(PRODUCT_ICON "${CMAKE_SOURCE_DIR}/product.ico")
endif()
if (NOT PRODUCT_VERSION_MAJOR OR "${PRODUCT_VERSION_MAJOR}" STREQUAL "")
set(PRODUCT_VERSION_MAJOR 1)
endif()
if (NOT PRODUCT_VERSION_MINOR OR "${PRODUCT_VERSION_MINOR}" STREQUAL "")
set(PRODUCT_VERSION_MINOR 0)
endif()
if (NOT PRODUCT_VERSION_PATCH OR "${PRODUCT_VERSION_PATCH}" STREQUAL "")
set(PRODUCT_VERSION_PATCH 0)
endif()
if (NOT PRODUCT_VERSION_REVISION OR "${PRODUCT_VERSION_REVISION}" STREQUAL "")
set(PRODUCT_VERSION_REVISION 0)
endif()
if (NOT PRODUCT_COMPANY_COPYRIGHT OR "${PRODUCT_COMPANY_COPYRIGHT}" STREQUAL "")
string(TIMESTAMP PRODUCT_CURRENT_YEAR "%Y")
set(PRODUCT_COMPANY_COPYRIGHT "${PRODUCT_COMPANY_NAME} (C) Copyright ${PRODUCT_CURRENT_YEAR}")
endif()
if (NOT PRODUCT_COMMENTS OR "${PRODUCT_COMMENTS}" STREQUAL "")
set(PRODUCT_COMMENTS "${PRODUCT_NAME} v${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}")
endif()
if (NOT PRODUCT_ORIGINAL_FILENAME OR "${PRODUCT_ORIGINAL_FILENAME}" STREQUAL "")
set(PRODUCT_ORIGINAL_FILENAME "${PRODUCT_NAME}")
endif()
if (NOT PRODUCT_INTERNAL_NAME OR "${PRODUCT_INTERNAL_NAME}" STREQUAL "")
set(PRODUCT_INTERNAL_NAME "${PRODUCT_NAME}")
endif()
if (NOT PRODUCT_FILE_DESCRIPTION OR "${PRODUCT_FILE_DESCRIPTION}" STREQUAL "")
set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_NAME}")
endif()
set (_VersionInfoFile ${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.h)
set (_VersionResourceFile ${CMAKE_CURRENT_BINARY_DIR}/VersionResource.rc)
configure_file(
${GenerateProductVersionCurrentDir}/VersionInfo.in
${_VersionInfoFile}
@ONLY)
configure_file(
${GenerateProductVersionCurrentDir}/VersionResource.rc
${_VersionResourceFile}
COPYONLY)
list(APPEND ${outfiles} ${_VersionInfoFile} ${_VersionResourceFile})
set (${outfiles} ${${outfiles}} PARENT_SCOPE)
endfunction()

View File

@ -33,13 +33,27 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
if (MSVC)
SET(ARANGO_MSVC
RestServer/WindowsServiceUtils.cpp
)
)
################################################################################
### @brief give the binary a version information
################################################################################
generate_product_version(
ProductVersionFiles
NAME ${ARANGODB_FRIENDLY_STRING}
ICON ${ARANGO_ICON}
VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}
VERSION_MINOR CPACK_PACKAGE_VERSION_MINOR
VERSION_PATCH CPACK_PACKAGE_VERSION_PATCH
VERSION_REVISION ${ARANGODB_VERSION}
)
endif ()
add_executable(
${BIN_ARANGOD}
${ARANGO_MSVC}
${ProductVersionFiles}
Actions/actions.cpp
Actions/RestActionHandler.cpp
Aql/AggregationOptions.cpp

View File

@ -21,8 +21,21 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
### @brief arangob
################################################################################
if (MSVC)
generate_product_version(
ProductVersionFiles
NAME ${ARANGOB_FRIENDLY_STRING}
ICON ${ARANGO_ICON}
VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}
VERSION_MINOR CPACK_PACKAGE_VERSION_MINOR
VERSION_PATCH CPACK_PACKAGE_VERSION_PATCH
VERSION_REVISION ${ARANGODB_VERSION}
)
endif ()
add_executable(
${BIN_ARANGOB}
${ProductVersionFiles}
ArangoShell/ArangoClient.cpp
Benchmark/arangob.cpp
)
@ -57,8 +70,21 @@ install_config(arangob)
### @brief arangodump
################################################################################
if (MSVC)
generate_product_version(
ProductVersionFiles
NAME ARANGO_DUMP_FRIENDLY_STRING
ICON ${ARANGO_ICON}
VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}
VERSION_MINOR CPACK_PACKAGE_VERSION_MINOR
VERSION_PATCH CPACK_PACKAGE_VERSION_PATCH
VERSION_REVISION ${ARANGODB_VERSION}
)
endif ()
add_executable(
${BIN_ARANGODUMP}
${ProductVersionFiles}
ArangoShell/ArangoClient.cpp
V8Client/arangodump.cpp
)
@ -93,8 +119,21 @@ install_config(arangodump)
### @brief arangoimp
################################################################################
if (MSVC)
generate_product_version(
ProductVersionFiles
NAME ARANGO_IMP_FRIENDLY_STRING
ICON ${ARANGO_ICON}
VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}
VERSION_MINOR CPACK_PACKAGE_VERSION_MINOR
VERSION_PATCH CPACK_PACKAGE_VERSION_PATCH
VERSION_REVISION ${ARANGODB_VERSION}
)
endif ()
add_executable(
${BIN_ARANGOIMP}
${ProductVersionFiles}
ArangoShell/ArangoClient.cpp
V8Client/ImportHelper.cpp
V8Client/arangoimp.cpp
@ -130,8 +169,20 @@ install_config(arangoimp)
### @brief arangorestore
################################################################################
if (MSVC)
generate_product_version(
ProductVersionFiles
NAME ARANGO_RESTORE_HELP_LINK
ICON ${ARANGO_ICON}
VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}
VERSION_MINOR CPACK_PACKAGE_VERSION_MINOR
VERSION_PATCH CPACK_PACKAGE_VERSION_PATCH
VERSION_REVISION ${ARANGODB_VERSION}
)
endif ()
add_executable(
${BIN_ARANGORESTORE}
${ProductVersionFiles}
ArangoShell/ArangoClient.cpp
V8Client/arangorestore.cpp
)
@ -166,8 +217,20 @@ install_config(arangorestore)
### @brief arangosh
################################################################################
if (MSVC)
generate_product_version(
ProductVersionFiles
NAME ARANGOSH_HELP_LINK
ICON ${ARANGO_ICON}
VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}
VERSION_MINOR CPACK_PACKAGE_VERSION_MINOR
VERSION_PATCH CPACK_PACKAGE_VERSION_PATCH
VERSION_REVISION ${ARANGODB_VERSION}
)
endif ()
add_executable(
${BIN_ARANGOSH}
${ProductVersionFiles}
ArangoShell/ArangoClient.cpp
V8Client/ImportHelper.cpp
V8Client/V8ClientConnection.cpp