summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileLibraryTargetGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Makefiles: Add LINK_WHAT_YOU_USE support for MODULE librariesPeter Kokot2023-12-061-0/+3
| | | | | | | This was accidentally left out by Makefile generators. It already works with Ninja. Fixes: #25480
* Add options to specify linker toolMarc Chevrier2023-10-131-0/+3
| | | | | | | | | | | | | | | | | | Offer the capability, through variable `CMAKE_LINKER_TYPE`, as well as the target property `LINKER_TYPE` to specify which linker must be used. The implementation of this capability is specified by variables specific to the language and linker type: `CMAKE_<LANG>_USING_LINKER_<TYPE>`. Some definitions are provided as part of `CMake`. For example, to select the `LLVM` linker rather than the standard one, the type `LLD` should be specified through the variable `CMAKE_LINKER_TYPE`. And, on `Apple`, `Linux` and some environments on `Windows`, the variable `CMAKE_<LANG>_USING_LINKER_LLD` has value `-fuse-ld=lld`. And for `Windows` environments based on `MSVC`, where the linker is used directly, the tool `lld-link.exe` will be used rather than `link.exe`. Fixes: #19174, #24254, #24990
* clang-tidy: Fix readability-redundant-string-cstr warningsBrad King2023-05-221-1/+1
|
* CreateRulePlaceholderExpander(): enhance memory managementMarc Chevrier2023-05-041-4/+4
| | | | This method returns now a std::unique_ptr instance rather than a raw pointer.
* Link step: use linker dependency linker fileMarc Chevrier2023-05-031-0/+3
| | | | | | Based on work done by @ben.boeckel (!8051) Fixes: #22217
* CMake code rely on cmList class for CMake lists management (part. 2)Marc Chevrier2023-04-291-12/+14
|
* CMake code rely on cmList class for CMake lists management (part. 1)Marc Chevrier2023-04-241-1/+2
|
* Merge topic 'dont_use_bom_with_cuda'Brad King2023-03-021-4/+4
|\ | | | | | | | | | | | | | | c5305cf493 Makefile: Don't pass the CUDA compiler response files with UTF8_BOM Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Ivan Katalenić <ivankatalenic100@gmail.com> Merge-request: !8267
| * Makefile: Don't pass the CUDA compiler response files with UTF8_BOMRobert Maynard2023-02-281-4/+4
| | | | | | | | Fixes #24544
* | Apple: Handle generation and comsuption of text-based stubs (.tbd files)Marc Chevrier2023-03-011-6/+96
|/ | | | Fixes: #24123
* RULE_LAUNCH_*: Add support for generator expressionsKyle Edwards2023-02-031-6/+8
|
* Watcom: Fix double-quote to be single-quote in response files for wlinkJiri Malak2023-01-261-1/+1
| | | | | Response files contained double-quote for any response file, but response files for wlink must contains single-quote. This is fix for libraries list response file. Problem for object file list was fixed by MR !8115
* Watcom: Replace WATCOMQUOTE format by UseWatcomQuote attributeJiri Malak2023-01-241-4/+1
| | | | | | | Replace WATCOMQUOTE output format by UseWatcomQuote attribute to properly handle single quote This attribute is used globaly only for Watcom linker to handle single-quote separator instead of double-quote it doesn't mean different output format only change of quoting separator It is now applied to any output form SHELL/RESPONSE/NINJAMULTI if Watcom linker is used otherwise double-quote is used
* CUDA: Add Device LTO support for nvccRobert Maynard2022-07-221-5/+8
| | | | Fixes #22200
* CUDA: Support response files with nvccRobert Maynard2022-06-131-5/+7
|
* cmLocalGenerator: Adopt AppendModuleDefinitionFlag methodBrad King2022-05-311-4/+6
| | | | Migrate from `cmCommonTargetGenerator::AddModuleDefinitionFlag`.
* cmMakefileLibraryTargetGenerator: improve output buildingBen Boeckel2022-05-191-1/+3
| | | | | GCC warns about buffer juggling here. To avoid the warning, improve the code to avoid resizing on the following two pushes.
* CUDA: Ignore USE_WATCOM_QUOTE for device link rulesRaul Tambre2021-11-071-10/+3
| | | | It's useless as the Watcom compiler isn't supported by NVCC.
* Rename cmProp in cmValueMarc Chevrier2021-09-211-6/+6
|
* LINK_WHAT_YOU_USE feature: externalize configurationMarc Chevrier2021-07-091-10/+15
| | | | | | | | Currently, this feature is only supported on ELF platforms. So, the property LINK_WHAT_YOU_USE will be ignored for other plateforms. Moreover, flags and commands are now controled by CMake variables. Fixes: #20174
* Launchers: Support setting linker launchersBobby D Reynolds2021-05-281-0/+6
| | | | Fixes: #18316
* cmLocalGenerator: Factor out relative path conversion helpersBrad King2021-05-131-46/+30
| | | | | | Most calls to `MaybeConvertToRelativePath` use one of our common work directories (e.g. top of the build tree) as the local path. Add helpers for each of the common cases to simplify and clarify call sites.
* Makefiles: Escape SONAME on linker command lineAlexander Stein2021-03-041-1/+4
| | | | | If the shared object name contains spaces, they need to be properly escaped, or link command will fail.
* cmLocalGenerator::GetRuleLauncher: return cmPropvvs314152020-11-021-6/+7
|
* CUDA: Clang separable compilationRaul Tambre2020-09-241-32/+41
| | | | | | | | | | | | For NVCC the compiler takes care of device linking when passed the "-dlink" flag. Clang doesn't support such magic and requires the buildsystem to do the work that NVCC does behind the scenes. The implementation is based on Bazel's device linking documentation: https://github.com/tensorflow/tensorflow/blob/7cabcdf073abad8c46e9dda62bb8fa4682d2061e/third_party/nccl/build_defs.bzl.tpl#L259 Closes: #20726
* cmNonempty: Convenience inlines to check for non-empty stringVitaly Stakhovsky2020-07-141-2/+2
|
* cmMakefile: add GetDefExpandList() that splits value into std::vectorVitaly Stakhovsky2020-05-301-9/+3
| | | | Combines cmMakefile:GetDefinition() and cmExpandList()
* CUDA: Device linking use now link optionsMarc Chevrier2020-04-191-8/+7
| | | | | | | | | | properties LINK_OPTIONS and INTERFACE_LINK_OPTIONS are propagated to the device link step. To control which options are selected for normal link and device link steps, the $<DEVICE_LINK> and $<HOST_LINK> generator expressions can be used. Fixes: #18265
* cmLocalGenerator: Convert GetStaticLibraryFlags to take original-case configBrad King2020-04-011-2/+1
| | | | Move upper-case conversion of the configuration into the implementation.
* cmState::GetTargetTypeName: return type is *cmPropVitaly Stakhovsky2020-03-191-1/+1
|
* AIX: Add an option to disable automatic exports from shared librariesBrad King2020-01-311-0/+3
| | | | | | | | | | Since commit 0f150b69d3 (AIX: Explicitly compute shared object exports for both XL and GNU, 2019-07-11, v3.16.0-rc1~418^2~2) we always export all symbols from shared libraries by default. Add a new target property called `AIX_EXPORT_ALL_SYMBOLS` that can be explicitly set to OFF to suppress this behavior and export no symbols by default. Fixes: #20290
* cmGlobalGenerator: modernize memrory managemenbtMarc Chevrier2019-12-301-6/+6
|
* Refactoring: use append functions from cmext/algorithmMarc Chevrier2019-12-171-5/+5
|
* Refactor: Prepare Ninja generator for multi-configKyle Edwards2019-12-131-44/+48
|
* PCH: Generate sources during Compute stepCristian Adam2019-10-091-2/+0
|
* Unity build: Generate sources during Compute stepBrad King2019-10-031-1/+0
| | | | | | | | The unity build sources need to be added for all generators. Create them during `cmGlobalGenerator::Compute` to avoid duplicating the calls in every generator. We already handle Qt autogen there too. Issue: #19789
* cmstd: Modernize CMake system headersMarc Chevrier2019-09-201-1/+1
| | | | | | | | | | | | | | Provide a standardized way to handle the C++ "standard" headers customized to be used with current CMake C++ standard constraints. Offer under directory `cm` headers which can be used as direct replacements of the standard ones. For example: #include <cm/string_view> can be used safely for CMake development in place of the `<string_view>` standard header. Fixes: #19491
* clang-tidy: modernize-deprecated-headersRegina Pfeifer2019-09-161-1/+1
|
* clang-tidy: modernize-use-autoRegina Pfeifer2019-09-101-1/+1
| | | | | | Set the MinTypeNameLength option to an impossibly high value in order to limit the diagnostics to iterators. Leave new expressions and cast expressions for later.
* Merge topic 'cuda_resolve_device_symbols_on_static_lib_collect_deps_properly'Brad King2019-09-091-13/+10
|\ | | | | | | | | | | | | 2d7bb13da7 CUDA: static lib device linking computes required static libs Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3748
| * CUDA: static lib device linking computes required static libsRobert Maynard2019-09-051-13/+10
| | | | | | | | | | | | Previously the CMake didn't compute the required set of libraries needed to properly device link a static library when CUDA_RESOLVE_DEVICE_SYMBOLS was enabled.
* | Unity build: Add support for Ninja and Makefile generatorsCristian Adam2019-08-291-0/+1
|/
* Precompile headers: Add methods to generate PCH sourcesCristian Adam2019-08-281-0/+2
| | | | Co-Author: Daniel Pfeifer <daniel@pfeifer-mail.de>
* Source sweep: Use cmStrCat for string concatenationSebastian Holtermann2019-08-221-42/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is generated by a python script that uses regular expressions to search for string concatenation patterns of the kind ``` std::string str = <ARG0>; str += <ARG1>; str += <ARG2>; ... ``` and replaces them with a single `cmStrCat` call ``` std::string str = cmStrCat(<ARG0>, <ARG1>, <ARG2>, ...); ``` If any `<ARGX>` is itself a concatenated string of the kind ``` a + b + c + ...; ``` then `<ARGX>` is split into multiple arguments for the `cmStrCat` call. If there's a sequence of literals in the `<ARGX>`, then all literals in the sequence are concatenated and merged into a single literal argument for the `cmStrCat` call. Single character strings are converted to single char arguments for the `cmStrCat` call. `std::to_string(...)` wrappings are removed from `cmStrCat` arguments, because it supports numeric types as well as string types. `arg.substr(x)` arguments to `cmStrCat` are replaced with `cm::string_view(arg).substr(x)`
* avoid adding multiple consecutive string literals to std::stringRolf Eike Beer2019-08-181-7/+6
| | | | While at it change some single character additions to be of type char.
* Source code: Use cmExpandList instead of cmSystemTools::ExpandListArgumentSebastian Holtermann2019-08-141-5/+5
|
* Refactor: Convert all instances of CMAKE_BUILD_WITH_CMAKE to CMAKE_BOOTSTRAPKitware Robot2019-08-091-1/+1
|
* clang-tidy: Enable performance-inefficient-string-concatenationSebastian Holtermann2019-08-051-2/+3
| | | | | | | Enables the clang-tidy test performance-inefficient-string-concatenation and replaces all inefficient string concatenations with `cmStrCat`. Closes: #19555
* Introduce memory management helper: cm_memory.hxxMarc Chevrier2019-07-141-1/+2
|
* IWYU: Fix handling of <memory> standard headerBrad King2019-07-101-1/+1
| | | | | | | | An old workaround for `std::allocator_traits<>::value_type` lints from IWYU on `std::vector<>` usage breaks IWYU's handling of `<memory>`. Convert the workaround to use the same approach we already use for a workaround of `std::__decay_and_strip<>::::__type` lints. Then update the `<memory>` inclusions to follow the now-correct IWYU lints.