Commit Graph

948 Commits

Author SHA1 Message Date
Marc Chevrier
66ea1a3795 LINK_OPTIONS: Add support of "LINKER:" prefix 2018-06-06 17:22:41 +02:00
Marc Chevrier
c1f5a44b28 LINK_OPTIONS: Add new family of properties
This family enable to manage link flags

Three new properties:
* directory property: LINK_OPTIONS
* target properties: LINK_OPTIONS and INTERFACE_LINK_OPTIONS

Two new commands
* add_link_options(): to populate directory property
* target_link_options(): to populate target properties

Fixes: #16543
2018-06-06 17:22:39 +02:00
Arnaud Gelas
9e27881bb1 TI: Add support for C language standards
Set C90 and C99 compile options for TI compiler.

Fixes: #18061
2018-06-04 10:48:02 -04:00
Brad King
958191a95c Merge topic 'vs-toolset-version'
5f13168419 VS: Add option to select the version of the toolset used by VS 2017

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Francisco Facioni <fran6co@gmail.com>
Merge-request: !2093
2018-05-30 10:19:21 -04:00
Basil Fierz
5f13168419 VS: Add option to select the version of the toolset used by VS 2017
Add new `version=` parameter in the toolset setting to select the
version.  Add variable `CMAKE_VS_PLATFORM_TOOLSET_VERSION` to hold the
version, if one is set (blank indicates default).

Fixes: #17549
2018-05-29 10:12:59 -04:00
Brad King
f248f8ad78 Merge topic 'parallel_build_option'
1ab3881ec9 cmake: Add options for parallel builds to --build mode

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Henry Schreiner <henryschreineriii@gmail.com>
Merge-request: !1962
2018-05-29 10:05:09 -04:00
Craig Scott
3cc081654d Merge topic 'cmake-D-option-help'
42738e5075 Help: Update description of the -D option to CMake

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2105
2018-05-27 04:40:34 -04:00
Florian Maushart
1ab3881ec9 cmake: Add options for parallel builds to --build mode
While we already support `cmake --build . -- -j`, the options after `--`
are specific to the native build tool.  Add new options `--parallel
[<N>]` and `-j [<N>]` to abstract this and map to the proper option
for the native build tool.
2018-05-25 09:42:20 -04:00
Raul Laasner
42738e5075 Help: Update description of the -D option to CMake
Fixes #18021
2018-05-24 17:50:33 -04:00
Mateusz Loskot
357db10bd1 FindODBC: Add module to search for ODBC library
Add tests for FindODBC module.
2018-05-22 21:29:22 +02:00
Melanie Cappelaere
fd0da95f63 Eclipse: Add property to include additional contents in .cproject file
Similar to ECLIPSE_EXTRA_NATURES which can be used to add a third party
nature to the .project, this property offers the possibility to inject
third party contents into the .cproject.

An example of where this is useful is MCUXpresso. This is an IDE based
on Eclipse. Compiling through CMake generated Eclipse projects works
fine by using a custom toolchain. However, in order to be able to debug
using such a project, an extra storageModule specific to the target
board is needed in the cproject.
2018-05-18 10:12:19 -04:00
Michael Stürmer
71a033616a added CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION variable
Fixes: #17955
2018-05-15 09:00:31 +02:00
Alex Turbov
f739752ad6 CPack: Add NuGet support
Create a CPack generator that uses `nuget.exe` to create packages:

    https://docs.microsoft.com/en-us/nuget/what-is-nuget

NuGet packages could be easily produced from a `*.nuspec` file (running
`nuget pack` in the directory w/ the spec file).  The spec filename does
not affect the result `*.nupkg` name -- only `id` and `version` elements
of the spec are used (by NuGet).

Some implementation details:

* Minimize C++ code -- use CMake script do to the job. It just let the
  base class (`cmCPackGenerator`) to preinstall everything to a temp
  directory, render the spec file and run `nuget pack` in it, harvesting
  `*.nupkg` files...;

* Ignore package name (and use default paths) prepared by the base class
  (only `CPACK_TEMPORARY_DIRECTORY` is important) -- final package
  filename is a responsibility of NuGet, so after generation just scan the
  temp directory for the result `*.nupkg` file(s) and update
  `packageFileNames` data-member of the generator;

