1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-06-20 11:47:23 +08:00

1108 Commits

Author SHA1 Message Date
Brad King
156196938c Merge topic 'cmprop-source'
e64fa5f1b6 cmSourceFile::GetProperty: return cmProp
fc223f9860 cmGlobalXCodeGenerator: Fix genex interpreter overloads

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4603
2020-04-15 09:49:46 -04:00
Brad King
a67565751f Merge topic 'msbuildUtf8Support'
bc877a7e94 Add support to indicate UTF-8 custom command pipe output encoding

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4587
2020-04-15 09:44:48 -04:00
Vitaly Stakhovsky
e64fa5f1b6 cmSourceFile::GetProperty: return cmProp 2020-04-14 10:57:17 -04:00
Justin Goshi
bc877a7e94 Add support to indicate UTF-8 custom command pipe output encoding
Adds a flag to indicate that pipe output from a custom command should be
interpreted as UTF-8 encoded. This change does not introduce a public
way to set the flag, but generators that create internally-generated
commands know if they are calling cmake, which uses UTF-8 pipes.

MSBuild added support for interpreting output of PreBuildEvent,
PreLinkEvent, PostBuildEvent, and CustomBuildStep as UTF-8. This change
will appear in Visual Studio 16.6 Preview 3. It is opt-in, and you need
to add the StdOutEncoding tag. MSBuild treats these as property bags so
if we emit the tag for earlier versions of Visual Studio it would be
safely ignored. This change emits the StdOutEncoding tag and sets it to
UTF-8 whenever the custom command UTF-8 pipe flag is set. This fixes
globalization issues when the output from cmake contained characters
that required MSBuild to interpret as UTF-8 before displaying them.
2020-04-13 12:54:47 -07:00
Ben Boeckel
f2a33107be clang-tidy: address bugprone-branch-clone lints
Arguably, many of these are bugs in `clang-tidy`. An if/else tree with
other conditionals between cloned blocks may be relying on the
intermediate logic to fall out of the case and inverting this logic may
be non-trivial.

See: https://bugs.llvm.org/show_bug.cgi?id=44165
2020-04-13 11:26:02 -04:00
Brad King
da25220d83 Merge branch 'backport-3.17-apple-arch-sysroots' into apple-arch-sysroots 2020-04-08 13:44:42 -04:00
Brad King
84a1e67380 Apple: Fix mapping CMAKE_APPLE_ARCH_SYSROOTS to custom OSX_ARCHITECTURES
The `CMAKE_OSX_ARCHITECTURES` value is not used directly by generators.
It is used to initialize a per-target `OSX_ARCHITECTURES` property, but
that property can also be set explicitly by project code to a subset of
the full list of architectures.  In order to handle this case, construct
a mapping from each `CMAKE_OSX_ARCHITECTURES` entry to the corresponding
`CMAKE_APPLE_ARCH_SYSROOTS` entry by name.  Use the mapping to find the
sysroot for each entry in `OSX_ARCHITECTURES` for a given target.

If `CMAKE_APPLE_ARCH_SYSROOTS` does not have the same length as
`CMAKE_OSX_ARCHITECTURES`, error out early rather than risking a crash
or assertion failure.

Fixes: #20534
2020-04-08 13:40:09 -04:00
Brad King
45fa9b32ca Apple: Improve handling of missing SDKs in CMAKE_APPLE_ARCH_SYSROOTS
Use `<arch>-SDK-NOTFOUND` instead of an empty string as a placeholder in
`CMAKE_APPLE_ARCH_SYSROOTS` for architectures whose SDK is not found.
This ensures the length of `CMAKE_APPLE_ARCH_SYSROOTS` matches the
length of `CMAKE_OSX_ARCHITECTURES`.  It also makes the missing SDKs
more visible in the value.

Issue: #20534
2020-04-08 11:51:02 -04:00
Brad King
b8b804e2ed Merge topic 'file-GetRuntimeDependencies_support_cross_compilation'
f867423aa2 file: GetRuntimeDependencies use CMAKE_OBJDUMP when applicable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4538
2020-04-07 08:03:50 -04:00
Robert Maynard
f867423aa2 file: GetRuntimeDependencies use CMAKE_OBJDUMP when applicable
On machines where the gnu bin utils are prefixed, or suffixed
the file(GET_RUNTIME_DEPENDENCIES ) command would fail without
explicitly setting the location of objdump.

