Commit Graph

148 Commits

Author SHA1 Message Date
Marc Chevrier a71caab46b LINK_DIRECTORIES: Add new properties and commands
These new capabilities enable to manage link directories

Two new properties:
* target properties: LINK_DIRECTORIES and INTERFACE_LINK_DIRECTORIES

One new command
* target_link_directories(): to populate target properties

Fixes: #17215
2018-09-25 23:59:58 +10:00
Marc Chevrier 53ad52d66d LINK_OPTIONS: Add missing initialization actions 2018-09-17 16:42:37 +02:00
Vitaly Stakhovsky 13d10ee616 cmState::GetInitializedCacheValue: Return as const std::string* 2018-09-10 09:31:48 -04:00
Brad King 0aab59809c Merge topic 'gicv-stdstring'
46855d000f cmCacheManager::GetInitializedCacheValue(): Return as const std::string*

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2357
2018-09-10 08:00:41 -04:00
Vitaly Stakhovsky 46855d000f cmCacheManager::GetInitializedCacheValue(): Return as const std::string*
Expose std::string type used internally instead of const char*
2018-09-06 12:49:57 -04:00
Vitaly Stakhovsky 437d0c16c7 cmStateSnapshot::GetDefinition(): Return std::string const*
Expose std::string type used internally in cmDefinitions instead of const char*
2018-09-05 20:08:17 -04:00
Brad King 7b148e7a30 Merge topic 'state-reset-glob'
6f3b9e8b95 cmState: Clear GlobVerificationManager state on Reset

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2278
2018-08-24 13:34:06 -04:00
Shane Parris 6f3b9e8b95 cmState: Clear GlobVerificationManager state on Reset
It should not persist across multiple configure rounds.

Fixes: #18208
2018-08-09 13:03:50 -04:00
Marc Chevrier c1f5a44b28 LINK_OPTIONS: Add new family of properties
This family enable to manage link flags

Three new properties:
* directory property: LINK_OPTIONS
* target properties: LINK_OPTIONS and INTERFACE_LINK_OPTIONS

Two new commands
* add_link_options(): to populate directory property
* target_link_options(): to populate target properties

Fixes: #16543
2018-06-06 17:22:39 +02:00
Florian Jacomme b1a05d6c76 Revise implementation of case-insensitive command names
Store both the as-written and lower-case command names and use
the latter to avoid case-insensitive string comparisons.

With this I obtain 2-6% speed increase (on Windows) for the configure
step with no significant changes in memory usage.  A case-insensitive
comparison is a lot slower than just calling `==` because the operator
will use things like memcmp, so prefer the latter.

The `cmSystemTools::LowerCase` function allocates a new string each time
it is called, so before this change we were allocating in:

* cmMakefile::Configure two times for each function
  (to look for `cmake_minimum_required` and `project`)
* cmMakefile::ExecuteCommand twice by function by calling
  cmState::GetCommand and copying the name

Now we are only allocating once by function instead of four.
2018-05-22 10:56:24 -04:00
Shane Parris 599c93e22d Add cmGlobVerificationManager class, integrate with cmake and cmState 2018-03-29 10:58:03 -04:00
Pavel Solodovnikov 653b894683 Reduce raw string pointers usage.
* Change some functions to take `std::string` instead of
  `const char*` in the following classes: `cmMakeFile`, `cmake`,
  `cmCoreTryCompile`, `cmSystemTools`,  `cmState`, `cmLocalGenerator`
  and a few others.
* Greatly reduce using of `const char*` overloads for
  `cmSystemTools::MakeDirectory` and `cmSystemTools::RelativePath`.
* Remove many redundant `c_str()` conversions throughout the code.
2018-01-31 18:23:03 +03:00
Kyle Edwards a9c483071e cmCacheManager: Truncate values containing newlines
Fixes #16098.
2018-01-15 09:27:44 -05:00
Pavel Solodovnikov 7d5095796a Meta: modernize old-fashioned loops to range-based for.
Changes done via `clang-tidy` with some manual fine-tuning
for the variable naming and `auto` type deduction
where appropriate.
2017-09-12 16:22:47 +03:00
Daniel Pfeifer 190e3825d4 Replace C-style casts 2017-08-27 09:58:46 +02:00
Daniel Pfeifer 5962db4389 Use C++11 nullptr 2017-08-24 23:39:47 +02:00
Daniel Pfeifer b1ec5deaf1 Pass large types by const&, small types by value 2017-06-04 00:48:21 +02:00
Daniel Pfeifer a1218f59d9 cmCommand: remove unused methods from interface and all implementations 2017-05-11 19:49:06 +02:00
Daniel Pfeifer 4ba25a823e cmState: separate builtin and scripted commands 2017-05-11 19:49:06 +02:00
Daniel Pfeifer a44dab461f cmState: introduce method for adding scripted commands 2017-05-11 19:49:06 +02:00
Daniel Pfeifer 587084052b cmState: introduce methods for adding builtin commands 2017-05-11 19:49:06 +02:00
Daniel Pfeifer da8faa8c7e cmState: remove RemoveUnscriptableCommands 2017-05-08 22:58:01 +02:00
Daniel Pfeifer 1d829c862c Use quotes for non-system includes
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'
2017-04-11 22:35:21 +02:00
Bastien Schatt 38fd5866c0 Add GENERATOR_IS_MULTI_CONFIG global property
Fixes: #16768
2017-04-04 09:49:00 -04:00
Daniel Pfeifer 2988abd939 clang-tidy: apply modernize-use-bool-literals fixes 2016-12-12 14:04:14 -05:00
Daniel Pfeifer 2e620f0b38 Fix several include-what-you-use findings 2016-11-08 09:42:04 -05:00
Daniel Pfeifer 15aa814b85 Remove cmObject.h and cmTypeMacro.h 2016-10-24 21:49:28 +02:00
Daniel Pfeifer 9855ebf11a Make cmCommand not inherit from cmObject 2016-10-23 00:45:08 +02:00
Stephen Kelly e0a84904eb cmState: Split auxiliary classes into separate files
Port dependents to the new locations as needed.

