Commit Graph

649 Commits

Author SHA1 Message Date
Bruno Manganelli
b6a957c969 cmOutputConverter: move ConvertToRelativePath to cmStateDirectory. 2019-01-27 15:48:57 +00:00
Brad King
bd3685b6cf Merge topic 'vs-debug-utility-targets'
22b43b0009 VS: Add support for VS_DEBUGGER_* properties on custom targets

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2794
2019-01-17 11:07:11 -05:00
Brad King
9e3e93fc6f Merge topic 'fix_csharp_defines'
a541d113e6 VS: Honor target_compile_definitions for C# projects

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2809
2019-01-17 11:06:04 -05:00
Nils Gladitz
22b43b0009 VS: Add support for VS_DEBUGGER_* properties on custom targets
Visual studio itself supports the corresponding `LocalDebugger*`
properties on utility targets; support generating them from CMake as
well.
2019-01-16 10:21:01 -05:00
Bruno Manganelli
cc2a5261f8 Factor out enum MessageType into dedicated header
Reduce the number of files relying on `cmake.h`.
2019-01-16 08:16:31 -05:00
Wil Stark
a541d113e6 VS: Honor target_compile_definitions for C# projects
Fixes: #18698
2019-01-15 21:29:59 -08:00
Brad King
d7835e4d0e Merge topic 'fix-source-group-CMakeLists.txt'
77303314dc Restore support for a custom source group for CMakeLists.txt

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2803
2019-01-15 13:20:01 -05:00
Brad King
77303314dc Restore support for a custom source group for CMakeLists.txt
Since commit v3.11.0-rc1~467^2 (VS,Xcode: Add CMakeLists.txt sources
without mutating targets, 2017-10-18) we do not add `CMakeLists.txt` to
target sources but instead generate references to them directly.  This
accidentally dropped generation of the `.vcxproj.filters` entry for a
source group in which `CMakeLists.txt` is the only member.

Fixes: #18795
2019-01-14 08:43:30 -05:00
Wil Stark
5b1364a2e3 cmVisualStudio10TargetGenerator: Fix .NET Compact Framework projects.
Fixes: #18672
2019-01-11 09:08:55 -08:00
Wil Stark
5e4887e673 VS: Honor WinCE deployment properties in VS 2010+
Previously only VS 2008 was supported.
2019-01-10 13:06:25 -05:00
Brad King
e2d0da3366 Merge topic 'vs_deploy_content_fix'
b5b63da088 VS: Fix Deploy content in .csproj files

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2713
2018-12-13 10:03:52 -05:00
Wil Stark
ea3d60cffa VisualStudio10TargetGenerator: support C# refs with '.' in file name.
Fixes: #18696
2018-12-11 10:47:48 -08:00
Wil Stark
b5b63da088 VS: Fix Deploy content in .csproj files 2018-12-07 09:01:32 -08:00
Brad King
0780a8f57a Merge topic 'cuda-external'
7b74213461 CUDA: Fix crash on linking to a CUDA target without CUDA enabled

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2704
2018-12-06 08:39:22 -05:00
Brad King
7b74213461 CUDA: Fix crash on linking to a CUDA target without CUDA enabled
Do not try to device link or add CUDA runtime libraries if the language
is not enabled.

Fixes: #18673
Issue: #18614
2018-12-05 14:45:19 -05:00
Brad King
d955b4f753 Merge topic 'fix-custom-target-with-csharp'
9040df31e2 Merge branch 'backport-fix-custom-target-with-csharp'
1acd1c2b50 CSharp: Fix regression in VS project type selection for custom target
a56edad6d6 CSharp: Fix regression in VS project type selection for custom target

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2549
2018-11-01 07:36:39 -04:00
Brad King
a56edad6d6 CSharp: Fix regression in VS project type selection for custom target
A target created by `add_custom_target` should always be a `.vcxproj`
file even if it has `.cs` sources involved in custom commands and such.
The latter case was broken by refactoring in commit v3.12.0-rc1~160^2~7
(remove TargetIsCSharpOnly() and use methods from cmGeneratorTarget,
2018-03-19).  The reason is that the `HasLanguage` method added by
commit v3.12.0-rc1~239^2~6 (cmGeneratorTarget: add HasLanguage() as
wrapper for GetLanguages(), 2018-03-19) does not check the target type
and so is not a suitable check for deciding the project file extension.

The `HasLanguage` method was an attempt at an abstraction that turns
out not to work very well.  Replace it with a dedicated `IsCSharpOnly`
method that considers the target type, sources, and non-transitive
`LINKER_LANGUAGE`.