Now we pre-populate the variables used to find objdump based
on the gnu bin utils, so that these use cases are better supported
2020-04-06 12:12:14 -04:00
Brad King
2b9e3abcb5 Merge topic 'ctest-resource-file-cache'
060d2ce269 CTest: Add CTEST_RESOURCE_SPEC_FILE variable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4564
2020-04-06 08:26:40 -04:00
Brad King
f4e4b41a19 Merge topic 'pch-ios-multi-arch'
f593b354da PCH: Add support for multi architecture iOS projects

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4561
2020-04-03 07:05:11 -04:00
Kyle Edwards
060d2ce269 CTest: Add CTEST_RESOURCE_SPEC_FILE variable 2020-04-02 16:29:50 -04:00
Cristian Adam
f593b354da PCH: Add support for multi architecture iOS projects
Fixes: #20497
2020-04-02 11:51:19 -04:00
Brad King
e95d274f30 Merge topic 'cmprop-makefile'
aba23c747b cmMakefile::GetProperty: return cmProp

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4559
2020-04-02 11:20:46 -04:00
Vitaly Stakhovsky
aba23c747b cmMakefile::GetProperty: return cmProp 2020-04-01 10:56:34 -04:00
Brad King
ff02a592bc cmLocalGenerator: Avoid using upper-case config when not necessary
Calls to `GetLinkerLanguage`, `GetSourceFiles`, etc. can accept
the original-case config name.
2020-04-01 10:56:00 -04:00
Brad King
a4b76c237d cmLocalGenerator: Clarify local variable name in GetTargetFlags 2020-04-01 10:55:59 -04:00
Brad King
25a920e827 cmLocalGenerator: Convert GetStaticLibraryFlags to take original-case config
Move upper-case conversion of the configuration into the implementation.
2020-04-01 10:55:59 -04:00
Brad King
16053df54e Merge topic 'link-libs-config-case'
2af18704fd Merge branch 'backport-3.16-link-libs-config-case'
3f976bf201 target_link_libraries: Fix regression in case of $<CONFIG> genex
5a95b5e091 target_link_libraries: Fix regression in case of $<CONFIG> genex

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4544
2020-03-31 09:19:42 -04:00
Brad King
3f976bf201 target_link_libraries: Fix regression in case of $<CONFIG> genex
Since commit b8626261e9 (Precompile headers: Add methods to generate PCH
sources, 2019-07-13, v3.16.0-rc1~182^2~4) we look up source files for a
target using an upper-case configuration even though an original-case
name is sufficient.  Since commit 36ded610af (PCH: Generate sources
during Compute step, 2019-10-05, v3.16.0-rc1~2^2) the source file lookup
is the first time we compute many on-demand structures that depend on
the configuration name.  This caused the `$<CONFIG>` generator
expression to evaluate to the upper-case configuration name in some
cases where we used original-case before.

Fix this by switching the source file lookup to the original-case config
name.  Add a test covering the symptom that led to the discovery of this
problem.

Fixes: #20517
2020-03-30 11:33:55 -04:00
Vitaly Stakhovsky
a4255ecf81 cmStateDirectory::GetProperty: return cmProp 2020-03-27 12:33:04 -04:00
Brad King
6a0c1726e0 Merge topic 'cleanup-endls-2'
1e4b5c7d09 Refactor: Avoid `std::endl` where it's not necessary (part 2)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4514
2020-03-26 09:18:25 -04:00
Brad King
6257d43ffd Merge topic 'compile-commands-collapse-whitespace'
e565053bce Ninja: Remove unnecessary newlines in compile commands
5d4bab500e Avoid consecutive whitespace in rules
d8622fbd0f Modules: Collapse consecutive whitespace in strings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4512
2020-03-26 09:13:45 -04:00
Brad King
12b39aef75 Remove redundant calls to CollapseFullPath
Remove calls where it is known the input is already a collapsed
full path.
2020-03-24 10:10:06 -04:00
Alex Turbov
1e4b5c7d09
Refactor: Avoid std::endl where it's not necessary (part 2)
The `std::endl` manipulator, except inserting `\n` character, also
performs `os.flush()`, which may lead to undesired effects (like
disk I/O in the middle of forming data strings). For the
`std::stringstream` it also has no meaning.

* replace multiple `operator<<` calls on a string literal w/
  the only call and the only (bigger) string literal;
* replace one character string literal used in `operator<<`
  w/ a char literal.
2020-03-24 21:32:05 +08:00
Daan De Meyer
5d4bab500e Avoid consecutive whitespace in rules 2020-03-23 21:34:19 +01:00
Vitaly Stakhovsky
cbbca9ee2a Convert more loops to range-based for-loops 2020-03-10 14:25:56 -04:00
Vitaly Stakhovsky
bbc07e4561 Source: use std::string in place of const char* 2020-01-29 14:31:01 -05:00
Brad King
08699cec68 add_custom_command: Fix dependency on macOS framework target
When the `DEPENDS` option names a logical target name, convert to the
"real" path of that target rather than any of the symlink-provided
alternative file names.  This makes the dependencies consistent with the
outputs named by link rules producing the target artifacts.

