summaryrefslogtreecommitdiff
path: root/Source/cmGlobalUnixMakefileGenerator3.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Code style: add missed explicit 'this->'Oleksandr Koval2021-01-051-1/+1
| | | | | CMake uses explicit 'this->' style. Using custom clang-tidy check we can detect and fix places where 'this->' was missed.
* Refactoring: Abstract Makefile line continuation formatMarc Chevrier2020-11-281-0/+1
|
* Makefiles: Explicitly tell 'make' tool what Makefile name to useOliver Schneider2020-11-161-0/+5
| | | | | | | | | | | | | | | | | | | CMake did not specify the filename of the Makefile generated by it. Due to GNU make precedence rules this means that the presence of a GNUmakefile or makefile would take precedence over the generated Makefile. This is only relevant for in-source builds and only whenever an alternative makefile by the above mentioned names exists. This patch adds the (seemingly universal) `-f` switch and the (hardcoded) filename (it is now hardcoded separately in these two files): - cmLocalUnixMakefileGenerator3.cxx - cmGlobalUnixMakefileGenerator3.cxx Fixes: #21418
* Makefiles: Use -j option as "-jN" and not "-j N"Fred Baksik2020-10-261-3/+4
| | | | Fixes: #21090
* cmake::GetCacheDefinition: Return cmPropvvs314152020-09-281-2/+2
|
* Makefiles: Use IsInBuildSystem in global generator target type checksBrad King2020-08-031-21/+9
| | | | | | Follow up from commit 422d9a0ab2 (Factor out generator checks for filtering out interface libraries, 2020-07-20) with more uses of `IsInBuildSystem`.
* Factor out generator checks for filtering out interface librariesBrad King2020-07-231-4/+3
| | | | | | Add a `cmGeneratorTarget::IsInBuildSystem` helper method to tell generators whether a target should participate in the generated build system.
* Merge topic 'fix-typos-identified-using-codespell'Brad King2020-07-231-1/+1
|\ | | | | | | | | | | | | 207373802e Fix typos identified using codespell Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5040
| * Fix typos identified using codespellJean-Christophe Fillion-Robin2020-07-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See https://github.com/codespell-project/codespell#readme The following command was used: ``` codespell -q6 --skip="\ .git,\ *.json,\ ./Copyright.txt,\ ./Help/command/foreach.rst,\ ./Help/prop_test/REQUIRED_FILES.rst,\ ./Help/variable/CTEST_COVERAGE_COMMAND.rst,\ ./Modules/CMakeCheckCompilerFlagCommonPatterns.cmake,\ ./Modules/CMakeRCInformation.cmake,\ ./Modules/Internal/CPack/NSIS.template.in,\ ./Modules/FindMatlab.cmake,\ ./Modules/MatlabTestsRedirect.cmake,\ ./Modules/Platform/Windows-Clang.cmake,\ ./Modules/Platform/Windows-Intel-Fortran.cmake,\ ./Modules/Platform/Windows-MSVC.cmake,\ ./Source/CMakeVersion.cmake,\ ./Source/cmConvertMSBuildXMLToJSON.py,\ ./Source/cmCreateTestSourceList.cxx,\ ./Source/cmGlobalVisualStudio10Generator.cxx,\ ./Source/cmExportBuildFileGenerator.cxx,\ ./Source/cmExportInstallAndroidMKGenerator.cxx,\ ./Source/cmExportInstallFileGenerator.cxx,\ ./Source/cmExportSet.cxx,\ ./Source/cmExportTryCompileFileGenerator.cxx,\ ./Source/cmFindPackageCommand.cxx,\ ./Source/cmInstallCommand.cxx,\ ./Source/cmGeneratorExpressionLexer.cxx,\ ./Source/cmLocalVisualStudio7Generator.cxx,\ ./Source/cmOrderDirectories.cxx,\ ./Source/cmTarget.cxx,\ ./Source/kwsys/*,\ ./Source/QtDialog/CMakeSetupDialog.ui,\ ./Source/CPack/WiX/cmWIXRichTextFormatWriter.cxx,\ ./Source/CTest/cmParseCoberturaCoverage.h,\ ./Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in,\ ./Tests/RunCMake/CPack/tests/DMG_SLA/English.license.rtf,\ ./Tests/RunCMake/CPack/tests/DMG_SLA/German.license.txt,\ ./Tests/RunCMake/CPack/tests/DMG_SLA/German.menu.txt,\ ./Tests/RunCMake/GoogleTest/xml_output.cpp,\ ./Tests/RunCMake/Make/TargetMessages*,\ ./Utilities/*,\ " \ -L "\ dependees,\ endwhile,\ fo,\ filetest,\ helpfull,\ nd,\ objext,\ stoll,\ supercedes,\ superceded,\ vas,\ varn,\ " ```
* | Allow generator expressions in the EXCLUDE_FROM_ALL target propertyJoerg Bornemann2020-07-211-2/+2
|/ | | | | | | | | This allows for setting EXCLUDE_FROM_ALL, conditional on the build configuration. However, only the Ninja Multi-Config generator supports different property values per config. All other multi-config generators will yield an error in that situation. Fixes: #20923
* Single location for cmProp typedefVitaly Stakhovsky2020-06-011-0/+1
|
* Makefiles: Re-implement makefile target path escaping and quotingBrad King2020-04-151-5/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously we used `cmSystemTools::ConvertToOutputPath` which internally used KWSys methods * SystemTools::ConvertToUnixOutputPath * SystemTools::ConvertToWindowsOutputPath These were written in very early days of CMake and have some limitations: * They do not encode all characters. E.g. '#' is left out. * They attempt to do some path cleanup and handle existing quotes. These days CMake has clean unquoted paths already. * They attempted to encode paths both for makefile targets and for shell command lines. The latter use has mostly been replaced. * Choosing between the two methods depends on a global variable! Several code paths in CMake have to copy the global generator's member ForceUnixPaths variable over to the cmSystemTools global. Re-implement the `ConvertToMakefilePath` method to drop use of those methods. Compute suitable makefile target path escaping and quoting via local logic. Add support for more characters like '#'. Fixes: #20555
* Makefiles: Factor out makefile target path escaping and quotingBrad King2020-04-151-0/+19
| | | | | | | | Code paths that write makefile target paths use a combination of `cmSystemTools::ConvertToOutputPath` and `cmMakeSafe`. Some were missing the latter. Wrap these two steps up into a dedicated `ConvertToMakefilePath` method provided on both the local and global generators.
* Makefiles: Do not use '\#' escape sequence with Windows-style make toolsBrad King2020-04-151-0/+6
| | | | | | | | | | | Since commit fbf7a92975 (Makefile: Handle '#' in COMPILE_OPTIONS, 2014-08-12, v3.1.0-rc1~174^2) we escape `#` as `\#` in `flags.make` variable assignments so that they are not treated as a comment. Windows-style make tools like NMake do not interpret backslashes in that way. Other means will be needed to handle `#` in contexts where it is even possible. The test suite is not covering this for NMake anyway, and actually has a workaround in `Tests/TryCompile` for the old behavior, which we can now update.
* Merge topic 'cleanup-endls-1'Brad King2020-03-271-9/+8
|\ | | | | | | | | | | | | 3fdd8db3aa Refactor: Avoid `std::endl` where it's not necessary (part 1) Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4513
| * Refactor: Avoid `std::endl` where it's not necessary (part 1)Alex Turbov2020-03-261-9/+8
| | | | | | | | | | | | | | The `std::endl` manupulator, except inserting `\n` character, also performs `os.flush()`, which may leads to undesired effects (like disk I/O in the middle of forming data strings). For the `std::stringstream` it also has no meaning.
* | Merge topic 'cmprop-getglobalprop'Brad King2020-03-271-2/+2
|\ \ | | | | | | | | | | | | | | | | | | c84cf42897 cmState::GetGlobalProperty: return cmProp Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4521
| * | cmState::GetGlobalProperty: return cmPropVitaly Stakhovsky2020-03-251-2/+2
| |/
* | Remove redundant calls to CollapseFullPathBrad King2020-03-241-6/+4
|/ | | | | Remove calls where it is known the input is already a collapsed full path.
* Modernize memory managementMarc Chevrier2020-02-271-6/+7
| | | | Update internals of various classes
* Makefiles: Re-run CMake if file configured in subdirectory is missingHugh Sorby2020-02-141-9/+8
| | | | | | | Add files configured by all subdirectories to `CMAKE_MAKEFILE_PRODUCTS` rather than just those from the top level. Fixes: #19719
* Makefiles: Organize help output to group 'like' targetsRobert Maynard2020-01-221-8/+23
|
* cmGlobalGenerator: modernize memrory managemenbtMarc Chevrier2019-12-301-1/+1
|
* Refactoring: use append functions from cmext/algorithmMarc Chevrier2019-12-171-2/+2
|
* cmLocalGenerator: modernize memory managementMarc Chevrier2019-12-101-129/+134
|
* cmLocalGenerator: modernize memory managementMarc Chevrier2019-11-111-21/+23
|
* Makefiles: Fix EXCLUDE_FROM_ALL OFF on sub/sub/tgt in sub/allBrad King2019-09-301-60/+29
| | | | | | | | Defer adding a test to a later commit after all generators have been fixed. Issue: #19753 Co-Author: Sebastian Holtermann <sebholt@xwmw.org>
* Ninja,Makefile: Fix subdir "all" with nested EXCLUDE_FROM_ALL subdirBrad King2019-09-301-0/+3
| | | | | | | | | | The "all" target defined for a subdirectory (e.g. `cd sub; make` or `ninja sub/all`) should not include the "all" targets from nested subdirectories (e.g. `sub/sub`) that are marked as `EXCLUDE_FROM_ALL`. Fix this and add a test case. Issue: #19753 Co-Author: Sebastian Holtermann <sebholt@xwmw.org>
* Merge branch 'backport-3.15-fix-EXCLUDE_FROM_ALL-subdir-all'Brad King2019-09-301-6/+25
|\ | | | | | | | | | | | | | | Resolve conflicts with changes since the 3.15 series: * Convert `cmSystemTools::IsOn` => `cmIsOn`. * Move one "EXCLUDE_FROM_ALL" target property logic fix to its new location in `cmMakefile::AddNewUtilityTarget`.
| * Merge branch 'backport-3.14-fix-EXCLUDE_FROM_ALL-subdir-all'Brad King2019-09-301-2/+2
| |\
| | * Restore "all" target in subdirectories marked EXCLUDE_FROM_ALLBrad King2019-09-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "all" target in each directory is supposed to have targets from that directory even if the directory itself is marked `EXCLUDE_FROM_ALL` in its parent. This was broken by commit dc6888573d (Pass EXCLUDE_FROM_ALL from directory to targets, 2019-01-15, v3.14.0-rc1~83^2) which made the participation of a target in "all" independent of context. Revert much of the logic change from that commit to restore the old behavior. Then re-implement the behavior intended by the commit to keep its test working. Extend the test to cover the old behavior too. Fixes: #19753
| * | Makefiles: Revert "Make build root targets ... recursive"Brad King2019-09-271-5/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Revert the main logic change from commit 827da1119e (Makefiles: Make build root targets "all", "clean" and "preinstall" recursive, 2019-05-17, v3.15.0-rc1~96^2~2) for the "all" and "preinstall" targets. The commit cleaned up the Makefile generator to use the same logic for the "all" target in the top-level directory as for subdirectories. It exposed a long-existing bug that caused the "all" target in a subdirectory to include the "all" targets from sub-subdirectories even if they are marked `EXCLUDE_FROM_ALL`. The `Tests/SubDir` test should fail but the problem is currently covered up by another bug introduced by commit dc6888573d (Pass EXCLUDE_FROM_ALL from directory to targets, 2019-01-15, v3.14.0-rc1~83^2) that causes the "all" targets in `EXCLUDE_FROM_ALL` subdirectories to be empty. Revert the top-level "all" and "preinstall" targets to the old approach to prepare to fix the latter bug without exposing the long-existing bug at the top-level. Leave the "clean" target in the new approach because it does not honor `EXCLUDE_FROM_ALL` anyway. Issue: #19753
* | | 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-use-autoRegina Pfeifer2019-09-101-2/+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.
* | | Source sweep: Use cmStrCat for string concatenationSebastian Holtermann2019-08-221-69/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)`
* | | Merge topic 'string-literal-append'Brad King2019-08-191-11/+5
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | da26b3be89 avoid adding multiple consecutive string literals to std::string Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3698
| * | | avoid adding multiple consecutive string literals to std::stringRolf Eike Beer2019-08-181-11/+5
| | | | | | | | | | | | | | | | While at it change some single character additions to be of type char.
* | | | Source sweep: Use cmIsOn instead of cmSystemTools::IsOnSebastian Holtermann2019-08-171-1/+2
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | This replaces invocations of - `cmSystemTools::IsInternallyOn` with `cmIsInternallyOn` - `cmSystemTools::IsNOTFOUND` with `cmIsNOTFOUND` - `cmSystemTools::IsOn` with `cmIsOn` - `cmSystemTools::IsOff` with `cmIsOff`
* | | Introduce memory management helper: cm_memory.hxxMarc Chevrier2019-07-141-1/+2
| | |
* | | IWYU: Fix handling of <memory> standard headerBrad King2019-07-101-0/+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.
* | Use cmAppend to append ranges to std::vector instancesSebastian Holtermann2019-05-231-4/+1
| |
* | Makefiles: Process ADDTIONAL_CLEAN_FILES dir prop at directory levelSebastian Holtermann2019-05-181-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In the "Unix Makefiles" generator, the `ADDTIONAL_CLEAN_FILES` directory property was evaluated on a per target basis. This had two drawbacks: - per directory clean files were repeated in every target clean script - per directory clean files weren't removed in directories without targets (issue #8164) This patch moves the `ADDTIONAL_CLEAN_FILES` directory property processing from the target to the directory level clean target. Fixes: #8164 "ADDITIONAL_CLEAN_FILES directory property not respected if no target present in directory"
* | Makefiles: Make build root targets "all", "clean" and "preinstall" recursiveSebastian Holtermann2019-05-181-39/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the "Unix Makefiles" generator, the subdirectory targets "all", "clean" and "preinstall" in Makefile2 are recursive. In the build root directory, these targets aren't. Instead they're are added separately and additional dependencies are added on a per target basis. This is inconsistent and it complicates per directory commands, like a per directory clean command. This patch makes the "all", "clean" and "preinstall" targets in Makefile2 in the build root directory recursive, using the same algorithm that is already used for subdirectories. Some side effects are: - Makefile2 gets smaller and simpler - The main "all", "clean" and "preinstall" targets have recursive dependencies, instead of flat (depth of 1) ones.
* | Makefiles: Avoid pointer repurposingSebastian Holtermann2019-05-171-4/+4
| |
* | Makefiles: Inline range loop range argumentsSebastian Holtermann2019-05-171-30/+14
| |
* | Source: std::string related cleanupVitaly Stakhovsky2019-05-151-1/+1
| |
* | Modernize: Enable modernize-raw-string-literal in clang-tidyArtur Ryt2019-04-021-3/+3
| |
* | Fix invalid ///! doxygen comment line startsSebastian Holtermann2019-03-311-1/+1
| | | | | | | | | | In various places `///!` was used to start a comment line. This is not valid Doygen syntax. This patch replaces `///!` comment starts with `//!`.
* | cmake: Teach --build mode to support multiple targetsBartosz Kosiorek2019-03-051-14/+20
| | | | | | | | Fixes: #16136
* | cmGlobalGenerator: Change case of methods from GeneratedMakeCommand structBartosz Kosiorek2019-03-041-9/+9
|/