| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| | |
3bbe95f5 Clean up iwyu code to not be one big if statement.
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1247
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit changes the internal -E__run_iwyu to be -E__run_co_compile. This
is used for co-compile commands. These are tools that want to mirror the
compiler. For each compiler invocation the tool will be invoked first. This
started as a way to implement include what you use (iwyu), but has expanded
to include cpplint, cppcheck and others. Likely there will be more in the
future as well. This commit implements each one in its own function and
provides a way to add additional ones in the future with less work.
|
|/
|
|
|
|
| |
Changes done via `clang-tidy` with some manual fine-tuning
for the variable naming and `auto` type deduction
where appropriate.
|
|
|
|
|
|
| |
Create a `<LANG>_CPPCHECK` target property (initialized by a
`CMAKE_<LANG>_CPPCHECK` variable) to specify a `cppcheck` command line
to be run along with the compiler.
|
|\
| |
| |
| |
| |
| |
| | |
5962db43 Use C++11 nullptr
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1175
|
| | |
|
|/
|
|
|
|
|
|
|
| |
The Ninja generator preprocesses and compiles separately for Fortran.
When compiling, tell gfortran that the source is already preprocessed so
that it will honor the `# <line>` directives when producing diagnostics
messages.
Fixes: #17160
|
|\
| |
| |
| |
| |
| |
| | |
712af07e CUDA: CMAKE_EXPORT_COMPILE_COMMANDS now works with CUDA and Ninja
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1055
|
| |
| |
| |
| | |
Fixes: #17061
|
| |
| |
| |
| |
| |
| |
| | |
Command line argument passed to the internal tool "cmake_ninja_dyndep"
could hit MAX_ARG_STRLEN on Linux for projects with a large code base.
To prevent such problems, a response file was opted for argument transfer
in all cases, not only on Windows.
|
|/
|
|
|
|
|
|
| |
Add a `CUDA_COMPILER_LAUNCHER` target property like those added for C
and CXX by commit v3.4.0-rc1~450^2 (Add options to launch the compiler
through tools like ccache or distcc, 2015-06-04).
Fixes: #16953
|
|
|
|
|
| |
Replace the dedicated and non-portable escaping code with use of our
standard escaping logic.
|
|\
| |
| |
| |
| |
| |
| | |
594d3d6f Ninja: support response file for cmake_ninja_depends on Windows
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !722
|
| |
| |
| |
| |
| |
| |
| | |
The internal tool "cmake_ninja_depends" now supports reading the list of ddi
files from a reponse file to circumvent Windows command line length limits.
Use this response file for dyndep rule on Windows.
|
|\ \
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
d96e5d9a Tests: use BYPRODUCTS in the CustomCommandWorkingDirectory test
664591ce RunCMake.Ninja: add a test for assumed sources
adf60b28 ninja: break unnecessary target dependencies
01c5bb95 RunCMake.Ninja: support passing arguments when running ninja
7f947b60 ninja: remove duplicate order-only dependencies
e9827eba ninja: describe the intermediate order depends target better
b57b7d8e Ninja: Order Fortran dyndep file generation explicitly
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !430
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, given two libraries, X and Y where X depends on Y, all
object compilations of X would require the Y library to have been linked
before being compiled. This is not necessary and can instead be loosened
such that object compilations of X only depend on the order-only
dependencies of Y to be completed. This is to ensure that generated
sources, headers, custom commands, etc. are completed before X starts to
compile its objects.
This should help build performance in projects with many libraries which
cause a deep library dependency chain. Previously, a library at the
bottom would not start compilation until after all other libraries
completed, but now only its link step needs to wait and its compilation
jobs can be run in parallel with other tasks.
Fixes: #15555
|
| | |
|
| |
| |
| |
| | |
This is only used for compiled objects, so indicate it as such.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Each target's dyndep file generation depends on loading information
generated by the same step in its dependencies. Add an explicit
ordering dependency to ensure the needed information is available.
Without the explicit ordering dependency we were abusing the more
general target ordering rules through the preprocessor rules generating
the `.ddi` files used as input to dyndep file generation.
|
|/
|
|
|
| |
When the target property `CUDA_PTX_COMPILATION` is enabled CUDA OBJECT
libraries will generate ptx files instead of object files.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Automate with:
git grep -l '#include <cm_' -- Source \
| xargs sed -i 's/#include <\(cm_.*\)>/#include "\1"/g'
git grep -l '#include <cmsys/' -- Source \
| xargs sed -i 's/#include <\(cmsys\/.*\)>/#include "\1"/g'
git grep -l '#include <cm[A-Z]' -- Source \
| xargs sed -i 's/#include <\(cm[A-Z].*\)>/#include "\1"/g'
|
|\
| |
| |
| |
| |
| |
| | |
805706b3 Ninja: Fix Fortran `include` dependency on generated file
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !601
|
| |
| |
| |
| |
| |
| |
| |
| | |
Work around upstream ninja issue 1251 by converting include directories
used by our Fortran dependency scanner to the same path format that we
use in preprocessor `-I` flags and in the `build.ninja` manifest.
Fixes: #16722
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | | |
feaea065 CUDA: Disable support for using response files.
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !596
|
| |/ |
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The `WINDOWS_EXPORT_ALL_SYMBOLS` target property exports all symbols
found in object files explicitly given to the linker. However, the
linker may also find additional symbols in dependencies and copy them
into the linked binary (e.g. from `msvcrt.lib`). Provide a way to
export an explicit list of such symbols by adding a `.def` file as a
source file.
Fixes: #16473
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Use `cmGeneratorTarget::ModuleDefinitionInfo` to combine the
implementation of `WINDOWS_EXPORT_ALL_SYMBOLS` with that of using a
`.def` file as a source. Only one of these could be used within a
single target before anyway.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Create a `ModuleDefinitionInfo` structure for each configuration of a
target to hold corresponding information about the selected module
definition file (`.def` source).
|
|\ \ \
| |/ /
|/| /
| |/
| | |
666ad1df Revert "Ninja: Use full path for all source files"
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit v3.7.0-rc1~275^2 (Ninja: Use full path for all
source files, 2016-08-05). Unfortunately using absolute paths can
cause incorrect rebuilds due to ninja limitations. The ninja
manual [1] explains:
> ... using absolute paths, your depfile may result in a mixture of
> relative and absolute paths. Paths used by other build rules need
> to match exactly.
Passing an absolute path to a source file to the compiler while using a
relative path in the ninja build manifest can cause such mixture and
lead to incorrect rebuilds. Simply revert the change for now.
Note that there was a follow-up to the original change in commit
v3.7.0-rc2~10^2 (Ninja: Fix RC language depfile generation with
cmcldeps, 2016-10-13). We don't need to revert that because that
change made the relevant code cleverly adapt to whatever variable
we use to reference the source file.
[1] https://ninja-build.org/manual.html#_deps
Fixes: #16675
Issue: #13894
|
| |
| |
| |
| |
| | |
If the property is explicitly set to a non-true value we should
not treat it as true.
|
| |
| |
| |
| |
| |
| | |
Create a `<LANG>_CPPLINT` target property (initialized by a
`CMAKE_<LANG>_CPPLINT` variable) to specify a `cpplint` style checker
command line to be run along with the compiler.
|
| | |
|
| |
| |
| |
| |
| | |
Add a helper to cmCommonTargetGenerator instead of duplicating it
in cmMakefileTargetGenerator and cmNinjaTargetGenerator.
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
b932cd42 clang-tidy: apply misc-redundant-expression fixes
88da3d68 clang-tidy: apply misc-suspicious-string-compare fixes
58c66393 clang-tidy: apply readability-static-definition-in-anonymous-namespace fixes
85bfddda clang-tidy: apply readability-redundant-control-flow fixes
2988abd9 clang-tidy: apply modernize-use-bool-literals fixes
a74e6893 clang-tidy: apply readability-redundant-string-init fixes
cac529dd clang-tidy: apply performance-faster-string-find fixes
7c9db8f8 clang-tidy: apply performance-unnecessary-value-param fixes
|
| | | |
|
|\ \ \
| |/ /
|/| |
| | |
| | |
| | |
| | | |
db61cd5d cmRulePlaceholderExpander: Remove unused member RuleLauncher
b7771078 Comment ExpandRuleVariables calls not preceded by launcher insertion
c58a5198 Makefile: Restore RULE_LAUNCH_COMPILE generation on compilation rules
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Call sites of `ExpandRuleVariables` are now responsible for inserting
the `RULE_LAUNCH_{COMPILE,LINK,CUSTOM}` values in rule command lines.
Audit all call sites and add a comment to each one that does not insert
a launcher to explain why.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Change the default compile PDB file name for static libraries to match
the Visual Studio default of using the logical target name. This may be
incompatible with existing behavior but `COMPILE_PDB_NAME` documents
that the default is unspecified. Projects depending on a particular
name should set the property.
Closes: #16438
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
This allows users to specify different genex-based compile flags for
each file in a target, e.g. compiling just a single file with `Od/Ox` in
release builds on Visual Studio.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | | |
effa6c83 fix more issues reported by clang-tidy
fb461cac silence selected clang-tidy violations
|
| |/ / |
|
| | |
| | |
| | |
| | |
| | | |
Include it in dependents which have previously relied on it
transitively.
|
| | | |
|
|/ / |
|
| |
| |
| |
| |
| |
| | |
Add a factory function to cmLocalGenerator so that variableMappings can
be provided from it, and so that Ninja can always have a hard-coded
TargetImpLib.
|
| |
| |
| |
| | |
Don't rely on the cmGeneratorTarget type needlessly.
|