Commit Graph

685 Commits

Author SHA1 Message Date
Rolf Eike Beer 94a8ee6fd0 GNU C: record that C99 is available since at least 3.4 2017-02-02 18:28:56 +01:00
Brad King be3727bf92 Help: Fix language standard link text in cmake-compile-features(7)
Include each language name in the text of the link to its standards
property.
2017-02-02 08:43:58 -05:00
Brad King d88ab13750 Merge topic 'doc-cmake-packages-typo'
f3619bbc Help: Fix typo in <pkg>_NOT_FOUND_MESSAGE example in cmake-packages(7)
2017-02-01 09:16:20 -05:00
Brad King 9f3e812fac Help: Extend documented purpose of cmake-developer(7) manual
Issue: #16616
2017-02-01 09:09:51 -05:00
Brad King f3619bbcd6 Help: Fix typo in <pkg>_NOT_FOUND_MESSAGE example in cmake-packages(7)
Fixes: #16616
2017-02-01 08:40:59 -05:00
Brad King 325c615308 Merge topic 'genex-if'
895f7f16 Genex: Add `IF` generator expression
2017-01-27 09:04:58 -05:00
Colby Pike 895f7f16a7 Genex: Add IF generator expression
This allows a single condition to be used to choose between two
alternatives.  Without this the condition must be duplicated with
one surrounded by `NOT`.

Closes: #15585
2017-01-26 11:18:50 -05:00
Brad King 4f37987e3f Merge topic 'lang_lint'
0618ddf6 Add properties to run the cpplint style checker with the compiler
2017-01-25 08:41:18 -05:00
Brad King 6122fc54a9 Merge topic '16253-xcode-effective-platform-name'
10c9c73d Xcode: Control emission of EFFECTIVE_PLATFORM_NAME
2017-01-24 14:45:24 -05:00
Brad King f6e4602fe7 Merge topic 'csproj-improvements'
4bfb1249 VS: removed usage of relative paths for C# targets in in-source builds
90cb4083 VS: improve handling of source files with special extensions in .csproj
2017-01-24 14:45:15 -05:00
Jamie Snape 0618ddf6b1 Add properties to run the cpplint style checker with the compiler
Create a `<LANG>_CPPLINT` target property (initialized by a
`CMAKE_<LANG>_CPPLINT` variable) to specify a `cpplint` style checker
command line to be run along with the compiler.
2017-01-23 14:47:13 -05:00
Gregor Jasny 10c9c73d58 Xcode: Control emission of EFFECTIVE_PLATFORM_NAME
When building with multiple SDKs within one project Xcode requires
the usage of ${EFFECTIVE_PLATFORM_NAME} to put temporary and build
outout into separate directories. For example an iOS device and
simulator build use two different SDKs (iphoneos and iphonesimulator).

In the past cmake tries to detect embedded toolchains that could
possibly use simulators and emitted EFFECTIVE_PLATFORM_NAME (EPN)
at the proper locations. In #16253 Mark noticed that if he
uses macosx and iphoneos in combination the necessary EPN is not
emitted. This is because CMake by default assumes macosx SDK which
does not trigger EPN emission.

The fist naive approach - enabling EPN unconditionally revealed that
then the EPN leaks into generator expressions like $<TARGET_FILE:xxx>
which might be a regression and thus is unacceptable.

The next approach was to add an CMake property to enable EPN emission
unconditionally. This solved the reported problem.

But the EPN leakage also happened for the embedded toolchains already
without anyone noticing. So the control property was turned into a
tri-state one:

 * No definition: EPN is activated for embedded toolchains like before
 * ON: EPN is always emitted
 * OFF: EPN is never emitted

That approach gives the user the chance to disable EPN for embedded
toolchains and restores generator expression functionality for those.

