Commit Graph
26941 Commits
Author SHA1 Message Date
Daniel Pfeifer 1eebc29563 cmCommand: deprecate functions GetMakefile and SetError
Replace the members for the Makefile and the Error with a
cmExecutionStatus.  Re-implement GetMakefile and SetError based on that.

Both functions should be called directly on the cmExecutionStatus that is
passed to InitialPass.  This will help us make all Commands immutable and
remove the need for cloning.
2019-07-21 09:25:32 +02:00
Kitware Robot 82aa6941e9 CMake Nightly Date Stamp 2019-07-21 00:01:05 -04:00
Kitware Robot 0c6e27bff1 CMake Nightly Date Stamp 2019-07-20 00:01:11 -04:00
Kyle Edwards 16bb46eaf3 Merge topic 'skip_regular_expression'
5dbd9c8583 Vim: Add SKIP_REGULAR_EXPRESSION test property to vim syntax file
407dd1a910 Help: Add documentation for SKIP_REGULAR_EXPRESSION test property
d7955d4e5d Tests: Create test for SKIP_REGULAR_EXPRESSION test property
4f1dec86a5 CTest: Add SKIP_REGULAR_EXPRESSION test property

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3570
2019-07-19 12:14:27 -04:00
Brad King 573f1fc19b Merge topic 'command-final-action'
732dd344b9 cmCommand: remove FinalPass from interface
fbee46e262 cmVariableWatchCommand: Port away from FinalPass
360d415592 cmLoadCommandCommand: Port away from FinalPass
316e40baec cmInstallProgramsCommand: Port away from FinalPass
7bc88b9165 cmInstallFilesCommand: Port away from FinalPass
6a1a3763ee cmFLTKWrapUICommand: Port away from FinalPass
20169f0b8d cmExportLibraryDependenciesCommand: Port away from FinalPass
a74dad3bd3 cmMakefile: decouple FinalAction from cmCommand
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3562
2019-07-19 12:09:03 -04:00
Brad King ca7ec2e188 Merge topic 'ctest-done-hash'
da79075c4d CTest: Generate Done.xml before calculating its hash

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3563
2019-07-19 12:02:53 -04:00
Betsy McPhail da79075c4d CTest: Generate Done.xml before calculating its hash
Fixes: #19489
2019-07-19 12:00:30 -04:00
Brad King f79e684678 Merge topic 'QCC-ninja-support'
8738e2584a cmGlobalNinjaGenerator: Use gnu compatible paths with QCC

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3567
2019-07-19 12:00:12 -04:00
Brad King a2daa3ef27 Merge topic 'modernize_std_unique_ptr'
3bed969dac cmMakefile: Modernize AddFunctionBlocker method to accept a std::unique_ptr
faacb90a13 cmELF: Modernize to use std::unique_ptr instead of new/delete

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3548
2019-07-19 11:59:04 -04:00
Brad King 6618cbf38a Merge topic 'vs-asmlist-dir'
c1fc6c80c7 VS: Place intermediate files in the "ASM List Location" next to objects

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3569
2019-07-19 11:55:48 -04:00
Kitware Robot ac000e29da CMake Nightly Date Stamp 2019-07-19 00:01:07 -04:00
Gabor Bencze 4f1dec86a5 CTest: Add SKIP_REGULAR_EXPRESSION test property 2019-07-18 11:52:05 -04:00
Brad King c1fc6c80c7 VS: Place intermediate files in the "ASM List Location" next to objects
The `AssemblerListingLocation` setting in VS project files is meant for
intermediate files created during the build much like object files.
When the VS 7 generator was first under development, commit 49aebe6c99
(new arch, 2002-09-04) placed both object files and the ASM list
location in the same directory.  Later commit f9aef0e422 (Generator now
creates a separate intermediate files directory for each target,
2005-07-27) moved the object files to a per-target directory but the
ASM list location was not moved with them.  Move it now.

