Commit Graph

492 Commits

Author SHA1 Message Date
Daniel Pfeifer
c3800e5458 cmAlgorithms: add cmEraseIf function 2017-02-10 23:04:32 +01:00
Mike Gelfand
1b63ce865e Makefiles: Make fast local and strip install truly fast
When using a Makefiles generator, `install/local/fast` and
`install/strip/fast` targets are not at all fast.  They depend on
`install/local` and `install/strip` targets respectively instead of
`preinstall/fast` and don't contain any commands instead of repeating
commands in `install/local` and `install/strip`. The issue was
introduced by simple typos in commits v2.6.0~2825 (Adding install/local
global target for Makefile generators, 2006-08-29) and v2.6.0~1743 (add
install/strip target for makefile generators, 2007-05-18).
2017-01-13 09:16:16 -05:00
Robert Maynard
a92f8d9616 CUDA: Enable header dependency scanning. 2016-11-14 11:36:44 -05:00
Robert Maynard
ec6ce62335 CUDA: State that cuda has preprocessor output and can generate assembly.
We can consider PTX code to be a form of assembly.
2016-11-14 11:36:44 -05:00
Daniel Pfeifer
2e620f0b38 Fix several include-what-you-use findings 2016-11-08 09:42:04 -05: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
a91eaf3872 cmState: Port dependents to new cmStateTypes header 2016-10-19 15:40:59 +02:00
Stephen Kelly
a49751fb2e cmState: Move TargetType enum to separate namespace 2016-10-19 15:40:58 +02:00
Stephen Kelly
b59b6dd9d2 cmRulePlaceholderExpander: Port clients to direct-use
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.
2016-10-15 11:25:12 +02:00
Stephen Kelly
c75a9d6601 cmLocalGenerator: Use strings instead of a Target in rule replacement
Don't rely on the cmGeneratorTarget type needlessly.
2016-10-15 11:25:12 +02:00
Stephen Kelly
46ad0d2183 cmLocalGenerator: Use a converter in rule replacement API
The rule replacement API should not really be in cmLocalGenerator, but
it was historically, and this coupled many other things together here
too, such as output conversion.  Make the output converter a parameter
so that rule replacement can be removed from cmLocalGenerator.
2016-10-15 11:25:12 +02:00
Stephen Kelly
425cd1670f cmLocalGenerator: Remove the launcher from RuleVariables
This one is not like the others as it doesn't participate in
substitutions.  Keep ExpandRuleVariables doing only one thing and make
callers responsible for inserting a launcher prefix, simplifying the
code all-around.

Remove now-obsolete InsertRuleLauncher method.
2016-10-15 11:25:12 +02:00
Stephen Kelly
009019f259 Makefiles: Extract identical code from condition 2016-10-09 10:47:43 +02:00
Stephen Kelly
378849f41e Makefiles: Replace array access with local variable 2016-10-09 10:47:43 +02:00
Stephen Kelly
4a3c49b469 Makefiles: Separate two coupled calls 2016-10-09 10:47:43 +02:00
Brad King
b4fab15fc7 Merge topic 'nmake-encoding'
c666f8cb NMake: Use ANSI encoding for NMake Makefiles
f00214aa cmGeneratedFileStream: Add optional encoding support
bb1d3370 codecvt: Add class for encoding conversion
2016-10-07 09:22:08 -04:00
Stephen Kelly
1ed5f6b39b Makefiles: Introduce local RelativePath method
This makes it easier to remove directory-specific state from
cmOutputConverter where it doesn't belong.  Of course, this just
relocates the problem to the makefiles generator for now, but that's
better than affecting the core.
2016-10-06 20:02:08 +02:00
Dāvis Mosāns
c666f8cbc6 NMake: Use ANSI encoding for NMake Makefiles
Set ANSI encoding to cmGeneratedFileStream for use with NMake Makefile
generator.
2016-10-06 10:56:00 -04: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
Stephen Kelly
ad79061720 Convert: Inline uses of START_OUTPUT 2016-09-19 21:36:14 +02:00
Stephen Kelly
dc51091944 Common: Use a string instead of enum for WorkingDirectory 2016-09-19 21:36:14 +02:00
Stephen Kelly
1825f876a7 Convert: Move access to BinaryDirectory out of loops 2016-09-19 21:36:13 +02:00
Stephen Kelly
25c39ac28b Convert: Inline HOME_OUTPUT MAKERULE conversion 2016-09-19 21:36:13 +02:00
Stephen Kelly
e13e519e1c Convert: Move access to BinaryDirectory out of loops 2016-09-19 21:36:13 +02:00
Stephen Kelly
34c6e995f9 Convert: Avoid HOME_OUTPUT enum when converting to relative paths 2016-09-19 21:36:13 +02:00
Stephen Kelly
839c65bca0 Convert: Move access to CurrentBinaryDirectory out of loops 2016-09-19 21:36:12 +02:00
Stephen Kelly
21b5fdf9a3 Convert: Avoid START_OUTPUT enum when converting to relative paths 2016-09-19 21:36:12 +02:00
Daniel Pfeifer
efed6468ed fix a load of include-what-you-use violations 2016-09-03 08:04:56 -04:00
Stephen Kelly
58ba87f892 Convert: Replace Convert(FULL) with equivalent
This is more explicit than funnelling everything through the Convert
method.
2016-08-27 15:41:17 +02:00
Stephen Kelly
563ac22a16 Convert: Replace trivial conversion with new method 2016-08-27 15:26:37 +02:00
Stephen Kelly
08be47cf93 Convert: Replace UNCHANGED conversions with new API call 2016-08-27 15:26:37 +02:00
Stephen Kelly
95a659f180 Convert: Replace FULL conversions with equivalent 2016-08-27 15:26:37 +02:00
Stephen Kelly
ac46384171 Convert: Replace uses of Convert(NONE)
These are equivalent to ConvertToOutputFormat.
2016-08-27 15:26:36 +02:00
Stephen Kelly
ee49f006cf Makefiles: Replace ternaries with if()s 2016-08-27 15:21:24 +02:00
Stephen Kelly
51f7dcb0a5 Makefiles: Inline MakeLauncher into only caller 2016-08-27 15:21:24 +02:00
Stephen Kelly
ba4ba7c39d Makefiles: Simplify MakeLauncher return value
Bonus NRVO.
2016-08-27 15:21:24 +02:00
Stephen Kelly
e804d410cd Makefiles: Invert logic in MakeLauncher
Make it easier to inline into the caller.
2016-08-27 15:21:23 +02:00
Stephen Kelly
2722c4dcc5 Makefiles: Remove useless use of Convert
Convert with NONE and UNCHANGED is a no-op.
2016-08-27 15:21:14 +02:00
Stephen Kelly
112c87b28a Makefiles: Replace method with Wacom specific API
The existing method uses RelativeRoot NONE and FULL values.  In
principle, those should be segregated interfaces.  Mixing
NONE and FULL into the RelativeRoot enum is a case of

 http://thedailywtf.com/articles/What_Is_Truth_0x3f_
