diff --git a/AboutThisBuild.cmake b/AboutThisBuild.cmake index 330086838..425bd23de 100644 --- a/AboutThisBuild.cmake +++ b/AboutThisBuild.cmake @@ -1,36 +1,38 @@ # cmakefile executed within a makefile target -# If we find ReleaseInfo.cmake we use the info from there and don't need Mercurial to be installed +# If we find ReleaseInfo.cmake we use the info from there and don't need Git to be installed find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH) if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) - # we look for the hg command in this paths by order of preference + # we look for the git command in this paths by order of preference if (WIN32) - find_file(HG_CMD hg.exe HINTS ENV Path PATH_SUFFIXES ../) + find_file(GIT_CMD git.exe HINTS ENV Path PATH_SUFFIXES ../) elseif (APPLE) - find_file(HG_CMD hg PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin") - find_file(HG_CMD hg) + find_file(GIT_CMD git PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin") + find_file(GIT_CMD git) set (SHELL "/bin/bash") else (WIN32) # Linux - find_file(HG_CMD hg) + find_file(GIT_CMD git) set (SHELL "/bin/bash") endif (WIN32) - # Fail if Mercurial is not installed - if (HG_CMD STREQUAL HG_CMD-NOTFOUND) - message(FATAL_ERROR "hg command not found!") + # Fail if Git is not installed + if (GIT_CMD STREQUAL GIT_CMD-NOTFOUND) + message(FATAL_ERROR "git command not found!") else () - message(STATUS "hg command found: ${HG_CMD}") + message(STATUS "git command found: ${GIT_CMD}") endif () - execute_process(COMMAND ${HG_CMD} -R "${PROJECT_SOURCE_DIR}" branch OUTPUT_VARIABLE HG_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${HG_CMD} -R "${PROJECT_SOURCE_DIR}" parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE HG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${HG_CMD} -R "${PROJECT_SOURCE_DIR}" parents --template={node|short} WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE HG_CHANGESET OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${HG_CMD} -R "${PROJECT_SOURCE_DIR}" parents --template={latesttagdistance} WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE HG_TAGDISTANCE OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_CMD} -C "${PROJECT_SOURCE_DIR}" symbolic-ref --short -q HEAD OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_CMD} -C "${PROJECT_SOURCE_DIR}" describe --tags --always OUTPUT_VARIABLE GIT_VERSION_WHOLE OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX REPLACE "-g.*" "" GIT_VERSION ${GIT_VERSION_WHOLE}) + string(REPLACE "-" "." GIT_VERSION ${GIT_VERSION}) + execute_process(COMMAND ${GIT_CMD} -C "${PROJECT_SOURCE_DIR}" rev-parse --verify HEAD OUTPUT_VARIABLE GIT_CHANGESET OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX REPLACE ".*-(.*)-g.*" "\\1" GIT_TAGDISTANCE ${GIT_VERSION_WHOLE}) if (NOT DEFINED CACHE_NAME_SUFFIX) - execute_process(COMMAND ${HG_CMD} -R "${PROJECT_SOURCE_DIR}" parents --template={latesttag} WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE CACHE_NAME_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX REPLACE "-.*" "" CACHE_NAME_SUFFIX ${GIT_VERSION_WHOLE}) message(STATUS "CACHE_NAME_SUFFIX was not defined, it is now \"${CACHE_NAME_SUFFIX}\"") elseif (CACHE_NAME_SUFFIX STREQUAL "latesttag") - execute_process(COMMAND ${HG_CMD} -R "${PROJECT_SOURCE_DIR}" parents --template={latesttag} WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE CACHE_NAME_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX REPLACE "-.*" "" CACHE_NAME_SUFFIX ${GIT_VERSION_WHOLE}) message(STATUS "CACHE_NAME_SUFFIX was \"latesttag\", it is now \"${CACHE_NAME_SUFFIX}\"") else () message(STATUS "CACHE_NAME_SUFFIX is \"${CACHE_NAME_SUFFIX}\"") @@ -40,9 +42,9 @@ else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) if (VERSION_SUFFIX STREQUAL "") - set (HG_VERSION_SUFFIX "${HG_VERSION}") + set (GIT_VERSION_SUFFIX "${GIT_VERSION}") else () - set (HG_VERSION_SUFFIX "${HG_VERSION} ${VERSION_SUFFIX}") + set (GIT_VERSION_SUFFIX "${GIT_VERSION} ${VERSION_SUFFIX}") endif () # build version.h from template diff --git a/AboutThisBuild.txt.in b/AboutThisBuild.txt.in index 2d8cf207e..b8ae4be1a 100644 --- a/AboutThisBuild.txt.in +++ b/AboutThisBuild.txt.in @@ -1,6 +1,6 @@ -Branch: ${HG_BRANCH} -Version: ${HG_VERSION_SUFFIX} -Changeset: ${HG_CHANGESET} +Branch: ${GIT_BRANCH} +Version: ${GIT_VERSION_SUFFIX} +Changeset: ${GIT_CHANGESET} Compiler: ${COMPILER_INFO} Processor: ${PROC_LABEL} System: ${SYSTEM} diff --git a/CMakeLists.txt b/CMakeLists.txt index 55d8ef011..f69ba6cad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,5 @@ if (WIN32) cmake_minimum_required(VERSION 2.8.4) - cmake_policy(SET CMP0015 OLD) else (WIN32) cmake_minimum_required(VERSION 2.6) endif (WIN32) @@ -352,7 +351,6 @@ add_custom_target(AboutFile ALL COMMAND ${ABOUT_COMMAND_WITH_ARGS} COMMENT "Creating the about file") -add_dependencies(AboutFile Debug Release MinSizeRel RelWithDebInfo) ## END: Generating AboutThisBuild.txt install (FILES AUTHORS.txt DESTINATION "${CREDITSDIR}") diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt index 81620221d..c5ae268c4 100644 --- a/rtdata/CMakeLists.txt +++ b/rtdata/CMakeLists.txt @@ -19,16 +19,6 @@ else (WIN32) endif (WIN32) if (WIN32) - find_file(HG_CMD hg.exe HINTS ENV Path PATH_SUFFIXES ../) - # Fail if Mercurial is not installed - if (HG_CMD STREQUAL HG_CMD-NOTFOUND) - message(FATAL_ERROR "hg command not found!") - else (HG_CMD STREQUAL HG_CMD-NOTFOUND) - message(STATUS "hg command found: ${HG_CMD}") - execute_process(COMMAND ${HG_CMD} -R "${PROJECT_SOURCE_DIR}" parents --template={latesttag} WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE HG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${HG_CMD} -R "${PROJECT_SOURCE_DIR}" parents --template={latesttagdistance} WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE HG_TAGDISTANCE OUTPUT_STRIP_TRAILING_WHITESPACE) - endif (HG_CMD STREQUAL HG_CMD-NOTFOUND) - if (CMAKE_SIZEOF_VOID_P EQUAL 4) set(BUILD_BIT_DEPTH 32) # 32 bits builds has to be installable on 64 bits system, to support WinXP/64. @@ -46,6 +36,27 @@ if (WIN32) # set part of the output archive name set(SYSTEM_NAME "WinVista") endif (CMAKE_SIZEOF_VOID_P EQUAL 4) + + # If we find ReleaseInfo.cmake we use the info from there and don't need Git to be installed + find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH) + if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) + # we look for the git command in this paths by order of preference + find_file(GIT_CMD git.exe HINTS ENV Path PATH_SUFFIXES ../) + + # Fail if Git is not installed + if (GIT_CMD STREQUAL GIT_CMD-NOTFOUND) + message(FATAL_ERROR "git command not found!") + else () + message(STATUS "git command found: ${GIT_CMD}") + endif () + + execute_process(COMMAND ${GIT_CMD} -C "${PROJECT_SOURCE_DIR}" describe --tags --always OUTPUT_VARIABLE GIT_VERSION_WHOLE OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX REPLACE "-.*" "" GIT_VERSION ${GIT_VERSION_WHOLE}) + string(REGEX REPLACE ".*-(.*)-g.*" "\\1" GIT_TAGDISTANCE ${GIT_VERSION_WHOLE}) + else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) + include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake") + endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) + configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss") install (FILES "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss" DESTINATION ${BINDIR}) endif (WIN32) diff --git a/rtdata/win/InnoSetup/WindowsInnoSetup.iss.in b/rtdata/win/InnoSetup/WindowsInnoSetup.iss.in index 9333bd86a..42f2a0feb 100644 --- a/rtdata/win/InnoSetup/WindowsInnoSetup.iss.in +++ b/rtdata/win/InnoSetup/WindowsInnoSetup.iss.in @@ -23,8 +23,8 @@ #define MyAppName "RawTherapee" -#define MyAppVersion "${HG_VERSION}" -#define MyAppFullVersion "${HG_VERSION}.${HG_TAGDISTANCE}" +#define MyAppVersion "${GIT_VERSION}" +#define MyAppFullVersion "${GIT_VERSION}.${GIT_TAGDISTANCE}" #define MyAppPublisher "rawtherapee.com" #define MyAppURL "http://www.rawtherapee.com/" #define MyAppExeName "rawtherapee.exe" diff --git a/rtgui/version.h.in b/rtgui/version.h.in index 29e7ccbed..03630075b 100644 --- a/rtgui/version.h.in +++ b/rtgui/version.h.in @@ -4,9 +4,9 @@ #ifndef _VERSION_ #define _VERSION_ -#define VERSION "${HG_VERSION}" +#define VERSION "${GIT_VERSION}" #define VERSION_SUFFIX "${VERSION_SUFFIX}" -#define TAGDISTANCE ${HG_TAGDISTANCE} +#define TAGDISTANCE ${GIT_TAGDISTANCE} #define CACHEFOLDERNAME "RawTherapee${CACHE_NAME_SUFFIX}" #endif diff --git a/tools/generateReleaseInfo b/tools/generateReleaseInfo index 4b3d8f427..79189ad44 100755 --- a/tools/generateReleaseInfo +++ b/tools/generateReleaseInfo @@ -1,11 +1,12 @@ #!/usr/bin/env bash -hgBranch="`hg branch`" -hgLatesttag="`hg parents --template '{latesttag}'`" -hgLatesttagdistance="`hg parents --template '{latesttagdistance}'`" -hgChangeset="`hg parents --template '{node|short}'`" +gitBranch="`git symbolic-ref --short -q HEAD`" +gitVersion="`git describe --tags --always`" +gitLatesttag="`echo $gitVersion | sed 's/-.*//'`" +gitLatesttagdistance="`echo $gitVersion | sed 's/.*-\(.*\)-g.*/\1/'`" +gitChangeset="`git rev-parse --verify HEAD`" -echo "set(HG_BRANCH $hgBranch) -set(HG_VERSION $hgLatesttag.$hgLatesttagdistance) -set(HG_CHANGESET $hgChangeset) -set(HG_TAGDISTANCE $hgLatesttagdistance)" > ReleaseInfo.cmake +echo "set(GIT_BRANCH $gitBranch) +set(GIT_VERSION $gitLatesttag.$gitLatesttagdistance) +set(GIT_CHANGESET $gitChangeset) +set(GIT_TAGDISTANCE $gitLatesttagdistance)" > ReleaseInfo.cmake diff --git a/tools/generateReleaseInfo.bat b/tools/generateReleaseInfo.bat deleted file mode 100644 index a8ac1289e..000000000 --- a/tools/generateReleaseInfo.bat +++ /dev/null @@ -1,11 +0,0 @@ -@echo off -for /f "tokens=*" %%a in ('hg branch') do @set hgBranch=%%a -for /f "tokens=*" %%a in ('hg parents --template "{latesttag}"') do @set hgLatesttag=%%a -for /f "tokens=*" %%a in ('hg parents --template "{latesttagdistance}"') do @set hgLatesttagdistance=%%a -for /f "tokens=*" %%a in ('hg parents --template "{node|short}"') do @set hgChangeset=%%a - -echo set(HG_BRANCH %hgBranch%) > ReleaseInfo.cmake -echo set(HG_VERSION %hgLatesttag%.%hgLatesttagdistance%) >> ReleaseInfo.cmake -echo set(HG_CHANGESET %hgChangeset%) >> ReleaseInfo.cmake -echo set(HG_TAGDISTANCE %hgLatesttagdistance%) >> ReleaseInfo.cmake -