| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| | |
10f58b27 Genex: Per-source $<COMPILE_LANGUAGE:...> support
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1575
|
| |
| |
| |
| | |
Fixes: #17542
|
|/
|
|
| |
Revise method signatures to save a few c_str() conversions.
|
|
|
|
|
|
| |
This allows users to specify different genex-based compile definitions for each file in a target.
Fixes: #17508
|
|\
| |
| |
| |
| |
| |
| | |
6bffc13e Refactor per-source generator expression evaluation
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1550
|
| |
| |
| |
| |
| |
| | |
Prepare to add generator expression support to more source properties.
Factor out some duplicated code into a helper to avoid further
duplication.
|
|/
|
|
|
| |
Some cases were missed by earlier sweeps due to not compiling
Windows-specific code.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rather than injecting `CMakeLists.txt` files into each target's
`SOURCES`, teach the generators to add them during generation using
dedicated code. This avoids mutating the original targets, and avoids
polluting `$<TARGET_PROPERTY:foo,SOURCES>` with generator-specific
content.
This also avoids listing the `CMakeLists.txt` sources in the results of
`CMAKE_DEBUG_TARGET_PROPERTIES==SOURCES` so the `RunCMake.TargetSources`
test no longer needs a separate case for IDEs.
|
|
|
|
|
|
| |
This already worked in other generators. Also add a test case.
Fixes: #17314
|
|\
| |
| |
| |
| |
| |
| |
| | |
f0489856 Retire std::auto_ptr and its macro CM_AUTO_PTR
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Pavel Solodovnikov <hellyeahdominate@gmail.com>
Merge-request: !1300
|
| |
| |
| |
| | |
Signed-off-by: Matthias Maennich <matthias@maennich.net>
|
|/
|
|
|
|
|
| |
This is needed to correctly parse Windows Installer "wiproj" projects,
that by default contain "ProjectGUID" tags with GUID values without
surrounding curly brackets. Otherwise CMake truncates the first & last
character from the GUID value for these projects.
|
| |
|
| |
|
|
|
|
|
|
| |
Visual Studio 15.4 adds support for this architecture.
Fixes: #17213
|
| |
|
|
|
|
|
|
|
|
|
| |
We only define `INTERPROCEDURAL_OPTIMIZATION` behavior for C, CXX, and
Fortran languages. Do not try to enable support for other languages.
Furthermore, each language builds with a different compiler, so check
for support by CMake and the compiler for each language independently.
Fixes: #16944
|
|\
| |
| |
| |
| |
| |
| | |
cf320f7c Replace boolean `implib` parameters with enum
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !662
|
| |
| |
| |
| |
| | |
Named enumeration values are much clearer at call sites and add more
type safety.
|
|/
|
|
| |
This generator has been deprecated since CMake 3.6. Remove it.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add internal infrastructure for looping over all sources for all
configurations and generating each source with exclusion marks
for configurations in which they do not participate. This does
not yet make per-config sources available in general but does
set up some of the needed infrastructure.
Unfortunately doing this cleanly will require major refactoring of both
the VS 7-9 generators and the VS 10+ generators (for separate reasons).
Instead add some extra internal structures to carry information where we
need it.
|
|
|
|
|
|
| |
In cases that we need to list object library files on link lines,
look up the set of files matching the configuration of each link
line.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Automate with:
git grep -l '#include <cm_' -- Source \
| xargs sed -i 's/#include <\(cm_.*\)>/#include "\1"/g'
git grep -l '#include <cmsys/' -- Source \
| xargs sed -i 's/#include <\(cmsys\/.*\)>/#include "\1"/g'
git grep -l '#include <cm[A-Z]' -- Source \
| xargs sed -i 's/#include <\(cm[A-Z].*\)>/#include "\1"/g'
|
|
|
|
|
|
| |
Object library files are already included by `GetExternalObjects`
and `GetConfigCommonSourceFiles` so we don't need to call
`UseObjectLibraries` to get them.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
dfa8263f Implement interprocedural optimization for GNU compilers
1588a577 Add policy CMP0069 to enforce INTERPROCEDURAL_OPTIMIZATION
a7575700 Refactoring: s,GetFeatureAsBool,IsIPOEnabled,
e05835c3 CheckIPOSupported: Visual Studio and Xcode generators do not support IPO
Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Brad King <brad.king@kitware.com>
Reviewed-by: Nils Gladitz <nilsgladitz@gmail.com>
Merge-request: !568
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously the `INTERPROCEDURAL_OPTIMIZATION` target property was
honored only for the Intel compiler on Linux and otherwise ignored. In
order to add support for more compilers incrementally without changing
behavior in the future, add a new policy whose NEW behavior enforces the
`INTERPROCEDURAL_OPTIMIZATION` property. Add flags for supported
compilers and otherwise produce an error.
|
|/
|
|
|
|
|
|
|
| |
The `TargetExt` for `.vfproj` object libraries should be `.lib`
to match the `OutputFile` value. Otherwise Visual Fortran raises
warnings:
TargetPath(...) does not match the Library's OutputFile
property value (...)
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
075f6454 Support WINDOWS_EXPORT_ALL_SYMBOLS with `.def` files
21c4ec4f cmGlobalVisualStudioGenerator: Simplify __create_def command generation
24361a45 bindexplib: Add support for parsing and integrating `.def` files
845c4824 bindexplib: Add method for parsing and integrating `.def` files
4f90e793 bindexplib: Revise coding style of CMake-specific methods
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !581
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The `WINDOWS_EXPORT_ALL_SYMBOLS` target property exports all symbols
found in object files explicitly given to the linker. However, the
linker may also find additional symbols in dependencies and copy them
into the linked binary (e.g. from `msvcrt.lib`). Provide a way to
export an explicit list of such symbols by adding a `.def` file as a
source file.
Fixes: #16473
|
|/
|
|
|
|
| |
Comments that indicate a special include order is necessary because
GetCurrentDirectory might get redefined are outdated. Remove those
outdated comments and use the normal ordering of includes.
|
|
|
|
|
|
|
| |
Use `cmGeneratorTarget::ModuleDefinitionInfo` to combine the
implementation of `WINDOWS_EXPORT_ALL_SYMBOLS` with that of using a
`.def` file as a source. Only one of these could be used within a
single target before anyway.
|
|
|
|
|
|
| |
Create a `ModuleDefinitionInfo` structure for each configuration of a
target to hold corresponding information about the selected module
definition file (`.def` source).
|
|
|
|
|
|
| |
Store unknown flags directly in a flag map entry for `AdditionalOptions`
instead of having a separate member for them. This avoids duplicating
the output generation logic for the entry.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix our calls to `AddCustomCommandToOutput` for adding cmake re-run
check commands to disable old-style quoting in favor of the full quoting
logic. This is necessary when paths contain special characters like `&`
that old-style quoting logic does not handle.
This also requires us to expand the `$(SolutionPath)` placeholder
explicitly because otherwise its expanded value will no longer be quoted
correctly. As a side effect, this fixes the value in VS 10 and above
where the placeholder may be undefined when driving the build through
MSBuild without the `.sln` file.
Reported-by: Steven Cook <sc@harshbutfair.org>
Fixes: #16585
|
|
|
|
|
|
| |
This allows users to specify different genex-based compile flags for
each file in a target, e.g. compiling just a single file with `Od/Ox` in
release builds on Visual Studio.
|
|
|
|
| |
Port dependent code to the change.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Per-source copyright/license notice headers that spell out copyright holder
names and years are hard to maintain and often out-of-date or plain wrong.
Precise contributor information is already maintained automatically by the
version control tool. Ultimately it is the receiver of a file who is
responsible for determining its licensing status, and per-source notices are
merely a convenience. Therefore it is simpler and more accurate for
each source to have a generic notice of the license name and references to
more detailed information on copyright holders and full license terms.
Our `Copyright.txt` file now contains a list of Contributors whose names
appeared source-level copyright notices. It also references version control
history for more precise information. Therefore we no longer need to spell
out the list of Contributors in each source file notice.
Replace CMake per-source copyright/license notice headers with a short
description of the license and links to `Copyright.txt` and online information
available from "https://cmake.org/licensing". The online URL also handles
cases of modules being copied out of our source into other projects, so we
can drop our notices about replacing links with full license text.
Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
of the replacements mechanically. Manually fix up shebang lines and trailing
newlines in a few files. Manually update the notices in a few files that the
script does not handle.
|
| |
|
| |
|
|
|
|
|
| |
This is more explicit than funnelling everything through the Convert
method.
|
| |
|
| |
|
|
|
|
|
| |
For executables with ENABLE_EXPORTS set, export all symbols when
instructed to do so by WINDOWS_EXPORT_ALL_SYMBOLS.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Replace use of cmsys::auto_ptr with a CM_AUTO_PTR macro that maps to
our own implementation adopted from the KWSys auto_ptr implementation.
Later we may be able to map CM_AUTO_PTR to std::auto_ptr on compilers
that do not warn about it.
Automate the client site conversions:
git grep -l auto_ptr -- Source/ | grep -v Source/kwsys/ | xargs sed -i \
's|cmsys::auto_ptr|CM_AUTO_PTR|;s|cmsys/auto_ptr.hxx|cm_auto_ptr.hxx|'
|
|
|
|
|
|
| |
Mostly automated:
git grep -l '.c_str() <<' | xargs sed -i 's|\.c_str() <<| <<|g'
|
| |
|
|
|
|
|
|
|
|
|
| |
Mostly automated:
values=("RelativeRoot" "NONE" "FULL" "HOME" "START" "HOME_OUTPUT" "START_OUTPUT"
"OutputFormat" "UNCHANGED" "MAKERULE" "SHELL" "WATCOMQUOTE" "RESPONSE"
"FortranFormat" "FortranFormatNone" "FortranFormatFixed" "FortranFormatFree")
for i in "${values[@]}"; do git grep -l cmLocalGenerator::$i | xargs sed -i "s|cmLocalGenerator::$i|cmOutputConverter::$i|g"; done
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Run the `Utilities/Scripts/clang-format.bash` script to update
all our C++ code to a new style defined by `.clang-format`.
Use `clang-format` version 3.8.
* If you reached this commit for a line in `git blame`, re-run the blame
operation starting at the parent of this commit to see older history
for the content.
* See the parent commit for instructions to rebase a change across this
style transition commit.
|