Fixes: #18515
2018-10-31 09:13:19 -04:00
Brad King
3793bed9df Merge topic 'vs-csharp-in-custom-target'
d004d8c59a VS: Fix crash on CSharp sources in a custom target

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2515
2018-10-24 10:40:24 -04:00
Brad King
35fe47bd5d Merge branch 'vs-csharp-in-custom-target' into release-3.13
Merge-request: !2515
2018-10-23 11:06:44 -04:00
Brad King
d004d8c59a VS: Fix crash on CSharp sources in a custom target
The target generator does not compute ClOptions for custom targets,
so we should not use them either.

Fixes: #18377, #18485
2018-10-23 10:58:42 -04:00
Brad King
f21d811c7c Merge topic 'gem-string'
b8bb6ba653 cmGeneratorTarget::GetExportMacro: return const std::string*

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2485
2018-10-17 13:26:33 -04:00
Vitaly Stakhovsky
b8bb6ba653 cmGeneratorTarget::GetExportMacro: return const std::string* 2018-10-16 11:12:19 -04:00
Vitaly Stakhovsky
1601388212 cmVisualStudio10TargetGenerator: Code improvement
Disallow incompletely initialized Elem objects
2018-10-14 18:32:53 -04:00
Brad King
4f289cdc1e Merge topic 'vs-cuda-pdb'
faf3d7d224 VS: Add workaround for CUDA compiler PDB location with space
592064e026 VS: Drop workaround for CUDA compiler PDB location on CUDA 9.2+
fb378fc4d7 Tests: Fix Cuda test project names

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2473
2018-10-11 07:41:42 -04:00
Brad King
bcfb245703 Merge branch 'vs-cuda-pdb' into release-3.13
Merge-request: !2473
2018-10-10 13:41:44 -04:00
Brad King
faf3d7d224 VS: Add workaround for CUDA compiler PDB location with space
CUDA Toolkit Visual Studio Integration for version 9.2 and above does
honor the `ClCompile.ProgramDataBaseFileName` field when telling `nvcc`
how to invoke `cl`.  Unfortunately it does not quote paths with spaces
correctly:

    -Xcompiler "... /Fd"C:\path\with space\foo.pdb" ..."

Work around this by converting the PDB location to a relative path.
Likely we could always do this, but for now make a minimal change
just for CUDA support.

Fixes: #18440
2018-10-10 13:29:47 -04:00
Brad King
592064e026 VS: Drop workaround for CUDA compiler PDB location on CUDA 9.2+
The workaround added by commit v3.12.0-rc1~227^2 (VS: Add workaround for
CUDA compiler PDB location, 2018-04-13) is not necessary on CUDA 9.2+
because the CUDA Toolkit Visual Studio Integration has fixed the
original bug and forwards the `ProgramDataBaseFileName` to the host
compiler itself.  Make the workaround conditional on the CUDA version.

Issue: #18440
2018-10-10 13:29:47 -04:00
Brad King
bb60ed6e72 VS: Add flag table entry for -Qspectre
Add special logic to map this flag to a top-level build setting
instead of being in ClCompile.

Fixes: #18426
2018-10-08 14:03:39 -04:00
Brad King
9fc3024f62 Merge topic 'fix-csharp-target-type'
375b420fdf CSharp: Fix regression in VS project type selection
8b21aa0af0 VS: Fix CSharp flag selection when linking to a static C++ library

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2427
2018-10-03 08:04:35 -04:00
Brad King
8b21aa0af0 VS: Fix CSharp flag selection when linking to a static C++ library
When a CSharp target links to a static C++ library, CMake will compute
the link language as C++ instead of CSharp.  That may be incorrect and
needs further investigation, but it does not affect how VS drives C#
linking.  However, it does break our flag language selection logic
and causes C++ flags to be used for CSharp.  In particular, this
drops the `-platform:x86` flag on 32-bit builds.

Fix this by always selecting the CSharp flags when generating a
`.csproj` project type.

Issue: #18239
2018-10-02 14:58:11 -04:00
Brad King
7162630bee Merge topic 'vs-ipo'
bef80e6623 VS: Do not specify incremental linking if LTCG is enabled
567fabe88e IPO: INTERPROCEDURAL_OPTIMIZATION (LTCG) for Visual Studio

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2363
2018-09-18 11:22:41 -04:00
Vitaly Stakhovsky
f4ff60a803 cmMakefile: Make GetSafeDefinition return std::string const& 2018-09-18 11:16:46 -04:00
Brad King
bef80e6623 VS: Do not specify incremental linking if LTCG is enabled
Otherwise the linker may warn:

    LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
