diff options
-rwxr-xr-x | bootstrap.py | 2 | ||||
-rwxr-xr-x | configure.py | 4 | ||||
-rw-r--r-- | misc/ninja_syntax.py | 6 | ||||
-rw-r--r-- | src/build.cc | 1 | ||||
-rw-r--r-- | src/build_log.cc | 1 | ||||
-rw-r--r-- | src/build_log.h | 5 | ||||
-rw-r--r-- | src/build_log_test.cc | 4 | ||||
-rw-r--r-- | src/build_test.cc | 16 | ||||
-rw-r--r-- | src/depfile_parser_test.cc | 2 | ||||
-rw-r--r-- | src/ninja.cc | 1 | ||||
-rw-r--r-- | src/subprocess.cc | 2 | ||||
-rw-r--r-- | src/util.cc | 1 |
12 files changed, 27 insertions, 18 deletions
diff --git a/bootstrap.py b/bootstrap.py index 8c31dd7..1df423d 100755 --- a/bootstrap.py +++ b/bootstrap.py @@ -71,7 +71,7 @@ if sys.platform.startswith('win32'): vcdir = os.environ.get('VCINSTALLDIR') if vcdir: - args = [os.path.join(vcdir, 'bin', 'cl.exe'), '/nologo', '/EHsc'] + args = [os.path.join(vcdir, 'bin', 'cl.exe'), '/nologo', '/EHsc', '/DNOMINMAX'] else: args = shlex.split(os.environ.get('CXX', 'g++')) args.extend(['-Wno-deprecated', diff --git a/configure.py b/configure.py index 9c9d108..0637de6 100755 --- a/configure.py +++ b/configure.py @@ -104,7 +104,7 @@ else: if platform == 'windows': cflags = ['/nologo', '/Zi', '/W4', '/WX', '/wd4530', '/wd4100', '/wd4706', '/wd4512', '/wd4800', '/wd4702', '/wd4819', - '/D_CRT_SECURE_NO_WARNINGS', + '/DNOMINMAX', '/D_CRT_SECURE_NO_WARNINGS', "/DNINJA_PYTHON=\"%s\"" % (options.with_python,)] ldflags = ['/DEBUG', '/libpath:$builddir'] if not options.debug: @@ -154,7 +154,7 @@ if platform == 'windows': description='CXX $out') else: n.rule('cxx', - command='$cxx -MMD -MF $out.d $cflags -c $in -o $out', + command='$cxx -MMD -MT $out -MF $out.d $cflags -c $in -o $out', depfile='$out.d', description='CXX $out') n.newline() diff --git a/misc/ninja_syntax.py b/misc/ninja_syntax.py index ccb38a8..97bd82b 100644 --- a/misc/ninja_syntax.py +++ b/misc/ninja_syntax.py @@ -33,7 +33,7 @@ class Writer(object): self._line('%s = %s' % (key, value), indent) def rule(self, name, command, description=None, depfile=None, - generator=False, restat=False): + generator=False, restat=False, rspfile=None, rspfile_content=None): self._line('rule %s' % name) self.variable('command', command, indent=1) if description: @@ -44,6 +44,10 @@ class Writer(object): self.variable('generator', '1', indent=1) if restat: self.variable('restat', '1', indent=1) + if rspfile: + self.variable('rspfile', rspfile, indent=1) + if rspfile_content: + self.variable('rspfile_content', rspfile_content, indent=1) def build(self, outputs, rule, inputs=None, implicit=None, order_only=None, variables=None): diff --git a/src/build.cc b/src/build.cc index 44c1df6..a2e4f64 100644 --- a/src/build.cc +++ b/src/build.cc @@ -20,6 +20,7 @@ #ifdef _WIN32 #include <windows.h> #else +#include <unistd.h> #include <sys/ioctl.h> #include <sys/time.h> #include <sys/termios.h> diff --git a/src/build_log.cc b/src/build_log.cc index fd93ea8..0cecd70 100644 --- a/src/build_log.cc +++ b/src/build_log.cc @@ -17,6 +17,7 @@ #include <errno.h> #include <stdlib.h> #include <string.h> +#include <unistd.h> #include "build.h" #include "graph.h" diff --git a/src/build_log.h b/src/build_log.h index 040609d..da8e726 100644 --- a/src/build_log.h +++ b/src/build_log.h @@ -71,10 +71,11 @@ struct BuildLog { /// Rewrite the known log entries, throwing away old data. bool Recompact(const string& path, string* err); - // TODO: make these private. typedef ExternalStringHashMap<LogEntry*>::Type Log; + const Log& log() const { return log_; } + + private: Log log_; -private: FILE* log_file_; BuildConfig* config_; bool needs_recompaction_; diff --git a/src/build_log_test.cc b/src/build_log_test.cc index c6d6bc3..9b729c7 100644 --- a/src/build_log_test.cc +++ b/src/build_log_test.cc @@ -54,8 +54,8 @@ TEST_F(BuildLogTest, WriteRead) { EXPECT_TRUE(log2.Load(kTestFilename, &err)); ASSERT_EQ("", err); - ASSERT_EQ(2u, log1.log_.size()); - ASSERT_EQ(2u, log2.log_.size()); + ASSERT_EQ(2u, log1.log().size()); + ASSERT_EQ(2u, log2.log().size()); BuildLog::LogEntry* e1 = log1.LookupByOutput("out"); ASSERT_TRUE(e1); BuildLog::LogEntry* e2 = log2.LookupByOutput("out"); diff --git a/src/build_test.cc b/src/build_test.cc index 5b35513..c015bc9 100644 --- a/src/build_test.cc +++ b/src/build_test.cc @@ -868,15 +868,15 @@ TEST_F(BuildTest, RspFileSuccess) size_t files_removed = fs_.files_removed_.size(); EXPECT_TRUE(builder_.Build(&err)); - ASSERT_EQ(2, commands_ran_.size()); // cat + cat_rsp + ASSERT_EQ(2u, commands_ran_.size()); // cat + cat_rsp // The RSP file was created ASSERT_EQ(files_created + 1, fs_.files_created_.size()); - ASSERT_EQ(1, fs_.files_created_.count("out2.rsp")); + ASSERT_EQ(1u, fs_.files_created_.count("out2.rsp")); // The RSP file was removed ASSERT_EQ(files_removed + 1, fs_.files_removed_.size()); - ASSERT_EQ(1, fs_.files_removed_.count("out2.rsp")); + ASSERT_EQ(1u, fs_.files_removed_.count("out2.rsp")); } // Test that RSP file is created but not removed for commands, which fail @@ -903,15 +903,15 @@ TEST_F(BuildTest, RspFileFailure) { EXPECT_FALSE(builder_.Build(&err)); ASSERT_EQ("subcommand failed", err); - ASSERT_EQ(1, commands_ran_.size()); + ASSERT_EQ(1u, commands_ran_.size()); // The RSP file was created ASSERT_EQ(files_created + 1, fs_.files_created_.size()); - ASSERT_EQ(1, fs_.files_created_.count("out.rsp")); + ASSERT_EQ(1u, fs_.files_created_.count("out.rsp")); // The RSP file was NOT removed ASSERT_EQ(files_removed, fs_.files_removed_.size()); - ASSERT_EQ(0, fs_.files_removed_.count("out.rsp")); + ASSERT_EQ(0u, fs_.files_removed_.count("out.rsp")); // The RSP file contains what it should ASSERT_EQ("Another very long command", fs_.files_["out.rsp"].contents); @@ -939,7 +939,7 @@ TEST_F(BuildWithLogTest, RspFileCmdLineChange) { // 1. Build for the 1st time (-> populate log) EXPECT_TRUE(builder_.Build(&err)); - ASSERT_EQ(1, commands_ran_.size()); + ASSERT_EQ(1u, commands_ran_.size()); // 2. Build again (no change) commands_ran_.clear(); @@ -960,7 +960,7 @@ TEST_F(BuildWithLogTest, RspFileCmdLineChange) { EXPECT_TRUE(builder_.AddTarget("out", &err)); EXPECT_EQ("", err); EXPECT_TRUE(builder_.Build(&err)); - EXPECT_EQ(1, commands_ran_.size()); + EXPECT_EQ(1u, commands_ran_.size()); } TEST_F(BuildTest, InterruptCleanup) { diff --git a/src/depfile_parser_test.cc b/src/depfile_parser_test.cc index ce122cf..9094283 100644 --- a/src/depfile_parser_test.cc +++ b/src/depfile_parser_test.cc @@ -108,7 +108,7 @@ TEST_F(DepfileParserTest, UnifyMultupleOutputs) { string err; EXPECT_TRUE(Parse("foo foo: x y z", &err)); ASSERT_EQ(parser_.out_.AsString(), "foo"); - ASSERT_EQ(parser_.ins_.size(), 3); + ASSERT_EQ(parser_.ins_.size(), 3u); EXPECT_EQ("x", parser_.ins_[0].AsString()); EXPECT_EQ("y", parser_.ins_[1].AsString()); EXPECT_EQ("z", parser_.ins_[2].AsString()); diff --git a/src/ninja.cc b/src/ninja.cc index 04cd771..7d020db 100644 --- a/src/ninja.cc +++ b/src/ninja.cc @@ -31,6 +31,7 @@ #include <windows.h> #else #include <getopt.h> +#include <unistd.h> #endif #include "browse.h" diff --git a/src/subprocess.cc b/src/subprocess.cc index 99de93f..25b1bda 100644 --- a/src/subprocess.cc +++ b/src/subprocess.cc @@ -45,7 +45,7 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { #if !defined(linux) // On linux we use ppoll in DoWork(); elsewhere we use pselect and so must // avoid overly-large FDs. - if (fd_ >= FD_SETSIZE) + if (fd_ >= static_cast<int>(FD_SETSIZE)) Fatal("pipe: %s", strerror(EMFILE)); #endif // !linux SetCloseOnExec(fd_); diff --git a/src/util.cc b/src/util.cc index 4d9adf3..c88dc4e 100644 --- a/src/util.cc +++ b/src/util.cc @@ -16,6 +16,7 @@ #ifdef _WIN32 #include <windows.h> +#include <io.h> #endif #include <errno.h> |