Commit Graph

21456 Commits

Author SHA1 Message Date
Stephen Kelly
d5feb5b34c cmLocalGenerator: Populate variable mapping for all replacements
This reduces the final replacement to a simple query in the map, which
is much more readable than what was here before.
2016-10-15 11:25:12 +02:00
Stephen Kelly
efba22e1de cmLocalGenerator: Extract compiler option replacement from loop
There is no need to be in the loop.  Being there just adds to
complexity.
2016-10-15 11:25:12 +02:00
Stephen Kelly
b29425f7aa cmLocalGenerator: Populate a container of mappings for replacements
The same variables are replaced/retrieved from cmMakefile again and
again.  Use a container so that they don't have to be retrieved
repeatedly, and to simplify the nested loop.
2016-10-15 11:25:12 +02:00
Stephen Kelly
f009d8f5e2 cmLocalGenerator: Move compiler option handling to be more direct 2016-10-15 11:25:12 +02:00
Stephen Kelly
6cd27a853a cmLocalGenerator: Move variable to where it can be used easily 2016-10-15 11:25:12 +02:00
Stephen Kelly
8b0e479568 cmLocalGenerator: Use the language from the compiler container
This is just to make follow-up diffs smaller.
2016-10-15 11:25:12 +02:00
Stephen Kelly
88016e2e9f cmLocalGenerator: Introduce a container of compiler names
Use it to determine when a rule replacement should gain extra options.
2016-10-15 11:25:12 +02:00
Stephen Kelly
be87cb0c44 cmLocalGenerator: Simplify loop with range algorithm 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
Brad King
a8513d8a80 Merge topic 'vs-host-x64-tools'
d079e71c VS: Provide an option to use x64 host tools
779939a0 Help: Document VS and Xcode toolset selection
2016-10-14 09:25:34 -04:00
Brad King
d079e71c29 VS: Provide an option to use x64 host tools
Visual Studio provides toolchains that are themselves built for 32-bit
or 64-bit host architectures.  By default it uses the 32-bit tools, but
it can be told to prefer the 64-bit tools on 64-bit hosts.  Extend the
`CMAKE_GENERATOR_TOOLSET` specification to provide a way to request
use of the 64-bit host tools.

Closes: #15622
2016-10-14 09:22:26 -04:00
Brad King
eb923da2c4 Merge topic 'flush-archive-list'
39b08858 cmSystemTools: Flush output buffer for list_item_verbose
2016-10-14 09:02:51 -04:00
Brad King
8b496672fe Merge topic 'st2-exclude-patterns-variable'
19ffc072 Sublime: Exclude build tree from source tree project only optionally
2016-10-14 09:02:45 -04:00
Brad King
dabd177922 Merge topic 'ninja-framework-POST_BUILD'
20278872 Ninja: Fix POST_BUILD commands on macOS Frameworks
2016-10-14 09:02:43 -04:00
Brad King
03622ee2d0 Merge topic 'ninja-rc-regression'
9977899d Ninja: Fix RC language depfile generation with cmcldeps
2016-10-14 09:02:40 -04:00
Brad King
f0579e2fda Merge topic 'LINK_WHAT_YOU_USE-allow-OFF'
2f79b22c Merge branch 'backport-LINK_WHAT_YOU_USE-allow-OFF' into LINK_WHAT_YOU_USE-allow-OFF
33cb0173 Honor LINK_WHAT_YOU_USE when set to OFF
933e54d3 Honor LINK_WHAT_YOU_USE when set to OFF
2016-10-14 09:02:36 -04:00
Kitware Robot
4c921e5c7b CMake Nightly Date Stamp 2016-10-14 00:01:08 -04:00
Brad King
20278872e3 Ninja: Fix POST_BUILD commands on macOS Frameworks
The condition added by commit v2.8.12~179^2 (OS X: Fix regression
handling frameworks for Ninja, 2013-07-16) for excluding use of
versioning symlinks on macOS Frameworks must match that used for
POST_BUILD selection.  Otherwise we place the POST_BUILD commands after
a symlink step that is never added.

