forked from OSchip/llvm-project
Basic: Simplify getClangRepositoryPath and getClangRevision.
- I don't like returning StringRef's ever, unless it is actually important for performance, which it isn't here. - Also, stop validating getClangRevision to be an integer, I don't see a good reason to do this. llvm-svn: 115071
This commit is contained in:
parent
2c48dbec96
commit
181ca58074
|
@ -44,11 +44,11 @@ namespace clang {
|
|||
/// \brief Retrieves the repository path (e.g., Subversion path) that
|
||||
/// identifies the particular Clang branch, tag, or trunk from which this
|
||||
/// Clang was built.
|
||||
llvm::StringRef getClangRepositoryPath();
|
||||
std::string getClangRepositoryPath();
|
||||
|
||||
/// \brief Retrieves the repository revision number (or identifer) from which
|
||||
/// this Clang was built.
|
||||
llvm::StringRef getClangRevision();
|
||||
std::string getClangRevision();
|
||||
|
||||
/// \brief Retrieves the full repository version that is an amalgamation of
|
||||
/// the information in getClangRepositoryPath() and getClangRevision().
|
||||
|
|
|
@ -16,9 +16,11 @@ LIBRARYNAME := clangBasic
|
|||
|
||||
include $(CLANG_LEVEL)/Makefile
|
||||
|
||||
SVN_REVISION := $(shell $(LLVM_SRC_ROOT)/utils/GetSourceVersion $(PROJ_SRC_DIR)/../..)
|
||||
SVN_REVISION := $(strip \
|
||||
$(shell $(LLVM_SRC_ROOT)/utils/GetSourceVersion $(PROJ_SRC_DIR)/../..))
|
||||
|
||||
SVN_REPOSITORY := $(shell $(LLVM_SRC_ROOT)/utils/GetRepositoryPath $(PROJ_SRC_DIR)/../..)
|
||||
SVN_REPOSITORY := $(strip \
|
||||
$(shell $(LLVM_SRC_ROOT)/utils/GetRepositoryPath $(PROJ_SRC_DIR)/../..))
|
||||
|
||||
CPP.Defines += -I$(PROJ_SRC_DIR)/../../include -I$(PROJ_OBJ_DIR)/../../include \
|
||||
-DSVN_REVISION='"$(SVN_REVISION)"' -DSVN_REPOSITORY='"$(SVN_REPOSITORY)"'
|
||||
|
|
|
@ -20,44 +20,37 @@ using namespace std;
|
|||
|
||||
namespace clang {
|
||||
|
||||
llvm::StringRef getClangRepositoryPath() {
|
||||
std::string getClangRepositoryPath() {
|
||||
#ifdef SVN_REPOSITORY
|
||||
if (SVN_REPOSITORY[0] != '\0') {
|
||||
static const char URL[] = SVN_REPOSITORY;
|
||||
const char *URLEnd = URL + strlen(URL) - 1;
|
||||
|
||||
// Strip off version from a build from an integration branch.
|
||||
const char *End = strstr(URL, "/src/tools/clang");
|
||||
if (End)
|
||||
URLEnd = End;
|
||||
|
||||
const char *Begin = strstr(URL, "cfe/");
|
||||
if (Begin)
|
||||
return llvm::StringRef(Begin + 4, URLEnd - Begin - 4);
|
||||
|
||||
return llvm::StringRef(URL, URLEnd - URL);
|
||||
}
|
||||
llvm::StringRef URL(SVN_REPOSITORY);
|
||||
#else
|
||||
llvm::StringRef URL("");
|
||||
#endif
|
||||
return "";
|
||||
|
||||
// Strip off version from a build from an integration branch.
|
||||
URL = URL.slice(0, URL.find("/src/tools/clang"));
|
||||
|
||||
// Trim path prefix off, assuming path came from standard cfe path.
|
||||
size_t Start = URL.find("cfe/");
|
||||
if (Start != llvm::StringRef::npos)
|
||||
URL = URL.substr(Start + 4);
|
||||
|
||||
return URL;
|
||||
}
|
||||
|
||||
llvm::StringRef getClangRevision() {
|
||||
std::string getClangRevision() {
|
||||
#ifdef SVN_REVISION
|
||||
if (SVN_REVISION[0] != '\0') {
|
||||
std::string revision;
|
||||
llvm::raw_string_ostream OS(revision);
|
||||
OS << strtol(SVN_REVISION, 0, 10);
|
||||
return OS.str();
|
||||
}
|
||||
#endif
|
||||
return SVN_REVISION;
|
||||
#else
|
||||
return "";
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string getClangFullRepositoryVersion() {
|
||||
std::string buf;
|
||||
llvm::raw_string_ostream OS(buf);
|
||||
const llvm::StringRef &Path = getClangRepositoryPath();
|
||||
const llvm::StringRef &Revision = getClangRevision();
|
||||
std::string Path = getClangRepositoryPath();
|
||||
std::string Revision = getClangRevision();
|
||||
if (!Path.empty())
|
||||
OS << Path;
|
||||
if (!Revision.empty()) {
|
||||
|
|
Loading…
Reference in New Issue