Commit Graph

92 Commits

Author SHA1 Message Date
Brad King e308621382 Create CMP0014 to require CMakeLists.txt files
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.
2009-09-03 08:27:12 -04:00
Brad King 2ea2810737 Fix typo in REQUIRED_ALWAYS policy error message 2009-09-03 08:26:18 -04:00
Brad King 36366beb62 ENH: Improve CMP0012 doc and message formatting
This fixes the CMP0012 description to have a one-line summary in the
'brief' section and the rest of the explanation in the 'full' section.
It makes the warning message shorter and improves formatting of the
policy documentation, especially in the HTML pages.  The convention is
already used by all other policies.
2009-06-17 14:18:14 -04:00
Brad King c790b1fabb ENH: Create CMP0013 to disallow duplicate dirs
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.
2009-06-17 13:40:09 -04:00
Ken Martin 3dadbdf3fd COMP: fix line length 2009-06-15 12:33:21 -04:00
Ken Martin 133a778e2d ENH: clean up some help text 2009-06-12 13:25:50 -04:00
Ken Martin a73071ca17 ENH: modified the if command to address bug 9123 some 2009-06-12 10:07:05 -04:00
Brad King c332e0bf3c ENH: Isolate policy changes in included scripts
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.
2009-01-22 13:18:40 -05:00
Brad King d524f3675e ENH: Improve argument parsing error messages
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.
2008-09-24 08:51:19 -04:00
David Cole bd1935dcd1 ENH: Improve FILE GLOB_RECURSE handling of symlinks with a new CMake policy. CMP0009 establishes NEW default behavior of not recursing through symlinks. OLD default behavior or explicit FOLLOW_SYMLINKS argument to FILE GLOB_RECURSE will still recurse through symlinks. 2008-09-11 14:34:04 -04:00
Brad King f50ed1fd88 ENH: Improve errors when a policy is REQUIRED
In the future some policies may be set to REQUIRED_IF_USED or
REQUIRED_ALWAYS.  This change clarifies the error messages users receive
when violating the requirements.
2008-08-18 16:29:00 -04:00
Brad King b93f0318fe ENH: Support full-path libs w/out valid names.
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.
2008-07-23 12:59:14 -04:00
Bill Hoffman 0a0672c01f ENH: fix list command with empty elements 2008-04-21 16:57:11 -04:00
Brad King 067717a56a BUG: Fix compatibility with CMake 2.4 for installation of MACOSX_BUNDLE targets
- Add policy CMP0006 to decide whether to use compatibility
  - OLD behavior is to fall back to RUNTIME rules
  - NEW behavior is to produce an error
2008-04-14 17:53:11 -04:00
Brad King e3666a1de5 ENH: Allow policy CMP0000 to be set explicitly
- Message for missing cmake_minimum_required is not issued
    until the end of processing the top CMakeLists.txt file
  - During processing a cmake_policy command may set behavior
  - OLD behavior is to silently ignore the problem
  - NEW behavior is to issue an error instead of a warning
2008-03-31 13:33:09 -04:00
Brad King 1655dce2a5 ENH: Cleanup policy version interface presented to user.
- In cmake_minimum_required do not set policy version if current
    CMake is too old
  - In cmPolicies::ApplyPolicyVersion report error if version is too
    new or cannot be parsed
2008-03-24 10:56:26 -04:00
Brad King a86e8fa69f ENH: Yet another attempt at warning for CMP0003.
- Give example code to avoid the warning
  - Make explanation more consise
  - Explicitly state this is for compatibility
  - Issue the warning for at most one target
2008-03-20 21:11:26 -04:00
Brad King 01033b5d56 ENH: Improve warning about specifying a cmake version
- Update policy CMP0000 to require use of the command
    cmake_minimum_required and not cmake_policy
    so there is only one way to avoid it.
  - Explicitly specify the line users should add.
  - Reference policy CMP0000 only at the end.
  - Fix policy CMP0000 documentation to not suggest
    use of the cmake_policy command.
2008-03-19 15:18:21 -04:00
Brad King a340fd42b8 ENH: Clarify documentation of policy CMP0000 and its relationship with cmake_minimum_required. 2008-03-13 17:32:13 -04:00
Brad King 9a83ce6efc ENH: Add policy CMP0005 to decide whether add_definitions should escape defs. 2008-03-13 17:11:57 -04:00
Brad King bf4cef9d5c ENH: Add policy CMP_0004 to require library names to have no leading or trailing whitespace. Replace previous check of CMAKE_BACKWARDS_COMPATIBILITY against version 2.4 with the policy. 2008-03-13 16:35:39 -04:00
Brad King d46ff28ac9 ENH: Convert CMAKE_LINK_OLD_PATHS to policy CMP0003.
- Policy is WARN by default so projects will build
    as they did in 2.4 without user intervention
  - Remove CMAKE_LINK_OLD_PATHS variable since it was
    never in a release and the policy supercedes it
  - Report target creation backtrace in warning message
    since policy should be set by that point
