summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefile.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Record backtrace for every add_test commandBrad King2009-08-111-2/+1
| | | | | | We teach cmTest to hold a backtrace for the add_test command that created it. This will be used later to report context for errors at generate time.
* No /fast targets in try_compile project modeBrad King2009-08-041-0/+2
| | | | | | | | The try_compile command builds the cmTryCompileExec executable using the cmTryCompileExec/fast target with Makefile generators in order to save time since dependencies are not needed. However, in project mode the command builds an entire source tree that may have dependencies. Therefore we can use the /fast target approach only in one-source mode.
* ENH: Keep only FinalPass commands in memoryBrad King2009-07-241-1/+1
| | | | | | In cmMakefile we save all invoked commands so that FinalPass can be called on them later. Most commands have no final pass, so we should keep only the few that do.
* ENH: Improve dynamic variable scope implementationBrad King2009-07-221-91/+41
| | | | | | | | | | | | Previously each new variable scope (subdirectory or function call) in the CMake language created a complete copy of the key->value definition map. This avoids the copy using transitive lookups up the scope stack. Results of queries answered by parents are stored locally to maintain locality of reference. The class cmDefinitions replaces cmMakefile::DefinitionsMap, and is aware of its enclosing scope. Each scope stores only the definitions set (or unset!) inside it relative to the enclosing scope.
* ENH: make sure GUIDs for filters are cachedBill Hoffman2009-07-171-11/+29
|
* ENH: add group support and fix borland errorBill Hoffman2009-07-111-1/+1
|
* ENH: first pass at VS 10, can bootstrap CMake, but many tests still failBill Hoffman2009-06-251-2/+2
|
* ENH: Clarify COMPILE_DEFINITIONS separator in docsBrad King2009-06-241-1/+2
| | | | | The COMPILE_DEFINITIONS properties are semicolon-separated lists. Make this clear in the documentation. See issue #9199.
* ENH: Create CMP0013 to disallow duplicate dirsBrad King2009-06-171-10/+49
| | | | | | | | | | | | 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.
* ENH: Support more preprocessor values in VS6Brad King2009-04-241-2/+3
| | | | | | | | | Previously we rejected all preprocessor definition values containing spaces for the VS6 IDE generator. In fact VS6 does support spaces but not in combination with '"', '$', or ';', and only if we use the sytnax '-DNAME="value with spaces"' instead of '-D"NAME=value with spaces"'. Now we support all definition values that do not have one of these invalid pairs. See issue #8779.
* ENH: Support preprocessor def values in VS6Brad King2009-03-231-3/+3
| | | | | | | | | The add_definitions() command and COMPILE_DEFINITIONS dir/tgt/src properties support preprocessor definitions with values. Previously values were not supported in the VS6 generator even though the native tool supports them. It is only values with spaces that VS6 does not support. This enables support and instead complains only for values with spaces. See issue #8779.
* ENH: Refactor generation of CTestTestfile contentBrad King2009-03-161-8/+8
| | | | | | | | | This moves code which generates ADD_TEST and SET_TESTS_PROPERTIES calls into CTestTestfile.cmake files out of cmLocalGenerator and into a cmTestGenerator class. This will allow more advanced generation without cluttering cmLocalGenerator. The cmTestGenerator class derives from cmScriptGenerator to get support for per-configuration script generation (not yet enabled).
* ENH: Enforce unique binary directoriesBrad King2009-02-271-0/+15
| | | | | | The second argument of add_subdirectory must name a unique binary directory or the build files will clobber each other. This enforces uniqueness with an error message.
* ENH: Define RULE_LAUNCH_* propertiesBrad King2009-02-101-0/+19
| | | | | | | This defines global, directory, and target properties RULE_LAUNCH_COMPILE, RULE_LAUNCH_LINK, and RULE_LAUNCH_CUSTOM. Their values specify 'launcher' command lines which are prefixed to compile, link, and custom build rules by Makefile generators.
* ENH: More robust property lookupBrad King2009-02-021-0/+4
| | | | | | This teaches cmMakefile::GetProperty and cmake::GetProperty methods to return NULL when the property name is NULL, making them more robust and consistent with the behavior of cmTarget::GetProperty.
* ENH: Isolate policy changes in included scriptsBrad King2009-01-221-5/+102
| | | | | | | | 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.
* ENH: Better policies for functions and macrosBrad King2009-01-221-0/+12
| | | | | | | This teaches functions and macros to use policies recorded at creation time when they are invoked. It restores the policies as a weak policy stack entry so that any policies set by a function escape to its caller as before.
* ENH: Create notion of a 'weak' policy stack entryBrad King2009-01-221-6/+13
| | | | | | | A 'weak' poilcy stack entry responds normally to queries. However, setting a policy in a weak entry will recursively set the policy in the next entry too. This also gives the internal interface to create a weak entry the option to provide an initial PolicyMap for it.
* ENH: Create policy scope barriersBrad King2009-01-221-41/+69
| | | | | This creates a barrier mechanism to prevent user code from using cmake_policy(POP) to pop a scope it didn't push with cmake_policy(PUSH).
* ENH: Create automatic policy push/pop helperBrad King2009-01-221-0/+29
| | | | | | This creates cmMakefile::PolicyPushPop to push and pop policy scope automatically. It also enforces balanced push/pop pairs inside the scope it handles.
* ENH: Refactor policy stack representationBrad King2009-01-221-4/+3
| | | | | | 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.
* ENH: Better handling of mismatched blocksBrad King2009-01-211-2/+15
| | | | | | | | | | | | | | | | If a logical block terminates with mismatching arguments we previously failed to remove the function blocker but replayed the commands anyway, which led to cases in which we failed to report the mismatch (return shortly after the ending command). The recent refactoring of function blocker deletion changed this behavior to produce an error on the ending line by not blocking the command. Furthermore, the function blocker would stay in place and complain at the end of every equal-level block of the same type. This teaches CMake to treat the begin/end commands (if/endif, etc.) as correct and just warns when the arguments mismatch. The change allows cases in which CMake 2.6.2 silently ignored a mismatch to run as before but with a warning.
* ENH: Better error message for unclosed blocksBrad King2009-01-211-1/+20
| | | | | | This centralizes construction of the error message for an unclosed logical block (if, foreach, etc.). We record the line at which each block is opened so it can be reported in the error message.
* ENH: Refactor logical block enforcementBrad King2009-01-211-39/+68
| | | | | | This uses a stack of 'barriers' to efficiently divide function blockers into groups corresponding to each input file. It simplifies detection of missing block close commands and factors it out of ReadListFile.
* ENH: Refactor function blocker deletionBrad King2009-01-201-4/+4
| | | | | | | | | When a function blocker decides to remove itself we previously removed it at every return point from the C++ scope in which its removal is needed. This teaches function blockers to transfer ownership of themselves from cmMakefile to an automatic variable for deletion on return. Since this removes blockers before they replay their commands, we no longer need to avoid running blockers on their own commands.
* ENH: Improve response to bad if or elseifBrad King2009-01-201-20/+0
| | | | | | | Previously bad arguments to an if() or elseif() would cause some subsequent statements in the corresponding block to execute. This teaches CMake to stop processing commands with a fatal error. It also provides context to bad elseif() error messages.
* BUG: fix crash with empty propertiesBill Hoffman2009-01-181-2/+8
|
* BUG: Enforce matching policy PUSH/POP in all filesBrad King2009-01-151-13/+18
| | | | | | The documentation of cmake_policy PUSH and POP states that they must always match. Previously we enforced this only for the top scope of each CMakeLists.txt file. This enforces the requirement for all files.
* ENH: Provide variable CMAKE_VERSIONBrad King2009-01-151-0/+5
| | | | | | This creates the variable CMAKE_VERSION containing the full version of cmake in "major.minor.patch" format. It is particularly useful with the component-wise version comparison provided by the if() command.
* ENH: Improve test property speed with a mapBrad King2009-01-051-17/+14
| | | | | | | Previously we stored a vector of tests to preserve their order. Property set/get operations would do a linear search for matching tests. This uses a map to efficiently look up tests while keeping the original order with a vector for test file generation.
* BUG: fix issue with -D and cache forceBill Hoffman2008-11-211-2/+8
|
* BUG: Finish fix to old DEFINITIONS propertyBrad King2008-10-091-0/+2
| | | | | | | The cmMakefile::DefineFlagsOrig ivar was created to help preserve the old DEFINITIONS property behavior now that definitions are moved from DefineFlags to the COMPILE_DEFINITIONS directory property. This fixes propagation of the original value into subdirectories.
* ENH: Return utility target after creationBrad King2008-10-091-6/+8
| | | | | | After creating a utility target with AddUtilityCommand, return a pointer to the cmTarget instance so the caller may further modify the target as needed.
* STYLE: fix line length stuff for KWStyleBill Hoffman2008-10-011-1/+2
|
* BUG: Skip a command if its arguments fail to parseBrad King2008-09-241-1/+2
| | | | | | | | If the arguments to a command fail to parse correctly due to a syntax error, the command should not be invoked. This avoids problems created by processing of commands with bad arguments. Even though the build system will not be generated, the command may affect files on disk that persist across CMake runs.
* ENH: Improve argument parsing error messagesBrad King2008-09-241-15/+47
| | | | | | | | | | | | | | 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.
* ENH: Add unset() command.Brad King2008-08-251-0/+5
| | | | | | | | This introduces the unset() command to make it easy to unset CMake variables, environment variables, and CMake cache variables. Previously it was not even possible to unset ENV or CACHE variables (as in completely remove them). Changes based on patch from Philip Lowman. See issue #7507.
* BUG: Linking to modules is for 2.2 compat onlyBrad King2008-08-191-8/+11
| | | | | | | | The compatibility check to allow linking to modules should test for CMake 2.2, not the unreleased 2.3. See issue #7500. Furthermore, the message should be more clear about fixing the code instead of setting CMAKE_BACKWARDS_COMPATIBILITY unless one is just trying to build an existing project.
* ENH: Improve errors when a policy is REQUIREDBrad King2008-08-181-61/+77
| | | | | | 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.
* ENH: add a --trace optionBill Hoffman2008-07-311-0/+15
|
* BUG: Fix computed directory property DEFINITIONS.Brad King2008-06-261-21/+28
| | | | | | | | | | - The property tracks the value formed by add_definitions and remove_definitions command invocations. - The string should be maintained for use in returning for the DEFINITIONS property value. - It is no longer used for any other purpose. - The DEFINITIONS property was recently documented as deprecated. - See bug #7239.
* ENH: Update documentation of computed directory properites.Brad King2008-06-261-1/+59
| | | | | | - Fix documentation of get_directory_property command. - Convert its list of computed directory properties to be defined/documented directory properties.
* BUG: Fix PARENT_DIRECTORY property in top-level to not crash.Brad King2008-06-261-2/+4
|
* BUG: fix for bug 7239, DEFINITIONS property not backwards compatible to 2.4Bill Hoffman2008-06-251-2/+15
|
* ENH: Allow custom commands with VERBATIM option to have $(SomeVar) make ↵Brad King2008-06-041-0/+2
| | | | variable replacement.
* COMP: fix warningKen Martin2008-06-021-4/+4
|
* ENH: make end of file checking for close if, foreach, macro, functions etc ↵Ken Martin2008-05-311-8/+9
| | | | enabled. Not sure why it was disabled to start with, but I suspect I will find out. In reponse to Bill email about a ctest -S script with a function that waqs not closed. Closure was only checked for regular listfiles not other files.
* ENH: Allow users to specify macro-like #include line transforms for ↵Brad King2008-05-141-0/+26
| | | | | | | | dependency scanning. - Define IMPLICIT_DEPENDS_INCLUDE_TRANSFORM property on targets and directories. - Make the directory version inherited. - See issue #6648.
* BUG: Remove check for files written by file(WRITE) being loaded.Brad King2008-04-301-27/+0
| | | | | | | | | | | | - CMake 1.8 and below did not do the check but could get in infinite loops due to the local generate step. - CMake 2.0 added the check but failed to perform it in directories with no targets (see bug #678). - CMake 2.2 removed the local generate which fixed the problem but did not remove the check. - Between CMake 2.4 and 2.6.0rc6 the check was fixed to work even when no targets appear in a directory (see bug #6923). - Bottom line: the check is no longer needed.
* ENH: add support for Intel Fortran Visual studio IDEBill Hoffman2008-04-301-1/+1
|