* The generator supports _all-in-one_ (default), _one-group-per-package_
  and _one-component-per-package_ modes.
2018-05-11 09:28:44 -04:00
Craig Scott
7de29da7c4 Merge topic 'feature/cpack-default-package-version'
af1c48871c CPack: Use project version as default for `CPACK_PACKAGE_VERSION`

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Harry Mallon <hjmallon@gmail.com>
Merge-request: !2020
2018-05-03 17:18:38 -04:00
Alex Turbov
af1c48871c CPack: Use project version as default for CPACK_PACKAGE_VERSION
* Introduce `CMAKE_PROJECT_VERSION` and the corresponsing components:
  `CMAKE_PROJECT_VERSION_MAJOR`, `CMAKE_PROJECT_VERSION_MINOR`,
  `CMAKE_PROJECT_VERSION_PATCH` and `CMAKE_PROJECT_VERSION_TWEAK`.

* `CPack` module use `CMAKE_PROJECT_VERSION_MAJOR`,
  `CMAKE_PROJECT_VERSION_MINOR` and `CMAKE_PROJECT_VERSION_PATCH`
  to initialize corresponsing CPack variables.
2018-05-03 08:26:03 +10:00
Israel Blancas
7a50425caa Help: Fix and clarify server mode --pipe= option docs
Document the `=` in the option name.  Clarify the term "named pipe" as
an abstraction of local domain sockets on Unix and named pipes on
Windows.
2018-05-02 13:10:17 -04:00
Craig Scott
9a8687121f Help: Improve accuracy, readability and cross-referencing of cpack docs
This is primarily a cleanup of the cpack(1) page. The cpack.cxx file
and CPack module were also updated to make the docs relating to
the generator specification and option names consistent in all
three places.
2018-04-28 09:31:42 +10:00
Brad King
e5d15848ca Merge topic 'vs-hlsl-object-name'
8d1ccbc693 VS: Add VS_SHADER_OBJECT_FILE_NAME source file property

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1997
2018-04-25 08:53:54 -04:00
Jeremiah van Oosten
8d1ccbc693 VS: Add VS_SHADER_OBJECT_FILE_NAME source file property 2018-04-24 11:29:16 -04:00
Brad King
195400cab7 Merge topic 'Genex-TARGET_GENEX_PROPERTY'
4d15046edd Genex: Add $<TARGET_GENEX_EVAL:...> and $<GENEX_EVAL:...>

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1984
2018-04-24 11:06:19 -04:00
Brad King
3d6bedb903 Merge topic 'cmake-install-doc'
a4f71b4ba8 Help: Document existence of cmake_install.cmake
fcf64866da Help: move DESTDIR into a separate page

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1979
2018-04-23 10:17:42 -04:00
Brad King
ba234392b1 Merge topic 'add_compile_definitions'
cb83314e65 add_compile_definitions: add new command

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1988
2018-04-23 10:16:24 -04:00
Marc Chevrier
4d15046edd Genex: Add $<TARGET_GENEX_EVAL:...> and $<GENEX_EVAL:...>
Fixes: #17884
2018-04-23 11:13:52 +02:00
Marc Chevrier
cb83314e65 add_compile_definitions: add new command
This command manages preprocessor definitions at directory level and
supports generator expressions.

Fixes: #15374
2018-04-20 09:28:13 -04:00
Kyle Edwards
fcf64866da Help: move DESTDIR into a separate page 2018-04-20 08:39:02 -04:00
Brad King
fe0082875a Merge topic 'vs-sdk-dirs'
6ec3e880e7 VS: Add variables to set SDK directories in vcxproj files

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1965
2018-04-20 07:52:02 -04:00
Brad King
0055d50667 Help: Drop direct link to Wiki/FAQ page
Instead mention that community resources are available on the general
documentation landing page.
2018-04-19 11:44:22 -04:00
Bastien Schatt
6ec3e880e7 VS: Add variables to set SDK directories in vcxproj files
Create `CMAKE_VS_SDK_*_DIRECTORIES` variables to tell the VS generator
how to populate fields in `.vcxproj` files that specify SDK directories.

