Commit Graph

77 Commits

Author SHA1 Message Date
Orkun Tokdemir
8a68ad5233 Autogen: Filter out QtDeployTargets from Ninja Multi-Config tests
Since https://codereview.qt-project.org/c/qt/qtbase/+/518683 adds
generation of `.qt/QtDeployTargets-$<CONFIG>.cmake`, those files should
be filtered out from the `Ninja Multi-Config` tests.
2024-06-26 14:04:46 +02:00
Brad King
88c740462c CUDA/Clang: Add support for MSVC ABI on Windows using GNU-like frontend
Fixes: #20776
2024-01-22 09:33:54 -05:00
Orkun Tokdemir
596e84b0d5 NinjaMultiConfig: Update tests for the new dependency change
* Tests were updated for the cases both `AUTOGEN_BETTER_GRAPH_MULTI_CONFIG` is ON and OFF

This commit reimplements e454314daa
2024-01-17 16:02:58 +01:00
Ben Boeckel
c22c473bde Tests/Ninja*/CustomCommandDepfile: check that deps are in the database 2023-11-01 14:08:18 -04:00
Orkun Tokdemir
06a9b25b17 Tests: Revert "NinjaMultiConfig: Update tests for the new dependency change"
Revert commit e454314daa (NinjaMultiConfig: Update tests for the new
dependency change, 2023-07-05, v3.28.0-rc1~96^2) because we are about
to revert the change for which it updated tests.
2023-10-13 14:12:05 -04:00
David Lindauer
531b4fe643 OrangeC: Add support for OrangeC compiler
Add compiler information modules.  Update the test suite.

Fixes: #25032
Co-authored-by: Brad King <brad.king@kitware.com>
2023-09-25 12:27:29 -04:00
Orkun Tokdemir
e454314daa NinjaMultiConfig: Update tests for the new dependency change 2023-09-13 18:23:56 +02:00
Brad King
3728f079af codespell: Avoid escape sequence that looks like misspelled "nodes" 2023-05-22 16:50:51 -04:00
Kyle Edwards
df38eaab2c Ninja Multi-Config: Write output path prefix
Fixes: #24566
2023-03-02 15:10:53 -05:00
Kyle Edwards
5f0c5ec49b cmake: Print configure/generate time 2023-01-19 09:51:07 -05:00
Ben Boeckel
887a8874c3 EXPORT_COMPILE_COMMANDS: add output field
Also write for all configurations from multi-config generators.

This field was added in the Clang 5 documentation and not present in the
Clang 4 documentation (sometime between Dec 2016 and Mar 2017 according
to `web.archive.org`).
2022-10-28 13:54:43 -04:00
Kyle Edwards
a186c1aff6 Ninja Multi-Config: Deduplicate compile_commands.json for cross configs
compile_commands.json was being written for every permutation of
cross configurations. Deduplicate so only one command is output
for each configuration.

Fixes: #23733
2022-07-15 16:22:21 -04:00
Brad King
c111d440ce ExternalProject: Express per-config step stamp file paths using CONFIG genex
The ExternalProject module has long used the generator-specific
placeholder in the `${CMAKE_CFG_INTDIR}` variable to express per-config
stamp file paths in multi-config generators.  Now that most generators
support generator expressions in custom command outputs, we can use
the `$<CONFIG>` genex instead.

In particular, this fixes cross-config `BUILD_BYPRODUCTS` with the Ninja
Multi-Config generator.

Fixes: #23595
2022-06-08 15:13:27 -04:00
Brad King
49996faaac ci: remove ISPC from the Fedora CI image
Revert commit 5ece12b7e4 (gitlab-ci: add ISPC to the Fedora CI image,
2020-08-18, v3.19.0-rc1~244^2).  Later we will download ISPC in specific
jobs.

Update a `RunCMake.NinjaMultiConfig` test expectation to account for
a change to the Qt deployed on Fedora 36.
2022-06-06 16:59:25 -04:00
Raul Tambre
4707ecbe6f CUDA: Support CMP0105 on Clang
Add link flags during the "device compile" step.

Enabled the relevant tests. The disable reasons regarding separable compilation
were outdated and the actual failure case was device link flags support.
2021-11-08 21:26:00 +02:00
Brad King
95f44e00cd Ninja Multi-Config: Fix custom command target dependencies in cross-configs
Generator expressions in a non-cross custom command's `COMMAND`
arguments are evaluated in the command config.  Target-level
dependencies implied by `TARGET_FILE` must therefore be cross
dependencies.  This is important to generate proper target-level
dependencies on the cross-config build statements for the target to
which the custom command is attached.

