Commit Graph

2274 Commits

Author SHA1 Message Date
Christian Pfeiffer 9a58e69cc8 FindMPI: Modernization from ground up
This is a near-total rewrite of FindMPI implementing the following
features:

Environmental improvements:

- C++ settings can now be picked from C settings if no dedicated C++
  settings are found (some installs of IBM Platform MPI)
- Fortran settings can now be found on MPICH-1, MVAPICH-1, Microsoft
  MPI and MPICH-2 on Windows.

- Improved flag procession logic: Flags related to security enhancements
  of MPI itself, and unrelated to MPI usage (-fstack-protector-strong on
  e.g. RHEL 7 for MPICH and MVAPICH) will be filtered out properly now.
  -pthread is now being handled. -fno-strict-aliasing, which may be needed
  while compiling MVAPICH (e.g. RHEL 7's MVAPICH package) is also
  filtered.

Features added:

- MPI version can be determined for each language and is exposed as the
  package version
- MPI functionality is being tested to ensure the correctness of
  settings
- MPI-2 C++ bindings can be suppressed if desired by the project or
  user. For older MPIs, this often resolves issues and eliminated the
  infamous SEEK_SET trouble.
- MPI-2 C++ bindings are now being searched for and exposed by a
  variable if detected.
- Fortran support now does not make assumptions over the MPI present and
  works with ILP64 MPI implementations.
- Fortran now exposes which bindings (mpif.h, mpi/mpi_f08 modules) are
  available
- MPI detection can now work hybridly, which for example permits using the
  Fortran modules shipped with some compiler suites together with MPI
  (e.g. PGI on Windows shipping MSMPI modules)
- Ability to determine MPI library version (*requires* try_run, caution)
  upon request
- Ability to determine Fortran capabilities from MPI-3 for each of the
  bindings (subarrays, asynchronous attribute protecting entities) (also
  requires try_run)

Fine grained control over the search process:

- Possibility to selectively enable and disable steps like compiler
  wrapper search and guessing. Permits picking Microsoft MPI over Intel
  MPI if both are loaded (previously not possible without removing the
  IMPI compiler wrappers from the environment)
- Ability to pick MPICH2 over MSMPI (previously the first one located
  was taken)
- A user may now pass compiler flags to the compiler wrapper script,
  enabling much more flexibility. This permits for example linking the
  Intel MPI debug runtime, static linking, ILP64 with Fortran,
  linking tracing, ...
- A user may define a suffix for all MPI binaries that are being looked
  for (useful on Debian/Ubuntu where the alternative MPI installs are each
  appended with their name, e.g. mpicc.mpich and mpicc.lam)

Cache variable improvements

- Instead of the previous plural cache variables a list-of-variables
  approach is now in place. Permits correcting individual variables
  instead of having to wade through a list, also speeds up the search
  process and increases comfort by eliminating duplicate entries in
  LIBRARIES over languages
- MPIEXEC was corrected to MPIEXEC_EXECUTABLE in order to fix the
  grouping in the CMake GUI for the variable (previously ungrouped)
2017-09-15 14:55:08 +02:00
Brad King 28adf3833c Merge topic 'vs_improve_custom_command'
9ed24280 VS: only add custom command line if it is not empty
34c4108b add HasOnlyEmptyCommandLines() method to cmCustomCommandGenerator

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1050
2017-09-11 07:53:18 -04:00
Brad King bf19bb5609 Merge topic 'timestamp'
014ad298 Timestamp: support %A and %B

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1228
2017-09-11 07:49:40 -04:00
Bill Hoffman b2242ea964 Help: Update documentation for PROCESSORS test property
This updates the documentation for the PROCESSORS test property to show
how it will affect the summary output for labels and sub projects.
2017-09-08 10:03:53 -04:00
Brad King 8bd26d7eac Merge topic 'findfreetype-importedtargets'
b1d1c56c Help: Add notes for topic 'FindFreetype-importedtargets'
457c2021 FindFreetype: Add imported target, docs, and test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1219
2017-09-08 09:46:00 -04:00
Bernhard M. Wiedemann 014ad2989c Timestamp: support %A and %B
These are defined both by [1] and [2] to give full names of a weekday
and month.

[1] http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html
[2] https://msdn.microsoft.com/de-de/library/fe06s4ak.aspx
2017-09-07 13:36:11 -04:00
Ben Morgan b1d1c56cfd Help: Add notes for topic 'FindFreetype-importedtargets' 2017-09-07 17:52:41 +01:00
Sebastian Holtermann 6739a12571 Autogen: Doc: Add Visual Studio PRE_BUILD note to cmake-qt.rst 2017-09-07 18:03:14 +02:00
Brad King 14ea80ab0c Merge topic 'findexpat-importedtargets'
3a4f82e9 Help: Add notes for topic 'FindEXPAT-importedtargets'
bfe51369 FindEXPAT: Add unit test of target and variables
78f166f8 FindEXPAT: Add imported target and documentation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1207
2017-09-07 11:22:26 -04:00
Michael Stürmer 9ed2428078 VS: only add custom command line if it is not empty 2017-09-04 11:42:35 +02:00
Jean-Christophe Fillion-Robin 2645cb6208 FindPatch: Add module to find 'patch' command-line tool 2017-09-01 11:46:28 -04:00
Ben Morgan 3a4f82e9f2 Help: Add notes for topic 'FindEXPAT-importedtargets' 2017-09-01 16:25:29 +01:00
Tin Huynh 2f3a07a981 Flang: Add support for flang Fortran compiler
flang is a Fortran compiler built on top of clang [1].  Because flang
shares a lot of commonalities with clang, the flang module piggybacks
off the clang module and overrides certain options.

Add flang to Fortran compiler auto find list.

Update flang preprocessor macros to differentiate from PGI.

Add Flang-FindBinUtils.

[1] https://github.com/flang-compiler/flang
2017-08-31 15:24:59 -04:00
Brad King 02d24c9ed2 Merge topic 'doc-xref-prefix-path'
952331cd Help: Cross-reference and clarify CMAKE_FIND_NO_INSTALL_PREFIX docs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Luke Yeager <luke.yeager@gmail.com>
Merge-request: !1213
2017-08-31 10:11:21 -04:00
Brad King 425bb1a66a Merge topic 'irsl-intel'
fd4406f3 IRSL: Add Intel compiler support
8444252f IRSL: Install VC++ OpenMP libraries only for MSVC

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Pelle <pbregener@gmail.com>
Merge-request: !1121
2017-08-31 10:09:42 -04:00
Brad King 952331cded Help: Cross-reference and clarify CMAKE_FIND_NO_INSTALL_PREFIX docs
Suggested-by: Luke Yeager <lukeyeager@users.noreply.github.com>
2017-08-30 15:05:04 -04:00
Christian Pfeiffer fd4406f33e IRSL: Add Intel compiler support
Fixes: #16891
Fixes: #9903
2017-08-30 19:24:59 +02:00
Bill Hoffman 311b7b1a70 Add properties to run cppcheck along with the compiler
Create a `<LANG>_CPPCHECK` target property (initialized by a
`CMAKE_<LANG>_CPPCHECK` variable) to specify a `cppcheck` command line
to be run along with the compiler.
2017-08-30 10:23:46 -04:00
Craig Scott 54efb7e07a Merge topic 'doc-dev-review-messages'
ee51f374 Help/dev: Add commit reference format to review process guide
c928439c Help/dev: Organize commit message instructions into subsections

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1182
2017-08-30 08:33:00 -04:00
Brad King ee51f3746a Help/dev: Add commit reference format to review process guide 2017-08-29 13:01:47 -04:00
Brad King 55e281c3b7 Merge topic 'cpackifw-repositories-directories'
5fe64511 CPackIFW: Add CPACK_IFW_REPOSITORIES_DIRECTORIES variable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1150
2017-08-28 09:53:10 -04:00
Brad King 53305ce5b0 Merge topic 'revert-xcode-9-new-buildsystem-support'
9ecee256 Xcode: Revert addition of "outputPaths" to custom command build phase

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1183
2017-08-25 11:05:05 -04:00
Brad King 9ecee256f8 Xcode: Revert addition of "outputPaths" to custom command build phase
The change in commit v3.9.0~3^2 (Xcode: Add "outputPaths" to custom
command script build phase, 2017-07-13) was meant to support Xcode 9's
new build system.  However, without matching "inputPaths", Xcode will
not re-run the build phase if its outputs have already been generated.
This broke the old Xcode build system too.

Revert the change for now so at least the old Xcode build system works.
Further investigation will be needed to add proper support for Xcode 9's
new build system.

Fixes: #17178
2017-08-24 10:56:48 -04:00
Brad King c928439c23 Help/dev: Organize commit message instructions into subsections 2017-08-24 09:52:59 -04:00
Brad King fa664d9863 Merge topic 'FindCurses-wide'
72343d26 Help: Add notes for topic 'FindCurses-wide'
4b02afc0 FindCurses: Add option for ncursesw detection

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1161
2017-08-23 09:03:58 -04:00
Brad King 72343d2604 Help: Add notes for topic 'FindCurses-wide' 2017-08-22 10:44:18 -04:00
Brad King d3d0191dcd Merge topic 'revert-macos-hidpi-qt-dialog'
286c75f7 macOS: Revert default Hi-DPI support in applications

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1167
2017-08-22 08:21:03 -04:00
Brad King 3f17ccce1c Merge branch 'revert-macos-hidpi-qt-dialog' into release-3.9
Merge-request: !1167
2017-08-22 07:30:20 -04:00
Brad King 286c75f7f0 macOS: Revert default Hi-DPI support in applications
This reverts commit v3.9.0-rc1~287^2 (macOS: Enable Hi-DPI support in
applications by default, 2017-04-08).  It breaks iOS applications that
do not use their own `MACOSX_BUNDLE_INFO_PLIST` because `NSApplication`
is only for macOS apps.  Until more complete support for iOS is added
to CMake (e.g. with a different default plist file) we must allow
our default plist file to work for both macOS and iOS.

Fixes: #17179
2017-08-22 07:29:20 -04:00
Brad King ab5667b516 Merge topic 'autogen-macro-names'
b3d98c6e Autogen: Add release notes for AUTOMOC_MACRO_NAMES
7529d84f Autogen: Add documentation for AUTOMOC_MACRO_NAMES
05891d8f Autogen: Add test for AUTOMOC_MACRO_NAMES
93f0ba28 Autogen: Add AUTOMOC_MACRO_NAMES support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1156
2017-08-21 09:02:09 -04:00
Brad King c1f3eb9f2d Merge topic 'require-c++11'
fd4fd9a2 Require C++11 to build CMake itself

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1132
2017-08-21 08:48:24 -04:00
Sebastian Holtermann b3d98c6ec2 Autogen: Add release notes for AUTOMOC_MACRO_NAMES 2017-08-18 14:07:57 +02:00
Sebastian Holtermann 7529d84fac Autogen: Add documentation for AUTOMOC_MACRO_NAMES 2017-08-18 13:58:14 +02:00
Sylvain Joubert b9ed29b7cb Help: Fix formatting typo for the 'if' command 2017-08-18 09:43:40 +02:00
Konstantin Podsvirov 5fe64511d6 CPackIFW: Add CPACK_IFW_REPOSITORIES_DIRECTORIES variable
Add CPACK_IFW_REPOSITORIES_DIRECTORIES variable to specify
additional repositories dirs that will be used to resolve and
repack dependent components
2017-08-17 21:41:16 +03:00
Brad King d817bbb8df Merge topic 'string_prepend'
d8ecc254 Add PREPEND sub-command to string command

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1129
2017-08-16 10:50:38 -04:00
Brad King fd4fd9a276 Require C++11 to build CMake itself
CMake can now compile as C++11 on all supported platforms.  Check that
std::unique_ptr is available and fail early if missing.  This will allow
us to use C++11 more broadly in CMake's implementation (previously it
was restricted to the serve mode implementation).

