1467 Commits

Author SHA1 Message Date
Martin Duffy
ec2ba29ac5 Ninja: Allow compilation before generation of dependencies' private sources
This requires knowing when a generated header is public, which we can
model using file sets.  Add policy CMP0154 to treat generated sources
as private by default in targets with file sets.  Generated public
headers can be specified in public file sets.

Fixes: #24959
Issue: #15555
2023-09-20 10:25:24 -04:00
Ben Boeckel
80d6544398 cxxmodules: generate synthetic targets as an initial pass
We need to be able to construct BMIs that will be usable from the client
modules for the target importing the module, so create BMI-only
compilation rules for `IMPORTED` targets to create these BMIs.
2023-08-17 14:42:53 -04:00
Ben Boeckel
caf5971c8a cmTarget: report that synthetic targets can compile sources 2023-08-17 14:42:53 -04:00
Ben Boeckel
3a8ea5c3a0 cmTarget: rename entry copying method
It will also be used to copy from other targets, not just directories.
2023-08-17 14:42:53 -04:00
Ben Boeckel
1ccf25b049 cmTarget: track and store IMPORTED_CXX_MODULES_ usage properties
While not "usage requirements" directly, when applied to a target that
will eventually have the BMI compile rules attached to them, they need
tracked as such.
2023-08-17 14:42:53 -04:00
Craig Scott
84eae7aeda OPTIMIZE_DEPENDENCIES: Skip order-only deps for non-linking targets
Fixes: #21517
2023-08-10 09:17:56 +10:00
Ben Boeckel
d718262faa cmTarget: handle HIP_STANDARD like other language standards 2023-07-29 09:35:20 -04:00
Kyle Edwards
7050ac56a1 macOS: Add support for linking against .xcframework folders
Issue: #21752
2023-07-26 17:00:01 -04:00
Brad King
c96cb57e8e Merge topic 'property-typo-fix'
c172eecea6 cmTarget: Restore Fortran_PREPROCESS property initialization

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8654
2023-07-25 13:55:56 -04:00
Ben Boeckel
c172eecea6 cmTarget: Restore Fortran_PREPROCESS property initialization
Fix a typo from commit e522f8ca06 (cmTarget: factor out properties
initialized for target which compile, 2023-02-01, v3.27.0-rc1~577^2~13),
that broke this property.

Also update the test suite to use this upgrade as some level of
coverage.

Fixes: #25123
2023-07-25 11:35:24 -04:00
Robert Maynard
7351d590ee cmTarget: Add a way to represent imported shared library stubs
Shared library stubs can be used for linking, but not at runtime.
Their role is similar to import libraries on Windows, so represent
their location with the `IMPORTED_IMPLIB` target property.

Fixes: #24940
2023-07-18 13:21:01 -04:00
Marc Chevrier
45f17e5a85 cmList: Add container conversion to string 2023-06-22 15:44:17 +02:00
Brad King
f6435f799e Merge topic 'automoc-moc-options-test'
1f4b374d6e cmQtAutoGenInitializer: Reduce string copies
b6f66b445a cmQtAutoGenInitializer: Remove no-op calls
55d93bdabf cmQtAutoGenInitializer: Improve const correctness
feb56a666f cmTarget: Improve const correctness of AddUtility
5e513e562f Help: Add AUTOMOC_MOC_OPTIONS example
5380ad9d58 Tests: Add test for AUTOMOC_MOC_OPTIONS

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8523
2023-06-01 11:19:19 -04:00
Orkun Tokdemir
feb56a666f cmTarget: Improve const correctness of AddUtility 2023-05-31 13:01:29 -04:00
Ben Boeckel
6ff5cdc533 cxxmodules: remove support for CXX_MODULE_HEADER_UNITS filesets
There's no backing implementation for header units anyways, so just
remove it for now.
2023-05-31 10:57:11 -04:00
Marc Chevrier
aa5fed5052 SetProperty: suppress raw pointer usage 2023-05-26 14:48:22 +02:00
Brad King
28dd02c3ba Merge topic 'autogen-system-include'
7bf4e30090 Autogen: Default AUTOGEN_USE_SYSTEM_INCLUDE to ON if it is not set
033dc7ee2f Autogen: Add AUTOGEN_USE_SYSTEM_INCLUDE target property
8ba16db163 Tests/RunCMake: Add option for dynamic expected output

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8400
2023-05-04 09:01:08 -04:00
Orkun Tokdemir
033dc7ee2f Autogen: Add AUTOGEN_USE_SYSTEM_INCLUDE target property
`AUTOGEN_USE_SYSTEM_INCLUDE` was added. `AUTOGEN_USE_SYSTEM_INCLUDE`
is a boolean property that can be set on a target to indicate that the
autogen target include directory should be added as a system include
directory or normal include directory to the target.
2023-05-03 09:03:46 -04:00
Brad King
339f220575 Merge topic 'vs-debugger-init'
35566b48b4 VS: Add variables to initialize debugger-related properties

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8445
2023-05-02 08:45:41 -04:00
Alex Neundorf
35566b48b4 VS: Add variables to initialize debugger-related properties
Add variables to initialize target properties `VS_DEBUGGER_COMMAND`,
`VS_DEBUGGER_COMMAND_ARGUMENTS`, `VS_DEBUGGER_ENVIRONMENT`, and
`VS_DEBUGGER_WORKING_DIRECTORY`.
2023-05-01 13:39:00 -04:00
Marc Chevrier
241304190f CMake code rely on cmList class for CMake lists management (part. 2) 2023-04-29 09:54:31 +02:00
Marc Chevrier
e08ba229ee CMake code rely on cmList class for CMake lists management (part. 1) 2023-04-24 10:41:10 +02:00
Brad King
5386dc582b Merge topic 'autogen-exe-vars'
b3d1797508 Autogen: Add CMAKE_AUTO*_EXECUTABLE variables

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8352
2023-03-23 08:46:45 -04:00
Orkun Tokdemir
b3d1797508 Autogen: Add CMAKE_AUTO*_EXECUTABLE variables
Add the `CMAKE_AUTOMOC_EXECUTABLE`, `CMAKE_AUTOUIC_EXECUTABLE`, and
`CMAKE_AUTORCC_EXECUTABLE` variables to initialize the corresponding
`AUTO{MOC,UIC,RCC}_EXECUTABLE` target properties.

