1. 24 Jul, 2019 1 commit
    • 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
  2. 24 May, 2019 1 commit
    • Zsolt Parragi's avatar
      Tests: fix failures with gnu mode clang on windows · 4819ff96
      Zsolt Parragi authored
          Root causes were:
          * Using incorrect conditions (assuming MSVC-like command line mode)
          * Trying to compile the MSVC STL in C++11 mode, when parts of it require
            C++14 or enabling MS extensions in clang.
          * Missing flush in a testcase using stdout in a dll and a main part
          with static crt
      4819ff96
  3. 01 Jun, 2018 1 commit
    • Kitware Robot's avatar
      Revise C++ coding style using clang-format-6.0 · d7204e64
      Kitware Robot authored
      Run the `clang-format.bash` script to update all our C and C++ code to a
      new style defined by `.clang-format`.  Use `clang-format` version 6.0.
      
      * If you reached this commit for a line in `git blame`, re-run the blame
        operation starting at the parent of this commit to see older history
        for the content.
      
      * See the parent commit for instructions to rebase a change across this
        style transition commit.
      d7204e64
  4. 07 Aug, 2017 1 commit
    • Brad King's avatar
      HP-UX: Drop support for building CMake on HP-UX · 49640d36
      Brad King authored
      CMake will soon require both C++11 and libuv to build.  Neither of
      these works on HP-UX, so unfortunately we need to drop support for
      the platform until someone can get them working.
      
      Issue: #17137
      49640d36
  5. 27 Jul, 2016 1 commit
    • Daniel Pfeifer's avatar
      Use string(APPEND) in Tests · 7a649111
      Daniel Pfeifer authored
      Automate with:
      
      find Tests -type f -print0 | xargs -0 perl -i -0pe \
      's/set\(([a-zA-Z0-9_]+)(\s+)"\$\{\1\}([^"])/string(APPEND \1\2"\3/g'
      7a649111
  6. 16 Jul, 2016 1 commit
    • Gregor Jasny's avatar
      Do not report ALIASED_TARGET as always set (#15783) · ea647533
      Gregor Jasny authored
      The cmGetPropertyCommand::StoreResult expects NULL for unset
      properties. Make ALIASED_TARGET align with that expectation.
      
      Additional corrections to the unit tests are necessary because
      get_property removes variables for unset properties (in contrast
      to get_target_property which stores a -NOTFOUND value).
      ea647533
  7. 14 Jun, 2016 1 commit
  8. 16 May, 2016 1 commit
    • Kitware Robot's avatar
      Revise C++ coding style using clang-format · d9fd2f54
      Kitware Robot authored
      Run the `Utilities/Scripts/clang-format.bash` script to update
      all our C++ code to a new style defined by `.clang-format`.
      Use `clang-format` version 3.8.
      
      * If you reached this commit for a line in `git blame`, re-run the blame
        operation starting at the parent of this commit to see older history
        for the content.
      
      * See the parent commit for instructions to rebase a change across this
        style transition commit.
      d9fd2f54
  9. 01 Apr, 2016 1 commit
    • Brad King's avatar
      Fix lookup of an ALIAS target outside aliased target's directory (#16044) · bc30f8b5
      Brad King authored
      Refactoring in commit v3.5.0-rc1~272^2~11 (cmTarget: Implement ALIAS in
      terms of name mapping, 2015-10-25) accidentally introduced logic that
      assumes ALIAS targets always reference targets in their own directory.
      Fix this and add a test case.
      
      The configure-step fix is that `cmMakefile::FindTarget` should not consider
      aliases.  The purpose of this method is just to look up targets local to
      a directory.  Since ALIAS and normal targets share a namespace we know a
      locally defined target will never collide with an ALIAS target anyway.
      The method has 3 call sites, and this change is safe for all of them:
      
      * `cmInstallCommand::HandleTargetsMode`: Rejects aliases before the call.
      * `cmFLTKWrapUICommand::FinalPass`: Should never have considered aliases.
      * `cmMakefile::FindTargetToUse`: Falls back to a global lookup anyway.
      
      The generate-step fix is that `cmLocalGenerator::FindGeneratorTarget`
      should not consider aliases.  This method is the generate-step
      equivalent to the above.  The method has 2 call sites, and this change
      is safe for both of them:
      
      * `cmInstallTargetGenerator::Compute`: Never uses an alias target name.
      * `cmLocalGenerator::FindGeneratorTargetToUse`: Falls back to global lookup.
      Reported-by: Matteo Settenvini's avatarMatteo Settenvini <matteo@member.fsf.org>
      bc30f8b5
  10. 10 Mar, 2016 1 commit
  11. 08 Nov, 2015 1 commit
    • Stephen Kelly's avatar
      Alias: Fix access at generate-time (#15832) · 4ce9742a
      Stephen Kelly authored
      Commit c389f8bb (cmLocalGenerator: Port Find method away from
      GetGeneratorTarget, 2015-10-25) ported the implementation of
      FindGeneratorTargetToUse away from the FindTargetToUse method,
      but neglected to handle alias targets.
      
      The latter method has a parameter to determine whether to
      include alias targets in the search, but as that is only
      needed at configure time, this generate-time equivalent does
      not need the condition.
      4ce9742a
  12. 25 Apr, 2014 1 commit
  13. 04 Jan, 2014 1 commit
  14. 07 Oct, 2013 1 commit
    • Stephen Kelly's avatar
      Add the INTERFACE_LIBRARY target type. · fe732264
      Stephen Kelly authored
      This target type only contains INTERFACE_* properties, so it can be
      used as a structural node. The target-specific commands enforce
      that they may only be used with the INTERFACE keyword when used
      with INTERFACE_LIBRARY targets. The old-style target properties
      matching LINK_INTERFACE_LIBRARIES_<CONFIG> are always ignored for
      this target type.
      
      The name of the INTERFACE_LIBRARY must match a validity generator
      expression. The validity is similar to that of an ALIAS target,
      but with the additional restriction that it may not contain
      double colons. Double colons will carry the meaning of IMPORTED
      or ALIAS targets in CMake 2.8.13.
      
      An ALIAS target may be created for an INTERFACE library.
      
      At this point it can not be exported and does not appear in the
      buildsystem and project files are not created for them. That may
      be added as a feature in a later commit.
      
      The generators need some changes to handle the INTERFACE_LIBRARY
      targets returned by cmComputeLinkInterface::GetItems. The Ninja
      generator does not use that API, so it doesn't require changes
      related to that.
      fe732264
  15. 02 Aug, 2013 1 commit
    • Stephen Kelly's avatar
      Add the ALIAS target concept for libraries and executables. · 370bf554
      Stephen Kelly authored
      * The ALIAS name must match a validity regex.
      * Executables and libraries may be aliased.
      * An ALIAS acts immutable. It can not be used as the lhs
        of target_link_libraries or other commands.
      * An ALIAS can be used with add_custom_command, add_custom_target,
        and add_test in the same way regular targets can.
      * The target of an ALIAS can be retrieved with the ALIASED_TARGET
        target property.
      * An ALIAS does not appear in the generated buildsystem. It
        is kept separate from cmMakefile::Targets for that reason.
      * A target may have multiple aliases.
      * An ALIAS target may not itself have an alias.
      * An IMPORTED target may not have an alias.
      * An ALIAS may not be exported or imported.
      370bf554