summaryrefslogtreecommitdiffstats
path: root/Source/cmCustomCommand.cxx
Commit message (Collapse)AuthorAgeFilesLines
* IWYU: Mark cmConfigure.h with pragma: keepDaniel Pfeifer2017-08-261-2/+0
| | | | Also remove `#include "cmConfigure.h"` from most source files.
* Use C++11 nullptrDaniel Pfeifer2017-08-241-2/+2
|
* Use quotes for non-system includesDaniel Pfeifer2017-04-111-1/+1
| | | | | | | | | | | | | Automate with: git grep -l '#include <cm_' -- Source \ | xargs sed -i 's/#include <\(cm_.*\)>/#include "\1"/g' git grep -l '#include <cmsys/' -- Source \ | xargs sed -i 's/#include <\(cmsys\/.*\)>/#include "\1"/g' git grep -l '#include <cm[A-Z]' -- Source \ | xargs sed -i 's/#include <\(cm[A-Z].*\)>/#include "\1"/g'
* add_custom_{command,target}: Add COMMAND_EXPAND_LISTS optionEd Branch2017-01-141-0/+12
| | | | | | This option allows lists generated by generator expressions to be expanded. Closes: #15935
* Simplify CMake per-source license noticesBrad King2016-09-271-11/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* fix a load of include-what-you-use violationsDaniel Pfeifer2016-09-031-1/+1
|
* add_custom_command: Add DEPFILE option for NinjaKulla Christoph2016-08-301-0/+10
| | | | | | | | Provide a way for custom commands to inform the ninja build tool about their implicit dependencies. For now simply make use of the option an error on other generators. Closes: #15479
* Avoid using KWSys auto_ptr by adopting it ourselvesBrad King2016-06-291-1/+1
| | | | | | | | | | | | Replace use of cmsys::auto_ptr with a CM_AUTO_PTR macro that maps to our own implementation adopted from the KWSys auto_ptr implementation. Later we may be able to map CM_AUTO_PTR to std::auto_ptr on compilers that do not warn about it. Automate the client site conversions: git grep -l auto_ptr -- Source/ | grep -v Source/kwsys/ | xargs sed -i \ 's|cmsys::auto_ptr|CM_AUTO_PTR|;s|cmsys/auto_ptr.hxx|cm_auto_ptr.hxx|'
* use CM_NULLPTRDaniel Pfeifer2016-06-281-2/+2
|
* Simplify boolean expressionsDaniel Pfeifer2016-06-021-1/+1
| | | | | | Use clang-tidy's readability-simplify-boolean-expr checker. After applying the fix-its, revise all changes *very* carefully. Be aware of false positives and invalid changes.
* Revise C++ coding style using clang-formatKitware Robot2016-05-161-20/+19
| | | | | | | | | | | | | Run the `Utilities/Scripts/clang-format.bash` script to update all our C++ code to a new style defined by `.clang-format`. Use `clang-format` version 3.8. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* Remove `//------...` horizontal separator commentsBrad King2016-05-091-19/+0
| | | | | | | | | | | | | | | | | | | | | | | | Modern editors provide plenty of ways to visually separate functions. Drop the explicit comments that previously served this purpose. Use the following command to automate the change: $ git ls-files -z -- \ "*.c" "*.cc" "*.cpp" "*.cxx" "*.h" "*.hh" "*.hpp" "*.hxx" | egrep -z -v "^Source/cmCommandArgumentLexer\." | egrep -z -v "^Source/cmCommandArgumentParser(\.y|\.cxx|Tokens\.h)" | egrep -z -v "^Source/cmDependsJavaLexer\." | egrep -z -v "^Source/cmDependsJavaParser(\.y|\.cxx|Tokens\.h)" | egrep -z -v "^Source/cmExprLexer\." | egrep -z -v "^Source/cmExprParser(\.y|\.cxx|Tokens\.h)" | egrep -z -v "^Source/cmFortranLexer\." | egrep -z -v "^Source/cmFortranParser(\.y|\.cxx|Tokens\.h)" | egrep -z -v "^Source/cmListFileLexer\." | egrep -z -v "^Source/cm_sha2" | egrep -z -v "^Source/(kwsys|CursesDialog/form)/" | egrep -z -v "^Utilities/(KW|cm).*/" | xargs -0 sed -i '/^\(\/\/---*\|\/\*---*\*\/\)$/ {d;}' This avoids modifying third-party sources and generated sources.
* cmCustomCommand: Remove special member functions.Stephen Kelly2015-06-071-45/+0
| | | | | The compiler generated ones are fine. The existing implementations here are incorrect as they omit some members.
* cmCustomCommand: Re-arrange data layout.Stephen Kelly2015-06-071-7/+5
| | | | Size goes from 240 to 224 bytes.
* cmMakefile: Make cmListFileBacktrace default constructible.Stephen Kelly2015-06-021-2/+2
|
* Use insert instead of a loop in some cases.Stephen Kelly2015-01-111-10/+3
| | | | | | Limit this change to inserting into a vector from a vector. A follow up change can use insert for inserting into a set.
* Add an option for explicit BYPRODUCTS of custom commands (#14963)Brad King2014-11-141-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-1/+16
| | | | | | 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.
* backtrace: Convert to local paths in IssueMessageBen Boeckel2014-06-051-1/+3
| | | | | This is the only place we care show the FilePath to the user, so defer the expensive relative path calculation until here.
* genex: remove the need for backtracesBen Boeckel2014-06-051-11/+5
| | | | | Rather than making dummy backtraces and passing them around, just make backtraces optional.
* cmMakefile: return a backtraceBen Boeckel2014-06-051-1/+1
| | | | | This allows backtraces to be fully controlled by the makefile rather than externally (and makes changing how they are manipulated easier).
* cmCustomCommand: Return std::string from GetWorkingDirectoryBrad King2014-03-121-10/+0
|
* cmMakefile: Consify custom command API.Stephen Kelly2014-01-221-1/+1
|
* add_custom_command: Manage backtrace memory correctly (#14299)Brad King2013-07-171-0/+28
| | | | | | | 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-3/+24
| | | | | 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-15/+3
| | | | | | | | - 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-3/+15
| | | | | | - 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/+20
| | | | 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-3/+0
| | | | checked by any generators.
* ENH: Added APPEND option to ADD_CUSTOM_COMMAND to allow extra dependencies ↵Brad King2006-10-041-0/+20
| | | | 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-3/+9
| | | | 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.
* COMP: Fix init order.Brad King2006-09-271-2/+2
|
* BUG: The copy constructor should copy the escape settings.Brad King2006-09-271-3/+3
|
* ENH: Re-implemented command line argument shell quoting to support several ↵Brad King2006-09-271-0/+30
| | | | platforms with one code base.
* ENH: Added support for multiple outputs generated by a single custom ↵Brad King2006-04-111-5/+5
| | | | 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-20/+20
|
* STYLE: Fix some style issuesAndy Cedilnik2006-03-101-1/+2
|
* ENH: add working directory supportBill Hoffman2006-02-081-3/+15
|
* ENH: for all custom commands that can not be given to a target, add them to ↵Bill Hoffman2006-01-091-0/+3
| | | | all targets in the current makefile
* ENH: always write out all custom commandsKen Martin2005-07-281-3/+0
|
* ENH: add test to make sure custom commands are usedKen Martin2005-06-211-0/+3
|
* ENH: Updated implementation of custom commands. Multiple command lines are ↵Brad King2005-02-221-50/+35
| | | | 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.
* ENH: allow duplicate commands with the same output to be reduced ↵Bill Hoffman2003-06-041-0/+15
| | | | automatically to one command
* warning fixesKen Martin2003-06-031-2/+2
|
* yikes added new custom command supportKen Martin2003-06-031-14/+15
|
* Add comment support, so that you can see in build process what the custom ↵Andy Cedilnik2002-12-101-0/+1
| | | | 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-0/+4
| | | | the generator on windows to change the slashes for just the command