Fixes: #20264
2020-01-24 11:29:45 -05:00
Vitaly Stakhovsky
5e54b0cf2f cmInstallGenerator: std::string params
Several construction parameters converted to std::string
Also made a few class members const
2020-01-21 11:09:35 -05:00
Vitaly Stakhovsky
9db532f44d cmInstall*Generator: std::string params
Several construction parameters converted to std::string
Also made a few class members const
2020-01-21 09:19:13 -05:00
Brad King
941c09616b Merge topic 'multi-ninja-pch'
a55df20499 Multi-Ninja: Add precompile headers support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4201
2020-01-20 11:59:28 -05:00
Brad King
56a3e84a67 Merge topic 'realpath-cache'
9d5a554cc9 cmGlobalGenerator: Add cache for realpath() results

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4220
2020-01-20 11:55:04 -05:00
Brad King
9b9dfacaa5 Merge topic 'acc-fix-in-source-depends-path'
ba3a417dce Tests/CustomCommand: add a test for depending on a `./path`
e23475dc73 Tests/CustomCommand: fix custom command line to actually make its output
db4780d584 cmGeneratorTarget: search for relative paths to the binary directory
ec479f101f cmLocalGenerator: collapse the path after construction
fd0ba705ce add_custom_command: check if a relative path should be an in-source path
fd84f510f8 cmLocalGenerator: simplify the current source dir query

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4195
2020-01-20 11:52:00 -05:00
Craig Scott
6bd07b9de1 Merge topic 'pch-msvc-no-path-repetition'
07fe1bcd4e PCH: No repeated path for internal generated PCH files (MSVC case)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4236
2020-01-19 15:10:17 -05:00
Cristian Adam
a55df20499 Multi-Ninja: Add precompile headers support
Fixes: #19789
2020-01-17 23:17:35 +01:00
Ben Boeckel
ec479f101f cmLocalGenerator: collapse the path after construction
The path may contain `..` or `.` components naïvely, so compute them out
before letting the generator handle them.
2020-01-16 13:56:30 -05:00
Ben Boeckel
fd0ba705ce add_custom_command: check if a relative path should be an in-source path
This still is broken for dependencies on generated paths where they get
generated to the source directory rather than the build directory
however, but there's no way to determine that is the case.

Fixes: #20194
2020-01-16 13:54:26 -05:00
Ben Boeckel
fd84f510f8 cmLocalGenerator: simplify the current source dir query 2020-01-16 13:54:25 -05:00
Cristian Adam
07fe1bcd4e PCH: No repeated path for internal generated PCH files (MSVC case)
Fixes: #19952
2020-01-16 17:05:05 +01:00
Tim Blechmann
9d5a554cc9 cmGlobalGenerator: Add cache for realpath() results
Cache the results of `realpath()` system calls in `cmGlobalGenerator`
to avoid repeating such calls for the same paths over and over.
2020-01-16 11:29:25 +08:00
Brad King
6e6f5afd03 Merge topic 'unity-lang-filename'
274a6f3699 Unity Build: include language in generated source file name

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4223
2020-01-15 13:37:33 -05:00
Cristian Adam
274a6f3699 Unity Build: include language in generated source file name
Fixes: #20206
2020-01-14 18:48:08 +01:00
Marc Chevrier
f466cea3c9 cmMakefile: modernize memory management 2020-01-14 11:03:07 +01:00
Brad King
24d143e0f6 Merge topic 'objc-visibility-inlines'
7347e2f830 ObjC: Add VISIBLITY_INLINES_HIDDEN support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4199
2020-01-13 10:22:06 -05:00
Cristian Adam
7347e2f830 ObjC: Add VISIBLITY_INLINES_HIDDEN support
Fixes: #20193
2020-01-10 16:31:27 +01:00
Brad King
0607a50bb3 Merge topic 'add-header-cmext-algorithm'
f7d12609f0 Refactoring: use append functions from cmext/algorithm
a38d04c076 Refactoring: introduce header cmext/algorithm with append functions

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4131
2019-12-18 09:32:03 -05:00
Brad King
64e2891cbd Merge topic 'stdstring-target'
c34b4497f8 cmTarget: add std::string overloads

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4137
2019-12-17 11:09:20 -05:00
Brad King
671ed5b123 Merge topic 'fat-ios'
a9b41195d2 Handle multi-arch sysroots on Apple platforms
372c89ea38 Refactor -arch and -isysroot code usage
7a44e16d7f Refactor SDK name to path into a function
777d364913 Use xcrun instead of xcodebuild for resolving SDK path

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4125
2019-12-17 11:07:09 -05:00