diff options
Diffstat (limited to 'lib/Support')
-rw-r--r-- | lib/Support/Makefile | 29 | ||||
-rw-r--r-- | lib/Support/PrintVersion.cpp | 34 | ||||
-rw-r--r-- | lib/Support/Time.cpp | 10 | ||||
-rw-r--r-- | lib/Support/Timer.cpp | 10 |
4 files changed, 73 insertions, 10 deletions
diff --git a/lib/Support/Makefile b/lib/Support/Makefile index 67272908..2b1b104c 100644 --- a/lib/Support/Makefile +++ b/lib/Support/Makefile @@ -14,4 +14,33 @@ DONT_BUILD_RELINKED=1 BUILD_ARCHIVE=1 NO_INSTALL=1 +# FIXME: This is nasty. We don't want to rebuild this library everytime +# but this was the only way I could find to make the build work. +# +# Note this rule has to go here so it is run first. +CompileTimeInfoFile:=../../include/klee/Config/CompileTimeInfo.h +all-local:: $(CompileTimeInfoFile) + include $(LEVEL)/Makefile.common + + +GIT_PRESENT:=$(shell [ -d "$(PROJ_SRC_ROOT)/.git" ] && echo 1 || echo 0) + +ifeq ($(GIT_PRESENT),1) +GIT_TAGS:=$(shell cd $(PROJ_SRC_ROOT); git describe --tags 2> /dev/null 1>&2 && echo 1 || echo 0) +else +GIT_TAGS:=0 +endif + +.PHONY: $(CompileTimeInfoFile) +$(CompileTimeInfoFile): + $(Verb) echo "Regenerating $(CompileTimeInfoFile)" + $(Verb) echo '#define KLEE_BUILD_MODE "$(BuildMode)"' > $(CompileTimeInfoFile) +ifeq ($(GIT_PRESENT),1) + $(Verb) echo '#define KLEE_BUILD_REVISION "'$(shell cd $(PROJ_SRC_ROOT); git rev-parse HEAD)'"' >> \ + $(CompileTimeInfoFile) +endif +ifeq ($(GIT_TAGS),1) + $(Verb) echo '#define KLEE_BUILD_TAG "'$(shell cd $(PROJ_SRC_ROOT); git describe --tags)'"' >> \ + $(CompileTimeInfoFile) +endif diff --git a/lib/Support/PrintVersion.cpp b/lib/Support/PrintVersion.cpp new file mode 100644 index 00000000..b4ff9811 --- /dev/null +++ b/lib/Support/PrintVersion.cpp @@ -0,0 +1,34 @@ +//===-- PrintVersion.cpp --------------------------------------------------===// +// +// The KLEE Symbolic Virtual Machine +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "klee/Internal/Support/PrintVersion.h" +#include "klee/Config/config.h" +#include "llvm/Support/raw_ostream.h" +#include "llvm/Support/CommandLine.h" + +#include "klee/Config/CompileTimeInfo.h" + +void klee::printVersion() +{ + llvm::outs() << PACKAGE_STRING " (" PACKAGE_URL ")\n"; + llvm::outs() << " Built " __DATE__ " (" __TIME__ ")\n"; + llvm::outs() << " Build mode: " << KLEE_BUILD_MODE "\n"; + llvm::outs() << " Build revision: "; +#ifdef KLEE_BUILD_REVISION + llvm::outs() << KLEE_BUILD_REVISION "\n"; +#else + llvm::outs() << "unknown\n"; +#endif +#ifdef KLEE_BUILD_TAG + llvm::outs() << " Build tag: " << KLEE_BUILD_TAG "\n"; +#endif + // Show LLVM version information + llvm::outs() << "\n"; + llvm::cl::PrintVersionMessage(); +} diff --git a/lib/Support/Time.cpp b/lib/Support/Time.cpp index 909e07da..be5eaf18 100644 --- a/lib/Support/Time.cpp +++ b/lib/Support/Time.cpp @@ -10,6 +10,7 @@ #include "klee/Config/Version.h" #include "klee/Internal/System/Time.h" +#include "llvm/Support/TimeValue.h" #include "llvm/Support/Process.h" using namespace llvm; @@ -22,7 +23,10 @@ double util::getUserTime() { } double util::getWallTime() { - sys::TimeValue now(0,0),user(0,0),sys(0,0); - sys::Process::GetTimeUsage(now,user,sys); - return (now.seconds() + (double) now.nanoseconds() * 1e-9); + sys::TimeValue now = getWallTimeVal(); + return (now.seconds() + ((double) now.nanoseconds() * 1e-9)); +} + +sys::TimeValue util::getWallTimeVal() { + return sys::TimeValue::now(); } diff --git a/lib/Support/Timer.cpp b/lib/Support/Timer.cpp index c61a90a3..da969810 100644 --- a/lib/Support/Timer.cpp +++ b/lib/Support/Timer.cpp @@ -10,19 +10,15 @@ #include "klee/Config/Version.h" #include "klee/Internal/Support/Timer.h" -#include "llvm/Support/Process.h" +#include "klee/Internal/System/Time.h" using namespace klee; using namespace llvm; WallTimer::WallTimer() { - sys::TimeValue now(0,0),user(0,0),sys(0,0); - sys::Process::GetTimeUsage(now,user,sys); - startMicroseconds = now.usec(); + startMicroseconds = util::getWallTimeVal().usec(); } uint64_t WallTimer::check() { - sys::TimeValue now(0,0),user(0,0),sys(0,0); - sys::Process::GetTimeUsage(now,user,sys); - return now.usec() - startMicroseconds; + return util::getWallTimeVal().usec() - startMicroseconds; } |