Commit Graph

32620 Commits

Author SHA1 Message Date
Brad King
50876f6b9a cmArgumentParser: Add structure to capture operational results
Create a way for the parser to record errors or incidental information
about the argument parsing operation that clients can inspect afterward.
Offer clients a way to hold the structure as part of their arguments
structure.
2022-07-22 10:32:18 -04:00
Brad King
5955ec1992 cmArgumentParser: Store keyword action map with explicit name 2022-07-22 10:32:17 -04:00
Brad King
119e1f7fbc cmArgumentParser: Factor out common static/dynamic implementation 2022-07-22 10:32:08 -04:00
Brad King
84b335c286 cmArgumentParser: Track pending keyword explicitly
Avoid allocating missing keyword vector unnecessarily.
2022-07-20 16:03:13 -04:00
Brad King
a77b9c0ece cmArgumentParser: De-duplicate parse loop 2022-07-20 16:03:13 -04:00
Brad King
197ef69aa1 cmArgumentParser: Simplify internal method signatures
Record `Parse` parameters during construction of the internal instance
instead of passing them to every method.
2022-07-20 16:03:12 -04:00
Brad King
e98fd9d87e cmFileCommand: Use cm::optional for keyword argument presence 2022-07-20 16:03:12 -04:00
Brad King
31d7aa5e3c cmCMakePathCommand: Use cm::optional for keyword argument presence 2022-07-20 16:03:12 -04:00
Brad King
316960ded0 cmInstallCommand: Drop unused local variable 2022-07-20 16:03:12 -04:00
Kyle Edwards
5ef74c4053 Merge topic 'ninja-multi-compile-commands-duplicates'
a186c1aff6 Ninja Multi-Config: Deduplicate compile_commands.json for cross configs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Daniel Hannon <hello111f@gmail.com>
Merge-request: !7477
2022-07-18 10:19:43 -04:00
Kitware Robot
9590e3bd80 CMake Nightly Date Stamp 2022-07-18 00:01:14 -04:00
Kitware Robot
b1a0072d2a CMake Nightly Date Stamp 2022-07-17 00:01:07 -04:00
Kitware Robot
831757ead3 CMake Nightly Date Stamp 2022-07-16 00:01:08 -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
Kitware Robot
cc803ce680 CMake Nightly Date Stamp 2022-07-15 00:01:09 -04:00
Kyle Edwards
cf8fdf5e43 Merge topic 'export-try-compile-crash'
29c7546a61 cmGlobalGenerator: Only compute build files for all targets

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !7472
2022-07-14 09:56:04 -04:00
Kyle Edwards
b051fa5392 Merge topic 'vs-msb-8028'
d99d33d749 VS: Generate IntDir property for INTERFACE libraries

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7462
2022-07-14 09:54:46 -04:00
Kitware Robot
7fa5b3eecc CMake Nightly Date Stamp 2022-07-14 00:01:07 -04:00
Kyle Edwards
29c7546a61 cmGlobalGenerator: Only compute build files for all targets
If we're creating generation objects for imported targets only, we
don't need the export sets. Only compute build file generators
if generating for all targets.

Fixes: #23709
2022-07-13 11:34:34 -04:00
Kitware Robot
6a35e799fd CMake Nightly Date Stamp 2022-07-13 00:01:06 -04:00
Kitware Robot
2b37f48009 CMake Nightly Date Stamp 2022-07-12 00:01:06 -04:00
Kitware Robot
6212038992 CMake Nightly Date Stamp 2022-07-11 00:01:16 -04:00
Kitware Robot
8a32a96db6 CMake Nightly Date Stamp 2022-07-10 00:01:08 -04:00
Kitware Robot
6734c2af47 CMake Nightly Date Stamp 2022-07-09 00:01:09 -04:00
Jonas Fierlings
d99d33d749 VS: Generate IntDir property for INTERFACE libraries
This prevents MSBuild from complaining with warning MSB8028.

