Skip to content

Commit 797a81b

Browse files
PhilMillercz4rs
authored andcommitted
Merge pull request #1683 from DARMA-tasking/1677-dont-rerun-cmake-for-git-ref
1677: dont rerun cmake for git ref
2 parents 66221f7 + 85a7f8b commit 797a81b

6 files changed

+131
-238
lines changed

CMakeLists.txt

-2
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ include(cmake/link_vt.cmake)
6464
# Load packages that are required for core VT build
6565
include(cmake/load_packages.cmake)
6666

67-
include(cmake/build_git_info.cmake)
68-
6967
include(cmake/check_compiler.cmake)
7068

7169
option(vt_gold_linker_enabled "Build VT using the `gold' linker" ON)

cmake-modules/GetGitRevisionDescription.cmake

-166
This file was deleted.

cmake-modules/GetGitRevisionDescription.cmake.in

-41
This file was deleted.

cmake/build_git_info.cmake

+29-29
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1+
find_package(Git REQUIRED)
2+
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --git-dir
3+
WORKING_DIRECTORY
4+
"${PROJECT_BASE_DIR}"
5+
RESULT_VARIABLE
6+
res
7+
OUTPUT_VARIABLE
8+
REL_GIT_DIR
9+
OUTPUT_STRIP_TRAILING_WHITESPACE)
10+
if (NOT res EQUAL 0)
11+
message(FATAL_ERROR "git invocation failed")
12+
endif()
113

2-
include(GetGitRevisionDescription)
14+
get_filename_component(GIT_DIR ${REL_GIT_DIR} ABSOLUTE BASE_DIR ${PROJECT_BASE_DIR})
15+
message(STATUS "Git DIR: ${GIT_DIR}")
16+
if (NOT GIT_DIR)
17+
message(FATAL_ERROR "not a git directory")
18+
endif()
319

4-
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
20+
if(NOT EXISTS "${GIT_DIR}/HEAD")
21+
message(FATAL_ERROR "no such file: \"${GIT_DIR}/HEAD\"")
22+
endif()
23+
set(HEAD_FILE "${GIT_DIR}/HEAD")
524

6-
# set some variables related to GIT state information
7-
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
8-
git_describe(GIT_EXACT_TAG --tags --abbrev=0 --all)
9-
git_describe(GIT_DESCRIPTION --abbrev=10 --always --tags --long --all)
10-
git_local_changes(GIT_CLEAN_STATUS)
25+
message(STATUS "Git HEAD file: \"${HEAD_FILE}\"")
1126

12-
message(STATUS "REF:${GIT_REFSPEC}")
13-
message(STATUS "REF:${GIT_SHA1}")
14-
message(STATUS "REF:${GIT_DESCRIPTION}")
15-
message(STATUS "REF:${GIT_CLEAN_STATUS}")
16-
message(STATUS "REF:${GIT_EXACT_TAG}")
27+
set(VT_GIT_CONFIG_FILE "${PROJECT_BIN_DIR}/src/vt/configs/generated/vt_git_revision.cc")
28+
add_custom_command(
29+
OUTPUT ${VT_GIT_CONFIG_FILE}
30+
COMMAND ${CMAKE_COMMAND} -DIN_FILE=${PROJECT_BASE_DIR}/vt_git_revision.cc.in -DOUT_FILE=${VT_GIT_CONFIG_FILE} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DGIT_DIR=${GIT_DIR} -DHEAD_FILE=${HEAD_FILE} -P ${CMAKE_CURRENT_LIST_DIR}/run-git.cmake
31+
DEPENDS ${GIT_DIR}
32+
)
1733

18-
configure_file(
19-
${PROJECT_BASE_DIR}/vt_git_revision.cc.in
20-
${PROJECT_BIN_DIR}/src/vt/configs/generated/vt_git_revision.cc
21-
@ONLY
22-
)
23-
24-
# install(
25-
# FILES "${PROJECT_BINARY_DIR}/${cur_build_type}/cmake_config.h"
26-
# DESTINATION include
27-
# CONFIGURATIONS ${cur_build_type}
28-
# )
29-
30-
# configure_file(
31-
# "${PROJECT_SOURCE_DIR}/vt_git_revision.cc.in"
32-
# "${CMAKE_CURRENT_BINARY_DIR}/vt_git_revision.cc"
33-
# @ONLY
34-
# )
34+
target_sources(${VIRTUAL_TRANSPORT_LIBRARY} PRIVATE ${VT_GIT_CONFIG_FILE})

cmake/run-git.cmake