Closes: #16253
2017-01-20 13:51:48 -05:00
Michael Stürmer 90cb408323 VS: improve handling of source files with special extensions in .csproj
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
2017-01-18 15:51:22 +01:00
Gregor Jasny d9f836e956 Add a getter for manually added target dependencies
Closes: #16165
2017-01-16 22:38:24 +01:00
Michael Stürmer 6fda6005b3 VS: renamed target property VS_USER_PROPS_CXX to VS_USER_PROPS 2017-01-13 09:27:21 +01:00
Brad King 592c8cfd93 Merge topic 'add-cpack-ifw-configure-file'
6310f7c3 Add cpack_ifw_configure_file command
2017-01-12 10:20:33 -05:00
Sebastian Holtermann 6eabac26f5 AUTOGEN: Documentation update: cmake-qt, AUTOMOC, AUTOUIC, AUTORCC 2017-01-11 09:25:48 -05:00
Konstantin Podsvirov 6310f7c3a0 Add cpack_ifw_configure_file command 2017-01-11 13:56:45 +03:00
Sebastian Holtermann cbc07d331d AUTOGEN: Documentation for SKIP_AUTOX source file properties 2017-01-10 12:49:17 +01:00
Michael Stürmer 55da7e501e VS: add support for .NET references with hint paths 2016-12-13 13:51:50 -05:00
Brad King 7b47ce5a3a Merge topic 'document_cuda_standard_property'
45054119 Help: Document CUDA_STANDARD and related properties
2016-12-12 14:21:30 -05:00
Brad King 55ff3c78b3 Merge topic 'xcode-message-extension'
9ac0c393 Help: Add notes for topic 'xcode-message-extension'
0ae46321 Xcode: Add target property to override explicitFileType
7ecac703 Xcode: Add target property to override productType
2016-12-12 14:21:23 -05:00
Robert Maynard 4505411982 Help: Document CUDA_STANDARD and related properties 2016-12-09 14:13:06 -05:00
Brad King a0d64ecf8b Merge topic 'try_compile-lang-std'
f72ba42b try_compile: Add policy CMP0067 to honor language standards
45aa03b9 try_compile: Add options to specify language standards
3bb2051e try_compile: Stop processing when test build system fails to generate
2016-12-07 09:22:22 -05:00
Sebastian Holtermann e1f571a983 QtAutogen: CMake-Qt documentation update 2016-12-07 08:24:07 -05:00
Brad King f72ba42b7c try_compile: Add policy CMP0067 to honor language standards
Projects use `try_compile` to check if they will be able to compile some
particular source code.  When a language standard variable like
`CMAKE_CXX_STANDARD` is set, then the project intends to compile source
code using a compiler mode for that standard.  Therefore it makes sense
for `try_compile` to use that standard in the test project too.

Unfortunately this was not done when support for the
`CMAKE_CXX_STANDARD` variable was first implemented.  Add a policy to
introduce the improved behavior in a compatible way.

Closes: #16456
2016-12-06 08:58:42 -05:00
Gregor Jasny 0ae4632119 Xcode: Add target property to override explicitFileType 2016-12-04 00:13:51 +01:00
Gregor Jasny 7ecac703ce Xcode: Add target property to override productType 2016-12-04 00:13:08 +01:00
Michael Stürmer 163e801809 VS: Add target property VS_DEBUGGER_WORKING_DIRECTORY 2016-11-30 11:45:11 -05:00
Brad King 29b37dd975 Merge topic 'msbuild-customization'
e3909918 VS: Add option to customize vcxproj user props file
2016-11-30 08:37:37 -05:00
Brad King 4288708cba Merge topic 'vs15-rename-generator-for-master'
31e013ae Merge branch 'vs15-rename-generator' into vs15-rename-generator-for-master
d639620e VS: Rename VS 15 generator to 'Visual Studio 15 2017'
2016-11-30 08:37:11 -05:00
Brad King 31e013ae60 Merge branch 'vs15-rename-generator' into vs15-rename-generator-for-master 2016-11-29 10:51:35 -05:00
Roman Wüger d639620e14 VS: Rename VS 15 generator to 'Visual Studio 15 2017'
The final name of this VS version was announced:

 https://blogs.msdn.microsoft.com/visualstudio/2016/11/16/visual-studio-2017-rc/

