Commit Graph

282 Commits

Author SHA1 Message Date
Stephan Szabo
8df25f9400 VS: connect /Y- compiler option with "Not Using Precompiled Headers"
Original header commit v3.10.0-rc1~423^2

The change allows to selectively disable PrecompiledHeaders.
Despite the `$(VCTargetsPath)/1033/cl.xml` contains an empty value for switch,
for effectively turn off setting need to use /Y- option as described on msdn:
https://msdn.microsoft.com/en-us/library/1hy7a92h.aspx
2018-11-28 07:43:30 -08:00
Stephan Szabo
f1223e34c6 VS: Add v140 flag table entries for -Zc:inline[-]
Note: Zc:inline was added by generator, but not the - version.

Original header commit v3.7.2~8^2

The documentation of this option [1] claims that the default is off, but
VS seems to use `-Zc:inline` by default if `RemoveUnreferencedCodeData`
does not appear in the `.vcxproj` file.  Add the flag table entry to
allow use of the flag to be configured.

[1] https://msdn.microsoft.com/en-us/library/dn642448.aspx
2018-11-28 07:43:30 -08:00
Stephan Szabo
efc90eed77 VS: Fix regressed mapping for the cl /Os compiler flag
Original header commit v3.6.0-rc3~8^2

In commit v3.6.0-rc1~279^2~10 (VS: in Clang/C2 toolset, setup correct
compiler settings, 2016-02-18) a flag mapping was added for the clang
`-Os` flag.  However, this collides with a mapping we already had for
the MSVC flag of the same name.  This is a symptom of a larger problem
in that the VS generators need a per-toolset flag map (issue #16153).

For now, simply drop the new mapping and drop `-Os` from clang compiler
flags in the MinSizeRel configuration.
2018-11-28 07:43:30 -08:00
Stephan Szabo
36b7fc7db6 VS 14: Add flag map for -std= to CppLanguageStandard tag in project files
Original header commit v3.6.0-rc1~279^2~8

This is used by the Clang/C2 toolset.
2018-11-28 07:43:30 -08:00
Stephan Szabo
21d26a9ecd VS: in Clang/C2 toolset, setup correct compiler settings
Original header commit v3.6.0-rc1~279^2~10
2018-11-28 07:43:29 -08:00
Stephan Szabo
44dc9fc48a VS: Fix /analyze:log flag mapping (#14858)
Original header commits:
 v11/v12 commit v3.1.0-rc1~695^2
 v140/v141 commit v3.1.0-rc1~358^2~3

Fix the VS 11 and VS 12 flag table entries for this flag.  It requires
a value in the following argument.  Also drop the general "/analyze:"
flag table entry so that such flags will be passed through as plain
additional options.  This is necessary because some such options have
following values and some do not but not all have .vcxproj elements
to hold the values.
2018-11-28 07:43:29 -08:00
Stephan Szabo
aba364d190 VS: Fix CSharp support for win32res: and win32icon: flags
Original header commit v3.13.0-rc2~6^2

Add a missing `:` to these entries in the flag table.  The user
value is always required and must come after the `:`.
2018-11-28 07:43:29 -08:00
Stephan Szabo
b9fe2785f2 Vs: remove /nowin32manifest from C# flags to enable default VS behavior
Original header commit v3.10.0-rc1~494^2

if /nowin32manifest is specified, it will be preferred over any
occurring /win32manifest:<file> parameter
2018-11-28 07:43:29 -08:00
Stephan Szabo
6c6c13297c MSVC: Add support for ARM64 architecture
The v141_Link.json already appeared to have the option included, so
onlyh adding the change to v14_LIB.json.

Original header commit v3.10.0-rc1~132^2

Visual Studio 15.4 adds support for this architecture.
2018-11-28 07:43:29 -08:00
Stephan Szabo
454b47ba0b VS: Fix MANIFESTUAC link flag map to .vcxproj elements
Original header commit v3.10.0-rc1~97^2

Add special parsing of the flags given in `/MANIFESTUAC:"..."` in order
to map them correctly to `.vcxproj` elements.

Keep the old incorrect flag table entries for `uiAccess` and `level`
flags for compatibility even though they do not really exist.

Fixes: #16563
2018-11-28 07:43:29 -08:00
Stephan Szabo
57a78b5526 VS: Fix support for '/guard:cf' linker flag
Original header commit v3.9.0-rc6~12^2

Although `$(VCTargetsPath)/1033/link.xml` for v140 and v141 toolsets
contains an entry for `LinkControlFlowGuard`, it does not work when used
in a `.vcxproj` file.  Drop our link flag table entries for these
toolsets so that the flag will be passed via `AdditionalOptions`.
2018-11-28 07:43:28 -08:00
Stephan Szabo
f77320c12a VS: Add v140 and v141 flag table entries for /DEBUG:NONE and /DEBUG:FULL
DEBUG:FULL was already added for v141 from the generation.

Original header commit v3.9.0-rc6~15^2
2018-11-28 07:43:28 -08:00
Stephan Szabo
a5d9aa5063 VS: Map the link /debug to its IDE property
Fix issues with "GenerateDebugInformation". These
are mostly from the following commits, but also
include a related fix to the v140/v141 file.

Original header commits:
 v10-v14 commit v3.5.0-rc1~71^2
 v140/v141 commit v3.9.0-rc6~15^2~1
2018-11-28 07:43:28 -08:00
Stephan Szabo
1d00fd7702 VS: Fix /MANIFESTUAC:NO linker option mapping
Original header commits:
 v10/v11/v12 commit v3.0.0-rc5~3^2
 v140 commit v3.1.0-rc1~358^2~3

There are no versions of /MANIFESTUAC:NO where addition values are
appended.  Remove both of the MANIFESTUAC:NO entries from our flag
tables and replace them with one which would set EnableUAC to false and
immediately stop processing the /MANIFESTUAC:NO option.
2018-11-28 07:43:28 -08:00
Stephan Szabo
3133fa5094 VS: Manually fix MASM flag table entries
Original header commit v3.1.0-rc1~154^2~5

Drop '"[value]"' placeholders.
2018-11-28 07:43:28 -08:00
Stephan Szabo
66704e4271 VS: Add NASM fwin/felf switches
The generated NASM file from the xml does not contain the fwin/felf
switches that don't seem to directly exist in the xml file.
2018-11-28 07:43:27 -08:00
Stephan Szabo
fc58a40e76 VS: Manually fix generated NASM flag table
Drop '"[value]"' placeholders.
2018-11-28 07:43:27 -08:00
Stephan Szabo
7fd339b1e5 VS: Add CUDA flag table entry for -maxrregcount
Original header commit v3.12.0-rc2~10^2
2018-11-28 07:43:27 -08:00
Stephan Szabo
f61e097554 VS: Add more CUDA flag table entries
Original header commit v3.9.0-rc1~431^2~2
2018-11-28 07:43:27 -08:00
Stephan Szabo
c17809bcd7 VS: Select CUDA code generation architectures
Original header commit v3.9.0-rc1~431^2~4

Parse the `-gencode=`, `-arch`, and `-code` flags and generate a
`CodeGeneration` field in the project file.
2018-11-28 07:43:27 -08:00
Stephan Szabo
73ce99cbfe VS: Select the CUDA runtime library
Original header commit v3.9.0-rc1~431^2~5

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.
2018-11-28 07:43:26 -08:00
Stephan Szabo
f044bbbf08 VS: Place CUDA host compiler options in proper project file fields
Original header commit v3.9.0-rc1~431^2~6

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.
2018-11-28 07:43:26 -08:00
Stephan Szabo
7faa4d59a8 Add placeholder CUDA json flag tables
Generate json flag tables from initial placeholder headers

Original header commit v3.9.0-rc1~431^2~10

The CUDA Toolkit's VS integration defines abstractions for both options
to `nvcc` and options to pass through `-Xcompiler` to the host MSVC.
We need a separate flag table to parse each set of flags into the
corresponding abstractions.  Add empty placeholders for these tables.
2018-11-28 07:43:26 -08:00
Stephan Szabo
6e947179a8 Add json flag tables for C#
Generate initial json flag tables for C# based on the initial
headers.

Original header commit v3.8.0-rc1~230^2

Add these (currently unused) tables in preparation for `.csproj`
generation support.  Populate the tables for every version with a set of
initial values that work well for me with VS 12 and VS 14.  Later we may
need to generate them more thoroughly from MSBuild `.xml` files.
2018-11-28 07:43:26 -08:00
Stephan Szabo
2f37ce5e86 Add initial NASM flag table json
Generated from the nasm.xml provided by CMake.

python cmConvertMSBuildXMLToJSON.py -t v10 ...\Templates\MSBuild\nasm.xml
2018-11-28 07:43:26 -08:00
Stephan Szabo
a84461160c Add CL, LIB, Link, MASM, RC flag json
Adding flag json files generated from MSVC xml files.

python cmConvertMSBuildXMLToJSON.py -t v10 "...\MSBuild\Microsoft.Cpp\v4.0\1033\cl.xml"
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V110\1033\cl.xml"
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V120\1033\cl.xml"
python cmConvertMSBuildXMLToJSON.py -t v140 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V140\1033\cl.xml"
python cmConvertMSBuildXMLToJSON.py -t v141 "C:\...\Common7\IDE\VC\VCTargets"\1033\cl.xml"

python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\1033\rc.xml
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v110\1033\rc.xml
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v120\1033\rc.xml
python cmConvertMSBuildXMLToJSON.py -t v14 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v140\1033\rc.xml

python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\1033\lib.xml
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v110\1033\lib.xml
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v120\1033\lib.xml
python cmConvertMSBuildXMLToJSON.py -t v14 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v140\1033\lib.xml

python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\1033\link.xml"
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V110\1033\link.xml"
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V120\1033\link.xml"
python cmConvertMSBuildXMLToJSON.py -t v140 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V140\1033\link.xml"
python cmConvertMSBuildXMLToJSON.py -t v141 "C:\...\Common7\IDE\VC\VCTargets"\1033\link.xml"

python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\masm.xml"
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\masm.xml"
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\masm.xml"
python cmConvertMSBuildXMLToJSON.py -t v14 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\masm.xml"
2018-11-28 07:43:25 -08:00
David Benjamin
cb694f8cd6 VS: Properly quote arguments in nasm.xml
Most arguments were quoted, but some weren't, causing problems if the
arguments contained whitespace.

In particular, the _STL_EXTRA_DISABLED_WARNINGS value takes spaces and
CMake's NASM support applies all add_definitions lines to NASM. The -D
flag is missing quotes, so projects using NASM and setting
_STL_EXTRA_DISABLED_WARNINGS break in the Visual Studio generator.

Likewise, the -o flag is missing quotes, which means filenames with
spaces do not work.

(The -U flag is unlikely to need quotes, but include them for
consistency.)

Extend the existing VSNASM test to cover these cases.
2018-07-02 18:50:12 -04:00
Brad King
5ba76299f8 Merge topic 'nolint_typedef_testdriver'
bbbcbb1a48 TestDriver: Disable clang-tidy 'modernize-use-using'

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2118
2018-06-01 09:48:51 -04:00
Sylvain Joubert
bbbcbb1a48 TestDriver: Disable clang-tidy 'modernize-use-using' 2018-05-31 13:51:40 +02:00
Sander Vrijders
3af0438b4b TestDriver: Replace strncpy with strcpy
GCC 8.1.0 now gives an error if `strncpy` is called with a bound
depending on the length of the source argument.  Replace `strncpy` with
`strcpy` as the length is known a priori.

Fixes: #18038
2018-05-30 09:45:57 -04:00
Sylvain Joubert
72d3161a7f TestDriver: fix style-'variableScope' cppcheck warning
When applied on a user project, cppcheck complains that the 'test_name'
variable could have a reduced scope.
2017-11-22 19:54:00 +01:00
Brad King
221ffabfad TestDriver: Fix -Wconversion warning
Since commit v3.8.0-rc1~51^2~1 (TestDriver: calc NumTests at compile
time, 2017-01-24) we convert an expression that uses `sizeof()` to an
`int` as a compile-time constant.  Some GCC versions warn about this
with `-Wconversion`.  Add a cast to avoid the warning.
2017-07-14 08:01:26 -04:00
Brad King
608cc887c7 TestDriver: Remove unused local variable initialization 2017-05-10 10:01:15 -04:00
Evgeny Fimochkin
5ba2c9e5e0 VS: Add support for ASM_NASM language
Fixes: #16469
2017-02-07 13:20:52 -05:00
Daniel Pfeifer
eb86b4cec1 TestDriver: fix/silence clang-tidy warnings 2017-01-24 22:24:06 +01:00
Daniel Pfeifer
178c897374 TestDriver: calc NumTests at compile time 2017-01-24 22:24:06 +01:00
Daniel Pfeifer
3bb4a79826 TestDriver: use for loop 2017-01-24 22:24:06 +01:00
Daniel Pfeifer
60b68304f2 TestDriver: abstract CM_CAST macro 2017-01-24 22:24:06 +01:00
Daniel Pfeifer
1731b90cd0 TestDriver: Revise C++ coding style using clang-format 2017-01-24 22:24:06 +01:00
Brad King
db915a3785 Utilities/Release: Drop Cygwin binary
Cygwin has packaged CMake independently of upstream for a long time.
See its [cygport](https://github.com/cygwinports/cmake).
2016-09-12 09:22:50 -04:00
Sylvain Joubert
cd344e3a62 create_test_sourcelist: Use safer strncpy instead of strcpy
Clang-tidy advises to use a safer function in place of strcpy.
This should avoid such warnings in user build using clang-tidy.
2016-08-25 10:56:50 -04:00
Sean McBride
527773662c Drop unnecessary LSRequiresCarbon reference from Info.plist files
LSRequiresCarbon is long since unnecessary.  It refers to requiring
Carbon as opposed to Classic (OS 9 emulation).
2016-03-18 09:47:03 -04:00
Brad King
b42866a34a Drop Visual Studio 6 generator
This generator has been deprecated since CMake 3.3.  Remove it.
Update documentation, modules, and tests to drop content specific
to this generator.
2016-03-09 09:42:18 -05:00
Gilles Khouzam
1be2f12cf2 VS: Add support for Windows 10 Universal (Store) Applications
Teach the VS 2015 generator to support WindowsStore 10.0 applications.
Add target properties to customize them:

* VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION: Specifies the minimum version
  of the OS that the project can target.

* VS_DESKTOP_EXTENSIONS_VERSION, VS_MOBILE_EXTENSIONS_VERSIONS,
  VS_IOT_EXTENSIONS_VERSION: Add a reference to the version of the SDK
  specified to the target allowing to target the extended functionality in
  a universal project.

* VS_IOT_STARTUP_TASK: Specifies that the target should be
  built as an IOT continuous background task.
2015-10-05 09:48:11 -04:00
Brad King
da7276cf94 Replace http://www.cmake.org URLs with https://cmake.org
The latter is now the preferred URL for visiting cmake.org with a
browser.  Convert using the shell code:

 git ls-files -z | xargs -0 sed -i 's|http://www\.cmake|https://cmake|g'
2015-09-25 15:47:39 -04:00
Gilles Khouzam
b8e405387e VS: Mark Windows Phone and Store targets as App Containers
* Add AppContainerApplication to non-UTILITY targets
* Generate app manifest and related files if project does not provide them.
  Place them in a per-target directory to avoid clashes.
* Mark WinRT components with WinMDAssembly
* Import Windows Phone 8.0 targets in .vcxproj files when necessary,
  and reference platform.winmd.

Inspired-by: Paul Annetts <paul@lightunobscured.com>
2014-09-02 10:17:02 -04:00
Brad King
63fc8dcdb8 create_test_sourcelist: Suppress MSVC warnings in test driver (#15066)
Suggested-by: Ken Moreland <kmorel@sandia.gov>
2014-08-07 09:17:44 -04:00
Nils Gladitz
15a8af21e8 Add an "installed file" property scope
Teach set_property and get_property an "INSTALL" property type to be
associated with install-tree file paths.  Make the properties available
to CPack for use during packaging.  Add a "prop_inst" Sphinx domain
object type for documentation of such properties.
2014-05-28 12:28:18 -04:00
Sean McBride
50ca77f4a0 create_test_sourcelist: Initialize variable at declaration
Clang -Wconditional-uninitialized warns otherwise.
2014-03-31 09:41:05 -04:00
Sean McBride
ed675a92a1 create_test_sourcelist: Fix linkage in generated test driver code
Mark private function/global with static linkage.
2013-11-12 09:27:11 -05:00