2018-09-17 10:53:27 -04:00
Niels Dekker
567fabe88e IPO: INTERPROCEDURAL_OPTIMIZATION (LTCG) for Visual Studio
Add IPO support for Visual Studio (which is referred to by VS as
"Link Time Code Generation" and "Whole Program Optimization"), for
VS version >= 10.  This allows CMake/VS users to enable IPO by setting
property `INTERPROCEDURAL_OPTIMIZATION`.

Fixes: #16748
2018-09-17 10:53:10 -04:00
Brad King
1b57f49586 genex: Simplify cmGeneratorExpressionInterpreter
All callers were constructing with a non-empty target name using the
target whose pointer was passed anyway.  Drop this argument.  Simplify
logic accordingly.  Re-order constructor arguments to match the
cmCompiledGeneratorExpression::Evaluate arguments.

Also remove unnecessary getters.
2018-09-07 09:23:43 -04:00
Brad King
e1ebec55d4 Merge topic 'grd-stdstring'
4d89830d71 cmMakefile: Make GetRequiredDefinition return std::string

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2347
2018-09-06 09:54:56 -04:00
Brad King
3ecbe1987d Merge topic 'isonoff-cstr'
6f16be6a62 Remove unnecessary c_str() calls

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2346
2018-09-06 09:54:18 -04:00
Vitaly Stakhovsky
4d89830d71 cmMakefile: Make GetRequiredDefinition return std::string
In all cases the return value is converted to std::string anyway.

Also remove unnecessary `c_str()` calls in arguments to
`GetRequiredDefinition`.
2018-09-05 15:15:55 -04:00
Vitaly Stakhovsky
6f16be6a62 Remove unnecessary c_str() calls
Use the new IsOn(),IsOff() overloads.
2018-09-05 15:12:57 -04:00
Brad King
b6524f6f34 Merge topic 'vs-CMakeLists.txt'
0b82e68f2f VS: Restore CMakeLists.txt references in each target

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2349
2018-09-05 14:35:46 -04:00
Brad King
0b82e68f2f VS: Restore CMakeLists.txt references in each target
The custom command de-duplication added by commit v3.12.0-rc1~171^2 (VS:
Generate a custom command only in the least dependent target,
2018-03-23) accidentally also applied to the `CMakeLists.txt` file
reference we put in each target.  This file reference comes with a
custom command that has no dependencies and that is safe to run
repeatedly across multiple targets (via internal stamp checking).
Therefore it should be excluded from the de-duplication so that
`CMakeLists.txt` references appear in all targets for human reference.

Fixes: #18310
2018-09-05 14:32:45 -04:00
Brad King
5a02afd920 Merge topic 'vs-winrt-default'
e78a0c8e8a VS: Add option to tell generator that platfrom is WinRT by default

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2315
2018-08-31 14:50:27 -04:00
Mikhail Korolev
e78a0c8e8a VS: Add option to tell generator that platfrom is WinRT by default
Create a ``CMAKE_VS_WINRT_BY_DEFAULT`` variable to indicate this.

Fixes: #18286
2018-08-30 12:46:57 -04:00
Vitaly Stakhovsky
95084a313d cmVisualStudio10TargetGenerator: clean up c_str()s 2018-08-28 14:41:19 -04:00
Brad King
9da844d8cb Merge topic 'lg-directory'
50fbfee3a0 cmLocalGenerator: return directories as const std::string&

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2309
2018-08-28 13:43:48 -04:00
Brad King
6f7c96fb17 Merge topic 'mk-directory'
c8fd23ec6f cmMakefile: return directories as const std::string&

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2311
2018-08-28 13:42:43 -04:00
Vitaly Stakhovsky
50fbfee3a0 cmLocalGenerator: return directories as const std::string& 2018-08-27 15:48:57 -04:00
Vitaly Stakhovsky
c8fd23ec6f cmMakefile: return directories as const std::string& 2018-08-27 14:07:43 -04:00
Brad King
ce153cacc7 Merge topic 'static-lib-options'
974de0e199 static library: add property STATIC_LIBRARY_OPTIONS

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2290
2018-08-27 14:04:22 -04:00
Brad King
fa2ecf7fce Merge topic 'ProjectReference'
e4ba1f5a94 VS: Disallow ReferenceOutputAssembly in ProjectReference if not possible

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2285
2018-08-27 14:01:01 -04:00