2008-03-13 16:23:18 -04:00
Brad King a313a098d0 ENH: Reduce whitespace in policy warning/error messages. 2008-03-13 15:01:58 -04:00
Ken Martin 73df9a5cd4 ENH: change CMP_ to CMP 2008-03-13 11:38:46 -04:00
Bill Hoffman dc9245df6c ENH: add enum to IssueMessage 2008-03-11 10:29:56 -04:00
Brad King 192de486df ENH: Cleanup policy generic documentation. Cleanup some policy error/warning messages. 2008-03-08 09:13:13 -05:00
Brad King 46bf0347a3 ENH: Finish creating, documenting, and enforcing policy CMP_0002. 2008-03-07 16:36:57 -05:00
Brad King 5233b75a77 ENH: Improve handling of old-style compatibility.
- Remove CMP_0001 (no slash in target name) and restore
    old CMAKE_BACKWARDS_COMPATIBILITY check for it
  - Replace all checks of CMAKE_BACKWARDS_COMPATIBILITY
    with cmLocalGenerator::NeedBackwardsCompatibility calls
  - Create new CMP_0001 to determine whether or not
    CMAKE_BACKWARDS_COMPATIBILITY is used.
    (old = use, new = ignore)
  - Show CMAKE_BACKWARDS_COMPATIBILITY in cache only when
    CMP_0001 is set to OLD or WARN
  - Update documentation of cmake_policy and cmake_minimum_required
    to indicate their relationship and the 2.4 version boundary
  - When no cmake policy version is set in top level makefile
    implicitly call cmake_policy(VERSION 2.4) which restores
    CMAKE_BACKWARDS_COMPATIBILITY and other 2.4 compatibility
  - Fix tests MakeClean and Preprocess to call
    cmake_policy(VERSION 2.6) because they depend on new policies
2008-03-07 15:30:35 -05:00
Ken Martin 55eede4b13 ENH: clean up some policy stuff and interactions with CMAKE_BACKWARDS_COMPATIBILITY and CMAKE_MINIMUM_REQUIRED 2008-03-07 11:43:47 -05:00
Brad King 680104a490 ENH: New format for warning and error messages
- Add cmMakefile methods IssueError and IssueWarning
  - Maintain an explicit call stack in cmMakefile
  - Include context/call-stack info in messages
  - Nested errors now unwind the call stack
  - Use new mechanism for policy warnings and errors
  - Improve policy error message
  - Include cmExecutionStatus pointer in call stack
    so that errors deeper in the C++ stack under
    a command invocation will become errors for the
    command
2008-03-07 08:40:36 -05:00
Ken Martin 5588ed47fc BUG: change in handling of cmake_minimum_required 2008-03-06 15:08:03 -05:00
Ken Martin adddcea5d7 BUG: change the handling of CMAKE_MINIMUM_REQUIRED and BACKWARDS_COMPATIBILITY and extend the documentaiton quite a bit 2008-03-06 10:57:59 -05:00
Brad King c07aba6240 ENH: Fix policy warning message to not give wrong code as example. 2008-03-05 18:42:46 -05:00
Brad King 7c01167666 BUG: Require policy version to specify at least major.minor. Do not store CMAKE_BACKWARDS_COMPATIBILITY with an invalid version value. 2008-03-05 18:20:20 -05:00
Brad King 95512a4c02 BUG: Fix parsing of policy version number in cmPolicies. 2008-03-05 17:26:32 -05:00
Ken Martin f2c6e9e480 BUG: some fixes, still a few to go 2008-03-05 11:41:25 -05:00
Ken Martin cd4d2acbe6 ENH: more policy changes 2008-03-04 14:51:25 -05:00
Ken Martin d47a5951ed ENH: add --help-policies and --help-policy command line options 2008-03-04 09:16:33 -05:00
Ken Martin 345af17586 ENH: revert dumb change 2008-03-02 09:03:33 -05:00
Ken Martin e0059c0db7 COMP: fix compile errors on vs6 and a warning 2008-03-02 08:36:18 -05:00
Ken Martin bd0447be7d STYLE: fix some line lengths 2008-03-01 15:26:15 -05:00
Ken Martin ab851bf36b ENH: just getting somethng checked in, still work to do 2008-02-29 15:28:46 -05:00