feat(shell/lean): add git hash to executable
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
e60e20a11d
commit
1e5518002b
4 changed files with 25 additions and 2 deletions
|
@ -136,6 +136,15 @@ endif()
|
||||||
|
|
||||||
include_directories(${LEAN_SOURCE_DIR})
|
include_directories(${LEAN_SOURCE_DIR})
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${LEAN_BINARY_DIR}/githash.h
|
||||||
|
COMMAND ${LEAN_SOURCE_DIR}/cmake/mk_githash_dot_h.sh ${LEAN_BINARY_DIR}
|
||||||
|
DEPENDS ${LEAN_SOURCE_DIR}/../.git/HEAD ${LEAN_SOURCE_DIR}/../.git/index
|
||||||
|
)
|
||||||
|
add_custom_target(githash
|
||||||
|
DEPENDS ${LEAN_BINARY_DIR}/githash.h ${LEAN_SOURCE_DIR}/../.git/HEAD ${LEAN_SOURCE_DIR}/../.git/index
|
||||||
|
)
|
||||||
|
|
||||||
add_subdirectory(util)
|
add_subdirectory(util)
|
||||||
set(LEAN_LIBS ${LEAN_LIBS} util)
|
set(LEAN_LIBS ${LEAN_LIBS} util)
|
||||||
add_subdirectory(util/numerics)
|
add_subdirectory(util/numerics)
|
||||||
|
|
6
src/cmake/mk_githash_dot_h.sh
Executable file
6
src/cmake/mk_githash_dot_h.sh
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/sh
|
||||||
|
Hash=`git rev-parse HEAD`
|
||||||
|
cat > $1/githash.h <<EOF
|
||||||
|
// Automatically generated file, DO NOT EDIT
|
||||||
|
char const * g_githash = "$Hash";
|
||||||
|
EOF
|
|
@ -1,6 +1,7 @@
|
||||||
configure_file("${LEAN_SOURCE_DIR}/shell/version.h.in" "${LEAN_BINARY_DIR}/version.h")
|
configure_file("${LEAN_SOURCE_DIR}/shell/version.h.in" "${LEAN_BINARY_DIR}/version.h")
|
||||||
include_directories("${LEAN_BINARY_DIR}")
|
include_directories("${LEAN_BINARY_DIR}")
|
||||||
add_executable(lean lean.cpp)
|
add_executable(lean lean.cpp)
|
||||||
|
add_dependencies(lean githash)
|
||||||
target_link_libraries(lean ${EXTRA_LIBS})
|
target_link_libraries(lean ${EXTRA_LIBS})
|
||||||
add_test(example1 ${CMAKE_CURRENT_BINARY_DIR}/lean "${LEAN_SOURCE_DIR}/../examples/lean/ex1.lean")
|
add_test(example1 ${CMAKE_CURRENT_BINARY_DIR}/lean "${LEAN_SOURCE_DIR}/../examples/lean/ex1.lean")
|
||||||
add_test(example2 ${CMAKE_CURRENT_BINARY_DIR}/lean "${LEAN_SOURCE_DIR}/../examples/lean/ex2.lean")
|
add_test(example2 ${CMAKE_CURRENT_BINARY_DIR}/lean "${LEAN_SOURCE_DIR}/../examples/lean/ex2.lean")
|
||||||
|
|
|
@ -9,6 +9,7 @@ Author: Leonardo de Moura
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
#include <string>
|
||||||
#include "util/stackinfo.h"
|
#include "util/stackinfo.h"
|
||||||
#include "util/debug.h"
|
#include "util/debug.h"
|
||||||
#include "util/interrupt.h"
|
#include "util/interrupt.h"
|
||||||
|
@ -18,6 +19,7 @@ Author: Leonardo de Moura
|
||||||
#include "frontends/lean/frontend.h"
|
#include "frontends/lean/frontend.h"
|
||||||
#include "frontends/lua/register_modules.h"
|
#include "frontends/lua/register_modules.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
#include "githash.h" // NOLINT
|
||||||
|
|
||||||
using lean::shell;
|
using lean::shell;
|
||||||
using lean::frontend;
|
using lean::frontend;
|
||||||
|
@ -34,7 +36,7 @@ static void on_ctrl_c(int ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void display_header(std::ostream & out) {
|
static void display_header(std::ostream & out) {
|
||||||
out << "Lean (version " << LEAN_VERSION_MAJOR << "." << LEAN_VERSION_MINOR << ")\n";
|
out << "Lean (version " << LEAN_VERSION_MAJOR << "." << LEAN_VERSION_MINOR << ", commit " << std::string(g_githash).substr(0, 12) << ")\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
static void display_help(std::ostream & out) {
|
static void display_help(std::ostream & out) {
|
||||||
|
@ -46,6 +48,7 @@ static void display_help(std::ostream & out) {
|
||||||
std::cout << "Miscellaneous:\n";
|
std::cout << "Miscellaneous:\n";
|
||||||
std::cout << " --help -h display this message\n";
|
std::cout << " --help -h display this message\n";
|
||||||
std::cout << " --version -v display version number\n";
|
std::cout << " --version -v display version number\n";
|
||||||
|
std::cout << " --githash display the git commit hash number used to build this binary\n";
|
||||||
std::cout << " --luahook=num how often the Lua interpreter checks the interrupted flag,\n";
|
std::cout << " --luahook=num how often the Lua interpreter checks the interrupted flag,\n";
|
||||||
std::cout << " it is useful for interrupting non-terminating user scripts,\n";
|
std::cout << " it is useful for interrupting non-terminating user scripts,\n";
|
||||||
std::cout << " 0 means 'do not check'.\n";
|
std::cout << " 0 means 'do not check'.\n";
|
||||||
|
@ -71,6 +74,7 @@ static struct option g_long_options[] = {
|
||||||
{"lean", no_argument, 0, 'l'},
|
{"lean", no_argument, 0, 'l'},
|
||||||
{"lua", no_argument, 0, 'u'},
|
{"lua", no_argument, 0, 'u'},
|
||||||
{"luahook", required_argument, 0, 'c'},
|
{"luahook", required_argument, 0, 'c'},
|
||||||
|
{"githash", no_argument, 0, 'g'},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -79,13 +83,16 @@ int main(int argc, char ** argv) {
|
||||||
lean::register_modules();
|
lean::register_modules();
|
||||||
input_kind default_k = input_kind::Lean; // default
|
input_kind default_k = input_kind::Lean; // default
|
||||||
while (true) {
|
while (true) {
|
||||||
int c = getopt_long(argc, argv, "vhc:012", g_long_options, &optind);
|
int c = getopt_long(argc, argv, "gvhc:012", g_long_options, &optind);
|
||||||
if (c == -1)
|
if (c == -1)
|
||||||
break; // end of command line
|
break; // end of command line
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'v':
|
case 'v':
|
||||||
display_header(std::cout);
|
display_header(std::cout);
|
||||||
return 0;
|
return 0;
|
||||||
|
case 'g':
|
||||||
|
std::cout << g_githash << "\n";
|
||||||
|
return 0;
|
||||||
case 'h':
|
case 'h':
|
||||||
display_help(std::cout);
|
display_help(std::cout);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue