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