Closes: #16363
2016-10-13 14:04:12 -04:00
Jamie Snape
33cb0173d5 Honor LINK_WHAT_YOU_USE when set to OFF
Explicitly setting variable CMAKE_LINK_WHAT_YOU_USE or property
LINK_WHAT_YOU_USE to OFF should not cause LWYU to run.  Fix the
property lookup to use GetPropertyAsBool.
2016-10-13 13:34:35 -04:00
Ben Boeckel
9977899df2 Ninja: Fix RC language depfile generation with cmcldeps
In commit v3.7.0-rc1~275^2 (Ninja: Use full path for all source files,
2016-08-05), the source path was changed to use an absolute path.
Inside of `cmcldeps` for `.rc` file compilation, it uses a separate
argument for the path to the source file.  This ended up causing
`cmcldeps` to transform the following call:

    cmcldeps.exe RC source.rc ... C:/full/path/to/source.rc

into:

    ... C:/full/path/to//Tc source.rc

which is invalid.  Update the source filename to use the full path to
the source file so that the path is replaced properly.
2016-10-13 13:03:57 -04:00
Dāvis Mosāns
39b08858f6 cmSystemTools: Flush output buffer for list_item_verbose
When `std::cout` and `FILE *stdout` are used at same time need to
explicitly flush otherwise they can be out of sync.
2016-10-13 09:24:45 -04:00
Brad King
9273eed404 Merge topic 'msbuild-json'
ccdc3d30 Add a script to convert from MSBuild XML to a JSON format
2016-10-13 09:03:32 -04:00
Brad King
1b592b6458 Merge topic 'vs-default-generator'
5380948f cmake: Fix default VS generator selection for Microsoft Build Tools
1aee54ed cmake: Simplify default generator search by switching direction
24c86e1c cmake: Use array iteration for default generator VS variants
6db64ad4 cmake: Use array iteration for default generator list
d3df00ae cmake: Rename default generator selection list variable
10160f69 cmake: Rename default generator selection internal variable
0838d20e cmake: Simplify VS registry entry lookup
8f33de92 cmake: Factor out default generator selection into helper
2016-10-13 08:26:07 -04:00
Brad King
2be36b0ab5 Merge topic 'remove-obsolete'
b6a174d2 Makefiles: Remove query for CMAKE_OBJECT_NAME
d0faa58a Makefiles: Remove forbidden flag logic
2016-10-13 08:25:58 -04:00
Brad King
3b07c58dbd Merge topic 'vs15-separate-flag-table'
b1d67ae8 VS: Split flag table between v140 and v141 toolsets
2016-10-13 08:25:52 -04:00
Brad King
0123500309 Merge topic 'cmake-gui-fix-extra-generator-names'
bf86012a cmake-gui: Fix "extra" generator entries in drop-down list
2016-10-13 08:25:49 -04:00
Kitware Robot
429cc18fca CMake Nightly Date Stamp 2016-10-13 00:01:04 -04:00
Don Olmstead
ccdc3d300f Add a script to convert from MSBuild XML to a JSON format
This will supersede the `cmparseMSBuildXML.py` script once we have
support for loading the JSON files instead of using hard-coded flag
tables.
2016-10-12 14:40:18 -04:00
Bruno Pedrosa
19ffc0729f Sublime: Exclude build tree from source tree project only optionally
Create a `CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE` variable to control
addition of the build tree to `folder_exclude_patterns` in the
`.sublime-project`.  Change the default of this behavior to OFF.

Closes: #16351
2016-10-12 12:38:00 -04:00
Kitware Robot
8eb6038d0d CMake Nightly Date Stamp 2016-10-12 00:01:04 -04:00
Brad King
5380948fae cmake: Fix default VS generator selection for Microsoft Build Tools
Some versions of the VS tools do not install the registry entry

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\$v;InstallDir

but all appear to set

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\$v\Setup\VC;ProductDir

Update our search to consider both entries.