Fixes: #20071
2023-03-22 07:31:56 -04:00
Brad King
2c2c2c2227 Merge topic 'vs-windows-min-version'
6546305b01 VS: Add CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION variable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8319
2023-03-16 09:11:07 -04:00
halx99
6546305b01 VS: Add CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION variable
Provide a way to initialize the `VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION`
target property on targets.  It sets `WindowsTargetPlatformMinVersion`
in `.vcxproj` files.
2023-03-15 10:03:16 -04:00
Brad King
db4f4ad24e Merge topic 'support_cubin_fatbin_optix_cuda_output'
2def6a874b CUDA: Add support for CUBIN, FATBIN, and OPTIXIR compilation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8259
2023-03-14 09:35:00 -04:00
Robert Maynard
2def6a874b CUDA: Add support for CUBIN, FATBIN, and OPTIXIR compilation 2023-03-13 09:54:00 -04:00
Marc Chevrier
2e24123186 Apple: text-based stubs: manage imported configurations mapping 2023-03-05 14:39:56 +01:00
Brad King
1d7fb31778 Merge topic 'Apple-handle-Text-Stubs'
ede33f30cf Apple: Handle generation and comsuption of text-based stubs (.tbd files)
fcbd723a50 Enhance support functions

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Brad King <brad.king@kitware.com>
Merge-request: !8204
2023-03-02 09:53:03 -05:00
Marc Chevrier
ede33f30cf Apple: Handle generation and comsuption of text-based stubs (.tbd files)
Fixes: #24123
2023-03-01 12:23:28 +01:00
Marc Chevrier
fcbd723a50 Enhance support functions
* Avoid duplicate definiitions for IsExecutableWithExports, etc...
* Add helper IsApple()
2023-02-28 14:24:03 +01:00
Ralf Habacker
a7f9c7da26 Add option to add SOVERSION to DLL names
Add variable/target property `[CMAKE_]DLL_NAME_WITH_SOVERSION`.

Fixes: #24251
Signed-off-by: Ralf Habacker <ralf.habacker@freenet.de>
2023-02-27 09:18:34 -05:00
Ben Boeckel
c97de1047f cmMakefile: add support for a "synthesized" target
It is a normal target, but will end up copying its internals from
another target. Keep track of this state so that such copying can only
occur when intended.
2023-02-14 12:33:58 -05:00
Ben Boeckel
1d0426f642 cmTarget: make Visibility an enum class 2023-02-14 12:28:58 -05:00
Ben Boeckel
5b58695321 cmTarget: store visibility as an enum rather than bools
C++ modules are going to introduce a third concept of "synthesized"
targets, so update logic where needed to avoid assuming "not imported?
must be normal".

Also add an accessor method to perform queries against the visibility.
2023-02-14 12:23:15 -05:00
Ben Boeckel
dd968ca388 cmTarget: convert VS property settings to the new property lambda 2023-02-02 12:43:14 -05:00
Ben Boeckel
b69fba7cd7 cmTarget: factor out POSITION_INDEPENDENT_CODE initialization
This property is initialized using the common framework, but then forced
on SHARED and MODULE targets, so just post-process the property in this
case.
2023-02-02 12:43:14 -05:00
Ben Boeckel
42575a660f cmTarget: factor out properties with targets with commands 2023-02-02 12:43:13 -05:00
Ben Boeckel
f551f49a17 cmTarget: factor out properties for targets with exports 2023-02-02 12:43:13 -05:00
Ben Boeckel
d1627118e7 cmTarget: factor out executable-requiring properties 2023-02-02 12:43:13 -05:00
Ben Boeckel
f0ae00d727 cmTarget: factor out linkable normal library target properties 2023-02-02 12:43:13 -05:00
Ben Boeckel
9f7a25a2c7 cmTarget: factor out non-executable normal target with artifact properties 2023-02-02 12:43:13 -05:00
Ben Boeckel
ab2b967ce6 cmTarget: factor out normal targets with artifact properties 2023-02-02 12:43:13 -05:00
Ben Boeckel
c3dbbcef65 cmTarget: factor out normal non-imported target properties 2023-02-02 12:43:13 -05:00
Ben Boeckel
92a4b21ac9 cmTarget: factor out non-imported target properties 2023-02-02 12:43:13 -05:00
Ben Boeckel
7a34637c3d cmTarget: factor out properties for normal targets 2023-02-02 12:43:13 -05:00
Ben Boeckel
35d6a6b186 cmTarget: factor out Xcode and with-compiled source properties 2023-02-02 12:43:13 -05:00
Ben Boeckel
8004fe3f14 cmTarget: factor out Xcode-requiring properties 2023-02-02 12:43:13 -05:00
Ben Boeckel
e522f8ca06 cmTarget: factor out properties initialized for target which compile 2023-02-02 12:43:13 -05:00