aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2014-10-21 14:03:54 -0400
committerBen Boeckel <ben.boeckel@kitware.com>2014-10-23 16:42:35 -0400
commit9ed415ad43d4625ebb92ac1b800e57064e65aebc (patch)
treefebc168fbac38184e685ce685f9f0149881077da
parentcmake: support git info in released tarballs (diff)
downloadmonero-9ed415ad43d4625ebb92ac1b800e57064e65aebc.tar.xz
build: inform the build of what generates version.h
Without this, Ninja requires a two-step process because it doesn't know what generates version.h it sees from its depfile support and when it changes in one run, it has already pruned the dependent nodes from its internal graph and requires a second run to catch it.
-rw-r--r--version.cmake12
1 files changed, 11 insertions, 1 deletions
diff --git a/version.cmake b/version.cmake
index 4dd6db6d4..80f1c40b8 100644
--- a/version.cmake
+++ b/version.cmake
@@ -11,12 +11,22 @@ if ("$Format:$" STREQUAL "")
write_static_version_header("release")
elseif (GIT_FOUND OR Git_FOUND)
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
- add_custom_target(version ALL
+ set(extra_output)
+ if (CMAKE_GENERATOR MATCHES "Ninja")
+ # Ninja will not rerun the command every time if the file doesn't change,
+ # so inject this bogus output so that it always runs.
+ set(extra_output "${CMAKE_SOURCE_DIR}/.force-git-version-check")
+ endif ()
+ add_custom_command(
+ OUTPUT "${CMAKE_BINARY_DIR}/version/version.h"
+ ${extra_output}
COMMAND "${CMAKE_COMMAND}"
"-D" "GIT=${GIT_EXECUTABLE}"
"-D" "TO=${CMAKE_BINARY_DIR}/version/version.h"
"-P" "src/version.cmake"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
+ add_custom_target(version ALL
+ DEPENDS "${CMAKE_BINARY_DIR}/version/version.h")
else()
message(STATUS "WARNING: Git was not found!")
write_static_version_header("unknown")