summaryrefslogtreecommitdiffstats
path: root/Source/cmNinjaNormalTargetGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'swift-exe-exports'Brad King2020-02-041-3/+10
|\ | | | | | | | | | | | | 1e26d57188 Ninja: properly handle exports from Swift exes Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4314
| * Ninja: properly handle exports from Swift exesSaleem Abdulrasool2020-02-021-3/+10
| | | | | | | | | | | | This adds logic to properly handle Swift executables. Only executables marked as exporting symbols will now generate module interfaces for the executable.
* | AIX: Add an option to disable automatic exports from shared librariesBrad King2020-01-311-0/+2
|/ | | | | | | | | | 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
* Ninja Multi-Config: Add variable to control configs used in cross-config buildKyle Edwards2020-01-231-4/+6
|
* Refactor: Split Ninja files into impl-<Config>.ninja and build-<Config>.ninjaKyle Edwards2020-01-221-5/+5
|
* CUDA: Mult-Config Ninja generator now supports CUDARobert Maynard2020-01-131-7/+38
|
* Merge topic 'ninja-cross-build-disable'Brad King2020-01-131-2/+12
|\ | | | | | | | | | | | | e8032e202e Ninja Multi-Config: Make cross-config building opt-in Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4205
| * Ninja Multi-Config: Make cross-config building opt-inKyle Edwards2020-01-101-2/+12
| | | | | | | | | | | | | | | | | | | | | | Many users will want to use the Ninja Multi-Config generator like a traditional Visual Studio-style multi-config generator, which doesn't mix configurations - custom commands are built using target executables of the same configuration the command is for. We do not want to force these people to generate an N*N build matrix when they only need N*1, especially if they have lots of targets. Add a new variable, CMAKE_NINJA_CROSS_CONFIG_ENABLE, to opt-in to the cross-config build matrix.
* | Refactoring: suppress cmEraseIf in favor of cm::erase_ifMarc Chevrier2020-01-091-3/+3
|/
* cmGlobalGenerator: modernize memrory managemenbtMarc Chevrier2019-12-301-2/+2
|
* Ninja: Add multi-config variantKyle Edwards2019-12-131-46/+110
| | | | Co-Authored-by: vector-of-bool <vectorofbool@gmail.com>
* Refactor: Prepare Ninja generator for multi-configKyle Edwards2019-12-131-146/+175
|
* replace remove and remove_directory with rm in testsJohnny Jazeix2019-11-131-1/+1
|
* 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
* Ninja: Ensure shared library version symlinks are created for dependentsBrad King2019-10-011-0/+21
| | | | | | | | When linking to a shared library target that has version symlinks, add an order-only dependency on the build statement that creates the links. This ensures that the links exist for use at runtime. Fixes: #19774
* 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
|
* Merge topic 'unity-build'Brad King2019-09-051-0/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | 7786a05c70 Unity build: Add XCode support 1353802af3 Unity build: Add unit tests 8dfeb5d278 Unity build: Add support for Visual Studio generator 7114c141e2 Unity build: Add support for Ninja and Makefile generators Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Stanislav Ershov <digital.stream.of.mind@gmail.com> Acked-by: Evgeniy Dushistov <dushistov@mail.ru> Acked-by: Viktor Kirilov <vik.kirilov@gmail.com> Merge-request: !3611
| * Unity build: Add support for Ninja and Makefile generatorsCristian Adam2019-08-291-0/+1
| |
* | Merge topic 'clang-ipo-support'Brad King2019-09-031-0/+8
|\ \ | |/ |/| | | | | | | | | | | | | | | dca9c33abc Tests: Remove old IPO test c856d4556b bindexplib: supporting llvm bitcode formats using llvm-nm 079b8e2916 Clang: prefer lld-link over link.exe 6e3655db2c Clang: add LTO support for GNU-command line clang on windows Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3527
| * bindexplib: supporting llvm bitcode formats using llvm-nmZsolt Parragi2019-08-301-0/+8
| |
* | Merge topic 'precompile-headers'Brad King2019-08-291-0/+2
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8da78d4efe Precompile headers: Update documentation 5772930164 Precompile headers: Add unit tests 519606704e Precompile headers: Add support for Visual Studio generators 28be170fbc Precompile headers: Add support for Xcode generator b8626261e9 Precompile headers: Add methods to generate PCH sources 375d01c680 PCH: add example/test 9b6797e71d PCH: add target_precompile_headers command 0467a2f91b PCH: add PRECOMPILE_HEADERS to special properties Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Daniel Pfeifer <daniel@pfeifer-mail.de> Acked-by: Ivan171 <heavenandhell171@gmail.com> Acked-by: Stanislav Ershov <digital.stream.of.mind@gmail.com> Acked-by: Steve Mokris <smokris@softpixel.com> Acked-by: Evgeniy Dushistov <dushistov@mail.ru> Acked-by: Danila Malyutin <flashmozzg@gmail.com> Acked-by: Viktor Kirilov <vik.kirilov@gmail.com> Acked-by: Lucas Zhao <zhaopf6@163.com> Merge-request: !3553
| * Precompile headers: Add methods to generate PCH sourcesCristian Adam2019-08-281-0/+2
| | | | | | | | Co-Author: Daniel Pfeifer <daniel@pfeifer-mail.de>
* | Merge topic 'ninja_additional_clean_files_custom_target'Brad King2019-08-271-0/+1
|\ \ | |/ |/| | | | | | | | | | | d040f3f1ee Tests: Extend MakeClean test to test various target types 3ed8cffe73 Ninja: Add support for ADDITIONAL_CLEAN_FILES in custom targets Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3739
| * Ninja: Add support for ADDITIONAL_CLEAN_FILES in custom targetsSebastian Holtermann2019-08-261-0/+1
| | | | | | | | | | | | | | This enables the support for `ADDITIONAL_CLEAN_FILES` in custom targets using the ninja generator. Fixes: #19641
* | Source sweep: Use cmStrCat for string concatenationSebastian Holtermann2019-08-221-59/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)`
* | clang-tidy: isolate declarations for readabilityRegina Pfeifer2019-08-201-1/+2
| |
* | Source code: Use cmExpandList instead of cmSystemTools::ExpandListArgumentSebastian Holtermann2019-08-141-5/+5
| |
* | clang-tidy: Enable performance-inefficient-string-concatenationSebastian Holtermann2019-08-051-2/+2
| | | | | | | | | | | | | | Enables the clang-tidy test performance-inefficient-string-concatenation and replaces all inefficient string concatenations with `cmStrCat`. Closes: #19555
* | cmStringAlgorithms: Move string functions to the new cmStringAlgorithms.hSebastian Holtermann2019-07-291-0/+1
| | | | | | | | | | This adds the `cmStringAlgorithms.h` header and moves all string functions from `cmAlgorithms.h` to `cmStringAlgorithms.h`.
* | 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.
* Ninja: Fix CUDA device linking when using response filesFrancisco Facioni2019-06-251-13/+2
| | | | | | Fix the logic added by commit d91b5a72cd (Ninja: Add support for CUDA nvcc response files, 2019-05-30, v3.15.0-rc1~8^2) to always use the CUDA compiler response file flag for response files during device linking.
* Ninja: Add support for CUDA nvcc response filesFrancisco Facioni2019-06-031-6/+15
|
* Ninja: Compute linker response file flag earlierFrancisco Facioni2019-06-031-22/+28
|
* Ninja: Use cmNinjaBuild class for WriteBuildSebastian Holtermann2019-05-301-34/+30
|
* Ninja: Use cmNinjaBuild class for WriteBuildSebastian Holtermann2019-05-301-73/+64
|
* Ninja: Use cmNinjaBuild class for WriteBuildSebastian Holtermann2019-05-301-16/+15
|
* Ninja: Use cmNinjaBuild instead of WritePhonyBuildSebastian Holtermann2019-05-301-7/+8
|
* Ninja: Use cmNinjaRule as sole parameter in the WriteRule and AddRule methodsSebastian Holtermann2019-05-291-88/+65
| | | | | | | | Instead of passing multiple strings to the `WriteRule` and `AddRule` methods of `cmGlobalNinjaGenerator`, pass only a `cmNinjaRule` instance reference, that is set up beforehand. Adapt calls to `WriteRule` and `AddRule` in multiple places.
* Ninja,Swift: correct response file handlingSaleem Abdulrasool2019-05-231-1/+5
| | | | | | | | The response file was being written but not used due to the wrong variable being configured for Swift. Swift does compile+link in a single phase and does not use the `<OBJECTS>` placeholder. Use the `<SWIFT_SOURCES>` placeholder instead for the response file substitution which serves the same purpose.
* Merge topic 'swift-flags'Brad King2019-05-231-0/+11
|\ | | | | | | | | | | | | 02c14b7fcd Ninja,Swift: pass along DEFINES/FLAGS/INCLUDES Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3355
| * Ninja,Swift: pass along DEFINES/FLAGS/INCLUDESSaleem Abdulrasool2019-05-211-0/+11
| | | | | | | | | | | | | | Since the Swift model does a single compile/link phase, we would not get the compile definitions, includes, and options past along to the build of the module. Compute these for the target when constructing the main command.
* | Merge topic 'remove_unneeded_device_link_calls'Brad King2019-05-221-26/+4
|\ \ | | | | | | | | | | | | | | | | | | | | | 81b4d10d8f CUDA: More exhaustive checks to determine when to do device linking 3205c7c950 cmNinjaLinkLineDeviceComputer now lives in the correct source file Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3320
| * | CUDA: More exhaustive checks to determine when to do device linkingRobert Maynard2019-05-211-26/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously CMake used fairly naive logic to determine when to do device linking which caused unnecessary device linking to occur frequently. We now use a more exhaustive algorithm to determine when we have a need for device linking. Fixes: #19238
| * | cmNinjaLinkLineDeviceComputer now lives in the correct source fileRobert Maynard2019-05-201-1/+1
| | |
* | | Merge topic 'swift-debug-variant'Brad King2019-05-221-13/+10
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 62381effba Ninja,Swift: reuse `SWIFT_MODULE_NAME` for `SWIFT_MODULE` Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3343
| * | | Ninja,Swift: reuse `SWIFT_MODULE_NAME` for `SWIFT_MODULE`Saleem Abdulrasool2019-05-201-13/+10
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | Rather than compute the value of `SWIFT_MODULE`, use the computed value of `SWIFT_MODULE_NAME`. This is helpful strictly for Windows where you have multiple configuration variants with differing ABIs that need must co-exist. In particular, this re-use permits the use of `CMAKE_DEBUG_POSTFIX` to have the import library and the DLL be named with the trailing suffix but have the same import name for the swift module and interface.
* | | Merge topic 'ninja-lib-symlink-space'Brad King2019-05-221-1/+3
|\ \ \ | |/ / |/| | | | | | | | | | | | | | 13c92b4a30 Ninja: Fix creation of library symlinks in folders with spaces Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3341