1. 15 Oct, 2013 1 commit
    • Brad King's avatar
      Drop "full" documentation output types · 87cc62ca
      Brad King authored
      We will no longer support full documentation generation from executables
      and will instead generate documentation with other tools.  Disable (with
      a warning left behind) the command-line options:
      
       --copyright
       --help-compatcommands
       --help-full
       --help-html
       --help-man
      
      Drop supporting code.  Drop manual sections generation from executables.
      Remove internal documentation construction APIs.  Drop unused sections
      See Also, Author, Copyright, Compat Commands, Custom Modules.
      87cc62ca
  2. 11 Oct, 2013 1 commit
    • Stephen Kelly's avatar
      cmTarget: Deprecate the LOCATION target property with a policy. · e4e5b28c
      Stephen Kelly authored
      The final location and name of a build-target is not determined
      until generate-time. However, reading the LOCATION property from
      a target is currently allowed at configure time. Apart from creating
      possibly-erroneous results, this has an impact on the implementation
      of cmake itself, and prevents some major cleanups from being made.
      
      Disallow reading LOCATION from build-targets with a policy. Port some
      existing uses of it in CMake itself to use the TARGET_FILE generator
      expression.
      e4e5b28c
  3. 07 Oct, 2013 2 commits
    • Brad King's avatar
      Add policy CMP0025 for Apple Clang compiler id compatibility · aa53ee57
      Brad King authored
      The parent commit introduced a separate "AppleClang" compiler id for
      Apple's Clang distribution.  Add a policy in order to support projects
      that expect this compiler's id to be just "Clang".  When the policy is
      OLD or not set, map AppleClang back to Clang.  Continue to use the
      AppleClang id internally while enabling the language, but set the
      CMAKE_<LANG>_COMPILER_ID after project() or enable_language() to the
      compatible value for use by project code.
      aa53ee57
    • Stephen Kelly's avatar
      export: Add policy CMP0024 to disallow include() of export files · 904ff9fe
      Stephen Kelly authored
      Currently, export() is executed at configure-time.
      
      One problem with this is that certain exported properties like
      the link interface may not be complete at the point the export() is
      encountered leading to an incorrect or incomplete exported
      representation. Additionally, the generated IMPORTED_LOCATION
      property may even be incorrect if commands following the export()
      have an effect on it.
      
      Another problem is that it requires the C++ implementation of cmake
      to be capable of computing the exported information at configure time.
      This is a limitation on the cleanup and maintenance of the code. At
      some point in the future, this limitation will be dropped and more
      implementation will be moved from cmTarget to cmGeneratorTarget.
      904ff9fe
  4. 24 Jul, 2013 1 commit
  5. 08 Jul, 2013 1 commit
    • Stephen Kelly's avatar
      Introduce the INTERFACE_LINK_LIBRARIES property. · d0a76ea0
      Stephen Kelly authored
      This property replaces the properties which
      match (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?, and is enabled
      for IMPORTED targets, and for non-IMPORTED targets only with a policy.
      
      For static libraries, the INTERFACE_LINK_LIBRARIES property is
      also used as the source of transitive usage requirements content.
      Static libraries still require users to link to all entries in
      their LINK_LIBRARIES, but usage requirements such as INCLUDE_DIRECTORIES
      COMPILE_DEFINITIONS and COMPILE_OPTIONS can be restricted to only
      certain interface libraries.
      
      Because the INTERFACE_LINK_LIBRARIES property is populated unconditionally,
      we need to compare the evaluated result of it with the link implementation
      to determine whether to issue the policy warning for static libraries. For
      shared libraries, the policy warning is issued if the contents of
      the INTERFACE_LINK_LIBRARIES property differs from the contents of the
      relevant config-specific old LINK_INTERFACE_LIBRARIES property.
      d0a76ea0
  6. 21 May, 2013 1 commit
  7. 23 Jan, 2013 1 commit
  8. 07 Dec, 2012 1 commit
    • Brad King's avatar
      Add policy CMP0019 to skip include/link variable re-expansion · 711b63f7
      Brad King authored
      Historically CMake has always expanded ${} variable references in the
      values given to include_directories(), link_directories(), and
      link_libraries().  This has been unnecessary since general ${}
      evaluation syntax was added to the language a LONG time ago, but has
      remained for compatibility with VERY early CMake versions.
      
      For a long time the re-expansion was a lightweight operation because it
      was only processed once at the directory level and the fast-path of
      cmMakefile::ExpandVariablesInString was usually taken because values did
      not have any '$' in them.  Then commit d899eb71 (Call
      ExpandVariablesInString for each target's INCLUDE_DIRECTORIES,
      2012-02-22) made the operation a bit heavier because the expansion is
      now needed on a per-target basis.  In the future we will support
      generator expressions in INCLUDE_DIRECTORIES with $<> syntax, so the
      fast-path in cmMakefile::ExpandVariablesInString will no longer be taken
      and re-expansion will be very expensive.
      
      Add policy CMP0019 to skip the re-expansion altogether in NEW behavior.
      In OLD behavior perform the expansion but improve the fast-path
      heuristic to match ${} but not $<>.  If the policy is not set then warn
      if expansion actually does anything.  We expect this to be encountered
      very rarely in practice.
      711b63f7
  9. 12 Jun, 2012 1 commit
    • Stephen Kelly's avatar
      Refactor generation of shared library flags · bd349630
      Stephen Kelly authored
      CMAKE_SHARED_LIBRARY_<lang>_FLAGS has flags on various platforms for a
      variety of purposes that are correlated with shared libraries but not
      exclusive to them.  Refactor generation of these flags to use new
      purpose-specific platform variables
      
        CMAKE_<lang>_COMPILE_OPTIONS_DLL
        CMAKE_<lang>_COMPILE_OPTIONS_PIC
        CMAKE_<lang>_COMPILE_OPTIONS_PIE
      
      Activate the DLL flags specifically for shared libraries.  Add a new
      POSITION_INDEPENDENT_CODE target property to activate PIC/PIE flags, and
      default to true for shared libraries to preserve default behavior.
      Initialize the new property from CMAKE_POSITION_INDEPENDENT_CODE to
      allow easy global configuration in projects.
      
      Although the default behavior is unchanged by this refactoring, the new
      approach ignores CMAKE_SHARED_LIBRARY_<lang>_FLAGS completely.  We must
      leave it set in case projects reference the value.  Furthermore, if a
      project modifies CMAKE_SHARED_LIBRARY_<lang>_FLAGS it expects the new
      value to be used.  Add policy CMP0018 to handle compatibility with
      projects that modify this platform variable.
      
      Add a PositionIndependentCode test on platforms where we can get
      meaningful results.
      bd349630
  10. 29 Feb, 2012 1 commit
  11. 04 Jan, 2011 2 commits
    • Alexander Neundorf's avatar
      Prefer files from CMAKE_ROOT when including from CMAKE_ROOT · db44848f
      Alexander Neundorf authored
      This patch makes include() and find_package() prefer cmake files
      located in CMAKE_ROOT over those in CMAKE_MODULE_PATH.
      This makes sure that the including file gets that file included
      which it expects, i.e. the one from cmake with which it was tested.
      It only changes behaviour when such an included file exists both
      in CMAKE_MODULE_PATH and in CMAKE_ROOT.
      This comes together with a new policy CMP0017, with default
      behaviour it behaves as it always did, but warns.
      With NEW behaviour it includes the file from CMAKE_ROOT
      instead from CMAKE_MODULE_PATH. This fixes (if CMP0017 is set)
      building KDE 4.5 with cmake >= 2.8.3.
      Also a basic test for this policy in included.
      db44848f
    • Brad King's avatar
      Allow users to specify defaults for unset policies · a364daf1
      Brad King authored
      Check CMAKE_POLICY_DEFAULT_CMP<NNNN> for a default when policy CMP<NNNN>
      would otherwise be left unset.  This allows users to set policies on the
      command line when the project does not set them.  One may do this to
      quiet warnings or test whether a project will build with new behavior
      without modifying code.  There may also be cases when users want to
      build an existing project release using new behavior for policies
      unknown to the project at the time of the release.
      a364daf1
  12. 28 Aug, 2010 2 commits
  13. 23 Apr, 2010 1 commit
    • Brad King's avatar
      Teach CMake Policies about tweak version component · e49b6eca
      Brad King authored
      Add the [.tweak] version component throughout the policy implementation.
      Document all components for the cmake_policy(VERSION) command.  Record
      the tweak level in which each policy was introduced (0 for all current
      policies).  In generated documentation we report the tweak level only if
      it is not zero.  This preserves existing documentation.
      e49b6eca
  14. 28 Jan, 2010 1 commit
  15. 24 Nov, 2009 1 commit
    • Brad King's avatar
      Teach link_directories to recognize relative paths · 02db4323
      Brad King authored
      We create CMake Policy CMP0015 to make link_directories() treat relative
      paths with respect to the source tree while retaining compatibility.
      This makes it consistent with include_directories() and other commands.
      
      Changes based on patch from Alex.  See issue #9697.
      02db4323
  16. 28 Oct, 2009 1 commit
  17. 27 Oct, 2009 1 commit
    • Brad King's avatar
      Fix if() command and CMP0012 OLD/NEW behavior · cb185d93
      Brad King authored
      The commit "modified the if command to address bug 9123 some" changed
      the if() command behavior with respect to named boolean constants.  It
      introduced policy CMP0012 to provide compatibility.  However, it also
      changed behavior with respect to numbers (like '2') but did not cover
      the change with the policy.  Also, the behavior it created for numbers
      is confusing ('2' is false).
      
      This commit teaches if() to recognize numbers again, and treats them
      like the C language does in terms of boolean conversion.  We also fix
      the CMP0012 check to trigger in all cases where the result of boolean
      coersion differs from that produced by CMake 2.6.4.
      cb185d93
  18. 09 Oct, 2009 1 commit
  19. 08 Oct, 2009 1 commit
    • Brad King's avatar
      Remove CMake Policy CMP0015 until it is revised · 9a77f65d
      Brad King authored
      We revert commit "Create CMake Policy CMP0015 to fix set(CACHE)" because
      the NEW behavior of the policy breaks a valid use case:
      
        # CMakeLists.txt
        option(BUILD_SHARED_LIBS "..." ON)
        add_library(mylib ...)
        set(BUILD_SHARED_LIBS OFF) # we want only mylib to be shared
        add_subdirectory(ThirdParty)
      
        # ThirdParty/CMakeLists.txt
        option(BUILD_SHARED_LIBS "..." ON)
        # uh, oh, with NEW behavior this dir uses shared libs!!!
      
      We'll re-introduce the policy later with a different change in behavior
      to resolve the motivating case, which was more subtle but less common.
      
      See issue #9008.
      9a77f65d
  20. 01 Oct, 2009 1 commit
  21. 28 Sep, 2009 1 commit
    • Brad King's avatar
      Convert CMake to OSI-approved BSD License · 96afb120
      Brad King authored
      This converts the CMake license to a pure 3-clause OSI-approved BSD
      License.  We drop the previous license clause requiring modified
      versions to be plainly marked.  We also update the CMake copyright to
      cover the full development time range.
      96afb120
  22. 10 Sep, 2009 1 commit
    • Brad King's avatar
      Create CMake Policy CMP0015 to fix set(CACHE) · ee2b446c
      Brad King authored
      The set(CACHE) and option() commands should always expose the cache
      value.  Previously we failed to expose the value when it was already set
      if a local variable definition hid it.  When set to NEW, this policy
      tells the commands to always remove the local variable definition to
      expose the cache value.  See issue #9008.
      ee2b446c
  23. 03 Sep, 2009 1 commit
    • Brad King's avatar
      Create CMP0014 to require CMakeLists.txt files · e3086213
      Brad King authored
      Until now CMake accidentally accepted add_subdirectory() and subdirs()
      calls referring to directories that do not contain a CMakeLists.txt
      file.  We introduce CMake Policy CMP0014 to make this case an error.
      e3086213
  24. 17 Jun, 2009 1 commit
    • Brad King's avatar
      ENH: Create CMP0013 to disallow duplicate dirs · c790b1fa
      Brad King authored
      In CMake 2.6.3 and below we silently accepted duplicate build
      directories whose build files would then conflict.  At first this was
      considured purely a bug that confused beginners but would not be used in
      a real project.  In CMake 2.6.4 we explicitly made it an error.
      
      However, some real projects took advantage of this as a "feature" and
      got lucky that the subtle build errors it can cause did not occur.
      Therefore we need a policy to deal with the case more gracefully.
      See issue #9173.
      c790b1fa
  25. 12 Jun, 2009 1 commit
  26. 23 Jan, 2009 1 commit
  27. 22 Jan, 2009 2 commits
    • Brad King's avatar
      ENH: Isolate policy changes in included scripts · c332e0bf
      Brad King authored
      Isolation of policy changes inside scripts is important for protecting
      the including context.  This teaches include() and find_package() to
      imply a cmake_policy(PUSH) and cmake_policy(POP) around the scripts they
      load, with a NO_POLICY_SCOPE option to disable the behavior.  This also
      creates CMake Policy CMP0011 to provide compatibility.  See issue #8192.
      c332e0bf
    • Brad King's avatar
      ENH: Refactor policy stack representation · 8997f476
      Brad King authored
      This defines PolicyMap as a public member of cmPolicies.  Its previous
      role as a policy stack entry is now called PolicyStackEntry and
      represented as a class to which more information can be added later.
      8997f476
  28. 24 Sep, 2008 1 commit
    • Brad King's avatar
      ENH: Improve argument parsing error messages · d524f367
      Brad King authored
      Previously error messages produced by parsing of command argument
      variable references, such as bad $KEY{VAR} syntax or a bad escape
      sequence, did not provide good context information.  Errors parsing
      arguments inside macro invocations gave no context at all.  Furthermore,
      some errors such as a missing close curly "${VAR" would be reported but
      build files would still be generated.
      
      These changes teach CMake to report errors with good context information
      for all command argument parsing problems.  Policy CMP0010 is introduced
      so that existing projects that built despite such errors will continue
      to work.
      d524f367
  29. 11 Sep, 2008 1 commit
  30. 18 Aug, 2008 1 commit
  31. 23 Jul, 2008 1 commit
    • Brad King's avatar
      ENH: Support full-path libs w/out valid names. · b93f0318
      Brad King authored
      This change introduces policy CMP0008 to decide how to treat full path
      libraries that do not appear to be valid library file names.  Such
      libraries worked by accident in the VS IDE and Xcode generators with
      CMake 2.4 and below.  We support them in CMake 2.6 by introducing this
      policy.  See policy documentation added by this change for details.
      b93f0318
  32. 21 Apr, 2008 1 commit
  33. 14 Apr, 2008 1 commit
  34. 13 Mar, 2008 3 commits