Fixes: #17908
2018-04-19 09:39:34 -04:00
Brad King
3c6388553a Merge topic 'CheckIncludeFile-required-libs'
a61ae3fb80 CheckIncludeFiles: Honor CMAKE_REQUIRED_LIBRARIES
391a5837ee cmake_policy: Add undocumented PARENT_SCOPE option to GET
3c47ac5b25 OpenWatcom: Add workaround for lack of error on missing library

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1978
2018-04-19 08:23:08 -04:00
Brad King
909ab169eb Help: Fix command-line synopsis markup syntax
Use `{}` to surround required parts instead of `()`.

Fixes: #17917
2018-04-18 08:28:32 -04:00
Brad King
a61ae3fb80 CheckIncludeFiles: Honor CMAKE_REQUIRED_LIBRARIES
Other check modules honor this variable, so include file checks should
too.  Add policy `CMP0075` to enable the behavior in a compatible way.

This change was originally made by commit v3.11.0-rc1~108^2
(CheckIncludeFiles: Honor CMAKE_REQUIRED_LIBRARIES, 2017-12-24) but it
was reverted by commit v3.11.1~9^2 (Revert "CheckIncludeFiles: Honor
CMAKE_REQUIRED_LIBRARIES", 2018-04-04) because the behavior change could
affect checks in existing projects in an incompatible way.

Fixes: #9514
2018-04-18 08:09:56 -04:00
Brad King
498be66fd7 Merge topic 'add_support_for_clr_targets'
312527de47 document COMMON_LANGUAGE_RUNTIME target properties
4b7a82b4ed cmVisualStudio10TargetGenerator: set /clr compiler flag from property
20e31fb4c9 cmExportFileGenerator: add target property for managed targets
411a22706a cmGeneratorTarget: add handling of managed assemblies to HasImportLibrary()
fb433ff283 cmGeneratorTarget: Make import library checks config-aware
4c1f33961f cmGeneratorTarget: add GetManagedType() and CheckManagedType() methods
6c517a9f8d cmGeneratorTarget: add HasLanguage() as wrapper for GetLanguages()

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1916
2018-04-12 11:36:28 -04:00
Michael Stürmer
312527de47 document COMMON_LANGUAGE_RUNTIME target properties 2018-04-09 06:50:39 +02:00
Arkady Shapkin
304f493e57 MSVC: Add MSVC_TOOLSET_VERSION variable
Provide the MSVC toolset version number based on the compiler version.

Fixes: #16923
2018-04-04 13:21:09 -04:00
Brad King
a76e23eabb Merge topic 'variable-CMAKE_FOLDER'
df535ad846 Add CMAKE_FOLDER variable to initialize FOLDER target property

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1896
2018-04-02 10:06:39 -04:00
Brad King
1b6ec4b9e3 Merge topic 'features-c++20'
8570dc7f64 Help: Update compiler versions in cmake-compile-features.7.rst
874d3d2948 Help: Add release note for C++ 20 support
7f295b1bd3 Features: Activate C++ 20 support for Clang 5.0+
71cb8ce3a1 Features: Activate C++ 20 support for GNU 8.0+
8f146c4508 Features: Activate C++ 20 support for MSVC 19.12.25835+
7fe580a362 Features: Add infrastructure for C++ 20 language standard
1b328e09a3 Features: Use -std=c++17 for C++ 17 on Clang 5.0+
0bc3e5788a Features: Use -std=c++17 for C++ 17 on GNU 8.0+

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1892
2018-04-02 10:01:23 -04:00
Marc B
df535ad846 Add CMAKE_FOLDER variable to initialize FOLDER target property
This can be used for example to organize all following targets into one
Visual Studio folder:

  set(CMAKE_FOLDER Libraries)
  add_subdirectory(libA)
  add_subdirectory(libB)
  set(CMAKE_FOLDER Executables)
  add_subdirectory(progA)

Another possibility is using the current directory name for all
following targets in subdirectories:

  get_filename_component(dirname "${CMAKE_CURRENT_SOURCE_DIR}" NAME)
  string(APPEND CMAKE_FOLDER "/${dirname}")
2018-03-29 13:19:13 -04:00
Alex Turbov
7b173a2933 genex: Add TARGET_NAME_IF_EXISTS expression
Define `$<TARGET_NAME_IF_EXISTS:tgt>` to mean `tgt` if the target
exists and otherwise an empty string.
2018-03-28 08:38:00 -04:00
Brad King
8570dc7f64 Help: Update compiler versions in cmake-compile-features.7.rst 2018-03-27 07:42:07 -04:00
Brad King
a13cfa246f Merge topic 'FindPython-new-implementation'
50b5e9ed13 CMake build: Use new FindPython module
352baee207 FindPython*: New implementation for Python stuff

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Ben Boeckel <ben.boeckel@kitware.com>
Acked-by: Alex Turbov <i.zaufi@gmail.com>
Merge-request: !1819
2018-03-21 10:01:52 -04:00
Brad King
cb794ac788 Merge topic 'sunpro-5.15'
4267960fc9 Features: Record for SunPro 5.15

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1875
2018-03-21 08:53:22 -04:00
Brad King
4267960fc9 Features: Record for SunPro 5.15
Oracle Developer Studio 12.6 adds support for more C++ 11 features.
2018-03-20 11:48:22 -04:00
Marc Chevrier
352baee207 FindPython*: New implementation for Python stuff
Fixes: #16142
2018-03-20 09:29:44 +01:00
Brad King
180a36e243 Merge topic 'find-package_root-restore'
eb35d8884b find_package: Use PackageName_ROOT variables as search prefixes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1858
2018-03-19 08:30:05 -04:00
Brad King
20fc763b32 Merge topic 'export-properties'
6db61f0725 Export: allow exporting of additional properties

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1834
2018-03-19 08:28:14 -04:00
Brad King
60299bc6f0 Merge topic 'vs-debugger-command'
5a7113d8fb VS: Add target property VS_DEBUGGER_COMMAND

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1842
2018-03-19 08:26:33 -04:00
Alex Turbov
73f9b2974c project: Add HOMEPAGE_URL named parameter
This sets variables like PROJECT_HOMEPAGE_URL, which can be
used as default values for various things (packaging modules,
doxygen defaults, etc.). Some packaging modules have been
updated to do this as part of this commit.

Co-Author: Craig Scott <craig.scott@crascit.com>
2018-03-17 08:25:48 +11:00
Craig Scott
fd28c382b4 project: Add <PROJECT-NAME>_DESCRIPTION
For consistency with the VERSION keyword, also define the
<PROJECT-NAME>_DESCRIPTION variable.
2018-03-17 08:25:48 +11:00
Brad King
eb35d8884b find_package: Use PackageName_ROOT variables as search prefixes
This feature was originally added by commit v3.9.0-rc1~71^2~2 (find_*:
Add a new PackageRoot search path group, 2017-05-03) and documented by
commit v3.9.0-rc1~71^2 (find_*: Add docs for PackageRoot search path
group, 2017-05-03).  However, we had to disable the feature and remove
the documentation in commit v3.9.1~2^2 (find_*: Disable the PACKAGE_ROOT
search path group for CMake 3.9, 2017-08-08) due to breaking projects
that used `PackageName_ROOT` variables themselves.

Add policy `CMP0074` to restore the `PackageName_ROOT` variable behavior
in a compatible way.  Also revise the stack of root paths to store the
paths themselves rather than the package names.  This way the policy can
be considered at the `find_package` call site instead of individual
`find_` calls inside a find module.

Co-Author: Chuck Atkins <chuck.atkins@kitware.com>
Issue: #17144
2018-03-16 09:19:28 -04:00
Wouter Klouwen
6db61f0725 Export: allow exporting of additional properties
This change introduces an additional property that may be set on a
target to allow additional properties to be exported. Normally only a
limited number of properties are exported.

Additional properties may be exported by simply setting the
`EXPORT_PROPERTIES` property on a target that is exported.
2018-03-16 09:00:56 -04:00