summaryrefslogtreecommitdiffstats
path: root/Source/cmVisualStudio10TargetGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Add policy CMP0069 to enforce INTERPROCEDURAL_OPTIMIZATIONRuslan Baratov2017-03-301-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the `INTERPROCEDURAL_OPTIMIZATION` target property was honored only for the Intel compiler on Linux and otherwise ignored. In order to add support for more compilers incrementally without changing behavior in the future, add a new policy whose NEW behavior enforces the `INTERPROCEDURAL_OPTIMIZATION` property. Add flags for supported compilers and otherwise produce an error.
* | | Merge topic 'vs-rc-defines'Brad King2017-03-291-5/+7
|\ \ \ | |/ / |/| / | |/ | | | | | | | | | | | | | | fff34934 MSVC: Restore _DEBUG preprocessor definition in RC debug builds 79a91538 RC: Add missing CMAKE_RC_FLAGS_<CONFIG> entries to cache c77194ec VS: Honor preprocessor definitions in RC flags 1449f6f6 cmVisualStudio10TargetGenerator: De-duplicate preprocessor defs 8a619e8c cmIDEOptions: Add GetDefines method Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !640
| * VS: Honor preprocessor definitions in RC flagsBrad King2017-03-281-5/+7
| | | | | | | | | | | | | | | | | | The VS generators use the C (or CXX) preprocessor definitions for the Windows Resource Compiler tool. This causes definitions parsed out of `CMAKE_RC_FLAGS[_<CONFIG>]` variables to be dropped. Fix the implementation to preserve both. Issue: #16745
| * Merge branch 'csproj_add_free_source_tags' into releaseBrad King2017-03-021-47/+46
| |\
* | \ Merge topic 'module-def-and-WINDOWS_EXPORT_ALL_SYMBOLS'Brad King2017-03-221-1/+1
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 075f6454 Support WINDOWS_EXPORT_ALL_SYMBOLS with `.def` files 21c4ec4f cmGlobalVisualStudioGenerator: Simplify __create_def command generation 24361a45 bindexplib: Add support for parsing and integrating `.def` files 845c4824 bindexplib: Add method for parsing and integrating `.def` files 4f90e793 bindexplib: Revise coding style of CMake-specific methods Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !581
| * | | Support WINDOWS_EXPORT_ALL_SYMBOLS with `.def` filesBrad King2017-03-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `WINDOWS_EXPORT_ALL_SYMBOLS` target property exports all symbols found in object files explicitly given to the linker. However, the linker may also find additional symbols in dependencies and copy them into the linked binary (e.g. from `msvcrt.lib`). Provide a way to export an explicit list of such symbols by adding a `.def` file as a source file. Fixes: #16473
* | | | Merge topic 'cuda-vs'Brad King2017-03-131-6/+144
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 65481a60 CUDA: Work around VS limitation in CudaOnly.WithDefs test 8cae24a1 VS: Add more CUDA flag table entries 6ca4f222 VS: Add support for the CUDA_SEPARABLE_COMPILATION property 94255511 VS: Select CUDA code generation architectures 253594d0 VS: Select the CUDA runtime library 4def02a3 VS: Place CUDA host compiler options in proper project file fields 29f07b08 VS: Do not pass CUDA compile options to C compiler b966f489 VS: Do not use absolute paths to CUDA sources ... Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !566
| * | | VS: Add support for the CUDA_SEPARABLE_COMPILATION propertyBrad King2017-03-101-0/+4
| | | |
| * | | VS: Select CUDA code generation architecturesBrad King2017-03-101-0/+2
| | | | | | | | | | | | | | | | | | | | Parse the `-gencode=`, `-arch`, and `-code` flags and generate a `CodeGeneration` field in the project file.
| * | | VS: Select the CUDA runtime libraryBrad King2017-03-101-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | Parse the `-cudart=` option and add a corresponding `CudaRuntime` field to the generated project file. Also add a matching `.lib` to the list of libraries linked.
| * | | VS: Place CUDA host compiler options in proper project file fieldsBrad King2017-03-101-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The CUDA Toolkit's VS integration provides abstractions for host compiler options for `nvcc` to pass through `-Xcompiler` to the host MSVC. Populate our secondary flag table and use it to remove flags from the `AdditionalCompilerOptions` in favor of their abstractions. Unfortunately a bug in the CUDA 8.0 VS integration prevents us from passing anything in `AdditionalCompilerOptions` reliably. After taking out the flags that have dedicated abstractions, drop the rest.
| * | | VS: Do not pass CUDA compile options to C compilerBrad King2017-03-101-2/+4
| | | |
| * | | VS: Do not use absolute paths to CUDA sourcesBrad King2017-03-101-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | The CUDA Toolkit's VS integration does not properly compute the intermediate files directory location when the path to the source file is absolute.
| * | | VS: Add basic infrastructure for CUDA generationBrad King2017-03-101-0/+103
| | | | | | | | | | | | | | | | Generate the `CudaCompile` elements in `.vcxproj` files.
* | | | Refactor WINDOWS_EXPORT_ALL_SYMBOLS implementationBrad King2017-03-091-21/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Use `cmGeneratorTarget::ModuleDefinitionInfo` to combine the implementation of `WINDOWS_EXPORT_ALL_SYMBOLS` with that of using a `.def` file as a source. Only one of these could be used within a single target before anyway.
* | | | Refactor module definition file selectionBrad King2017-03-091-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Create a `ModuleDefinitionInfo` structure for each configuration of a target to hold corresponding information about the selected module definition file (`.def` source).
* | | | Refactor module definition source enumerationBrad King2017-03-091-4/+3
|/ / / | | | | | | | | | Add a `cmGeneratorTarget::GetModuleDefinitionSources` method.
* | | Merge topic 'csproj_add_free_source_tags'Brad King2017-03-021-47/+46
|\ \ \ | | |/ | |/| | | | | | | | | | | | | 506207f9 VS: add test for VS_CSHARP_* source file property a202749c VS: add CSharpUtilities module 9588d0a2 VS: add VS_CSHARP_<tagname> sourcefile property
| * | VS: add VS_CSHARP_<tagname> sourcefile propertyMichael Stürmer2017-03-011-47/+46
| | |
* | | Merge topic 'vcxproj-indentation'Brad King2017-02-241-0/+1
|\ \ \ | | |/ | |/| | | | | | | 2cb165e8 VS: Fix .vcxproj indentation
| * | VS: Fix .vcxproj indentationBrad King2017-02-231-0/+1
| |/ | | | | | | | | | | In commit v3.8.0-rc1~87^2~1 (VS: added support for C#, 2017-01-09) we removed what looked like a no-op streaming operation but in fact it is responsible for applying indentation. Restore the line.
* | VS: Refactor AdditionalOptions generationBrad King2017-02-151-7/+7
| | | | | | | | | | | | Store unknown flags directly in a flag map entry for `AdditionalOptions` instead of having a separate member for them. This avoids duplicating the output generation logic for the entry.
* | VS: Place CMAKE_<LANG>_STANDARD_LIBRARIES after other librariesBrad King2017-02-141-8/+8
| | | | | | | | | | | | | | Make the VS generator consistent with the Ninja and Makefile generators that place the libraries listed in this variable after other libraries on the link command line. These system libraries never depend on the project libraries.
* | VS: Refactor parsing of CMAKE_<LANG>_STANDARD_LIBRARIESBrad King2017-02-141-14/+2
| | | | | | | | | | | | Parse the value as a command line string just as the MS CRT would. This makes the VS generator behavior consistent with how the string is used by the Ninja and Makefile generators.
* | VS: Add support for ASM_NASM languageEvgeny Fimochkin2017-02-071-0/+105
|/ | | | Fixes: #16469
* VS: removed usage of relative paths for C# targets in in-source buildsMichael Stürmer2017-01-181-6/+0
|
* VS: improve handling of source files with special extensions in .csprojMichael Stürmer2017-01-181-19/+184
| | | | | | | | | | | | Mainly <Link> and <DependentUpon> tags are added to connect generated and manually edited files. Special file extensions that are take care of are: - .Designer.cs - .xaml.cs - .settings - .resx - .xaml
* VS: added support for C# (for Visual Studio 2010, 2012, 2013, 2015)Michael Stürmer2017-01-131-69/+362
|
* VS: renamed target property VS_USER_PROPS_CXX to VS_USER_PROPSMichael Stürmer2017-01-131-2/+1
|
* VS: add support for .NET references with hint pathsMichael Stürmer2016-12-131-10/+63
|
* Merge topic 'target_project_type'Brad King2016-12-021-7/+41
|\ | | | | | | | | 66bd8a3c cmVisualStudio10TargetGenerator: Prepare to handle C# projects
| * cmVisualStudio10TargetGenerator: Prepare to handle C# projectsMichael Stürmer2016-12-011-7/+41
| | | | | | | | | | | | | | | | | | | | | | Generalize some internal infrastructure to prepare for generating either `.vcxproj` or `.csproj` files. - Add member string for project file extension - Add member enum for project type - Add member flag for in-source build - Add member flag for managed build - Rename PathToVcxproj to PathToProjectFile
* | VS: Add target property VS_DEBUGGER_WORKING_DIRECTORYMichael Stürmer2016-11-301-0/+8
|/
* VS: Add option to customize vcxproj user props fileMichael Stürmer2016-11-291-14/+22
| | | | | | Add a `VS_USER_PROPS_CXX` target property to set the user props file of the generated `.vcxproj` file to be something other than the default `$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props`.
* VS: Disable project upgrade prompt on VS 2013 and aboveErik Christensen2016-11-151-0/+10
| | | | | | | | | When opening projects in Visual Studio that specify an older toolset version, a prompt is displayed the first time asking the user whether to upgrade the projects. This is meant for project files that are maintained manually and updated through the IDE. For CMake-generated projects this does not make sense, so add content to tell VS not to upgrade.
* Merge topic 'vs_targets_file_as_library'Brad King2016-11-111-4/+114
|\ | | | | | | | | 883bd34a VS: Treat libraries ending in `.targets` as msbuild imports
| * VS: Treat libraries ending in `.targets` as msbuild importsSoji Yamakawa2016-11-091-4/+114
| | | | | | | | | | | | | | Generate `<Import Project="..." .../>` to import the `.targets` files into `.vcxproj` files. Closes: #16340
* | Add generator expression support to per-source COMPILE_FLAGSZsolt Parragi2016-10-281-2/+16
| | | | | | | | | | | | This allows users to specify different genex-based compile flags for each file in a target, e.g. compiling just a single file with `Od/Ox` in release builds on Visual Studio.
* | VS: Move toolset flag table lookup to global generatorDon Olmstead2016-10-251-123/+18
|/ | | | | Move `Get*FlagTable` methods to the global generator and have each VS generator version pre-populate its default flag table.
* cmState: Move TargetType enum to separate namespaceStephen Kelly2016-10-191-52/+54
|
* Merge topic 'vs-host-x64-tools'Brad King2016-10-141-0/+9
|\ | | | | | | | | | | d079e71c VS: Provide an option to use x64 host tools 779939a0 Help: Document VS and Xcode toolset selection
| * VS: Provide an option to use x64 host toolsBrad King2016-10-141-0/+9
| | | | | | | | | | | | | | | | | | | | 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
* | Merge topic 'vs15-separate-flag-table'Brad King2016-10-131-2/+9
|\ \ | |/ |/| | | | | b1d67ae8 VS: Split flag table between v140 and v141 toolsets
| * VS: Split flag table between v140 and v141 toolsetsBrad King2016-10-101-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | In commit v3.7.0-rc1~156^2~1 (VS: Update v140 flag tables from VS 15 MSBuild files, 2016-09-02) we extended the v140 flag table with values from the v141 toolset that comes with VS 15. However, the v140 toolset that comes with VS 14 does not have all of these entries and so the flags just need to be passed without special mapping. In order to support both toolsets, split our CL flag table into separate copies for each version and switch off the toolset name. Closes: #16352
* | VS: Use absolute target-specific directory for `resources.pri`Roman Wüger2016-10-051-2/+4
|/ | | | | | | | The change in commit v3.7.0-rc1~219^2 (VS: Use target-specific directory for `resources.pri`, 2016-08-25) incorrectly specifies a relative path for the `ProjectPriFullPath` value. Fix it to use an absolute path. Issue: #16106
* Merge topic 'vs-clang-llvm-support'Brad King2016-09-291-1/+2
|\ | | | | | | | | 3f300b84 VS: Recognize VS/LLVM toolset names as Clang
| * VS: Recognize VS/LLVM toolset names as ClangRoman Wüger2016-09-281-1/+2
| | | | | | | | | | | | Update the toolset name matching added by commit v3.6.0-rc1~279^2~10 (VS: in Clang/C2 toolset, setup correct compiler settings, 2016-02-18) to match VS/LLVM toolset names too.
* | Simplify CMake per-source license noticesBrad King2016-09-271-11/+2
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Convert: Move access to CurrentBinaryDirectory out of loopsStephen Kelly2016-09-191-1/+3
|
* Convert: Avoid START_OUTPUT enum when converting to relative pathsStephen Kelly2016-09-191-1/+1
|