1. 11 Sep, 2018 1 commit
  2. 24 Aug, 2018 1 commit
  3. 18 Jun, 2018 1 commit
  4. 29 May, 2018 1 commit
  5. 23 Apr, 2018 1 commit
  6. 28 Nov, 2017 1 commit
    • Ismail Donmez's avatar
      Clang: Do not mistake clang-cl 6.0 for GNU-like clang · f969f1a9
      Ismail Donmez authored
      The check added by commit v3.10.0-rc2~2^2 (Clang: Diagnose unsupported
      GNU-like clang targeting MSVC ABI, 2017-10-10) is incorrectly detecting
      clang-cl 6.0 as GNU-like.  Currently cmake is testing if the clang
      compiler accepts `--version` to see if it accepts GNU style flags.
      However, with the latest llvm snapshot this also works for clang-cl:
          > clang-cl --version
          clang version 6.0.0 (trunk)
          Target: x86_64-pc-windows-msvc
          Thread model: posix
          InstalledDir: C:\Program Files\LLVM\bin
      So instead we should use the `/?` flag which fails with clang but
      works with clang-cl:
          > clang-cl /? &> /dev/null; echo $?
          > clang /? &> /dev/null; echo $?
      Fixes: #17518
  7. 10 Oct, 2017 1 commit
    • Brad King's avatar
      Clang: Diagnose unsupported GNU-like clang targeting MSVC ABI · b6d3a1c0
      Brad King authored
      The LLVM/Clang installer on Windows provides a `LLVM/bin` directory
      containing `clang.exe` and `clang++.exe` command-line tools that have a
      GNU-like command-line but target the MSVC ABI (instead of MinGW).  We
      do not support this combination, so diagnose and reject it explicitly.
      Tell users what to do to use the `clang-cl.exe` tool instead.
      Issue: #16439
  8. 03 Oct, 2017 1 commit
  9. 19 Sep, 2017 2 commits
  10. 12 Sep, 2017 1 commit
  11. 23 Aug, 2017 1 commit
    • Brad King's avatar
      Ninja: Fix support for MSVC with non-English output · de9840d1
      Brad King authored
      With MSVC the Ninja generator extracts the `cl -showIncludes` prefix.
      When MSVC is configured to have non-English output, e.g. via
      `VSLANG=2052` in the environment, then `cl` prints the prefix encoded
      for the current code page, which is not necessarily UTF-8 encoding.
      Currently we fail to convert the prefix to our internal UTF-8 encoding,
      but assume it is UTF-8 later.
      While writing `rules.ninja`, the Ninja generator converts our internal
      UTF-8 encoding to the current code page.  The `msvc_deps_prefix =` line
      needs to be encoded as the current code page so that `ninja` can match
      in the output from `cl -showIncludes` during the build.
      Prior to commit v3.9.0-rc1~47^2 (codecvt: Re-implement do_out and
      do_unshift, 2017-05-25), the non-UTF-8 prefix extracted above was
      written without noticing its incorrect internal encoding.  The
      `rules.ninja` file was successfully written, but possibly with a mangled
      `msvc_deps_prefix`.  Since that commit the output stream correctly
      rejects the non-UTF-8 byte sequence and writing `rules.ninja` fails.
      Fix this by correctly converting the `cl -showIncludes` output from the
      current code page to our internal UTF-8 encoding.
      Fixes: #17191
  12. 29 Jun, 2017 2 commits
    • nolange's avatar
      IAR: Improve support for IAR ARM Compiler · d8e6cd9e
      nolange authored
      Make the implementation for this compiler more complete.
      IAR has multiple C++ modes, historically they were reduced c++ versions
      for embedded that gradually improved to the full standard (which can be
      reduced again by e.g. disabling rtti and exceptions).  The new
      implementation picks the best available, but the c++ mode can also be
      overridden by defining `CMAKE_IAR_CXX_FLAG`.
      Add C/C++ standard flags so that all modes up to and including the last
      supported standard are defined.
      Fixes: #16826
    • nolange's avatar
      Add a CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID variable · 0b1a2876
      nolange authored
      Compilers such as MSVC and IAR may have variants that target different
      architectures.  We have been using a `MSVC_<LANG>_ARCHITECTURE_ID`
      variable to hold this information for MSVC.  Add an alternative with a
      more general name (later we can port MSVC to it too).
      This additional information may be needed to generate proper invocations
      of the compiler based on its architecture variant.
  13. 22 Apr, 2017 1 commit
  14. 31 Mar, 2017 1 commit
    • Brad King's avatar
      Xcode: Detect CURRENT_ARCH for use by generator · a1221905
      Brad King authored
      During compiler identification, extract the Xcode `CURRENT_ARCH` value
      and save it for later use by the Xcode generator in an internal compiler
      information variable.  This will be useful to know the locations of
      object files when only one architecture is built.
  15. 28 Mar, 2017 1 commit
  16. 10 Mar, 2017 3 commits
  17. 06 Feb, 2017 1 commit
    • Michael Maltese's avatar
      CMakeDetermineCompilerId: check with and without user-specified flags · 72ed051b
      Michael Maltese authored
      Clang may raise an error when passed a `-march=` option that doesn't
      correspond to the current target triple.  CMake cannot pass the target
      triple when determining the compiler id because it doesn't know how yet,
      but it does pass along user-specified flags.  This breaks when those
      user-specified flags include `-march=`.  Fix this use case by also
      trying to find the compiler id without the user-specified flags.
      Fixes: #16587
  18. 12 Jan, 2017 1 commit
  19. 15 Dec, 2016 1 commit
  20. 14 Nov, 2016 1 commit
  21. 14 Oct, 2016 1 commit
    • Brad King's avatar
      VS: Provide an option to use x64 host tools · d079e71c
      Brad King authored
      Visual Studio provides toolchains that are themselves built for 32-bit
      or 64-bit host architectures.  By default it uses the 32-bit tools, but
      it can be told to prefer the 64-bit tools on 64-bit hosts.  Extend the
      `CMAKE_GENERATOR_TOOLSET` specification to provide a way to request
      use of the 64-bit host tools.
      Closes: #15622
  22. 27 Sep, 2016 1 commit
    • Brad King's avatar
      Simplify CMake per-source license notices · 86578ecc
      Brad King authored
      Per-source copyright/license notice headers that spell out copyright holder
      names and years are hard to maintain and often out-of-date or plain wrong.
      Precise contributor information is already maintained automatically by the
      version control tool.  Ultimately it is the receiver of a file who is
      responsible for determining its licensing status, and per-source notices are
      merely a convenience.  Therefore it is simpler and more accurate for
      each source to have a generic notice of the license name and references to
      more detailed information on copyright holders and full license terms.
      Our `Copyright.txt` file now contains a list of Contributors whose names
      appeared source-level copyright notices.  It also references version control
      history for more precise information.  Therefore we no longer need to spell
      out the list of Contributors in each source file notice.
      Replace CMake per-source copyright/license notice headers with a short
      description of the license and links to `Copyright.txt` and online information
      available from "https://cmake.org/licensing".  The online URL also handles
      cases of modules being copied out of our source into other projects, so we
      can drop our notices about replacing links with full license text.
      Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
      of the replacements mechanically.  Manually fix up shebang lines and trailing
      newlines in a few files.  Manually update the notices in a few files that the
      script does not handle.
  23. 23 Sep, 2016 1 commit
  24. 27 Jul, 2016 1 commit
    • Daniel Pfeifer's avatar
      Use string(APPEND) in Modules · 5d0d980d
      Daniel Pfeifer authored
      Automate with:
      find Modules -type f -print0 | xargs -0 perl -i -0pe \
      's/set\(([a-zA-Z0-9_]+)(\s+)"\$\{\1\}([^"])/string(APPEND \1\2"\3/g'
  25. 02 Jun, 2016 1 commit
  26. 03 May, 2016 1 commit
  27. 10 Mar, 2016 1 commit
  28. 09 Mar, 2016 1 commit
    • Brad King's avatar
      Drop Visual Studio 6 generator · b42866a3
      Brad King authored
      This generator has been deprecated since CMake 3.3.  Remove it.
      Update documentation, modules, and tests to drop content specific
      to this generator.
  29. 21 Dec, 2015 1 commit
    • Brad King's avatar
      CMakeDetermineCompilerId: Fix VS Itanium platform name (#15889) · d9bf5206
      Brad King authored
      VS expects the platform to be just `Itanium`, so drop the incorrect
      special case mapping it to `ia64`.  This platform name has been wrong
      since the logic was added by commit v2.8.10~148^2~8 (VS: Detect the
      compiler id and tool location, 2012-08-16).
  30. 07 Dec, 2015 1 commit
  31. 23 Nov, 2015 1 commit
    • Brad King's avatar
      Revert "Disable shared library support when compiler links statically" (#15855) · 9682de56
      Brad King authored
      In commit v3.4.0-rc1~18^2 (Disable shared library support when compiler
      links statically, 2015-09-30) we tried to detect when the compiler is
      not capable of linking shared libraries (possibly due to flags in use).
      However, the approach is not robust against flags like `-nostdlib`.
      Revert it for now pending another solution to the original problem.
  32. 02 Oct, 2015 1 commit
    • Gilles Khouzam's avatar
      VS: Add support for selecting the Windows 10 SDK (#15670) · 3f077996
      Gilles Khouzam authored
      Teach the VS 2015 generator to produce a WindowsTargetPlatformVersion
      value.  Use the CMAKE_SYSTEM_VERSION to specify the version and if not
      set choose a default based on available SDKs.  Activate this behavior
      when targeting Windows 10.
      Co-Author: Brad King <brad.king@kitware.com>
  33. 30 Sep, 2015 1 commit
    • Brad King's avatar
      Disable shared library support when compiler links statically · 8b4873a1
      Brad King authored
      When a user or a compiler wrapper adds '-static' to the compiler flags
      then it will always link static binaries.  Detect this from the compiler
      id binary and disable TARGET_SUPPORTS_SHARED_LIBS.  This will prevent
      projects from accidentally adding shared libraries when the toolchain
      does not support them.  It also helps CMake avoid linking with flags
      that require shared libraries to be supported.
  34. 18 Sep, 2015 3 commits