Leave behind a cmState.h include in cmListFileCache to reduce noise. It
is removed in a following commit.
2016-10-19 15:40:59 +02:00
Stephen Kelly a9bf981a4c cmState: Move Snapshot type to separate namespace
Leave behind a typedef to avoid porting dependent code in this commit.
2016-10-19 15:40:58 +02:00
Stephen Kelly 34bcec39c6 cmState: Move Directory class to separate namespace
Leave behind a typedef to avoid porting dependent code in this commit.
2016-10-19 15:40:58 +02:00
Stephen Kelly 2fe3e55d53 cmState: Move CacheEntryType enum to separate namespace
Port dependent code to the change.
2016-10-19 15:40:58 +02:00
Stephen Kelly a49751fb2e cmState: Move TargetType enum to separate namespace 2016-10-19 15:40:58 +02:00
Stephen Kelly 0060391dff cmState: Move SnapshotType enum to separate namespace 2016-10-18 21:28:46 +02:00
Stephen Kelly 5bc964eddb cmState: Move PositionType to separate namespace
Remove friend declarations supporting it being a nested type.
2016-10-18 21:28:46 +02:00
Stephen Kelly 2dc4099648 cmState: Move PolicyStackEntry to separate namespace 2016-10-18 21:28:45 +02:00
Stephen Kelly cb40af5d6f cmState: Move SnapshotDataType to separate namespace 2016-10-18 21:28:45 +02:00
Stephen Kelly 1205f75e3b cmState: Move nested struct into separate top-level namespace
Add a friend declaration to give the struct access to
cmState::PositionType.  This will be removed when that type is also
extracted.
2016-10-18 21:28:45 +02:00
Brad King 86578eccf2 Simplify CMake per-source license notices
Per-source copyright/license notice headers that spell out copyright holder
names and years are hard to maintain and often out-of-date or plain wrong.
Precise contributor information is already maintained automatically by the
version control tool.  Ultimately it is the receiver of a file who is
responsible for determining its licensing status, and per-source notices are
merely a convenience.  Therefore it is simpler and more accurate for
each source to have a generic notice of the license name and references to
more detailed information on copyright holders and full license terms.

Our `Copyright.txt` file now contains a list of Contributors whose names
appeared source-level copyright notices.  It also references version control
history for more precise information.  Therefore we no longer need to spell
out the list of Contributors in each source file notice.

Replace CMake per-source copyright/license notice headers with a short
description of the license and links to `Copyright.txt` and online information
available from "https://cmake.org/licensing".  The online URL also handles
cases of modules being copied out of our source into other projects, so we
can drop our notices about replacing links with full license text.

Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
of the replacements mechanically.  Manually fix up shebang lines and trailing
newlines in a few files.  Manually update the notices in a few files that the
script does not handle.
2016-09-27 15:14:44 -04:00
Brad King d0be1e15c3 Add directory properties to get source and binary directories
Add SOURCE_DIR and BINARY_DIR directory properties that return the
absolute paths to the corresponding directories.  These correspond
to the target properties of the same names that we already have.
2016-09-19 14:00:50 -04:00
Brad King cbca65826c Add directory property to list buildsystem targets
Add a BUILDSYSTEM_TARGETS property to allow project code to traverse
the list of its own targets in a given directory.
2016-09-19 14:00:32 -04:00
Brad King 7a4b8d0dc2 Add a directory property to list subdirectories
Add a SUBDIRECTORIES directory property to allow project code to
traverse the directory structure of itself as CMake sees it.
2016-09-19 13:59:43 -04:00
Brad King 089868a244 cmState: Record buildsystem target names in each directory
Maintain in the directory state the list of target names added to be
built.  These are normal, non-imported targets (but do include INTERFACE
libraries).
2016-09-19 10:55:18 -04:00
Daniel Pfeifer 6afd35b98a cmState: remove unused code
Remove the code that was used by cmOutputConverter exclusively.
2016-09-17 19:49:21 +02:00
Daniel Pfeifer 7b6349da4d CMake: don't use else after return 2016-08-18 20:36:29 +02:00
Daniel Pfeifer a2af850ba6 fix a batch of include-what-you-use violations 2016-08-17 01:08:13 +02:00
Dāvis Mosāns b1f87a50b3 Use better KWSys SystemTools::GetEnv and HasEnv signatures 2016-07-18 09:51:01 -04:00
Daniel Pfeifer 1d6909a287 use CM_NULLPTR 2016-06-28 09:02:26 -04:00
Tobias Hunger 63c0e92c93 cmState: Expose list of properties of values in the cache 2016-06-10 09:33:41 -04:00
Brad King fb1f5d50af Merge topic 'remove-needless-copies'
27ead963 Remove unnecessary local copies.
618fb23f Pass arguments that are not modified as const&.
2016-05-27 09:08:21 -04:00