Fixes #23043
2022-07-08 16:47:01 +02:00
Brad King
974511a870 Merge topic 'command-arg-parser-maybe-empty'
f46b2e9142 cmArgumentParser: Model maybe-missing string with wrapper type
e6d1e29ffa cmArgumentParser: Model maybe-empty and non-empty lists with wrapper types

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7459
2022-07-08 09:06:52 -04:00
Brad King
cf043b9150 Merge topic 'xcode_swift_definitions'
5cb625eb2f Xcode: Pass compile definitions to Swift

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7388
2022-07-08 09:02:08 -04:00
Kitware Robot
c4cdd7a24d CMake Nightly Date Stamp 2022-07-08 00:01:08 -04:00
Brad King
f46b2e9142 cmArgumentParser: Model maybe-missing string with wrapper type
Bindings to `std::string` require one value.  Some clients have been
filtering `keywordsMissingValue` to support keywords that tolerate a
missing value.  Offer them a type-safe way to achieve this instead.
2022-07-07 09:49:04 -04:00
Brad King
e6d1e29ffa cmArgumentParser: Model maybe-empty and non-empty lists with wrapper types
Previously bindings to `std::vector<std::string>` required at least one
value.  Some clients have been filtering `keywordsMissingValue` to
support keywords followed by empty lists.  Instead, require clients to
specify whether a keyword's list can be empty as part of the binding
type.
2022-07-07 09:48:58 -04:00
Brad King
4c50f639c7 Merge topic 'cpp-named-module-export-infra'
f62c3c3c72 RunCMake/CXXModules: test public modules requiring private modules
c5d4dd713f RunCMake/CXXModules: add tests which export BMIs
4d55f1422e RunCMake/CXXModules: test installation of BMIs and interfaces
eff45f790d RunCMake/CXXModules: fix example follow-on case names
a87c39dad1 RunCMake/CXXModules: output example test output upon failure
727e3db07a RunCMake/CXXModules: append to the test options
f899563ae4 cmGlobalNinjaGenerator: verify that private sources stay private
9ecd3e771b cmGlobalNinjaGenerator: generate install rules for BMI files
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Acked-by: Alex <leha-bot@yandex.ru>
Merge-request: !7224
2022-07-07 09:25:55 -04:00
Brad King
d21b391cde Merge topic 'file-TIMESTAMP-relative-path'
733801b57f file(TIMESTAMP): Interpret relative paths w.r.t. the source tree

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7440
2022-07-07 09:22:11 -04:00
Brad King
3b1d54506f Merge topic 'generator-makefiles-deps-messages-VERBOSE'
9480ced81a Makefiles generator: dependencies messages in verbose mode

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7456
2022-07-07 09:14:23 -04:00
Brad King
e5530f3d97 Merge topic 'ccmake-fix-pdcurses-windows'
a78d10220c ccmake: Fix mangled configuration log with PDCurses on Windows

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7458
2022-07-07 09:13:13 -04:00
Brad King
24631689f0 Merge topic 'genex-LINK_LIBRARY-check-supported-properties'
913ea78d7a Genex LINK_LIBRARY and LINK_GROUP: check supported properties

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !7454
2022-07-07 09:07:01 -04:00
David Geldreich
5cb625eb2f Xcode: Pass compile definitions to Swift
correct Xcode generator Swift definitions
original code was defining GCC_PREPROCESSOR_DEFINITIONS which is valid only for C languages
add definitions to SWIFT_ACTIVE_COMPILATION_CONDITIONS when Swift language is used in the target
add test in SwiftOnly
for old Xcode (<8.0), append defines to cflags so it ends up in OTHER_SWIFT_FLAGS

Fixes: #23637
2022-07-07 15:00:32 +02:00
Kitware Robot
f0bb74765a CMake Nightly Date Stamp 2022-07-07 00:01:08 -04:00
Duncan Ogilvie
a78d10220c ccmake: Fix mangled configuration log with PDCurses on Windows
This fix seems to work on both Windows and Ubuntu (WSL).

Issue: #18053
2022-07-06 12:14:47 -04:00
Marc Chevrier
9480ced81a Makefiles generator: dependencies messages in verbose mode
Fixes: #23689
2022-07-06 17:40:08 +02:00
Ben Boeckel
f899563ae4 cmGlobalNinjaGenerator: verify that private sources stay private
Private source files are not installed or made available, so they must
not be required by public module interface units at all.
2022-07-06 11:37:51 -04:00
Ben Boeckel
9ecd3e771b cmGlobalNinjaGenerator: generate install rules for BMI files 2022-07-06 11:37:50 -04:00
Ben Boeckel
89f39b6539 cmGlobalNinjaGenerator: generate module property files for each target export 2022-07-06 11:33:16 -04:00
Marc Chevrier
913ea78d7a Genex LINK_LIBRARY and LINK_GROUP: check supported properties
Refines check for properties supporting these genex.
Enhance error message.

Fixes: #23699
2022-07-06 16:15:43 +02:00
Ben Boeckel
cf847617be cmGlobalNinjaGenerator: verify generated objects against filesets 2022-07-06 10:15:23 -04:00
Ben Boeckel
fddd44c897 cmNinjaTargetGenerator: write out BMI install information for the collator 2022-07-06 10:15:23 -04:00
Ben Boeckel
95402a0bd7 cmNinjaTargetGenerator: write out export information for the collator
The collator will use this to know where the target's export information
needs to go so that module properties may be provided.
2022-07-06 10:15:23 -04:00
Ben Boeckel
d3e2e61bcd cmNinjaTargetGenerator: write out fileset information for the collator
The collator will use this to generate property settings for the
imported targets in the build and install export sets.
2022-07-06 10:15:23 -04:00
Ben Boeckel
48502a3781 cmExperimental: update CXX_MODULE_CMAKE_API UUID
The set of features available has been expanded, so update the UUID.
2022-07-06 10:15:23 -04:00
Ben Boeckel
3526b8c123 cmExport*FileGenerator: support exporting C++ module properties
C++ module properties will be generated at build time, so generate code
that includes the files actually responsible for the information.
2022-07-06 10:15:23 -04:00
Ben Boeckel
fe44cbe9e7 exports: support CXX_MODULES_DIRECTORY
This directory will be used to store build-discovered information about
targets such as the modules provided by the files in the relevant
`FILE_SET` types.

A directory is used because basing the name on a `<FILE_NAME>-*.cmake`
pattern makes it end up being globbed in the configuration-dependent
information mechanism. Since old modules and targets may be around,
unconditionally including them may refer to targets that do not actually
exist.
2022-07-06 10:15:23 -04:00