Add the year to the generator name accordingly.  For convenience, map
the name without the year to the name with the year.
2016-11-29 10:46:36 -05:00
Michael Stürmer e390991846 VS: Add option to customize vcxproj user props file
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`.
2016-11-29 09:31:30 -05:00
Brad King 839cd16396 Merge topic 'vs-default-build-package'
9e3164df VS: Add option to place `PACKAGE` target in solution default build
2016-11-29 08:59:11 -05:00
Brad King 4838ca14df Merge topic 'initial_cuda_language_support'
4cc601f2 Help: Add release note for CUDA support
7b9131da CUDA: Add tests to verify CUDA compiler works properly.
9cf5b98d CUDA: Prefer environment variables CUDACXX and CUDAHOSTCXX.
a5e806b3 CUDA: Add support for CMAKE_CUDA_COMPILE_OPTIONS_VISIBILITY
d038559e CUDA: Add separable compilation support to the makefile generator.
43ce4414 CUDA: Add separable compilation support to the ninja generator.
4b316097 CUDA: Add support for the CUDA_SEPARABLE_COMPILATION target property
ae05fcc6 CUDA: Add LinkLineComputer that computes cuda dlink lines.
115269a8 CUDA: Refactor cmLinkLineComputer to allow for better derived children.
5dec4031 CUDA: Refactor CMakeCUDAInformation to prepare for separable compilation.
5b20d0ab CUDA: C++ compile features now enable cuda c++11 support.
489c52ce CUDA: Use the host compiler for linking CUDA executables and shared libs.
bbaf2434 CUDA: add support for specifying an explicit host compiler.
a92f8d96 CUDA: Enable header dependency scanning.
ec6ce623 CUDA: State that cuda has preprocessor output and can generate assembly.
4f5155f6 CUDA: We now properly perform CUDA compiler identification.
...
2016-11-29 08:59:03 -05:00
Michael Stürmer 9e3164dfa2 VS: Add option to place PACKAGE target in solution default build
Add a `CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD` variable to control
this behavior.
2016-11-29 08:46:27 -05:00
Brad King 2420ce88f1 Merge topic 'imported-interface-no-system'
46005251 Allow NO_SYSTEM_FROM_IMPORTED on imported INTERFACE libraries
2016-11-22 08:41:03 -05:00
Brad King de758cfaa1 Merge topic 'doc-CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT'
df9fea7f Help: Document CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT variable
2016-11-22 08:40:59 -05:00
Brad King df9fea7f49 Help: Document CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT variable
This variable documentation was simply missing.

Suggested-by: Craig Scott <craig.scott@crascit.com>
2016-11-21 11:52:00 -05:00
Brad King 460052516f Allow NO_SYSTEM_FROM_IMPORTED on imported INTERFACE libraries
Imported INTERFACE libraries can specify include directories via
`INTERFACE_INCLUDE_DIRECTORIES` so the default behavior of treating them
as system include directories applies.  Allow users to turn this off by
setting `NO_SYSTEM_FROM_IMPORTED` on such targets.

Closes: #16443
2016-11-21 11:42:01 -05:00
Brad King b3193996bd Help: Mention IMPORTED_LIBNAME_* in interface library property whitelist
This property was added by commit 09cda9d5 (Allow imported INTERFACE
libraries to specify a link library name, 2016-11-03) and is in the
implementation's whitelist.  Add it to the documentation too.
2016-11-21 10:41:40 -05:00
Brad King ea8eba0bbf Android: Add CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
Expose the binutils' machine name (typically used as a prefix on the
tool names) publicly.  This is expected to match the `gcc -dumpmachine`
value.

Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
2016-11-18 10:03:15 -05:00
Brad King 0d3eb139e1 Android: Add CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG variable
The NDK provides prebuilt toolchain files in directories named for the
host architecture.  The NDK build system calls this `HOST_TAG`.
Expose the value publicly for use by clients that need to pass it
to external tools.

Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
2016-11-18 10:03:07 -05:00
Brad King 236d6244a0 Android: Always set CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
When this variable is not set by the user or toolchain file, set it to
the default selected.  This will be useful for client code that needs to
pass the value to an external tool that needs to find the same toolchain
in the NDK.  Leave it empty for a standalone toolchain.

Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
2016-11-18 10:02:57 -05:00
Robert Maynard 4b31609710 CUDA: Add support for the CUDA_SEPARABLE_COMPILATION target property 2016-11-14 16:40:48 -05:00
Brad King f7c5e970a0 Android: Add CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
Expose the binutils' machine name (typically used as a prefix on the
tool names) publicly.  This is expected to match the `gcc -dumpmachine`
value.

Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
2016-11-14 14:39:50 -05:00
Brad King d95e6dff3c Android: Add CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG variable
The NDK provides prebuilt toolchain files in directories named for the
host architecture.  The NDK build system calls this `HOST_TAG`.
Expose the value publicly for use by clients that need to pass it
to external tools.

Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
2016-11-14 14:29:18 -05:00
Brad King 3d42a72bd5 Android: Always set CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
When this variable is not set by the user or toolchain file, set it to
the default selected.  This will be useful for client code that needs to
pass the value to an external tool that needs to find the same toolchain
in the NDK.  Leave it empty for a standalone toolchain.

Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
2016-11-14 14:29:14 -05:00
Brad King 09cda9d5e7 Allow imported INTERFACE libraries to specify a link library name
Add an `IMPORTED_LIBNAME[_<CONFIG>]` target property to specify a library
name to be placed on the link line in place of an interface library
since it has no library file of its own.  Restrict use of the property
to imported `INTERFACE` libraries.

This will be particularly useful for find modules that need to provide
imported libraries from system SDKs where the full path to the library
file is not known.  Now such find modules will be able to provide an
imported interface library and set `IMPORTED_LIBNAME` to refer to the
SDK library by name.

Issue: #15267
2016-11-09 09:45:14 -05:00