1. 07 Dec, 2015 1 commit
  2. 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.
      9682de56
  3. 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.
      8b4873a1
  4. 09 Sep, 2015 1 commit
  5. 13 Jul, 2015 1 commit
    • Brad King's avatar
      Factor an <INCLUDES> placeholder out of <FLAGS> in rule variables · c736de7b
      Brad King authored
      Teach the Makefile and Ninja generators to substitute for an <INCLUDES>
      placeholder instead of putting -I in <FLAGS>.  Update our values for
      
        CMAKE_<LANG>_COMPILE_OBJECT,
        CMAKE_<LANG>_CREATE_ASSEMBLY_SOURCE, and
        CMAKE_<LANG>_CREATE_PREPROCESSED_SOURCE
      
      to place <INCLUDES> just before <FLAGS>.
      c736de7b
  6. 16 Apr, 2014 1 commit
    • Brad King's avatar
      Support duplicate object names in large archives (#14874) · 1ec6485c
      Brad King authored
      Generalize the change from commit 39d0ade0 (Windows-GNU: Support
      duplicate object names in large archives, 2014-04-14) to the default
      archive rules.  These rules have used an incremental append approach
      since commit v2.8.0~1856 (Build large archives incrementally,
      2008-08-04).  Switch from "ar r" to "ar q" to be sure we always append
      objects instead of replacing them.
      1ec6485c
  7. 03 Dec, 2013 1 commit
  8. 02 Dec, 2013 2 commits
  9. 22 Oct, 2013 1 commit
    • Brad King's avatar
      Quote ${CMAKE_<LANG>_COMPILER} while enabling a language · 705ae004
      Brad King authored
      Even though this variable gets set to CMAKE_<LANG>_COMPILER-NOTFOUND when
      the compiler is not found, CMake<LANG>Compiler.cmake gets removed by
      cmGlobalGenerator::EnableLanguage so in try compiles the value is empty.
      Quote references to the variable in
      
       Modules/CMake(C|CXX|Fortran)Information.cmake
       Modules/CMakeDetermineCompilerId.cmake
      
      to avoid dropping arguments from commands that expect them.
      705ae004
  10. 13 Aug, 2012 3 commits
    • Kitware Robot's avatar
      Remove CMake-language block-end command arguments · 9db31162
      Kitware Robot authored
      Ancient versions of CMake required else(), endif(), and similar block
      termination commands to have arguments matching the command starting the
      block.  This is no longer the preferred style.
      
      Run the following shell code:
      
      for c in else endif endforeach endfunction endmacro endwhile; do
          echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/'
      done >convert.sed &&
      git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
      egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
      egrep -z -v 'Tests/CMakeTests/While-Endwhile-' |
      xargs -0 sed -i -f convert.sed &&
      rm convert.sed
      9db31162
    • Kitware Robot's avatar
      Convert CMake-language commands to lower case · 77543bde
      Kitware Robot authored
      Ancient CMake versions required upper-case commands.  Later command
      names became case-insensitive.  Now the preferred style is lower-case.
      
      Run the following shell code:
      
      cmake --help-command-list |
      grep -v "cmake version" |
      while read c; do
          echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g'
      done >convert.sed &&
      git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
      egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
      xargs -0 sed -i -f convert.sed &&
      rm convert.sed
      77543bde
    • Kitware Robot's avatar
      Remove trailing whitespace from most CMake and C/C++ code · 7bbaa428
      Kitware Robot authored
      Our Git commit hooks disallow modification or addition of lines with
      trailing whitespace.  Wipe out all remnants of trailing whitespace
      everywhere except third-party code.
      
      Run the following shell code:
      
      git ls-files -z -- \
       bootstrap doxygen.config '*.readme' \
       '*.c' '*.cmake' '*.cpp' '*.cxx' \
       '*.el' '*.f' '*.f90' '*.h' '*.in' '*.in.l' '*.java' \
       '*.mm' '*.pike' '*.py' '*.txt' '*.vim' |
      egrep -z -v '^(Utilities/cm|Source/(kwsys|CursesDialog/form)/)' |
      egrep -z -v '^(Modules/CPack\..*\.in)' |
      xargs -0 sed -i 's/ \+$//'
      7bbaa428
  11. 30 Apr, 2012 1 commit
    • Modestas Vainius's avatar
      Support building shared libraries or modules without soname (#13155) · e1409ac5
      Modestas Vainius authored
      Add a boolean target property NO_SONAME which may be used to disable
      soname for the specified shared library or module even if the platform
      supports it.  This property should be useful for private shared
      libraries or various plugins which live in private directories and have
      not been designed to be found or loaded globally.
      
      Replace references to <CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG> and
      hard-coded -install_name flags with a conditional <SONAME_FLAG> which is
      expanded to the value of the CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG
      definition as long as soname supports is enabled for the target in
      question.  Keep expanding CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG in
      rules in case third party projects still use it.  Such projects would
      not yet use NO_SONAME so the adjacent <TARGET_SONAME> will always be
      expanded.  Make <TARGET_INSTALLNAME_DIR> NO_SONAME aware as well.  Since
      -install_name is soname on OS X, this should not be a problem if this
      variable is expanded only if soname is enabled.
      
      The Ninja generator performs rule variable substitution only once
      globally per rule to put its own placeholders.  Final substitution is
      performed by ninja at build time.  Therefore we cannot conditionally
      replace the soname placeholders on a per-target basis.  Rather than
      omitting $SONAME from rules.ninja, simply do not write its contents for
      targets which have NO_SONAME.  Since 3 variables are affected by
      NO_SONAME ($SONAME, $SONAME_FLAG, $INSTALLNAME_DIR), set them only if
      soname is enabled.
      e1409ac5
  12. 05 Dec, 2011 1 commit
    • Brad King's avatar
      Load platform files that need to know the ABI when possible · a603250a
      Brad King authored
      Load platform files named in CMAKE_<lang>_ABI_FILES for each language
      once the ABI sizeof(void*) is known.  During the first configuration
      this is after the test for working compiler and ABI detection checks.
      During later configurations the ABI information is immediately available
      because it has been saved in CMake<lang>Compiler.cmake.
      a603250a
  13. 19 Jan, 2011 1 commit
    • Brad King's avatar
      Fix relative CMAKE_USER_MAKE_RULES_OVERRIDE (#11725) · a146e034
      Brad King authored
      In commit 295b5b60 (Honor CMAKE_USER_MAKE_RULES_OVERRIDE in try_compile,
      2010-06-29) we started passing the value of this variable when building
      a try_compile project.  If the variable contains a relative path it must
      be treated with respect to the file where it is first used.  Ensure that
      the value is converted to a full path so that it is correctly referenced
      in the try_compile projects.
      a146e034
  14. 10 Jan, 2011 1 commit
  15. 28 Sep, 2010 1 commit
    • Brad King's avatar
      Reset platform/compiler info status for each language · 20f49730
      Brad King authored
      In each CMake<lang>Information.cmake file we use an _INCLUDED_FILE
      variable to track whether a compiler information file has been loaded.
      Reset this variable for each language.
      
      This fixes Fortran under VS generators with the Intel plugin.
      Previously the variable would be left set true from C and C++ and then
      Fortran would not load old-style files like Platform/Windows-ifort.
      20f49730
  16. 09 Aug, 2010 1 commit
  17. 09 Oct, 2009 1 commit
  18. 06 Oct, 2009 1 commit
    • Brad King's avatar
      Use work-around from bug 4772 for C++ and Fortran · d0c03f80
      Brad King authored
      The commit "fix for bug 4772" added a work-around to CMakeCInformation
      for platform config files that put compiler information in the system
      file (like SunOS flags for GCC).  This commit adds the same work-around
      for CXX and Fortran.  It is necessary to support enabling these
      languages separately from C in other subdirectories.
      
      The commit "Avoid (Unix|Windows)Paths.cmake multiple include" added
      include blockers that prevent the files from multiple inclusion, so it
      is safe to include the system information files from every language.
      
      See issue #4772 and issue #9656.
      d0c03f80
  19. 01 Oct, 2009 1 commit
  20. 28 Sep, 2009 1 commit
    • Brad King's avatar
      Convert CMake non-find modules to BSD License · 3a666595
      Brad King authored
      This adds copyright/license notification blocks CMake's non-find
      modules.  Most of the modules had no notices at all.  Some had notices
      referring to the BSD license already.  This commit normalizes existing
      notices and adds missing notices.
      3a666595
  21. 23 Jul, 2009 1 commit
    • Brad King's avatar
      ENH: Load platform-independent per-compiler files · 797e49a1
      Brad King authored
      This teaches the language configuration modules to load per-compiler
      information for each language using the compiler id but no system name.
      They look for modules named "Compiler/<id>-<lang>.cmake".  Such modules
      may specify compiler flags that do not depend on the platform.
      797e49a1
  22. 14 Oct, 2008 1 commit
  23. 01 Oct, 2008 1 commit
  24. 04 Aug, 2008 1 commit
    • Brad King's avatar
      ENH: Build large archives incrementally · aaa88d33
      Brad King authored
      Creation of archive libraries with the unix 'ar' tool should be done
      incrementally when the number of object files is large.  This avoids
      problems with the command line getting too many arguments.
      aaa88d33
  25. 21 Apr, 2008 1 commit
  26. 01 Feb, 2008 1 commit
    • Brad King's avatar
      ENH: Pass dependent library search path to linker on some platforms. · 82fcaebe
      Brad King authored
        - Move runtime path ordering out of cmComputeLinkInformation
          into its own class cmOrderRuntimeDirectories.
        - Create an instance of cmOrderRuntimeDirectories for runtime
          path ordering and another instance for dependent library
          path ordering.
        - Replace CMAKE_DEPENDENT_SHARED_LIBRARY_MODE with explicit
          CMAKE_LINK_DEPENDENT_LIBRARY_FILES boolean.
        - Create CMAKE_LINK_DEPENDENT_LIBRARY_DIRS boolean.
        - Create variables to specify -rpath-link flags:
            CMAKE_SHARED_LIBRARY_RPATH_LINK_<LANG>_FLAG
            CMAKE_EXECUTABLE_RPATH_LINK_<LANG>_FLAG
        - Enable -rpath-link flag on Linux and QNX.
        - Documentation and error message updates
      82fcaebe
  27. 22 Jan, 2008 1 commit
    • Brad King's avatar
      ENH: Implement linking with paths to library files instead of -L and -l separation. See bug #3832 · 96fd5909
      Brad King authored
        - This is purely an implementation improvement.  No interface has changed.
        - Create cmComputeLinkInformation class
        - Move and re-implement logic from:
            cmLocalGenerator::ComputeLinkInformation
            cmOrderLinkDirectories
        - Link libraries to targets with their full path (if it is known)
        - Dirs specified with link_directories command still added with -L
        - Make link type specific to library names without paths
          (name libfoo.a without path becomes -Wl,-Bstatic -lfoo)
        - Make directory ordering specific to a runtime path computation feature
          (look for conflicting SONAMEs instead of library names)
        - Implement proper rpath support on HP-UX and AIX.
      96fd5909
  28. 14 Jan, 2008 1 commit
  29. 17 Dec, 2007 1 commit
  30. 02 Jul, 2007 1 commit
    • Alexander Neundorf's avatar
      · 930bb0cd
      Alexander Neundorf authored
      ENH: remove support for presetting CMAKE_SYSTEM_INFO_FILE,
      CMAKE_SYSTEM_AND_C_COMPILER_INFO_FILE, CMAKE_SYSTEM_AND_CXX_COMPILER_INFO_FILE,
      CMAKE_SYSTEM_AND_C_COMPILER_AND_PROCESSOR_INFO_FILE and CMAKE_SYSTEM_AND_CXX_COMPILER_AND_PROCESSOR_INFO_FILE
      
      Instead of presetting these variables to arbitrary filenames, users should
      set up CMAKE_SYSTEM_NAME and the compilers correctly and also create a
      Platform/ directory so these files will all follow the official cmake style,
      which should make it easier to understand and debug project which have their
      own platform/toolchain support files.
      
      -remove support for a suffix to MS crosscompilers, since this is not (yet)
      supported by cmake and might confuse users
      
      Alex
      930bb0cd
  31. 12 Jun, 2007 1 commit
    • Alexander Neundorf's avatar
      · df1edcb9
      Alexander Neundorf authored
      ENH: first include the processor specific file, then the compiler file, this
      way the specific hardware file can set variables which can be used in the
      toolchain rules (like CMAKE_C_COMPILE_OBJECT etc.)
      
      Alex
      df1edcb9
  32. 11 Jun, 2007 1 commit
    • Alexander Neundorf's avatar
      · 422dc631
      Alexander Neundorf authored
      ENH: split cmGlobalGenerator::SetLanguageEnabled() in two parts, where the
      second part copies the values from the cmake variables into internal maps.
      So this can now be done after the compiler-specific information has been
      loaded, which can now overwrite more settings.
      
      Alex
      422dc631
  33. 05 Jun, 2007 1 commit
    • Alexander Neundorf's avatar
      · eab5a435
      Alexander Neundorf authored
      ENH: also load a processor-specific file if exists
      -also try the basename file if the compiler id file doesn't exist
      -don't rely so much on the CMAKE_TOOLCHAIN_FILE
      
      Alex
      eab5a435
  34. 17 May, 2007 1 commit
    • Alexander Neundorf's avatar
      · 61d3444f
      Alexander Neundorf authored
      ENH: merge CMake-CrossCompileBasic to HEAD
      -add a RESULT_VARIABLE to INCLUDE()
      -add CMAKE_TOOLCHAIN_FILE for specifiying your (potentially crosscompiling) toolchain
      -have TRY_RUN() complain if you try to use it in crosscompiling mode (which were compiled but cannot run on this system)
      -use CMAKE_EXECUTABLE_SUFFIX in TRY_RUN(), probably TRY_RUN won't be able to
      run the executables if they have a different suffix because they are
      probably crosscompiled, but nevertheless it should be able to find them
      -make several cmake variables presettable by the user: CMAKE_C/CXX_COMPILER, CMAKE_C/CXX_OUTPUT_EXTENSION, CMAKE_SYSTEM_NAME, CMAKE_SYSTEM_INFO_FILE
      -support prefix for GNU toolchains (arm-elf-gcc, arm-elf-ar, arm-elf-strip etc.)
      -move ranlib on OSX from the file command to a command in executed in cmake_install.cmake
      -add support for stripping during install in cmake_install.cmake
      -split out cl.cmake from Windows-cl.cmake, first (very incomplete) step to support MS crosscompiling tools
      -remove stdio.h from the simple C program which checks if the compiler works, since this may not exist for some embedded platforms
      -create a new CMakeFindBinUtils.cmake which collects the search fro ar, ranlib, strip, ld, link, install_name_tool and other tools like these
      -add support for CMAKE_FIND_ROOT_PATH for all FIND_XXX commands, which is a
      list of directories which will be prepended to all search directories, right
      now as a cmake variable, turning it into a global cmake property may need
      some more work
      -remove cmTestTestHandler::TryExecutable(), it's unused
      -split cmFileCommand::HandleInstall() into slightly smaller functions
      
      Alex
      61d3444f
  35. 03 May, 2007 1 commit
  36. 11 Apr, 2006 1 commit
  37. 06 Mar, 2006 1 commit