diff --git a/CMakeLists.txt b/CMakeLists.txt index c9a53f6a75..180ca5d03e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,22 +79,18 @@ set(SM_VERSION_MINOR 0) set(SM_VERSION_PATCH 7) set(SM_VERSION_TRADITIONAL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}.${SM_VERSION_PATCH}") -if(WITH_FULL_RELEASE EQUAL ON) - set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}.${SM_VERSION_PATCH}") -else() - # Using the deprecated version for now to keep cmake 2.8 users happy. - exec_program(git "${SM_ROOT_DIR}" - ARGS "rev-parse" "--short" "HEAD" - OUTPUT_VARIABLE SM_VERSION_GIT_HASH - RETURN_VALUE ret - ) +# Using the deprecated version for now to keep cmake 2.8 users happy. +exec_program(git "${SM_ROOT_DIR}" + ARGS "rev-parse" "--short" "HEAD" + OUTPUT_VARIABLE SM_VERSION_GIT_HASH + RETURN_VALUE ret +) - if(NOT (ret STREQUAL "0")) - set(SM_VERSION_GIT_HASH "UNKNOWN") - set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-${SM_VERSION_GIT_HASH}") - else() - set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-git-${SM_VERSION_GIT_HASH}") - endif() +if(NOT (ret STREQUAL "0")) + set(SM_VERSION_GIT_HASH "UNKNOWN") + set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-${SM_VERSION_GIT_HASH}") +else() + set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-git-${SM_VERSION_GIT_HASH}") endif() # Allow for finding our libraries in a standard location. diff --git a/Xcode/scripts/mkrelease.rb b/Xcode/scripts/mkrelease.rb index a1aac5c61e..e13331468d 100644 --- a/Xcode/scripts/mkrelease.rb +++ b/Xcode/scripts/mkrelease.rb @@ -29,14 +29,26 @@ File.open("#{Dir.pwd}/ProductInfo.h", "r") do |f| end end end -# open ver.h in read-only mode -File.open("#{Dir.pwd}/ver.h", "r") do |f| - # read each line, matching for product version - f.each do |line| - if line.match( /^#define\s+product_version\s+"(.*?)"/ ) - version = $1 - end - end + +# Determine if the Cmake generated verstub.cpp is available. +File.open("#{Dir.pwd}/verstub.cpp", "r") do |verFile| + verFile.each do |verLine| + if verLine.match( /^extern char const \* const product_version \= "(.*?)"/ ) + version = $1 + end + end +end + +if (version.length == 0) + # open ver.h in read-only mode + File.open("#{Dir.pwd}/ver.h", "r") do |f| + # read each line, matching for product version + f.each do |line| + if line.match( /^#define\s+product_version\s+"(.*?)"/ ) + version = $1 + end + end + end end # replace whitespace with hyphens in the version string diff --git a/src/version_updater/CMakeLists.txt b/src/version_updater/CMakeLists.txt index 54b9756ae1..09e0947141 100644 --- a/src/version_updater/CMakeLists.txt +++ b/src/version_updater/CMakeLists.txt @@ -9,6 +9,11 @@ include_directories(${PROJECT_BINARY_DIR}) add_executable("VersionUpdater" Main.cpp "${PROJECT_BINARY_DIR}/version.hpp") +if (WITH_FULL_RELEASE) + sm_add_compile_definition("VersionUpdater" IS_FULL_RELEASE) + message(STATUS "Full release mode engaged.") +endif() + set_property(TARGET "VersionUpdater" PROPERTY FOLDER "Internal Libraries") if(MSVC) diff --git a/src/version_updater/version.hpp.in b/src/version_updater/version.hpp.in index 7a43182bec..161d5fa3ca 100644 --- a/src/version_updater/version.hpp.in +++ b/src/version_updater/version.hpp.in @@ -5,7 +5,11 @@ int smVersionMajor = @SM_VERSION_MAJOR@; int smVersionMinor = @SM_VERSION_MINOR@; int smVersionPatch = @SM_VERSION_PATCH@; char const * const smVersionGitHash = "@SM_VERSION_GIT_HASH@"; +#if defined(IS_FULL_RELEASE) +char const * const smVersionFull = "@SM_VERSION_TRADITIONAL@"; +#else char const * const smVersionFull = "@SM_VERSION_FULL@"; +#endif char const * const smVersionTraditional = "@SM_VERSION_TRADITIONAL@"; #endif