Merge pull request #2865 from innir/master
Fix CMake and AboutThisBuild with git (see issue #2860)
This commit is contained in:
@@ -1,36 +1,38 @@
|
|||||||
# cmakefile executed within a makefile target
|
# 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)
|
find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH)
|
||||||
if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
|
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)
|
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)
|
elseif (APPLE)
|
||||||
find_file(HG_CMD hg PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin")
|
find_file(GIT_CMD git PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin")
|
||||||
find_file(HG_CMD hg)
|
find_file(GIT_CMD git)
|
||||||
set (SHELL "/bin/bash")
|
set (SHELL "/bin/bash")
|
||||||
else (WIN32) # Linux
|
else (WIN32) # Linux
|
||||||
find_file(HG_CMD hg)
|
find_file(GIT_CMD git)
|
||||||
set (SHELL "/bin/bash")
|
set (SHELL "/bin/bash")
|
||||||
endif (WIN32)
|
endif (WIN32)
|
||||||
|
|
||||||
# Fail if Mercurial is not installed
|
# Fail if Git is not installed
|
||||||
if (HG_CMD STREQUAL HG_CMD-NOTFOUND)
|
if (GIT_CMD STREQUAL GIT_CMD-NOTFOUND)
|
||||||
message(FATAL_ERROR "hg command not found!")
|
message(FATAL_ERROR "git command not found!")
|
||||||
else ()
|
else ()
|
||||||
message(STATUS "hg command found: ${HG_CMD}")
|
message(STATUS "git command found: ${GIT_CMD}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
execute_process(COMMAND ${HG_CMD} -R "${PROJECT_SOURCE_DIR}" branch OUTPUT_VARIABLE HG_BRANCH 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 ${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 ${GIT_CMD} -C "${PROJECT_SOURCE_DIR}" describe --tags --always OUTPUT_VARIABLE GIT_VERSION_WHOLE 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)
|
string(REGEX REPLACE "-g.*" "" GIT_VERSION ${GIT_VERSION_WHOLE})
|
||||||
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)
|
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)
|
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}\"")
|
message(STATUS "CACHE_NAME_SUFFIX was not defined, it is now \"${CACHE_NAME_SUFFIX}\"")
|
||||||
elseif (CACHE_NAME_SUFFIX STREQUAL "latesttag")
|
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}\"")
|
message(STATUS "CACHE_NAME_SUFFIX was \"latesttag\", it is now \"${CACHE_NAME_SUFFIX}\"")
|
||||||
else ()
|
else ()
|
||||||
message(STATUS "CACHE_NAME_SUFFIX is \"${CACHE_NAME_SUFFIX}\"")
|
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)
|
endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND)
|
||||||
|
|
||||||
if (VERSION_SUFFIX STREQUAL "")
|
if (VERSION_SUFFIX STREQUAL "")
|
||||||
set (HG_VERSION_SUFFIX "${HG_VERSION}")
|
set (GIT_VERSION_SUFFIX "${GIT_VERSION}")
|
||||||
else ()
|
else ()
|
||||||
set (HG_VERSION_SUFFIX "${HG_VERSION} ${VERSION_SUFFIX}")
|
set (GIT_VERSION_SUFFIX "${GIT_VERSION} ${VERSION_SUFFIX}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# build version.h from template
|
# build version.h from template
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
Branch: ${HG_BRANCH}
|
Branch: ${GIT_BRANCH}
|
||||||
Version: ${HG_VERSION_SUFFIX}
|
Version: ${GIT_VERSION_SUFFIX}
|
||||||
Changeset: ${HG_CHANGESET}
|
Changeset: ${GIT_CHANGESET}
|
||||||
Compiler: ${COMPILER_INFO}
|
Compiler: ${COMPILER_INFO}
|
||||||
Processor: ${PROC_LABEL}
|
Processor: ${PROC_LABEL}
|
||||||
System: ${SYSTEM}
|
System: ${SYSTEM}
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
if (WIN32)
|
if (WIN32)
|
||||||
cmake_minimum_required(VERSION 2.8.4)
|
cmake_minimum_required(VERSION 2.8.4)
|
||||||
cmake_policy(SET CMP0015 OLD)
|
|
||||||
else (WIN32)
|
else (WIN32)
|
||||||
cmake_minimum_required(VERSION 2.6)
|
cmake_minimum_required(VERSION 2.6)
|
||||||
endif (WIN32)
|
endif (WIN32)
|
||||||
@@ -352,7 +351,6 @@ add_custom_target(AboutFile ALL
|
|||||||
COMMAND ${ABOUT_COMMAND_WITH_ARGS}
|
COMMAND ${ABOUT_COMMAND_WITH_ARGS}
|
||||||
COMMENT "Creating the about file")
|
COMMENT "Creating the about file")
|
||||||
|
|
||||||
add_dependencies(AboutFile Debug Release MinSizeRel RelWithDebInfo)
|
|
||||||
## END: Generating AboutThisBuild.txt
|
## END: Generating AboutThisBuild.txt
|
||||||
|
|
||||||
install (FILES AUTHORS.txt DESTINATION "${CREDITSDIR}")
|
install (FILES AUTHORS.txt DESTINATION "${CREDITSDIR}")
|
||||||
|
@@ -19,16 +19,6 @@ else (WIN32)
|
|||||||
endif (WIN32)
|
endif (WIN32)
|
||||||
|
|
||||||
if (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)
|
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
set(BUILD_BIT_DEPTH 32)
|
set(BUILD_BIT_DEPTH 32)
|
||||||
# 32 bits builds has to be installable on 64 bits system, to support WinXP/64.
|
# 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 part of the output archive name
|
||||||
set(SYSTEM_NAME "WinVista")
|
set(SYSTEM_NAME "WinVista")
|
||||||
endif (CMAKE_SIZEOF_VOID_P EQUAL 4)
|
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")
|
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})
|
install (FILES "${CMAKE_CURRENT_BINARY_DIR}/WindowsInnoSetup.iss" DESTINATION ${BINDIR})
|
||||||
endif (WIN32)
|
endif (WIN32)
|
||||||
|
@@ -23,8 +23,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#define MyAppName "RawTherapee"
|
#define MyAppName "RawTherapee"
|
||||||
#define MyAppVersion "${HG_VERSION}"
|
#define MyAppVersion "${GIT_VERSION}"
|
||||||
#define MyAppFullVersion "${HG_VERSION}.${HG_TAGDISTANCE}"
|
#define MyAppFullVersion "${GIT_VERSION}.${GIT_TAGDISTANCE}"
|
||||||
#define MyAppPublisher "rawtherapee.com"
|
#define MyAppPublisher "rawtherapee.com"
|
||||||
#define MyAppURL "http://www.rawtherapee.com/"
|
#define MyAppURL "http://www.rawtherapee.com/"
|
||||||
#define MyAppExeName "rawtherapee.exe"
|
#define MyAppExeName "rawtherapee.exe"
|
||||||
|
@@ -4,9 +4,9 @@
|
|||||||
#ifndef _VERSION_
|
#ifndef _VERSION_
|
||||||
#define _VERSION_
|
#define _VERSION_
|
||||||
|
|
||||||
#define VERSION "${HG_VERSION}"
|
#define VERSION "${GIT_VERSION}"
|
||||||
#define VERSION_SUFFIX "${VERSION_SUFFIX}"
|
#define VERSION_SUFFIX "${VERSION_SUFFIX}"
|
||||||
#define TAGDISTANCE ${HG_TAGDISTANCE}
|
#define TAGDISTANCE ${GIT_TAGDISTANCE}
|
||||||
#define CACHEFOLDERNAME "RawTherapee${CACHE_NAME_SUFFIX}"
|
#define CACHEFOLDERNAME "RawTherapee${CACHE_NAME_SUFFIX}"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,11 +1,12 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
hgBranch="`hg branch`"
|
gitBranch="`git symbolic-ref --short -q HEAD`"
|
||||||
hgLatesttag="`hg parents --template '{latesttag}'`"
|
gitVersion="`git describe --tags --always`"
|
||||||
hgLatesttagdistance="`hg parents --template '{latesttagdistance}'`"
|
gitLatesttag="`echo $gitVersion | sed 's/-.*//'`"
|
||||||
hgChangeset="`hg parents --template '{node|short}'`"
|
gitLatesttagdistance="`echo $gitVersion | sed 's/.*-\(.*\)-g.*/\1/'`"
|
||||||
|
gitChangeset="`git rev-parse --verify HEAD`"
|
||||||
|
|
||||||
echo "set(HG_BRANCH $hgBranch)
|
echo "set(GIT_BRANCH $gitBranch)
|
||||||
set(HG_VERSION $hgLatesttag.$hgLatesttagdistance)
|
set(GIT_VERSION $gitLatesttag.$gitLatesttagdistance)
|
||||||
set(HG_CHANGESET $hgChangeset)
|
set(GIT_CHANGESET $gitChangeset)
|
||||||
set(HG_TAGDISTANCE $hgLatesttagdistance)" > ReleaseInfo.cmake
|
set(GIT_TAGDISTANCE $gitLatesttagdistance)" > ReleaseInfo.cmake
|
||||||
|
|
||||||
|
@@ -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
|
|
||||||
|
|
Reference in New Issue
Block a user