Fixes: #19480
2019-07-18 11:40:58 -04:00
Daniel Pfeifer 732dd344b9 cmCommand: remove FinalPass from interface 2019-07-18 17:35:43 +02:00
Daniel Pfeifer fbee46e262 cmVariableWatchCommand: Port away from FinalPass 2019-07-18 17:35:43 +02:00
Daniel Pfeifer 360d415592 cmLoadCommandCommand: Port away from FinalPass 2019-07-18 17:35:43 +02:00
Daniel Pfeifer 316e40baec cmInstallProgramsCommand: Port away from FinalPass 2019-07-18 11:53:46 +02:00
Daniel Pfeifer 7bc88b9165 cmInstallFilesCommand: Port away from FinalPass 2019-07-18 11:53:46 +02:00
Daniel Pfeifer 6a1a3763ee cmFLTKWrapUICommand: Port away from FinalPass 2019-07-18 11:53:46 +02:00
Daniel Pfeifer 20169f0b8d cmExportLibraryDependenciesCommand: Port away from FinalPass 2019-07-18 11:53:46 +02:00
Daniel Pfeifer a74dad3bd3 cmMakefile: decouple FinalAction from cmCommand 2019-07-18 11:53:46 +02:00
Regina Pfeifer d26e6cb1c2 cmLoadCommandCommand: Code cleanup 2019-07-18 11:49:28 +02:00
Kitware Robot 94b883d9d3 CMake Nightly Date Stamp 2019-07-18 00:01:08 -04:00
Brad King 44a6468304 Merge topic 'aix-exe-implib'
2fa920c0cd AIX: Create import library for executables with exports

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3561
2019-07-17 09:16:07 -04:00
Sebastian Holtermann 3bed969dac cmMakefile: Modernize AddFunctionBlocker method to accept a std::unique_ptr 2019-07-17 14:58:27 +02:00
Sebastian Holtermann faacb90a13 cmELF: Modernize to use std::unique_ptr instead of new/delete 2019-07-17 14:58:27 +02:00
Brad King 79bcf4e165 CMake 3.15.0 2019-07-17 07:54:31 -04:00
Brad King 3143e9ffc5 Merge topic 'project-version-0'
0ba5891ead project: Keep leading `0` in PROJECT_VERSION components
5f84669806 Tests: Factor out RunCMake.project helper macro into module
b1f387a7ea Refactor: Use raw string literals instead of escaping
41b85968d8 Refactor: Use initializer lists instead of `push_back` series
45e85dd2b2 Refactor: Add some `const` to vars
90f91e4d21 Refactor: Replace a "magic" number w/ a named constant
638383c38f Refactor: Eliminate one-time-used variables
9b6a53292f Refactor: Eliminate `sep` from the loop

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3517
2019-07-17 07:28:05 -04:00
Brad King 3f84ff212c Merge topic 'find_package-fix-NO_MODULE'
f2edccea66 find_package: Fix NO_MODULE under CMAKE_FIND_PACKAGE_PREFER_CONFIG

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3557
2019-07-17 07:20:20 -04:00
Kitware Robot b119968048 CMake Nightly Date Stamp 2019-07-17 00:01:08 -04:00
Samuel Ostlund 8738e2584a cmGlobalNinjaGenerator: Use gnu compatible paths with QCC 2019-07-16 14:06:34 -07:00
Brad King 2fa920c0cd AIX: Create import library for executables with exports
On AIX, plugins meant to be loaded into executables via `dlopen` must be
linked with access to a list of symbols exported from the executable in
order to use them (when not using runtime linking).  The AIX linker
supports specifying this list as an "import file" passed on the command
line either via the `-bI:...` option or (with a leading `#! .` line) as
a normal input file like any other library file.

The linker import file plays the same role on AIX as import libraries do
on Windows.  Teach CMake to enable its import library abstraction on AIX
for executables with the `ENABLE_EXPORTS` target property set.  Teach
our internal `ExportImportList` script to optionally generate a leading
`#! .` line at the top of the generated export/import list.  Update our
rule for linking an executable with exports to generate a public-facing
"import library" implemented as an AIX linker import file.

With this approach, our existing infrastructure for handling import
libraries on Windows will now work for AIX linker import files too:

* Plugins that link to their executable's symbols will be automatically
  linked using the import file on the command line.

* The executable's import file will be (optionally) installed and
  exported for use in linking externally-built plugins.

This will allow executables and their plugins to build even if we later
turn off runtime linking.