+100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# This file is intented to be run with cmake -P
2+
3+
# Derived from
4+
# Original Author:
5+
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
6+
# http://academic.cleardefinition.com
7+
# Iowa State University HCI Graduate Program/VRAC
8+
#
9+
# Copyright Iowa State University 2009-2010.
10+
# Distributed under the Boost Software License, Version 1.0.
11+
# (See accompanying file LICENSE_1_0.txt or copy at
12+
# http://www.boost.org/LICENSE_1_0.txt)
13+
14+
message(STATUS "Reading head file ${HEAD_FILE}")
15+
message(STATUS "Using git executable at \"${GIT_EXECUTABLE}\"")
16+
17+
get_filename_component(ROOT_DIR ${GIT_DIR} DIRECTORY)
18+
19+
set(GIT_SHA1)
20+
21+
file(READ "${HEAD_FILE}" HEAD_CONTENTS LIMIT 1024)
22+
23+
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
24+
if(HEAD_CONTENTS MATCHES "ref")
25+
# named branch
26+
string(REPLACE "ref: " "" GIT_REFSPEC "${HEAD_CONTENTS}")
27+
endif()
28+
29+
message(STATUS "GIT_REFSPEC: \"${GIT_REFSPEC}\"")
30+
31+
execute_process(COMMAND
32+
"${GIT_EXECUTABLE}"
33+
rev-parse --verify HEAD
34+
WORKING_DIRECTORY
35+
"${ROOT_DIR}"
36+
RESULT_VARIABLE
37+
res
38+
OUTPUT_VARIABLE
39+
GIT_SHA1
40+
OUTPUT_STRIP_TRAILING_WHITESPACE)
41+
if(NOT res EQUAL 0)
42+
message(FATAL_ERROR "could not get the git sha1")
43+
endif()
44+
45+
message(STATUS "GIT_SHA1: \"${GIT_SHA1}\"")
46+
47+
execute_process(COMMAND
48+
"${GIT_EXECUTABLE}"
49+
describe
50+
${GIT_SHA1}
51+
--tags --abbrev=0 --all
52+
WORKING_DIRECTORY
53+
"${ROOT_DIR}"
54+
RESULT_VARIABLE
55+
res
56+
OUTPUT_VARIABLE
57+
GIT_EXACT_TAG
58+
OUTPUT_STRIP_TRAILING_WHITESPACE)
59+
if(NOT res EQUAL 0)
60+
message(FATAL_ERROR "could not get the exact git tag")
61+
endif()
62+
63+
message(STATUS "GIT_EXACT_TAG: \"${GIT_EXACT_TAG}\"")
64+
65+
execute_process(COMMAND
66+
"${GIT_EXECUTABLE}"
67+
describe
68+
${GIT_SHA1}
69+
--abbrev=10 --always --tags --long --all
70+
WORKING_DIRECTORY
71+
"${ROOT_DIR}"
72+
RESULT_VARIABLE
73+
res
74+
OUTPUT_VARIABLE
75+
GIT_DESCRIPTION
76+
OUTPUT_STRIP_TRAILING_WHITESPACE)
77+
if(NOT res EQUAL 0)
78+
message(FATAL_ERROR "could not get the description")
79+
endif()
80+
81+
message(STATUS "GIT_DESCRIPTION: \"${GIT_DESCRIPTION}\"")
82+
83+
execute_process(COMMAND
84+
"${GIT_EXECUTABLE}"
85+
diff-index --quiet HEAD --
86+
WORKING_DIRECTORY
87+
"${ROOT_DIR}"
88+
RESULT_VARIABLE
89+
res
90+
OUTPUT_STRIP_TRAILING_WHITESPACE)
91+
if(res EQUAL 0)
92+
set(GIT_CLEAN_STATUS "CLEAN")
93+
else()
94+
set(GIT_CLEAN_STATUS "DIRTY")
95+
endif()
96+
97+
message(STATUS "Git Clean Status: \"${GIT_CLEAN_STATUS}\"")
98+
99+
message(STATUS "Configuring ${IN_FILE} to generate ${OUT_FILE}.")
100+
configure_file(${IN_FILE} ${OUT_FILE} @ONLY)

src/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,8 @@ add_library(
204204
${HEADER_FILES} ${SOURCE_FILES}
205205
)
206206

207+
include(${CMAKE_CURRENT_LIST_DIR}/../cmake/build_git_info.cmake)
208+
207209
option(vt_no_color_enabled "Build VT with option --vt_no_color set to true by default" OFF)
208210
if(vt_no_color_enabled)
209211
message(STATUS "Building VT with --vt_no_color set to true by default")

0 commit comments

Comments
 (0)