Temporarily restore previous behavior that allowed specifying
no source or build directory to work, even though it was
neither documented nor supported. This commit is expected
to eventually be reverted to restore the fatal error for such
cases.
Relates: #18817
5990ecb741 Compute implicit include directories from compiler output
d751d2d2ed CMakeDetermineCompilerABI: set locale to C for try_compile()
c765ae495a CMakeDetermineCompilerABI: pass verbose flag during compilation
8c5221fb1f try_compile: Preserve special characters in COMPILE_DEFINITIONS
15ad830062 Refactor exclusion of -I/usr/include to avoid per-language values
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2716
- CMakeParseImplicitIncludeInfo.cmake: new parser that extracts the
compiler's include path from verbose output. If the parser cannot
parse the output, we fall back to the old behavior. On osx we skip
over framework directories (handled elsewhere).
- CMakeDetermineCompilerABI.cmake:
- use verbose flag in try_compile for ${src}
- use new cmake_parse_implicit_include_info() to attempt extract
implicit include directory path and if successful set
CMAKE_${LANG}_IMPLICIT_INCLUDE_DIRECTORIES
- CMakeCCompiler.cmake.in and CMakeCXXCompiler.cmake.in - preserve
CMAKE_${LANG}_IMPLICIT_INCLUDE_DIRECTORIES value between runs in
the same way CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES is preserved
- Tests/RunCMake/ParseImplicitIncludeInfo: tests for parse
based on the older Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in.
The test runs a set of verbose compiler outputs collected from
various machines through the parser and checks the results. New
compiler files can be added by dropping input/output files in the
ParseImplicitIncludeInfo/data subdirectory and then adding the new set
of files to the ${targets} list in ParseImplicitIncludeInfo.cmake.
There is a helper CMakeLists.txt in ParseImplicitIncludeInfo/data
that can help with the generation of test input files.
NOTE: the standard cmake pre-commit hook rejects verbose compiler
output with trailing spaces... you have to manually edit them out.
This shouldn't impact the test.
Note that both the parser and the test code can use CMAKE_${LANG}_COMPILER_*
variables such as ${CMAKE_CXX_COMPILER_ID} to decide how to parse
verbose compiler output. For the test code, this requires us to
save the variables values in the test input files.
Fixes: #16291
If CROSSCOMPILING_EMULATOR was set to an empty string, and a test
was generated with the executable as the command, CMake would segfault
upon trying to generate the test file. Fix this.
Fixes: #18819
cae9d2a61a CTest: Teach --show-only= to reject unknown values
7370b02c36 CTest: Teach --show-only=json-v1 to filter out not-available tests
62fec84ad7 Tests: Fix RunCMake.CTestCommandLine case when no python is found
75a7a23746 Tests: Rename RunCMake.CTestCommandLine show-only test cases
fecbc87608 Tests: Fix RunCMake.CTestCommandLine to actually check json-v1
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2812
Adds `Fortran_COMPILER_ID` and `Fortran_COMPILER_VERSION` generator
expression support to match equivalent `C_COMPILER_ID`,
`CXX_COMPILER_ID`, `C_COMPILER_VERSION`, and `CXX_COMPILER_VERSION`
support.
This is very helpful in the case where the C/C++ compiler suite is a
different type of compiler from the platform Fortran compiler and
projects use generator expressions to assign compiler flags and
definitions. (e.g. `GNU` C/C++ and `SunPro` Fortran on Linux)
Avoid exposing the internal special value that we use to track tests not
available in the tested configuration. This also prevents clients from
having to do the filtering themselves.
57e48f16f2 VS: Add Visual Studio 16 2019 generator
bdef729646 VS: Parameterize VS 2017 generator to support future versions
68d316e0cf VS: Rename VS 2017 generator sources to be version-independent
d8ed309d05 VS: Parameterize cmVSSetupAPIHelper instances with VS version
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2789
Since commit v3.11.0-rc1~467^2 (VS,Xcode: Add CMakeLists.txt sources
without mutating targets, 2017-10-18) we do not add `CMakeLists.txt` to
target sources but instead generate references to them directly. This
accidentally dropped generation of the `.vcxproj.filters` entry for a
source group in which `CMakeLists.txt` is the only member.
Fixes: #18795
A main scenario where this is needed is when a git operation
needs the password to a private key and asks for it on the
console. Without this change, such operations can appear to
hang indefinitely with no prompt if QUIET is in effect (which it
is by default).
Another scenario this addresses is when progress of a
download or update should be shown. Without this change,
all such progress is buffered with some generators and will
only be shown at the end, which defeats the purpose of logging
any progress to begin with.
Relates: #18238
27eb7c5bdb cmake: Ensure source and binary dirs are set
a1adbc7243 cmake: Stop processing if -P option lacks file name
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2799
0377fe1e2b Merge branch 'backport-autogen_noqt_warning' into autogen_noqt_warning
dd39da5518 Tests: Add case for warning when AUTOMOC/UIC/RCC gets disabled
f44a0414ae Autogen: Issue a warning when AUTOMOC/UIC/RCC gets disabled.
5ae69f5919 Autogen: Issue a warning when AUTOMOC/UIC/RCC gets disabled.
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2787
If only the source dir is provided, the binary dir is assumed
to be the working directory. If only the binary dir is provided
and it doesn't yet have a CMakeCache.txt to provide the
source dir, then the source dir is assumed to be the working
directory. This logic was not previously being handled
correctly when -S and/or -B options were involved.
Furthermore, when both were missing, no suitable error
message was provided and an empty string was used for
the build directory.
Fixes: #18707
The OLD behaviors of all policies are deprecated, but only by
documentation. Add an explicit deprecation diagnostic for some policies
to encourage projects to port away from setting policies to OLD.
Add this generator *without* support for specifying the target
architecture in the generator name. cmake-gui will be taught
to provide a field for this, and command-line builds can use -A.
Also, teach this generator to select a default target architecture
based on the host architecture.
Fixes: #18689
Inspired-by: Egor Pugin <egor.pugin@gmail.com>
5e4887e673 VS: Honor WinCE deployment properties in VS 2010+
a4332cac4b Tests: Detect VS and SDK availability early
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2680