Fixes: #22855
2021-11-04 13:41:16 -04:00
Craig Scott
a742088472 Tests: Add support for testing Qt6
The minimum CMake version for Qt6 is 3.16, so all the calls to
cmake_minimum_required() are updated here to enforce that
minimum. This will avoid any CMake version-related warnings
from Qt.

Avoid hard-coding Qt5 where the tests could now be using
Qt5 or Qt6.

Fixes: #22188
2021-10-04 22:10:57 +11:00
Kyle Edwards
08131e83bc Tests: Clean up Ninja Multi-Config test from cb777dd 2021-07-23 13:22:59 -04:00
Brad King
cb777dd81e Ninja Multi-Config: Restore TARGET_OBJECTS support in cross-configs
Since commit 2ae72ef74b (Xcode: Enable multi-arch TARGET_OBJECTS genex
in [INTERFACE_]LINK_LIBRARIES, 2021-05-26, v3.21.0-rc1~126^2) the
TARGET_OBJECTS genex, when referenced for linking, is now evaluated with
EvaluateForBuildsystem enabled.  This causes the object file paths to be
computed with a buildsystem-specific placeholder for the configuration.

This is normally fine because the placeholder will be evaluated by the
native buildsystem tool using the proper configuration.  However, the
Ninja Multi-Config generator's `${CONFIGURATION}` placeholder may not
have the correct value for cross-config object files.  Switch back to
using the per-config location of each object file for this generator.

