summaryrefslogtreecommitdiffstats
path: root/Source/cmCustomCommand.h
Commit message (Collapse)AuthorAgeFilesLines
* Add an option for explicit BYPRODUCTS of custom commands (#14963)Brad King2014-11-141-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A common idiom in CMake-based build systems is to have custom commands that generate files not listed explicitly as outputs so that these files do not have to be newer than the inputs. The file modification times of such "byproducts" are updated only when their content changes. Then other build rules can depend on the byproducts explicitly so that their dependents rebuild when the content of the original byproducts really does change. This "undeclared byproduct" approach is necessary for Makefile, VS, and Xcode build tools because if a byproduct were listed as an output of a rule then the rule would always rerun when the input is newer than the byproduct but the byproduct may never be updated. Ninja solves this problem by offering a 'restat' feature to check whether an output was really modified after running a rule and tracking the fact that it is up to date separately from its timestamp. However, Ninja also stats all dependencies up front and will only restat files that are listed as outputs of rules with the 'restat' option enabled. Therefore an undeclared byproduct that does not exist at the start of the build will be considered missing and the build will fail even if other dependencies would cause the byproduct to be available before its dependents build. CMake works around this limitation by adding 'phony' build rules for custom command dependencies in the build tree that do not have any explicit specification of what produces them. This is not optimal because it prevents Ninja from reporting an error when an input to a rule really is missing. A better approach is to allow projects to explicitly specify the byproducts of their custom commands so that no phony rules are needed for them. In order to work with the non-Ninja generators, the byproducts must be known separately from the outputs. Add a new "BYPRODUCTS" option to the add_custom_command and add_custom_target commands to specify byproducts explicitly. Teach the Ninja generator to specify byproducts as outputs of the custom commands. In the case of POST_BUILD, PRE_LINK, and PRE_BUILD events on targets that link, the byproducts must be specified as outputs of the link rule that runs the commands. Activate 'restat' for such rules so that Ninja knows it needs to check the byproducts, but not for link rules that have no byproducts.
* Add USES_TERMINAL option for custom commandsPeter Collingbourne2014-11-141-0/+6
| | | | | | Teach the add_custom_command and add_custom_target commands a new USES_TERMINAL option. Use it to tell the generator to give the command direct access to the terminal if possible.
* genex: remove the need for backtracesBen Boeckel2014-06-051-2/+2
| | | | | Rather than making dummy backtraces and passing them around, just make backtraces optional.
* cmCustomCommand: Return std::string from GetWorkingDirectoryBrad King2014-03-121-3/+4
|
* strings: Remove cmStdString referencesBen Boeckel2014-03-081-1/+1
| | | | | | | | | | | Casts from std::string -> cmStdString were high on the list of things taking up time. Avoid such implicit casts across function calls by just using std::string everywhere. The comment that the symbol name is too long is no longer relevant since modern debuggers alias the templates anyways and the size is a non-issue since the underlying methods are generated since it's inherited.
* cmMakefile: Consify custom command API.Stephen Kelly2014-01-221-1/+1
|
* add_custom_command: Manage backtrace memory correctly (#14299)Brad King2013-07-171-0/+1
| | | | | | | Add an assignment operator to cmCustomCommand to copy the Backtrace member pointee and avoid multiple-free on destruction. Reported-by: Vitezslav Cizek <vcizek@suse.cz>
* Record backtrace in cmCustomCommandBrad King2010-12-151-1/+10
| | | | | This will be used to report custom command errors to the user with a backtrace pointing at the add_custom_command or add_custom_target call.
* Convert CMake to OSI-approved BSD LicenseBrad King2009-09-281-14/+9
| | | | | | | 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.
* ENH: Remove SKIP_RULE_DEPENDS option from add_custom_command()Brad King2008-06-021-5/+0
| | | | | | | | - Option was recently added but never released. - Custom commands no longer depend on build.make so we do not need the option. - Rule hashes now take care of rebuilding when rules change so the dependency is not needed.
* ENH: Add SKIP_RULE_DEPENDS option for add_custom_command()Brad King2008-05-141-0/+5
| | | | | | - Allows make rules to be created with no dependencies. - Such rules will not re-run even if the commands themselves change. - Useful to create rules that run only if the output is missing.
* ENH: Added IMPLICIT_DEPENDS option to ADD_CUSTOM_COMMAND. It currently ↵Brad King2007-09-171-0/+7
| | | | works only for Makefile generators. It allows a custom command to have implicit dependencies in the form of C or CXX sources.
* ENH: Removed "Used" mark from custom commands. It is no longer needed or ↵Brad King2007-05-281-5/+0
| | | | checked by any generators.
* ENH: now target names can be used in add_custom_command() andAlexander Neundorf2007-05-091-2/+2
| | | | | | | | | | add_custom_target() as COMMAND, and cmake will recognize them and replace them with the actual output path of these executables. Also the dependency will be added automatically. Test included. ENH: moved TraceVSDependencies() to the end of GlobalGenerator::Configure(), so it is done now in one central place Alex
* ENH: Added APPEND option to ADD_CUSTOM_COMMAND to allow extra dependencies ↵Brad King2006-10-041-0/+6
| | | | to be connected later. This is useful to create one rule and then have a macro add things to it later. This addresses bug#2151.
* BUG: Fix/cleanup custom commands and custom targets. Make empty comment ↵Brad King2006-09-281-0/+1
| | | | strings work. Fix ZERO_CHECK target always out of date for debugging. Fix Makefile driving of custom commands in a custom target. Fix dependencies on custom targets not in ALL in VS generators.
* ENH: Re-implemented command line argument shell quoting to support several ↵Brad King2006-09-271-0/+11
| | | | platforms with one code base.
* ENH: Added support for multiple outputs generated by a single custom ↵Brad King2006-04-111-3/+3
| | | | command. For Visual Studio generators the native tool provides support. For Xcode and Makefile generators a simple trick is used. The first output is considered primary and has the build rule attached. Other outputs simply depend on the first output with no build rule. During cmake_check_build_system CMake detects when a secondary output is missing and removes the primary output to make sure all outputs are regenerated. This approach always builds the custom command at the right time and only once even during parallel builds.
* STYLE: some m_ to this-> cleanupKen Martin2006-03-151-8/+8
|
* ENH: add working directory supportBill Hoffman2006-02-081-1/+6
|
* ENH: for all custom commands that can not be given to a target, add them to ↵Bill Hoffman2006-01-091-0/+5
| | | | all targets in the current makefile
* ENH: always write out all custom commandsKen Martin2005-07-281-5/+0
|
* ENH: add test to make sure custom commands are usedKen Martin2005-06-211-0/+5
|
* ENH: Updated implementation of custom commands. Multiple command lines are ↵Brad King2005-02-221-46/+21
| | | | now supported effectively allowing entire scripts to be written. Also removed extra variable expansions and cleaned up passing of commands through to the generators. The command and individual arguments are now kept separate all the way until the generator writes them out. This cleans up alot of escaping issues.
* performance improvementKen Martin2003-06-231-4/+4
|
* ENH: allow duplicate commands with the same output to be reduced ↵Bill Hoffman2003-06-041-0/+3
| | | | automatically to one command
* yikes added new custom command supportKen Martin2003-06-031-17/+11
|
* Add comment support, so that you can see in build process what the custom ↵Andy Cedilnik2002-12-101-0/+5
| | | | command does
* ENH: Added reference to Copyright.txt. Removed old reference to ITK ↵Brad King2002-10-231-3/+3
| | | | copyright. Changed program name to CMake instead of Insight in source file header. Also removed tabs.
* ENH:Updated copyrightWill Schroeder2002-01-211-29/+5
|
* ENH: separate command from its arguments in the custom command. This allows ↵Bill Hoffman2001-09-041-3/+11
| | | | the generator on windows to change the slashes for just the command
* ENH:New copyrightWill Schroeder2001-04-271-3/+28
|
* cleaned up the coding style made ivars private etcKen Martin2001-04-191-0/+35
|
* major changes to support multiple libraries and source listsKen Martin2001-04-111-0/+38