Co-Author: Daniel Pfeifer <daniel@pfeifer-mail.de>
2017-08-16 10:13:38 -04:00
Brad King 6c5e03d6d4 Merge branch 'backport-autogen-autouic-lookup' into autogen-autouic-lookup 2017-08-15 13:23:11 -04:00
Brad King f2cab9855b Merge topic 'server-allow-cache'
9b3c5ccf Server: test cache after reconnect
1df38758 cmServerProtocol: allow 'cache' request before 'configure'
187332b2 cmServerProtocol: fix test of empty values

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !977
2017-08-15 13:17:49 -04:00
Brad King 8fb9a5770a Merge topic 'cpackifw-package-file-extension'
45623e72 CPackIFW: Add CPACK_IFW_PACKAGE_FILE_EXTENSION variable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Craig Scott <craig.scott@crascit.com>
Merge-request: !1117
2017-08-15 13:08:26 -04:00
Sebastian Holtermann d8a99dd2ea Autogen: Update AUTOUIC documentation for search paths 2017-08-15 12:57:32 +02:00
Daniel Pfeifer 1df3875871 cmServerProtocol: allow 'cache' request before 'configure'
Fixes: #16989
2017-08-13 22:02:31 +02:00
Daniel Pfeifer 187332b2fa cmServerProtocol: fix test of empty values
If a required value is in the cache, it is not necessary to set it
explicitly.