Fixes: #22436
2021-07-21 11:46:15 -04:00
NAKAMURA Takumi
63177678d0 Tests/RunCMake/Ninja.*: Sanitize NINJA_STATUS since we expect default behavior
FYI, NINJA_STATUS is "[%f/%t] " by default.
2021-06-28 10:38:05 -04:00
Brad King
4419b944fd Merge topic 'ninja-multi-long-command-line-config'
ad08f93ee4 Ninja Multi-Config: Split long command lines by config

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6067
2021-05-03 10:53:50 -04:00
Kyle Edwards
ad08f93ee4 Ninja Multi-Config: Split long command lines by config
Fixes: #22123
2021-04-30 14:46:21 -04:00
Brad King
fcafd30a5e Merge topic 'ninja-multi-custom-target-post-build'
f8e2a74712 Ninja Multi-Config: Correctly generate POST_BUILD custom targets

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6040
2021-04-26 11:25:46 -04:00
Kyle Edwards
f8e2a74712 Ninja Multi-Config: Correctly generate POST_BUILD custom targets
Fixes: #22096
2021-04-22 15:51:53 -04:00
Marc Chevrier
0c47b91fcc Genex: add_custom_command: DEPFILE supports genex
This facility is very useful for 'Ninja Multi-Config' and required
as well for future support of DEPFILE in 'Xcode' and 'Visual Studio'
generators (#20286).
2021-04-12 13:06:49 +02:00
Brad King
6dd89529e8 Ninja Multi-Config: Fix crash on custom command config with no output
With generator expressions in a custom command's `OUTPUT` and
`BYPRODUCTS`, it is possible to have no outputs at all for a particular
configuration.  Generate no rule in this case.

Fixes: #21989
2021-03-29 09:56:43 -04:00
Brad King
e21a80e97d Tests: Teach RunCMake to ignore incidental 'Recompacting log' ninja output
Ninja versions prior to 1.6.0 occasionally print this message.
2021-03-29 09:55:57 -04:00
Kyle Edwards
3b864b2583 Ninja Multi-Config: Include configs in long CC scripts
Fixes: #21973
2021-03-25 13:18:47 -04:00
Brad King
ccbedb80e4 Ninja Multi-Config: Restore rebuild_cache and edit_cache targets
Since commit dcf9f4d2f7 (Ninja Multi-Config: Add support for
cross-config custom commands, 2020-12-09) we were not generating these
targets.  Restore them and add a test.

Fixes: #21722
2021-01-25 15:22:53 -05:00
Kyle Edwards
98805a11ce Ninja Multi-Config: Run POST_BUILD when BYPRODUCTS don't overlap
Fixes: #21252
2021-01-07 11:26:17 -05:00
Brad King
92d7b456e5 Autogen: Add support for per-config sources
Fixes: #20682
2020-12-16 14:04:30 -05:00
Brad King
1526ae3aba Tests: Add cases for Ninja Multi-Config cross-config custom commands 2020-12-15 08:17:55 -05:00
Brad King
e0a7c0d40d Tests: Fix one RunCMake.NinjaMultiConfig case name
The CustomCommandGenerator `debug-in-release-graph-clean` case actually
cleans using the Debug graph.  This is intentional in order to test
cleaning only the Debug parts, so fix the test name rather than changing
what graph it uses.
2020-11-02 10:25:54 -05:00
Kyle Edwards
b8937a992b Merge branch 'release' into ninja-multi-per-config-sources 2020-10-26 15:43:57 -04:00
Kyle Edwards
d13bd6ec3d Ninja Multi-Config: Don't try to calculate dependencies for "all" 2020-10-26 15:37:04 -04:00
Brad King
5d952fd6e2 Merge topic 'ninja-multi-automoc-regression'
23fe4b861f Ninja Multi-Config: Fix dependencies of custom commands

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5238
2020-09-18 08:42:28 -04:00
Kyle Edwards
23fe4b861f Ninja Multi-Config: Fix dependencies of custom commands
a9fd3a10 addressed the scenario where the depending target is a
utility target, but not the scenario where the dependent target is
a utility target. Account for this scenario.

Also add a Qt-specific test case.

Fixes: #21118
2020-09-17 15:46:57 -04:00
Kyle Edwards
2a6471dd7b Merge branch 'master' into ninja-multi-automoc-regression 2020-09-02 14:39:04 -04:00
Kyle Edwards
a9fd3a107d Ninja Multi-Config: Fix dependencies of utility targets
Fixes: #21118
2020-09-02 12:59:59 -04:00
Kyle Edwards
c35d1927a5 Tests: Pass additional Qt information to Ninja and NMC tests 2020-09-01 16:58:58 -04:00
Joerg Bornemann
2cdaf43d96 Allow generator expressions in the EXCLUDE_FROM_ALL target property
This allows for setting EXCLUDE_FROM_ALL, conditional on the build
configuration. However, only the Ninja Multi-Config generator supports
different property values per config. All other multi-config
generators will yield an error in that situation.

Fixes: #20923
2020-07-21 17:16:26 +02:00
Brad King
8cf2e1de22 Merge topic 'ninja-multi-export-all-symbols'
6fc4bfa11c Ninja Multi-Config: Fix bug in CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Alex Reinking <alex_reinking@berkeley.edu>
Merge-request: !4825
2020-06-01 07:36:50 -04:00
Kyle Edwards
6fc4bfa11c Ninja Multi-Config: Fix bug in CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
Fixes: #20775
2020-05-29 15:28:43 -04:00
Brad King
99ab9212f0 Merge topic 'ninja-multi-install'
dddb4f02f7 Ninja Multi-Config: Make "install" targets depend on default configs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4778
2020-05-25 10:33:26 -04:00
Kyle Edwards
dddb4f02f7 Ninja Multi-Config: Make "install" targets depend on default configs
And add an "install:all" target.

Fixes: #20713
2020-05-22 13:15:50 -04:00
Brad King
4c7cc264af Tests: Restore NVCC-specific CUDA tests
In commit a653ca9504 (Tests: Update CUDA tests to work with Clang,
2020-03-27) some tests were conditioned using `CMAKE_CUDA_COMPILER_ID`.
That is not defined when configuring CMake itself, so it accidentally
turned off NVCC-specific CUDA tests altogether.  Convert the conditions
to check `CMake_TEST_CUDA` for `Clang` instead.  That option is added
explicitly to builds where we want the tests to run, so we can set it to
a value indicating the CUDA compiler vendor.

In commit a653ca9504 (Tests: Update CUDA tests to work with Clang,
2020-03-27) the NVCC-specific `CudaOnly.GPUDebugFlag` test was
accidentally broken by removing a space when appending `-G` to the CUDA
flags.  This was covered by the test not running.  Restore the space.

Fixes: #20727
2020-05-20 10:48:20 -04:00
Raul Tambre
a653ca9504 Tests: Update CUDA tests to work with Clang 2020-05-15 18:12:39 +03:00
Raul Tambre
e98588aaba CUDA: Add CUDA_ARCHITECTURES target property
Simplifies CUDA target architecture handling.

Required for Clang support as Clang doesn't automatically select a supported architecture.
We detect a supported architecture during compiler identification and set CMAKE_CUDA_ARCHITECTURES to it.

Introduces CMP0104 for backwards compatibility with manually setting code generation flags with NVCC.

Implements #17963.
2020-04-15 17:55:41 +03:00
Brad King
9871190dd7 Merge topic 'ninja-multi-custom-command-deps'
081c4679f7 Ninja Multi-Config: Don't build target dependencies for custom commands

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4423
2020-03-05 07:24:49 -05:00
Brad King
cf0dc5efbf Merge topic 'ninja-multi-custom-command-deps' into release-3.17
081c4679f7 Ninja Multi-Config: Don't build target dependencies for custom commands

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4423
2020-03-05 07:24:48 -05:00