Truncate a SVN path part from --version output.

This is in sync with what clang does.

llvm-svn: 285163
This commit is contained in:
Rui Ueyama 2016-10-26 03:52:06 +00:00
parent e38a8d2f14
commit 80695c1aef
4 changed files with 26 additions and 20 deletions

View File

@ -298,7 +298,7 @@ void LinkerDriver::main(ArrayRef<const char *> ArgsArr) {
if (F) {
Cpio.reset(*F);
Cpio->append("response.txt", createResponseFile(Args));
Cpio->append("version.txt", (getLLDVersion() + "\n").str());
Cpio->append("version.txt", getLLDVersion() + "\n");
} else
error(F.getError(),
Twine("--reproduce: failed to open ") + Path + ".cpio");

View File

@ -19,7 +19,7 @@
namespace lld {
/// \brief Retrieves a string representing the complete lld version.
llvm::StringRef getLLDVersion();
std::string getLLDVersion();
}
#endif // LLD_VERSION_H

View File

@ -1,4 +1,5 @@
#define LLD_VERSION @LLD_VERSION@
#define LLD_VERSION_STRING "@LLD_VERSION@"
#define LLD_VERSION_MAJOR @LLD_VERSION_MAJOR@
#define LLD_VERSION_MINOR @LLD_VERSION_MINOR@
#define LLD_REVISION_STRING "@LLD_REVISION@"

View File

@ -15,24 +15,29 @@
using namespace llvm;
#define JOIN2(X) #X
#define JOIN(X, Y) JOIN2(X.Y)
// Returns an SVN repository path, which is usually "trunk".
static std::string getRepositoryPath() {
StringRef S = LLD_REPOSITORY_STRING;
size_t Pos = S.find("lld/");
if (Pos != StringRef::npos)
return S.substr(Pos + 4);
return S;
}
// A string that describes the lld version number, e.g., "1.0".
#define VERSION JOIN(LLD_VERSION_MAJOR, LLD_VERSION_MINOR)
// Returns an SVN repository name, e.g., " (trunk 284614)"
// or an empty string if no repository info is available.
static std::string getRepository() {
std::string Repo = getRepositoryPath();
std::string Rev = LLD_REVISION_STRING;
// A string that describes SVN repository, e.g.,
// " (https://llvm.org/svn/llvm-project/lld/trunk 284614)".
#if defined(LLD_REPOSITORY_STRING) && defined(LLD_REVISION_STRING)
#define REPO " (" LLD_REPOSITORY_STRING " " LLD_REVISION_STRING ")"
#elif defined(LLD_REPOSITORY_STRING)
#define REPO " (" LLD_REPOSITORY_STRING ")"
#elif defined(LLD_REVISION_STRING)
#define REPO " (" LLD_REVISION_STRING ")"
#else
#define REPO ""
#endif
if (Repo.empty() && Rev.empty())
return "";
if (!Repo.empty() && !Rev.empty())
return " (" + Repo + " " + Rev + ")";
return " (" + Repo + Rev + ")";
}
// Returns a version string, e.g.,
// "LLD 4.0 (https://llvm.org/svn/llvm-project/lld/trunk 284614)".
StringRef lld::getLLDVersion() { return "LLD " VERSION REPO; }
// Returns a version string, e.g., "LLD 4.0 (lld/trunk 284614)".
std::string lld::getLLDVersion() {
return "LLD " + std::string(LLD_VERSION_STRING) + getRepository();
}