summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileTargetGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Refactor per-source generator expression evaluationMarc Chevrier2017-12-041-4/+3
| | | | | | Prepare to add generator expression support to more source properties. Factor out some duplicated code into a helper to avoid further duplication.
* Fortran: Add option to run the compiler through launcher toolsBrad King2017-11-211-2/+2
| | | | | | | | | | Add a `Fortran_COMPILER_LAUNCHER` target property like those added for C and CXX by commit v3.4.0-rc1~450^2 (Add options to launch the compiler through tools like ccache or distcc, 2015-06-04) and CUDA by commit v3.10.0-rc1~531^2 (CUDA: Add option to run the compiler through launcher tools, 2017-06-09). Fixes: #17499
* Retire std::auto_ptr and its macro CM_AUTO_PTRMatthias Maennich2017-09-251-4/+4
| | | | Signed-off-by: Matthias Maennich <matthias@maennich.net>
* Meta: replace empty-string assignments with `clear()`.Pavel Solodovnikov2017-09-151-1/+1
|
* Merge topic 'refactor-iwyu-code'Brad King2017-09-151-1/+1
|\ | | | | | | | | | | | | 3bbe95f5 Clean up iwyu code to not be one big if statement. Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1247
| * Clean up iwyu code to not be one big if statement.Bill Hoffman2017-09-131-1/+1
| | | | | | | | | | | | | | | | | | | | This commit changes the internal -E__run_iwyu to be -E__run_co_compile. This is used for co-compile commands. These are tools that want to mirror the compiler. For each compiler invocation the tool will be invoked first. This started as a way to implement include what you use (iwyu), but has expanded to include cpplint, cppcheck and others. Likely there will be more in the future as well. This commit implements each one in its own function and provides a way to add additional ones in the future with less work.
* | Meta: modernize old-fashioned loops to range-based `for`.Pavel Solodovnikov2017-09-121-110/+71
|/ | | | | | Changes done via `clang-tidy` with some manual fine-tuning for the variable naming and `auto` type deduction where appropriate.
* Add properties to run cppcheck along with the compilerBill Hoffman2017-08-301-2/+10
| | | | | | Create a `<LANG>_CPPCHECK` target property (initialized by a `CMAKE_<LANG>_CPPCHECK` variable) to specify a `cppcheck` command line to be run along with the compiler.
* Use C++11 nullptrDaniel Pfeifer2017-08-241-21/+21
|
* CUDA: Add option to run the compiler through launcher toolsBrad King2017-06-091-1/+2
| | | | | | | | Add a `CUDA_COMPILER_LAUNCHER` target property like those added for C and CXX by commit v3.4.0-rc1~450^2 (Add options to launch the compiler through tools like ccache or distcc, 2015-06-04). Fixes: #16953
* Pass large types by const&, small types by valueDaniel Pfeifer2017-06-031-2/+2
|
* Access string npos without instancePavel Solodovnikov2017-06-011-1/+3
|
* Merge topic 'enable_ptx_compilation'Brad King2017-04-211-0/+3
|\ | | | | | | | | | | | | 23691d78 CUDA: Allow sources to be compiled to .ptx files Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !725
| * CUDA: Allow sources to be compiled to .ptx filesRobert Maynard2017-04-201-0/+3
| | | | | | | | | | When the target property `CUDA_PTX_COMPILATION` is enabled CUDA OBJECT libraries will generate ptx files instead of object files.
* | Merge topic '16760-refactor-get-mac-content-directory'Brad King2017-04-211-2/+2
|\ \ | | | | | | | | | | | | | | | | | | cf320f7c Replace boolean `implib` parameters with enum Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !662
| * | Replace boolean `implib` parameters with enumGregor Jasny2017-04-201-2/+2
| |/ | | | | | | | | Named enumeration values are much clearer at call sites and add more type safety.
* | Ninja,Makefile: Unify command line limit logicChristian Pfeiffer2017-04-191-14/+1
|/ | | | | | Move the logic to cmSystemTools to be shared among the generators. Revise the implementation and add comments justifying each possible source for a limit.
* Support WINDOWS_EXPORT_ALL_SYMBOLS with `.def` filesBrad King2017-03-211-12/+25
| | | | | | | | | | | The `WINDOWS_EXPORT_ALL_SYMBOLS` target property exports all symbols found in object files explicitly given to the linker. However, the linker may also find additional symbols in dependencies and copy them into the linked binary (e.g. from `msvcrt.lib`). Provide a way to export an explicit list of such symbols by adding a `.def` file as a source file. Fixes: #16473
* Refactor WINDOWS_EXPORT_ALL_SYMBOLS implementationBrad King2017-03-091-42/+32
| | | | | | | Use `cmGeneratorTarget::ModuleDefinitionInfo` to combine the implementation of `WINDOWS_EXPORT_ALL_SYMBOLS` with that of using a `.def` file as a source. Only one of these could be used within a single target before anyway.
* Refactor module definition file selectionBrad King2017-03-091-2/+4
| | | | | | Create a `ModuleDefinitionInfo` structure for each configuration of a target to hold corresponding information about the selected module definition file (`.def` source).
* CUDA: Fix boolean interpretation of CUDA_SEPARABLE_COMPILATIONBrad King2017-02-201-1/+2
| | | | | If the property is explicitly set to a non-true value we should not treat it as true.
* Add properties to run the cpplint style checker with the compilerJamie Snape2017-01-231-1/+9
| | | | | | Create a `<LANG>_CPPLINT` target property (initialized by a `CMAKE_<LANG>_CPPLINT` variable) to specify a `cpplint` style checker command line to be run along with the compiler.
* Makefile,Ninja: De-duplicate MSVC compiler PDB path selectionBrad King2016-12-151-16/+1
| | | | | Add a helper to cmCommonTargetGenerator instead of duplicating it in cmMakefileTargetGenerator and cmNinjaTargetGenerator.
* Merge topic 'fix-ctest-launchers'Brad King2016-12-121-1/+14
|\ | | | | | | | | | | | | db61cd5d cmRulePlaceholderExpander: Remove unused member RuleLauncher b7771078 Comment ExpandRuleVariables calls not preceded by launcher insertion c58a5198 Makefile: Restore RULE_LAUNCH_COMPILE generation on compilation rules
| * Comment ExpandRuleVariables calls not preceded by launcher insertionBrad King2016-12-091-0/+3
| | | | | | | | | | | | | | Call sites of `ExpandRuleVariables` are now responsible for inserting the `RULE_LAUNCH_{COMPILE,LINK,CUSTOM}` values in rule command lines. Audit all call sites and add a comment to each one that does not insert a launcher to explain why.
| * Makefile: Restore RULE_LAUNCH_COMPILE generation on compilation rulesBrad King2016-12-091-1/+11
| | | | | | | | | | | | | | | | Refactoring in commit 425cd167 (cmLocalGenerator: Remove the launcher from RuleVariables, 2016-10-09) accidentally broke Makefile generator handling of `RULE_LAUNCH_COMPILE`. Responsibility moved from `ExpandRuleVariables` to its call sites, and the Makefile generator call site for compilations was not properly updated. Fix it now.
* | Ninja,Makefile: Name static library compile PDB files as VS doesBrad King2016-11-301-0/+7
| | | | | | | | | | | | | | | | | | | | Change the default compile PDB file name for static libraries to match the Visual Studio default of using the logical target name. This may be incompatible with existing behavior but `COMPILE_PDB_NAME` documents that the default is unspecified. Projects depending on a particular name should set the property. Closes: #16438
* | CUDA: Add support for the CUDA_SEPARABLE_COMPILATION target propertyRobert Maynard2016-11-141-6/+15
| |
* | CUDA: State that cuda has preprocessor output and can generate assembly.Robert Maynard2016-11-141-3/+3
| | | | | | | | We can consider PTX code to be a form of assembly.
* | Fix several include-what-you-use findingsDaniel Pfeifer2016-11-081-8/+6
| |
* | Add generator expression support to per-source COMPILE_FLAGSZsolt Parragi2016-10-281-7/+9
| | | | | | | | | | | | This allows users to specify different genex-based compile flags for each file in a target, e.g. compiling just a single file with `Od/Ox` in release builds on Visual Studio.
* | cmListFileCache: Remove cmState header includeStephen Kelly2016-10-191-0/+1
| | | | | | | | | | Include it in dependents which have previously relied on it transitively.
* | cmState: Port dependents to new cmStateTypes headerStephen Kelly2016-10-191-1/+1
| |
* | cmState: Port dependent code to new cmStateDirectory nameStephen Kelly2016-10-191-3/+3
| |
* | cmState: Move TargetType enum to separate namespaceStephen Kelly2016-10-191-12/+12
|/
* cmRulePlaceholderExpander: Port clients to direct-useStephen Kelly2016-10-151-9/+14
| | | | | | Add a factory function to cmLocalGenerator so that variableMappings can be provided from it, and so that Ninja can always have a hard-coded TargetImpLib.
* cmLocalGenerator: Use strings instead of a Target in rule replacementStephen Kelly2016-10-151-1/+3
| | | | Don't rely on the cmGeneratorTarget type needlessly.
* cmLocalGenerator: Use a converter in rule replacement APIStephen Kelly2016-10-151-4/+8
| | | | | | | The rule replacement API should not really be in cmLocalGenerator, but it was historically, and this coupled many other things together here too, such as output conversion. Make the output converter a parameter so that rule replacement can be removed from cmLocalGenerator.
* Merge topic 'remove-obsolete'Brad King2016-10-131-49/+1
|\ | | | | | | | | | | b6a174d2 Makefiles: Remove query for CMAKE_OBJECT_NAME d0faa58a Makefiles: Remove forbidden flag logic
| * Makefiles: Remove query for CMAKE_OBJECT_NAMEStephen Kelly2016-10-091-3/+1
| | | | | | | | it is not set.
| * Makefiles: Remove forbidden flag logicStephen Kelly2016-10-091-46/+0
| | | | | | | | This might have been needed some day in the past, but not anymore.
* | cmLinkLineComputer: Extract link libraries computation from cmLocalGeneratorStephen Kelly2016-10-101-2/+1
| | | | | | | | Hide some methods which no longer need to be public.
* | cmLinkLineComputer: Move FrameworkPath computation from cmLocalGeneratorStephen Kelly2016-10-101-3/+2
| | | | | | | | Add UseWatcomQuote state, and remove corresponding method parameters.
* | cmLinkLineComputer: Move RPath computation from cmLocalGeneratorStephen Kelly2016-10-101-2/+2
| | | | | | | | | | | | Add state for Relink and populate it at the point of cmLinkLineComputer initialization. This allows removal of the parameter in go-between methods.
* | cmLinkLineComputer: Move ComputeLinkLibs from cmLocalGeneratorStephen Kelly2016-10-101-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a cmOutputConverter to the cmLinkLineComputer and factory methods to facilitate shell escapes. Add state to the cmLinkLineComputer to record whether outputting for response files or for watcom, to satisfy the cmOutputConverter API. These are constant for the lifetime of the cmLinkLineComputer, even when its functionality is extended in the future. This also keeps the signatures of cmLinkLineComputer relatively simple. Pass the cmComputeLinkInformation as a method parameter so that cmLinkLineComputer is free from target-specific state. An instance should be usable for all targets in a directory.
* | cmLocalGenerator: Pass link library info to OutputLinkLibrariesStephen Kelly2016-10-101-3/+6
| | | | | | | | | | | | | | Remove the cmGeneratorTarget from the interface. This is simplification of the OutputLinkLibraries responsibilities so that it can be broken apart into multiple methods.
* | Makefiles: Port CreateLinkLibs to cmLinkLineComputerStephen Kelly2016-10-101-8/+4
| |
* | cmLinkLineComputer: Extract from cmLocalGeneratorStephen Kelly2016-10-101-3/+18
| | | | | | | | | | | | | | | | | | | | | | CMake has several classes which have too many responsibilities. cmLocalGenerator is one of them. Start to extract the link line computation. Create generator-specific implementations of the interface to account for generator-specific behavior. Unfortunately MSVC60 has different behavior to everything else and CMake still generates makefiles for it. Isolate it with MSVC60-specific names.
* | Makefiles: Inline only use of methodStephen Kelly2016-10-091-8/+3
| |
* | Makefiles: Make helper class independent of cmLocalGeneratorStephen Kelly2016-10-091-9/+21
|/ | | | It only needs output conversion.