2016-08-27 15:16:50 +02:00
Stephen Kelly
cd351ef2c4 Makefiles: Deduplicate variable 2016-08-27 13:44:53 +02:00
Stephen Kelly
c341f4679a Makefiles: Change AppendCustomCommand API to strings
Avoid the RelativeRoot enum.  Supply the HOME_OUTPUT string at each
callsite to make the parameter non-defaulted.
2016-08-27 13:44:53 +02:00
Stephen Kelly
6960516b6b Makefiles: Change signature of AppendCustomCommand
The RelativeRoot parameter will become non-default.
2016-08-27 13:44:52 +02:00
Stephen Kelly
e0fd2d0446 Makefiles: Port CreateCDCommand to string-based API 2016-08-27 13:44:52 +02:00
Stephen Kelly
e3ca17e13b Makefiles: Use string overload of ConvertToOutputForExisting
The string is already determined so, no need to call the overload to
determine it again.
2016-08-27 13:44:52 +02:00
Stephen Kelly
0bbdbd95c9 Makefiles: Rename local variable
In this context, 'ret' means 'return', but I don't really know what that
means.  It is not consistent with types and other variables used in the
vicinity for these things.
2016-08-27 13:44:52 +02:00
Brad King
b5ec5b0901 Avoid using KWSys auto_ptr by adopting it ourselves
Replace use of cmsys::auto_ptr with a CM_AUTO_PTR macro that maps to
our own implementation adopted from the KWSys auto_ptr implementation.
Later we may be able to map CM_AUTO_PTR to std::auto_ptr on compilers
that do not warn about it.

Automate the client site conversions:

    git grep -l auto_ptr -- Source/ | grep -v Source/kwsys/ | xargs sed -i \
      's|cmsys::auto_ptr|CM_AUTO_PTR|;s|cmsys/auto_ptr.hxx|cm_auto_ptr.hxx|'
2016-06-29 09:47:58 -04:00
Daniel Pfeifer
1d6909a287 use CM_NULLPTR 2016-06-28 09:02:26 -04:00
Daniel Pfeifer
191fc3a0f3 cmOutputConverter: remove unused 'local' argument 2016-06-20 23:03:28 +02:00
Brad King
0392f72bef Refactor Makefile/Ninja tool working directory storage
Move cmCommonTargetGenerator::WorkingDirectory to cmLocalCommonGenerator
and add an access method.
2016-06-17 14:22:28 -04:00
Daniel Pfeifer
7f6b8d3399 Simplify boolean expressions
Use clang-tidy's readability-simplify-boolean-expr checker.
After applying the fix-its, revise all changes *very* carefully.
Be aware of false positives and invalid changes.
2016-06-02 08:24:04 -04:00