Issue: #19163
2019-07-16 14:15:13 -04:00
Brad King c3d9d80015 Merge topic 'aix-explicit-exports'
c2c3d22504 Tests: Drop RunCMake workaround for AIX ld warnings about GNU atexit
9f5c2040bf AIX: Explicitly compute executable exports for both XL and GNU
0f150b69d3 AIX: Explicitly compute shared object exports for both XL and GNU
a5bf4e7921 AIX: Drop redundant -brtl flags
9cb5f040d7 XL: De-duplicate shared object creation flags

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3556
2019-07-16 10:30:38 -04:00
Brad King 185e6a1288 Merge branch 'find_package-fix-NO_MODULE' into release-3.15
Merge-request: !3557
2019-07-16 09:12:56 -04:00
Cristian Adam f2edccea66 find_package: Fix NO_MODULE under CMAKE_FIND_PACKAGE_PREFER_CONFIG
The module mode fallback added by commit 22e65d10c1 (find_package: Fixed
CMAKE_FIND_PACKAGE_PREFER_CONFIG Module fallback, 2019-06-13,
v3.15.0-rc2~6^2) should not be used unless the `find_package` call
allows module mode.  Doing so can lead to infinite recursion if a find
module tries to call config mode with `find_package(...  NO_MODULE)`.
Fix the logic and add a test case.

Fixes: #19478
2019-07-16 09:09:24 -04:00
Alex Turbov 0ba5891ead project: Keep leading 0 in PROJECT_VERSION components
Introduce CMake policy `CMP0096` to make `project()` keep leading zeros
in version components.  As a side effect, it now allows really long
version numbers.

Fixes: #19421
Co-Author: Brad King <brad.king@kitware.com>
2019-07-16 07:48:40 -04:00
Kitware Robot e653938b39 CMake Nightly Date Stamp 2019-07-16 00:01:06 -04:00
Brad King 9f5c2040bf AIX: Explicitly compute executable exports for both XL and GNU
On AIX, symbols in executables must be exported in order to be visible
to modules (plugins) they load via `dlopen`.  Prior to policy `CMP0065`,
CMake linked all executables with flags to export symbols, but the NEW
behavior for that policy is to do so only for executables that have the
`ENABLE_EXPORTS` target property set.  In both cases, CMake has always
used the AIX linker option `-bexpall` option to export symbols from
executables.

This has worked fairly well with the XL compiler, but with the GNU
compiler it works only for C ABI symbols.  The reason is that `-bexpall`
does not export symbols starting in `_` but the GNU C++ ABI mangles all
symbols with a leading `_`.  Therefore we have only supported C ABI
plugins with the GNU compiler on AIX.  Some projects have tried to work
around this by replacing `-bexpall` with `-bexpfull`, but the latter
often exports symbols that we do not want exported.

Avoid using `-bexpall` for executables by instead using by our own
internal `ExportImportList` script to compute symbol export lists from
the object files to be linked into an executable.  Pass the explicitly
computed export list to the AIX linker's `-bE:...` option.  We already
do this for shared object exports.

Issue: #19163
2019-07-15 13:27:16 -04:00
Alex Turbov b1f387a7ea Refactor: Use raw string literals instead of escaping 2019-07-15 08:17:36 -04:00
Alex Turbov 41b85968d8 Refactor: Use initializer lists instead of push_back series 2019-07-15 08:17:36 -04:00
Alex Turbov 45e85dd2b2 Refactor: Add some const to vars 2019-07-15 08:17:36 -04:00
Alex Turbov 90f91e4d21 Refactor: Replace a "magic" number w/ a named constant 2019-07-15 08:17:36 -04:00
Alex Turbov 638383c38f Refactor: Eliminate one-time-used variables 2019-07-15 08:17:36 -04:00
Alex Turbov 9b6a53292f Refactor: Eliminate sep from the loop 2019-07-15 08:17:34 -04:00
Brad King d7e53b4274 Merge topic 'cleanup-gen-lookups'
7ff9ab3b10 Makefile: De-duplicate executable link rule lookup
79f5ef19fe De-duplicate checks for whether a platform uses Windows DLLs
22d3eb5d5e Refactor checks for whether a target has an import library

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3550
2019-07-15 07:41:52 -04:00
Brad King a92b7fd46b Merge topic 'modernize-cmCommand-memory-management'
1591f138f1 modernize: manage cmCommand instances using unique_ptr.
d9b2c7dae2 Introduce memory management helper: cm_memory.hxx

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sebastian Holtermann <sebholt@web.de>
Merge-request: !3513
2019-07-15 07:40:00 -04:00
Kitware Robot 0db8b7eb45 CMake Nightly Date Stamp 2019-07-15 00:01:07 -04:00
Marc Chevrier 1591f138f1 modernize: manage cmCommand instances using unique_ptr. 2019-07-14 15:37:30 +02:00
Marc Chevrier d9b2c7dae2 Introduce memory management helper: cm_memory.hxx 2019-07-14 15:37:30 +02:00
Kitware Robot 81389a5e8f CMake Nightly Date Stamp 2019-07-14 00:01:07 -04:00