diff options
author | Bruce Dawson <randomascii@users.noreply.github.com> | 2022-06-16 07:47:21 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-16 07:47:21 (GMT) |
commit | a4c24a33c1ed32d9d51c8df763ec6ad574587d02 (patch) | |
tree | 1568dbd06c9a927018e23191581f57c771aff1aa /src/parser.cc | |
parent | 1d4034f0ac2b5cfb809b5ab983d47c3cb2c78415 (diff) | |
download | Ninja-a4c24a33c1ed32d9d51c8df763ec6ad574587d02.zip Ninja-a4c24a33c1ed32d9d51c8df763ec6ad574587d02.tar.gz Ninja-a4c24a33c1ed32d9d51c8df763ec6ad574587d02.tar.bz2 |
Build ninja with C++11 (#2089)
* Build ninja with C++11
In order to allow future use of std::chrono to make the stats code
portable it is desirable to compile with C++11. Doing so also allows use
of std::unordered_map, and reduces the number of #ifdefs in the ninja
source code.
Switching to C++11 requires modifying both CMakeLists.txt and
configure.py, for MSVC and for other build systems. For MSVC the
required change is adding /Zc:__cplusplus to tell the compiler to
give a more accurate value for the __cplusplus macro. For other
platforms the change is to add -std=c++11 or the CMake equivalent.
This change makes some progress towards resolving issue #2004.
* Delete code and instructions
C++11 guarantees that string::data() gives null-terminated pointers, so
explicitly adding a null terminator is no longer needed.
The Google C++ Style Guide already recommends avoiding unnecessary use
of C++14 and C++17 so repeating this in CONTRIBUTING.md is not critical.
These changes both came from PR-review suggestions.
* Only set cxx_std_11 if standard is 98
* Return to unconditional target_compile_features use
After much discussion it sounds like using target_compile_features
unconditionally is best.
Diffstat (limited to 'src/parser.cc')
-rw-r--r-- | src/parser.cc | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/src/parser.cc b/src/parser.cc index 756922d..5f303c5 100644 --- a/src/parser.cc +++ b/src/parser.cc @@ -31,13 +31,6 @@ bool Parser::Load(const string& filename, string* err, Lexer* parent) { return false; } - // The lexer needs a nul byte at the end of its input, to know when it's done. - // It takes a StringPiece, and StringPiece's string constructor uses - // string::data(). data()'s return value isn't guaranteed to be - // null-terminated (although in practice - libc++, libstdc++, msvc's stl -- - // it is, and C++11 demands that too), so add an explicit nul byte. - contents.resize(contents.size() + 1); - return Parse(filename, contents, err); } |