| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
in general, flags check have to be to the non-no option.
Updates use of deprecated CMake command.
|
| |
|
|\
| |
| | |
Use GoogleTest instead of our own framework
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes the case where GTEST_ROOT is set to point to a local
GoogleTest installation (see example below).
Note that this needs a work-around for a subtle GTest 1.10.0:
- When downloading, building then installing googletest-1.10.0,
the installation directory contains CMake files that are
picked later by Ninja's find_package() function properly,
and which define the GTest::gtest target.
This is the target name that should be used by projects
that depend on GoogleTest, per the official documentation.
- When instead 1.10.0, i.e. the same version, is downloaded
and used locally with FetchContent_Declare() +
FetchContent_MakeAvailable(), then only the `gtest` target
will be defined.
This was fixed in 1.11.0, where this use case properly
defines GTest::gtest instead.
The work-around checks for the definition of GTest::gtest
after the FetchContent_MakeAvailable(googletest) call. If
not defined, an alias to `gtest` is created instead.
This ensures the code works with more recent GoogleTest
releases as well.
|
| | |
|
| | |
|
| |\ |
|
| |\ \ |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Fixes #1248.
|
| | | | |
|
| |_|/
|/| | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Use check_cxx_symbol_exists() instead of check_symbol_exists()
for the subtle reason explained in the comment added in this
patch.
Change-Id: Id949b8f2c7af39eeef3a848d3bdbc7639432f38a
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This patch modifies the CMakeLists.txt file to probe for
ppoll() on the target system, and define -DUSE_PPOLL=1 if
it is available.
This can be disabled by setting -DNINJA_FORCE_PSELECT=ON
when invoking CMake.
This matches the default behavior of the configure.py
script (and its `--force-pselect` option). Note that
there is no noticeable performance difference before
build commands are launched, so this
change is very hard to benchmark properly.
Fix for https://github.com/ninja-build/ninja/issues/1821
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Add overridable parameter for name of Python binary
On macOS, python is not an available command any more. python3 is.
* Use option() as requested
* Store variable in different way
|
| | |
| | |
| | |
| | | |
at all
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* 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.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The install(TARGETS ... DESTINATION bin) is not necessary as this
subdirectory is implicit for executable targets.
ref: https://cmake.org/cmake/help/v3.15/command/install.html
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| | |
The checked in sources (depfile_parser.cc and lexer.cc) have the re2c version
embedded in it. The output didn't change since re2c 1.3, except for the
different version number.
A reproducible build would use a pinned version of re2c anyway, so there
is no need to hardcode its value in the checked in generated files.
|
| |
| |
| |
| |
| |
| |
| | |
The entire minidump-win32.cc is guarded by ifdef _MSC_VER, so
MSYS2/MinGW will just ignore the contents.
fixes #2006
|
| | |
|
| |
| |
| |
| |
| |
| | |
Just because `unistd.h` exists does not mean it has the APIs that are
needed. This occurs when cross-compiling using Fedora's packaged MinGW
toolchain.
|
| | |
|
|\ \
| | |
| | | |
missingdeps tool, take 2
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The tool looks for targets that depend on a generated file, but do not
properly specify a dependency on the generator. It needs to be run after
a successful build, and will list all potential flakes that may have
broken the build, but didn't due to accidental build step ordering.
The search relies on the correctness of depfile and generator output
information, but these are usually easier to get right than dependencies.
The errors found can usually be verified as actual build flakes by trying
to build the listed problematic files alone in a clean build directory.
Such builds usually fail with a compile job lacking a generated file.
There is some overlap between this tool and 'gn check', but not everyone
uses gn, not everyone using gn uses gn check, and most importantly, gn
check is more about modularity, and less about actual build-time deps
without flakes.
The tool needs to be run after a build completes and depfile data is
collected. It may take several seconds to process, up to a dozen or
two on a large, chromium-sized build.
|
|\ \ \
| | | |
| | | | |
Use UTF-8 on Windows 10 Version 1903, fix #1195
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Allows Ninja to use descriptions, filenames and environment variables
with characters outside of the ANSI codepage on Windows. Build manifests
are now UTF-8 by default (this change needs to be emphasized in the
release notes).
WriteConsoleOutput doesn't support UTF-8, but it's deprecated on newer
Windows 10 versions anyway (or as Microsoft likes to put it: "no longer
a part of our ecosystem roadmap"). We'll use the VT100 sequence just as
we do on Linux and macOS.
https://docs.microsoft.com/en-us/windows/uwp/design/globalizing/use-utf8-code-page
https://docs.microsoft.com/en-us/windows/console/writeconsoleoutput
https://docs.microsoft.com/de-de/windows/console/console-virtual-terminal-sequences
|
|\ \ \
| | | |
| | | | |
cmake: add_compile_options / PROJECT_SOURCE_DIR
|
| |/ / |
|
|/ /
| |
| |
| |
| |
| | |
Make BuildStatus an abstract interface, and move the current
implementation to StatusPrinter, to make way for a serialized
Status output.
|
| |
| |
| |
| |
| |
| | |
Using this modern signature makes CMake/CTest use the effective
binary path and works also with multi-config generators which put
binaries in extra `Release` folders.
|
|\ \
| |/
|/| |
Suppress MSVC warnings
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* D9025: overriding '/GR' with '/GR-'
* C4100: 'argc': unreferenced formal parameter
* C4244: '=': conversion from 'int' to 'char', possible loss of data (on tolower)
* C4267: 'initializing': conversion from 'size_t' to 'unsigned int', possible loss of data
* C4702: unreachable code (after Fatal)
* C4706: assignment within conditional expression
* C4996: 'strcpy': This function or variable may be unsafe
|
|\ \
| | |
| | | |
Fix building on AIX
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Both hash_collision_bench and manifest_parser_perftest crash on AIX with
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
IOT/Abort trap (core dumped)
32-bit AIX applications by default allocates only a single 256M segment
for stack and heap for 32-bit applications, which is insufficient for
these tests. When building these tests on AIX in 32-bit mode, increase
the max number of segments so they will run without crashing.
|
| | | |
|
| |/ |
|
|/
|
|
| |
multi-configuration generators for building ninja.
|
|
|
|
|
| |
Not all users have `cmake` on their PATH and this causes a build
failure.
|
| |
|
| |
|
|
|
|
| |
option provided by cmake's Module CTest
enable_testing() is call by this Module
|
|
|
|
|
|
|
| |
Browse mode requires a number of POSIX features to be available.
This commit adds configure-time checks that the 'unistd.h' header is
available and that the `inline.sh` script executes successfully. If the
checks pass then browse mode is enabled.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes ninja-build/ninja#1822, fixes ninja-build/ninja#1853
Adds support for `ninja -t browse` to CMake builds.
The platform support logic is copied from configure.py, so Windows,
Solaris and AIX are treated as 'unsupported' platforms. All other
platforms are assumed to be supported.
As discussed in #1853, when built via CMake the `ninja` executable
looks for a binary called `python` in the current path, in order to
launch the "browse" mode. The behaviour differs from that of the
configure.py script, which looks for a python executable that has the
*same name* as the python executable that invoked the configure script.
|
|
|
|
|
|
|
|
|
| |
CMAKE_SOURCE_DIR refer to the full path to the top level of the current
CMake source tree
PROJECT_SOURCE_DIR refer to the source directory of the last call to the
project() command made in the current directory scope or one of its parents
when ninja is use as a subproject, the build fail because of this.
|
| |
|
| |
|
|
|
|
|
| |
cmake_minimum_required(VERSION 3.15) implicitly sets to NEW all
policies from CMP0094 and older
|