summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileExecutableTargetGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Meta: modernize old-fashioned loops to range-based `for`.Pavel Solodovnikov2017-09-121-10/+8
| | | | | | Changes done via `clang-tidy` with some manual fine-tuning for the variable naming and `auto` type deduction where appropriate.
* Use C++11 nullptrDaniel Pfeifer2017-08-241-3/+3
|
* cmLocalGenerator: Add a hook for compiler flags used at link timeBrad King2017-05-011-4/+4
| | | | | | | | | | | | When using a compiler to drive linking we add compiler flags from `CMAKE_<LANG>_FLAGS` in case they affect the way the compiler invokes the linker, but we don't add flags from other places that are meant only for compiling sources. Rather than calling the `AddLanguageFlags` method (which is used to add flags for compiling sources) directly, add an intermediate method that is used when adding the flags for linking. This will give us a way to add language-specific compiler flags needed when driving the linker in the same place on the command line as other compiler flags go.
* Clang IPO (LTO) supportRuslan Baratov2017-04-281-0/+3
|
* Inline and remove AddFeatureFlags methodBrad King2017-04-271-2/+4
| | | | | The method implementation is now only one call of another method, so inline it at call sites and remove it.
* CUDA: Makefile uses relative path for device linking status messagesRobert Maynard2017-04-261-1/+5
|
* Replace boolean `implib` parameters with enumGregor Jasny2017-04-201-1/+3
| | | | | Named enumeration values are much clearer at call sites and add more type safety.
* Refactor WINDOWS_EXPORT_ALL_SYMBOLS implementationBrad King2017-03-091-4/+1
| | | | | | | 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.
* fix some include-what-you-use diagnosticsDaniel Pfeifer2017-02-171-0/+1
|
* CUDA: Don't use module definition `.def` files for device linkingRobert Maynard2017-01-121-9/+0
| | | | These files are meaningful only to the host linker.
* CUDA: Populate compiler PDB placeholder during device linkingBrad King2017-01-121-0/+6
| | | | | The device link step runs the host compiler internally so we need to use the proper compiler PDB file with MSVC.
* CUDA: Use `.obj` object file extension on WindowsBrad King2017-01-121-1/+3
|
* CUDA: Add separable compilation support to the makefile generator.Robert Maynard2016-11-141-0/+227
|
* Fix several include-what-you-use findingsDaniel Pfeifer2016-11-081-4/+7
|
* cmListFileCache: Remove cmState header includeStephen Kelly2016-10-191-0/+1
| | | | | Include it in dependents which have previously relied on it transitively.
* cmRulePlaceholderExpander: Port clients to direct-useStephen Kelly2016-10-151-5/+8
| | | | | | 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-1/+2
| | | | | | | 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.
* cmLocalGenerator: Remove the launcher from RuleVariablesStephen Kelly2016-10-151-1/+10
| | | | | | | | | This one is not like the others as it doesn't participate in substitutions. Keep ExpandRuleVariables doing only one thing and make callers responsible for inserting a launcher prefix, simplifying the code all-around. Remove now-obsolete InsertRuleLauncher method.
* Honor LINK_WHAT_YOU_USE when set to OFFJamie Snape2016-10-131-2/+2
| | | | | | Explicitly setting variable CMAKE_LINK_WHAT_YOU_USE or property LINK_WHAT_YOU_USE to OFF should not cause LWYU to run. Fix the property lookup to use GetPropertyAsBool.
* cmLinkLineComputer: Move FrameworkPath computation from cmLocalGeneratorStephen Kelly2016-10-101-1/+1
| | | | Add UseWatcomQuote state, and remove corresponding method parameters.
* cmLinkLineComputer: Move RPath computation from cmLocalGeneratorStephen Kelly2016-10-101-1/+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-0/+4
| | | | | | | | | | | | | | | 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.
* Makefiles: Port CreateLinkLibs to cmLinkLineComputerStephen Kelly2016-10-101-2/+6
|
* cmLinkLineComputer: Extract from cmLocalGeneratorStephen Kelly2016-10-101-1/+8
| | | | | | | | | | | 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.
* Merge topic 'cleanup-Convert'Brad King2016-10-071-11/+11
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 20e62f74 cmLocalGenerator: Simplify ConvertToLinkReference fd93b360 cmOutputConverter: Add a flag for IsUnix 1365e18b Convert: Inline platform-specific methods 1ed5f6b3 Makefiles: Introduce local RelativePath method 8377d9e0 Fortran: Inline conversion to relative path 00173b71 Fortran: Wrap path convert in a call with a more-suitable name d5911ef0 Makefiles: Hardcode the relative location of the CMakeCache file c3264f48 Convert: Extract method to determine if paths are in directory 52168f32 Convert: Remove asserts which are duplicated in delegate method 5213f893 Convert: Remove early return check b61c268b Convert: Extract local variables for readability e278f5a8 Convert: Extract local variables 51bc6bdd cmOutputConverter: remove unused code 8e0c1599 Xcode: Inline ConvertToRelativePath calls
| * Makefiles: Introduce local RelativePath methodStephen Kelly2016-10-061-11/+11
| | | | | | | | | | | | | | This makes it easier to remove directory-specific state from cmOutputConverter where it doesn't belong. Of course, this just relocates the problem to the makefiles generator for now, but that's better than affecting the core.
* | CMP0065: Put computed flags into LINK_FLAGS not LINK_LIBRARIESStephen Kelly2016-10-071-0/+5
|/ | | | | | | These flags are redundant anyway in the NEW case of the policy, and could be merged with CMAKE_EXE_EXPORTS_${lang}_FLAG content for that case. That is deferred to the future, but now at least the similar code is located close to each other.
* 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.
* Convert: Inline uses of START_OUTPUTStephen Kelly2016-09-191-11/+22
|
* Convert: Avoid START_OUTPUT enum when converting to relative pathsStephen Kelly2016-09-191-6/+8
|
* Convert: Replace UNCHANGED conversions with new API callStephen Kelly2016-08-271-18/+12
|
* Convert: Replace uses of Convert(NONE)Stephen Kelly2016-08-271-5/+4
| | | | These are equivalent to ConvertToOutputFormat.
* Makefiles: Change AppendCustomCommand API to stringsStephen Kelly2016-08-271-3/+3
| | | | | Avoid the RelativeRoot enum. Supply the HOME_OUTPUT string at each callsite to make the parameter non-defaulted.
* Makefiles: Port CreateCDCommand to string-based APIStephen Kelly2016-08-271-2/+2
|
* fix a batch of include-what-you-use violationsDaniel Pfeifer2016-08-231-1/+9
|
* Makefile: Factor out response file checks into common helperBrad King2016-07-201-21/+4
| | | | | | Factor CMAKE_<LANG>_USE_RESPONSE_FILE_FOR_{OBJECTS,LIBRARIES} lookup out into a common helper. Use a separate helper for each because more specific logic may be added to each later.
* Windows: Honor WINDOWS_EXPORT_ALL_SYMBOLS for executables with exportsYury Zhuravlev2016-07-111-0/+6
| | | | | For executables with ENABLE_EXPORTS set, export all symbols when instructed to do so by WINDOWS_EXPORT_ALL_SYMBOLS.
* use CM_NULLPTRDaniel Pfeifer2016-06-281-4/+6
|
* Add options to run `ldd -u -r` as a "link-what-you-use" toolBill Hoffman2016-06-171-0/+12
| | | | | | | Create a LINK_WHAT_YOU_USE target property and corresponding CMAKE_LINK_WHAT_YOU_USE variable to enable this behavior. Extend link commands by running `ldd -u -r` to detect shared libraries that are linked but not needed.
* Remove redundant c_str() calls.Daniel Pfeifer2016-05-261-3/+2
| | | | | Run clang-tidy's readability-redundant-string-cstr checker. Ignore findings in kwsys.
* Use enums defined in cmOutputConverter using their fully qualified name.Daniel Pfeifer2016-05-251-27/+28
| | | | | | | | | Mostly automated: values=("RelativeRoot" "NONE" "FULL" "HOME" "START" "HOME_OUTPUT" "START_OUTPUT" "OutputFormat" "UNCHANGED" "MAKERULE" "SHELL" "WATCOMQUOTE" "RESPONSE" "FortranFormat" "FortranFormatNone" "FortranFormatFixed" "FortranFormatFree") for i in "${values[@]}"; do git grep -l cmLocalGenerator::$i | xargs sed -i "s|cmLocalGenerator::$i|cmOutputConverter::$i|g"; done
* Revise C++ coding style using clang-formatKitware Robot2016-05-161-220/+170
| | | | | | | | | | | | | 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-4/+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.
* cmGeneratorTarget: Add API for target-relative commands.Stephen Kelly2015-10-261-3/+3
|
* Makefiles: Port to cmGeneratorTarget.Stephen Kelly2015-10-241-7/+9
|
* cmGeneratorTarget: Copy IsExecutableWithExports from cmTarget.Stephen Kelly2015-10-201-2/+2
|
* cmGeneratorTarget: Copy IsAppBundleOnApple from cmTarget.Stephen Kelly2015-10-191-1/+1
| | | | Leave the cmTarget method behind for now to implement cmInstallCommand.
* cmLocalGenerator: Port some API to cmGeneratorTarget.Stephen Kelly2015-10-171-4/+4
|
* Use cmGeneratorTarget for property access.Stephen Kelly2015-10-171-3/+3
|