1. 27 Aug, 2019 1 commit
  2. 19 Aug, 2019 2 commits
    • Robert Maynard's avatar
      FindOpenACC: Provide import targets and OpenACC_<lang>_OPTIONS variable · f4fc0667
      Robert Maynard authored
      Previously the FindOpenACC module had issues where the contents of
      OpenACC_<lang>_FLAGS could not be used with target_compile_options
      when it contained multiple compiler flags.
      f4fc0667
    • Betsy McPhail's avatar
      Tutorial: Improve Step 1 · 82332f81
      Betsy McPhail authored
      * Update minimum required version to 3.10
      * Use VERSION argument to project command rather than separate variables
      * Replace `endif(USE_MYMATH)` with  more modern `endif()`
      * Simplify the call to 'configure_file()'
      * Add comments to tutorial.cxx to use as anchors in documentation
      * Remove CMakeLists and TutorialConfig.h.in files that users should
        create. Consequently, remove Step1 from CMake tests.
      82332f81
  3. 10 Aug, 2019 2 commits
  4. 09 Aug, 2019 2 commits
  5. 06 Aug, 2019 3 commits
  6. 05 Aug, 2019 1 commit
  7. 02 Aug, 2019 1 commit
    • Brad King's avatar
      Fix rpath-link for shared lib with only private deps · d75cad01
      Brad King authored
      Under CMP0022 NEW behavior, the link interface is explicit even if there
      are no public dependencies (`INTERFACE_LINK_LIBRARIES` is not set).
      Mark it as such to activate our tracking of private runtime dependencies
      of shared libraries for generation of `-rpath-link` flags.
      
      Fixes: #19556
      d75cad01
  8. 01 Aug, 2019 1 commit
  9. 31 Jul, 2019 1 commit
    • Brad King's avatar
      fileapi: Fix codemodel target install destination for cross-dir rules · d70a0f86
      Brad King authored
      Since commit e89ad0f9 (install: Allow installing targets created in
      another directory, 2018-06-18, v3.13.0-rc1~407^2) we support calling
      `install(TARGETS)` for targets created in another directory.  However,
      install generators are associated with the directory in which the call
      to `install()` appears.  This may not be the same directory in which the
      target is defined.  Record in each target the list of install generators
      it has.
      
      Fixes: #19546
      d70a0f86
  10. 30 Jul, 2019 2 commits
    • Brad King's avatar
      FindPythonInterp: Document lack of version filtering for plain `python` · 800c3ab2
      Brad King authored
      Also drop the `CMakeOnly.MajorVersionSelection-PythonInterp_2` test
      because some environments now have a plain `python` executable for
      Python 3.
      
      Fixes: #19536
      800c3ab2
    • Brad King's avatar
      VS: Fix mapping of `-Qspectre-` flag · f9b7c660
      Brad King authored
      The mapping for this flag was added by commit 43aa632f (VS: Populate
      `-Qspectre-` flag table entry for v142, 2019-01-24, v3.14.0-rc1~74^2~7).
      However, it did not do anything because the special logic added by
      commit bb60ed6e (VS: Add flag table entry for -Qspectre, 2018-10-08,
      v3.13.0-rc1~4^2) to move the `SpectreMitigation` element from
      `ClCompile` to the top level only handled the presence of the setting
      and not its value.  Extend the special logic to carry the value too.
      
      Fixes: #19535
      f9b7c660
  11. 29 Jul, 2019 1 commit
    • Brad King's avatar
      Swift: Restore support for enabling with INTERFACE libraries · 601fe84b
      Brad King authored
      The check added in commit b06f4c8a (Swift: disallow WIN32_EXECUTABLE
      properties, 2019-05-31, v3.15.0-rc1~9^2) makes sense only for
      executables because the `WIN32_EXECUTABLE` property is defined only for
      them.  Running the check on other target types, particularly those that
      do not link such as INTERFACE libraries, violates internal assumptions.
      In particular, `GetLinkerLanguage` should not be called on such targets.
      
      Fixes: #19528
      601fe84b
  12. 26 Jul, 2019 4 commits
  13. 25 Jul, 2019 1 commit
  14. 24 Jul, 2019 4 commits
    • Brad King's avatar
      Makefile: Fix regression in dependencies on relative includes · d46bac5d
      Brad King authored
      Since commit a13a5c94 (Replace use of CollapseCombinedPath with
      CollapseFullPath, 2019-03-19, v3.15.0-rc1~361^2~1), one code path now
      calls `CollapseFullPath` with a base path that may be relative.
      Backport KWSys commit c6f8e24a3 (SystemTools: Fix CollapseFullPath with
      relative base path, 2019-07-24) to handle such base paths.
      
      This case occurs when a build tree is placed in a directory inside a
      source tree such that CMake is willing to generate a relative path from
      the build tree to the source tree.  Add a test covering this case.
      
      Fixes: #19507
      d46bac5d
    • Robert Maynard's avatar
      ExternalProject: Support not initializing any submodules · d6be117c
      Robert Maynard authored
      Fixes #15592
      d6be117c
    • Brad King's avatar
      Tests: Revert "require C++14 for the Tutorial" · 4f15a6a5
      Brad King authored
      Revert commit a2a90f41 (Tests: require C++14 for the Tutorial,
      2019-03-21, v3.15.0-rc1~41^2~2).  In commit d50b31be (Clang: For MSVC
      ABI do not use modes older than C++14, 2019-07-23) we fixed the C++
      standard selection for GNU-like Clang with the MSVC ABI so the test code
      itself no longer needs to do it.  In particular, changing the tests in
      this way broke the tutorial's narrative.
      4f15a6a5
    • Brad King's avatar
      Clang: For MSVC ABI do not use modes older than C++14 · d50b31be
      Brad King authored
      Since commit d44c0db0 (clang: setup correct configuration in gnu mode,
      2019-02-20, v3.15.0-rc1~41^2~5) we support the GNU-like Clang that
      targets the MSVC ABI.  However, Clang cannot compile with the MSVC
      standard library unless it runs in a mode aware of C++14 (since MSVC
      itself does not even have a lower mode).  When `CMAKE_CXX_STANDARD` is
      set to 98 or 11, use C++14 anyway.
      
      Since Clang's default mode is aware of C++14, another option is to not
      add any flags for 98 or 11.  However, if a future Clang version ever
      defaults to a higher C++ standard, setting the standard to 98 or 11
      should at least not use a mode higher than 14.
      
      Also revert test updates from commit 4819ff96 (Tests: fix failures
      with gnu mode clang on windows, 2019-03-21, v3.15.0-rc1~41^2~3) that
      were meant to work around the standard selection problem.
      
      Fixes: #19496
      d50b31be
  15. 23 Jul, 2019 2 commits
  16. 22 Jul, 2019 3 commits
  17. 21 Jul, 2019 1 commit
    • Alex Turbov's avatar
      CPack: Introduce CPACK_INSTALL_SCRIPTS variable · 5f966016
      Alex Turbov authored
      
      
      The singular name `CPACK_INSTALL_SCRIPT` has existed but was not linked
      from the CPack documentation.  Also, it supported multiple values and
      should have had a plural name.  Add a plural-named alternative now.
      If both `CPACK_INSTALL_SCRIPTS` and `CPACK_INSTALL_SCRIPT` are set then
      ignore the latter with a warning.
      Signed-off-by: Alex Turbov's avatarAlex Turbov <i.zaufi@gmail.com>
      5f966016
  18. 20 Jul, 2019 1 commit
  19. 18 Jul, 2019 1 commit
  20. 16 Jul, 2019 3 commits
    • Brad King's avatar
      AIX: Create import library for executables with exports · 2fa920c0
      Brad King authored
      On AIX, plugins meant to be loaded into executables via `dlopen` must be
      linked with access to a list of symbols exported from the executable in
      order to use them (when not using runtime linking).  The AIX linker
      supports specifying this list as an "import file" passed on the command
      line either via the `-bI:...` option or (with a leading `#! .` line) as
      a normal input file like any other library file.
      
      The linker import file plays the same role on AIX as import libraries do
      on Windows.  Teach CMake to enable its import library abstraction on AIX
      for executables with the `ENABLE_EXPORTS` target property set.  Teach
      our internal `ExportImportList` script to optionally generate a leading
      `#! .` line at the top of the generated export/import list.  Update our
      rule for linking an executable with exports to generate a public-facing
      "import library" implemented as an AIX linker import file.
      
      With this approach, our existing infrastructure for handling import
      libraries on Windows will now work for AIX linker import files too:
      
      * Plugins that link to their executable's symbols will be automatically
        linked using the import file on the command line.
      
      * The executable's import file will be (optionally) installed and
        exported for use in linking externally-built plugins.
      
      This will allow executables and their plugins to build even if we later
      turn off runtime linking.
      
      Issue: #19163
      2fa920c0
    • Cristian Adam's avatar
      find_package: Fix NO_MODULE under CMAKE_FIND_PACKAGE_PREFER_CONFIG · f2edccea
      Cristian Adam authored
      The module mode fallback added by commit 22e65d10 (find_package: Fixed
      CMAKE_FIND_PACKAGE_PREFER_CONFIG Module fallback, 2019-06-13,
      v3.15.0-rc2~6^2) should not be used unless the `find_package` call
      allows module mode.  Doing so can lead to infinite recursion if a find
      module tries to call config mode with `find_package(...  NO_MODULE)`.
      Fix the logic and add a test case.
      
      Fixes: #19478
      f2edccea
    • Alex Turbov's avatar
      project: Keep leading `0` in PROJECT_VERSION components · 0ba5891e
      Alex Turbov authored
      Introduce CMake policy `CMP0096` to make `project()` keep leading zeros
      in version components.  As a side effect, it now allows really long
      version numbers.
      
      Fixes: #19421
      Co-Author: Brad King <brad.king@kitware.com>
      0ba5891e
  21. 15 Jul, 2019 3 commits
    • Brad King's avatar
      Tests: Drop RunCMake workaround for AIX ld warnings about GNU atexit · c2c3d225
      Brad King authored
      Drop the filtering added by commit e22c45d4 (Tests: Teach RunCMake to
      ignore AIX ld warnings about GNU atexit, 2018-02-28, v3.12.0-rc1~419^2~6).
      It is no longer needed now that we compute our own exports on AIX and
      do not get these warnings when using shared libraries.
      c2c3d225
    • Brad King's avatar
      AIX: Explicitly compute executable exports for both XL and GNU · 9f5c2040
      Brad King authored
      On AIX, symbols in executables must be exported in order to be visible
      to modules (plugins) they load via `dlopen`.  Prior to policy `CMP0065`,
      CMake linked all executables with flags to export symbols, but the NEW
      behavior for that policy is to do so only for executables that have the
      `ENABLE_EXPORTS` target property set.  In both cases, CMake has always
      used the AIX linker option `-bexpall` option to export symbols from
      executables.
      
      This has worked fairly well with the XL compiler, but with the GNU
      compiler it works only for C ABI symbols.  The reason is that `-bexpall`
      does not export symbols starting in `_` but the GNU C++ ABI mangles all
      symbols with a leading `_`.  Therefore we have only supported C ABI
      plugins with the GNU compiler on AIX.  Some projects have tried to work
      around this by replacing `-bexpall` with `-bexpfull`, but the latter
      often exports symbols that we do not want exported.
      
      Avoid using `-bexpall` for executables by i...
      9f5c2040
    • Brad King's avatar
      5f846698