Closes: #16360
2016-10-11 13:39:58 -04:00
Brad King
1aee54ed87 cmake: Simplify default generator search by switching direction
Search from newest to oldest and stop once found.
2016-10-11 13:32:33 -04:00
Brad King
24c86e1c3f cmake: Use array iteration for default generator VS variants 2016-10-11 13:19:01 -04:00
Brad King
6db64ad432 cmake: Use array iteration for default generator list 2016-10-11 13:17:48 -04:00
Brad King
d3df00ae53 cmake: Rename default generator selection list variable 2016-10-11 13:16:24 -04:00
Brad King
10160f691c cmake: Rename default generator selection internal variable 2016-10-11 11:50:56 -04:00
Brad King
0838d20e50 cmake: Simplify VS registry entry lookup 2016-10-11 11:46:45 -04:00
Brad King
8f33de92ba cmake: Factor out default generator selection into helper 2016-10-11 11:30:46 -04:00
Brad King
bf86012ada cmake-gui: Fix "extra" generator entries in drop-down list
Refactoring in commit v3.7.0-rc1~291^2~1 (Refactor extra generator
registration to use factories, 2016-07-20) accidentally switched
the order of the "extra - base" generator names to "base - extra".
Switch it back.  While this could affect all callers of the
`GetRegisteredGenerators` method, only cmake-gui actually used this
particular field.

Closes: #16359
2016-10-11 08:39:44 -04:00
Kitware Robot
2fb8e5b1c4 CMake Nightly Date Stamp 2016-10-11 00:01:06 -04:00
Stephen Kelly
4134030434 cmLinkLineComputer: Extract link libraries computation from cmLocalGenerator
Hide some methods which no longer need to be public.
2016-10-10 20:38:59 +02:00
Stephen Kelly
f03d446e96 cmLinkLineComputer: Move FrameworkPath computation from cmLocalGenerator
Add UseWatcomQuote state, and remove corresponding method parameters.
2016-10-10 20:38:59 +02:00
Stephen Kelly
3444105f9f cmLocalGenerator: Inline last use of local variable 2016-10-10 20:38:59 +02:00
Stephen Kelly
77c4202edc cmLinkLineComputer: Move RPath computation from cmLocalGenerator
Add state for Relink and populate it at the point of cmLinkLineComputer
initialization.  This allows removal of the parameter in go-between
methods.
2016-10-10 20:38:59 +02:00
Stephen Kelly
09b6cc66b0 cmLinkLineComputer: Move LinkPath computation from cmLocalGenerator
Add a ConvertToOutputForExisting method which can be made virtual later
to satisfy different generator needs.

Pass additional strings as parameters for now.  They can be turned into
class state later.
2016-10-10 20:38:58 +02:00
Stephen Kelly
0c97806325 cmLinkLineComputer: Move ComputeLinkLibs from cmLocalGenerator
Add a cmOutputConverter to the cmLinkLineComputer and factory methods to
facilitate shell escapes.

Add state to the cmLinkLineComputer to record whether outputting for
response files or for watcom, to satisfy the cmOutputConverter API.
These are constant for the lifetime of the cmLinkLineComputer, even when
its functionality is extended in the future.  This also keeps the
signatures of cmLinkLineComputer relatively simple.

Pass the cmComputeLinkInformation as a method parameter so that
cmLinkLineComputer is free from target-specific state.  An instance
should be usable for all targets in a directory.
2016-10-10 20:38:58 +02:00
Stephen Kelly
0152a01f11 cmLocalGenerator: Move variable to where it is used 2016-10-10 20:38:57 +02:00
Stephen Kelly
011e6870e4 cmLocalGenerator: Use a std::string instead of char* 2016-10-10 20:38:56 +02:00
Stephen Kelly
cbca80f351 cmLocalGenerator: Move stringstream to where it is used 2016-10-10 20:38:56 +02:00
Stephen Kelly
d48f69d0f5 cmLocalGenerator: Move flag determination up in the function
This content is independent of any targets.
2016-10-10 20:38:55 +02:00