1. 21 Mar, 2019 1 commit
  2. 05 Mar, 2019 2 commits
  3. 01 Mar, 2019 1 commit
  4. 25 Feb, 2019 2 commits
  5. 19 Feb, 2019 1 commit
    • chuck cranor's avatar
      Cray: clean up CrayPrgEnv and CrayLinuxEnvironment modules · d59159af
      chuck cranor authored
      CrayPrgEnv:
        - add a new function __cmake_craype_linktype() that determines what
          link mode the Cray compiler wrapper will use in a more sophisticated
          way than just MATCHing for static/dynamic on the command line.
      
        - add a new function __cmake_craype_setupenv() that does a
          once-per-cmake-run setup that does the following:
             1. does a basic check of the wrapper's configuration.  Running
                cmake and then changing module and/or linktype configuration
                may cause build problems (since the data in the cmake cache
                may no longer be correct after the change).  We look for this
                and warn the user about it.
             2. uses the "module" provided PKG_CONFIG_PATH environment variable
                to add additional prefixes to the system prefix path.  This
                function used to be done by CrayLinuxEnvironment using the
                compiler implicit include/link paths but that is intended
                only for cross-compiling on Cray front-end nodes.  Since
                CrayPrgEnv runs on both front-end and compute nodes, we
                migrate this function here.
      
      CrayLinuxEnvironment:
        - No need to set variables like CMAKE_SHARED_LIBRARY_PREFIX to values
          that have already been properly established by CMakeGenericSystem.cmake.
          Remove redundant sets of CMAKE_SHARED_LIBRARY_PREFIX,
          CMAKE_SHARED_LIBRARY_SUFFIX, CMAKE_STATIC_LIBRARY_PREFIX,
          CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_FIND_LIBRARY_PREFIXES, and
          CMAKE_DL_LIBS.
      
        - No need to add $ENV{SYSROOT_DIR}/usr/include to CMAKE_SYSTEM_INCLUDE_PATH
          when we already added $ENV{SYSROOT_DIR}/usr to CMAKE_SYSTEM_PREFIX_PATH.
      
        - Remove __cray_list_intersect(), __list_clean_dupes(), and buggy
          code that adds compiler implicit includes/libs to
          CMAKE_SYSTEM_INCLUDE_PATH and CMAKE_SYSTEM_LIBRARY_PATH.  This
          function has migrated to CrayPrgEnv.cmake, as noted above.
      
      See discussion in issue #17413 for additional details.
      d59159af
  6. 18 Feb, 2019 1 commit
    • Brad King's avatar
      Prefix implicit include directories with sysroot on construction · 9502276f
      Brad King authored
      Since commit 7cd65c97 (Add CMAKE_SYSROOT variable to set --sysroot
      when cross compiling., 2013-04-13, v3.0.0-rc1~342^2) we have prefixed
      the value of `CMAKE_SYSROOT` to implicit include directories.  This was
      done because we hard-coded `/usr/include` as an implicit include
      directory without accounting for the sysroot.  Instead we should prefix
      the hard-coded paths when they are constructed.  Update the
      `Platform/UnixPaths` module to do this as `Platform/Darwin` already
      does.
      
      Since commit 5990ecb7 (Compute implicit include directories from
      compiler output, 2018-12-07, v3.14.0-rc1~108^2) the values of the
      `CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES` variables are computed from
      a real compiler invocation so they already account for the sysroot
      prefix.  In commit 6fc33829 (Update logic for sysroot in detected
      implicit include directories, 2019-02-13, v3.14.0-rc2~6^2) we attempted
      to apply the prefix conditionally, but that is incorrect because the
      compiler's real implicit include directories are not all under the
      sysroot.  Instead assume that all implicit include directories in
      `CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES` already have the sysroot
      prefix if needed.  Code that constructs the value must be responsible
      for that because it is the only place that knows.
      9502276f
  7. 13 Feb, 2019 2 commits
    • Brad King's avatar
      Fix regression in -I/usr/include exclusion logic · 557b2d6e
      Brad King authored
      The change in commit 15ad8300 (Refactor exclusion of -I/usr/include to
      avoid per-language values, 2019-01-21, v3.14.0-rc1~108^2~4) caused the
      exclusion to apply to Fortran, but it was only meant for C, CXX, and
      CUDA.  The purpose of the change was to prepare for the value of
      `CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES` to be computed from the
      actual compiler instead of hard-coded.  We need to preserve exclusion of
      `-I/usr/include` if the compiler has any implicit include directory that
      looks intended to replace it, e.g. `<sdk>/usr/include` on macOS.
      
      Fixes: #18914
      557b2d6e
    • Brad King's avatar
      macOS: Fix addition of <sdk>/usr/include to default implicit include dirs · 017598a4
      Brad King authored
      In commit 1293ed85 (ParseImplicitIncludeInfo: keep implicit incl.
      consistent when rerunning cmake, 2019-01-30, v3.14.0-rc1~26^2) the
      `Platform/UnixPaths` module was updated to add `/usr/include` to
      `CMAKE_{C,CXX,CUDA}_IMPLICIT_INCLUDE_DIRECTORIES` through an
      initialization variable used by `CMakeDetermineCompilerABI` instead of
      directly.  This approach makes it only a default that can be overridden
      by detection of the implicit include directories really used by the
      compiler.
      
      The addition of `<sdk>/usr/include` to default implicit include
      directories by the `Platform/Darwin` module needs the same update but
      was accidentally left out of the original commit.
      017598a4
  8. 04 Feb, 2019 1 commit
    • Gregor Jasny's avatar
      Apple: Introduce separate system name for iOS, tvOS, and watchOS · 11da882a
      Gregor Jasny authored
      - Remove code signing requirements for non-macOS
      - Do not set deployment target for non-macOS
      - Build static library for compiler feature detection for non-macOS
      - Use framework to run CompilerId tests for watchOS
      - Port tests to new SDK handling
      - Add new Apple cross-compiling section to toolchain documentation
      
      Closes: #17870
      11da882a
  9. 30 Jan, 2019 2 commits
    • Brad King's avatar
      Ninja: Use deps=gcc for Intel Compiler on Windows · a624a3e1
      Brad King authored
      Ninja 1.9 supports the depfile format generated by this compiler.
      Use `deps = gcc` when the version of Ninja is new enough.
      
      Unfortunately the Intel Compiler for Windows does not properly
      escape spaces in paths written to a depfile so if there is a
      space in the path we must still fall back to `deps = msvc`.
      
      Fixes: #18855
      a624a3e1
    • chuck cranor's avatar
      ParseImplicitIncludeInfo: keep implicit incl. consistent when rerunning cmake · 1293ed85
      chuck cranor authored
      The first time you run cmake, it sets the implicit include path
      to the value reported by the parser (and this value gets saved
      in CMake${lang}Compiler.cmake).  But if you re-run cmake,
      UnixPaths.cmake blindly appends an extra /usr/include to the
      value saved in CMake${lang}Compiler.cmake.  That should not be
      harmful in most cases, but we want later runs of cmake to be
      consistent with the initial one.  Resolve using a solution
      suggested by Brad King:
      
        - UnixPaths now sets the default implicit include path in a new
          variable named _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT
          This value is only used the first time cmake is run (by
          CMakeDetermineCompilerABI.cmake when it calls the implicit
          include parser).
      
        - if CMakeDetermineCompilerABI.cmake successfully calls the
          implicit include parser, it overwrites the value in
          _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT with the
          value returned by the parser
      
        - CMakeDetermineCompilerABI.cmake always sets
          CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES to the above value
          of _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT
      
        - the final value of CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES gets
          saved to CMake${lang}Compiler.cmake when it is regenerated after
          the compiler tests are done.
      
        - CMakeDetermineCompilerABI.cmake is only executed the first time cmake
          is run.  Additional runs of cmake directly load the implicit include
          path from the value saved in CMake${lang}Compiler.cmake (the parser
          and _INIT variable are not used).
      
      The above depends on UnixPaths.cmake being loaded to set the _INIT value
      before CMakeDetermineCompilerABI.cmake runs the implicit include parser.
      1293ed85
  10. 21 Jan, 2019 1 commit
    • Brad King's avatar
      Refactor exclusion of -I/usr/include to avoid per-language values · 15ad8300
      Brad King authored
      Add a `CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES` to contain the
      hard-coded list of paths to be excluded from `-I` arguments so that the
      values remain excluded even if the per-language
      `CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES` variants change.
      
      This is needed to preserve our historical exclusion of `-I/usr/include`
      even when it is not a real implicit include directory.  A policy may be
      needed to remove it later.
      15ad8300
  11. 16 Jan, 2019 1 commit
    • Fred Baksik's avatar
      GHS: Only print bsp and os directives if specified by user · a42e40e7
      Fred Baksik authored
      -- standalone platforms will not build if bsp/os is specified in project file
      -- integrity platforms will always print these directives because they are required
      -- cleanup -os_dir setting
         allow customization of the actual setting because it is determined by tool-set customization files
         remove variable that was set but never used
      -- add message when using default values
      a42e40e7
  12. 11 Jan, 2019 1 commit
  13. 19 Dec, 2018 1 commit
  14. 11 Nov, 2018 1 commit
  15. 29 Oct, 2018 3 commits
  16. 26 Oct, 2018 3 commits
  17. 05 Oct, 2018 1 commit
  18. 03 Oct, 2018 1 commit
  19. 12 Sep, 2018 1 commit
  20. 28 Aug, 2018 1 commit
    • Brad King's avatar
      Android: Add support for NDK r18 · ca97d4cb
      Brad King authored
      NDK r18 drops GCC toolchains and some STL types.  We need to choose a
      clang toolchain by default when no gcc toolchains are available.  Switch
      the STL type default to `c++_static` when the old `gnustl_static`
      default is not available.
      
      Update the test suite to not run tests for STL types that do not exist.
      Also do not expect the gcc toolchain `cpp` tool to be available because
      r18 does not provide it.  Also teach it to tolerate `gcc -dumpmachine`
      output like `arm--linux-android` that differs from the toolchain prefix.
      
      Fixes: #18301
      ca97d4cb
  21. 23 Aug, 2018 1 commit
  22. 07 Aug, 2018 1 commit
  23. 11 Jul, 2018 3 commits
  24. 07 Jul, 2018 1 commit
  25. 06 Jun, 2018 1 commit
  26. 01 Jun, 2018 1 commit
    • Sebastian Holtermann's avatar
      Move GNU COMPILER_PREDEFINES_COMMAND from Platform to Compiler · caa138c1
      Sebastian Holtermann authored
      Moves `CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND` from linux specific
      [Modules/Platform/Linux-GNU.cmake](Modules/Platform/Linux-GNU.cmake) to
      [Modules/Compiler/GNU.cmake](Modules/Compiler/GNU.cmake).
      This enables compiler predefines generation (in AUTOMOC) on all
      platforms that run gcc (and clang).
      caa138c1
  27. 25 May, 2018 1 commit
    • Brad King's avatar
      CUDA: Drop unused/broken platform link flags placeholder · edf0ea9b
      Brad King authored
      The `<CMAKE_CUDA_LINK_FLAGS>` placeholder in CUDA rule variables comes
      from the `<CMAKE_CXX_LINK_FLAGS>` placeholder from which the CUDA rule
      variables were originally derived.  It is not a public interface for
      adding link flags so no projects should be using it.  It is needed for
      platform information modules to specify platform-specific link flags for
      the language.  None of our platform modules set it, so it is unused.
      
      Furthermore, it is broken as currently implemented.  Some of the
      contexts in which it is used need `-Xlinker` and some do not.
      Therefore it is not possible to use the placeholder at all.
      
      Simply remove it for now.  If some need for platform-specific CUDA link
      flags arises a new solution will be needed.
      edf0ea9b
  28. 18 Apr, 2018 2 commits
  29. 17 Apr, 2018 1 commit
    • Brad King's avatar
      Android: Add support for NDK r17 · da294a03
      Brad King authored
      The `armeabi` ABI is no longer available, so we can no longer use it by
      default unconditionally.  Instead detect all available ABIs and choose
      the oldest arm ABI that is available.
      
      Also update the test suite to account for the lack of `armeabi` support
      and pass as of Android NDK r17-beta2.
      da294a03