Fixes: #16948, #16988
2017-08-13 22:02:30 +02:00
Sylvain Joubert d8ecc25457 Add PREPEND sub-command to string command 2017-08-11 13:26:33 +02:00
Brad King 14b2f85cd4 Merge topic 'commit_message_guidelines'
11d00a17 Help/dev: Add commit message guidelines

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1106
2017-08-10 11:07:46 -04:00
Brad King c94c6bae72 Merge branch 'doc-CMP0069-typos' into release-3.9
Merge-request: !1122
2017-08-10 09:27:30 -04:00
Brad King 8c0afd2c75 Merge branch 'find-package_root-disable' into release-3.9
Merge-request: !1116
2017-08-10 09:27:19 -04:00
Brad King 249e7dabef Merge topic 'test_fixture_doc_improvements'
2e3d89a7 Help: Clarify test fixture naming and use

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1114
2017-08-10 09:23:21 -04:00
Brad King f4e66b41d8 Merge topic 'find-package_root-disable'
578d95f8 find_*: Disable the PACKAGE_ROOT search path group for CMake 3.9

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1116
2017-08-10 09:22:02 -04:00
Brad King af06befe66 Merge topic 'doc-CMP0069-typos'
8d56308c Help: Fix module and function names in CMP0069 examples

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1122
2017-08-10 09:06:58 -04:00