summaryrefslogtreecommitdiffstats
path: root/Tests/ExportImport
Commit message (Collapse)AuthorAgeFilesLines
* install(EXPORT): Export find_dependency() callsKyle Edwards2023-11-134-1/+9
| | | | | | Issue: #20511 Co-Authored-by: Brad King <brad.king@kitware.com> Co-Authored-by: Robert Maynard <rmaynard@nvidia.com>
* Tests: Fix clang -Wstrict-prototypes warningsBrad King2023-10-269-9/+9
|
* try_compile: Add support for using ALIAS targetsCristian Le2023-10-161-0/+85
| | | | | Fixes: #25337 Signed-off-by: Cristian Le <cristian.le@mpsd.mpg.de>
* Add missing `OUTPUT` in ExportImport testCristian Le2023-10-161-1/+1
|
* OrangeC: Add support for OrangeC compilerDavid Lindauer2023-09-251-1/+1
| | | | | | | Add compiler information modules. Update the test suite. Fixes: #25032 Co-authored-by: Brad King <brad.king@kitware.com>
* Tests: Fix ExportImport test with read-only source treeBrad King2023-09-181-4/+4
|
* cmGeneratorExpressionNode: implement `COMPILE_ONLY` genexRobert Maynard2023-05-042-0/+14
| | | | | | | | | This generator expression is the inverse of `LINK_ONLY` and only coveys usage requirements for the purposes of compilation. Its intended use is to avoid needing to export targets that do not have link usage requirements (e.g., header-only libraries) when used by another target. See: #15415
* Tests: Bump CMake minimum required in tests to 3.5Brad King2023-03-011-1/+1
| | | | | | | | | | | | | | | | | | | CMake 3.27 deprecates compatibility with CMake < 3.5. Update tests that do not cover older interfaces to avoid the deprecation warning. Follow the pattern from: * commit 7b07ccdd2b (Tests/*Only: Update cmake_minimum_required versions, 2020-06-15, v3.19.0-rc1~629^2~1) * commit 72e7c45e98 (Tests: Bump CMake minimum required in tests to 2.8.12, 2020-12-22, v3.20.0-rc1~224^2) * commit f6b4db365a (Tests: bump cmake_minimum_required version to 2.8.12, 2021-04-04, v3.21.0-rc1~372^2) Also remove explicit `cmake_policy` settings made redundant by the version.
* Add EXPORT_NO_SYSTEM target property, deprecate IMPORTED_NO_SYSTEMDa Quexian2022-06-172-3/+22
| | | | | | Issue: #18040 Signed-off-by: Da Quexian <daquexian566@gmail.com>
* Tests: Add missing return types to C function prototypesBrad King2022-05-131-1/+1
| | | | These were diagnosed by a Clang 15 development version.
* export: Fix TARGET_NAME lookup for out-of-dir linkingBrad King2022-04-011-1/+4
| | | | | | | Improve the logic added by commit f0e67da061 (target_link_libraries: Fix out-of-dir linking of a list of targets, 2020-01-14, v3.17.0-rc1~149^2) to, while exporting targets, look up referenced target names in the correct directory.
* Add usage requirements to update direct link dependenciesBrad King2022-01-293-2/+34
| | | | | | | | | | | | | | | | | Link line construction starts with `LINK_LIBRARIES` and appends dependencies from the transitive closure of `INTERFACE_LINK_LIBRARIES`. Only the entries of `LINK_LIBRARIES` are considered direct link dependencies. In some advanced use cases, particularly involving static libraries and static plugins, usage requirements need to update the list of direct link dependencies. This may mean adding new items, removing existing items, or both. Add target properties to encode these usage requirements: * INTERFACE_LINK_LIBRARIES_DIRECT * INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE Fixes: #22496
* LCC: Add policy CMP0129 regarding interpreting LCC as GNUmakise-homura2021-10-212-0/+6
| | | | | | | | | | Due to MCST LCC compiler identification is now changed to LCC, there should be a way for old projects to still identify it as GNU, as it was before. This commits adds the policy: CMP0129: Compiler id for MCST LCC compilers is now LCC, not GNU. This policy controls such a behavior. OLD behaivior is to treat LCC as GNU, NEW is to treat is as LCC.
* Merge topic 'lcc-compiler'Brad King2021-10-192-3/+5
|\ | | | | | | | | | | | | | | | | | | | | 02b2607a5c Help: Add release note for MCST LCC compiler support e5d9fce03f LCC: Add dedicated support for MCST LCC compiler 2b9ef77944 CPack/DEB: deal with broken dpkg-shlibdeps on E2K architecture 0995c75301 Tests/RPM: skip tests tat rely on debugedit if it's not found ea55ac9a51 Tests/RunCMake/CommandLine: Deal with locales that are different from English Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6608
| * LCC: Add dedicated support for MCST LCC compilermakise-homura2021-10-152-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Divert LCC compiler as a new one, instead of treating it as GNU. Since old times, Elbrus C/C++/Fortran Compiler (LCC) by MCST has been passing checks for GNU compilers, so it has been identified as GNU. Now, with intent of seriously upstreaming its support, it has been added as a separate LCC compiler, and its version displays not a supported GCC version, but LCC version itself (e.g. LCC 1.25.19 instead of GNU 7.3.0). This commit adds its support for detection, and also converts basically every check like 'is this compiler GNU?' to 'is this compiler GNU or LCC?'. The only places where this check is untouched, is where it regards other platforms where LCC is unavailable (primarily non-Linux), and where it REALLY differs from GNU compiler. Note: this transition may break software that are already ported to Elbrus, but hardly relies that LCC will be detected as GNU; still such software is not known.
* | export: Propagate IMPORTED_NO_SYSTEM target property to consumersBrad King2021-10-155-0/+31
|/ | | | | | | | | Enabling `IMPORTED_NO_SYSTEM` on a target built within the project has no effect on the build system, but it is still a useful way to set the property on imported targets generated by `install(EXPORT)` and `export()`. Issue: #17364
* Tests: Add tests for new optionsKyle Edwards2021-06-0417-34/+328
|
* install(): Add IMPORTED_RUNTIME_ARTIFACTS modeKyle Edwards2021-05-315-7/+117
|
* Tests: Update for the Fujitsu compilerChuck Atkins2021-03-311-1/+2
|
* Tests: Bump CMake minimum required in tests to 2.8.12Chuck Atkins2020-12-231-1/+1
| | | | | | | Since 3.19, CMake generates a deprecation warning when using a minimum version less than 2.8.12. This eliminates those warnings generated during tests, which are typically hidden from the user and developer but are being generated nonetheless.
* Merge topic 'find_package-version-range'Craig Scott2020-09-242-0/+18
|\ | | | | | | | | | | | | | | | | | | | | 5b3356263c CMakePackageConfigHelpers: Add version range support 6bfc442fde FPHSA: add support of version range d7df81067b find_package: Add support of version range 09095dbcd2 cmFindPackageCommand: Refactoring Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Michael Hirsch, Ph.D. <michael@scivision.dev> Merge-request: !5226
| * CMakePackageConfigHelpers: Add version range supportMarc Chevrier2020-09-232-0/+18
| |
* | install(EXPORT): Fix exporting target w/ source named using CONFIG genexDeniz Bahadir2020-09-221-0/+15
|/ | | | Fixes: #21203
* Add INTERFACE libraries to generated buildsystem if they have SOURCESBrad King2020-08-074-3/+41
| | | | | | | | | | | | | | | | | | | | | | | | INTERFACE libraries were created with the intention of collecting usage requirements for use by other targets via `target_link_libraries`. Therefore they were not allowed to have SOURCES and were not included in the generated buildsystem. In practice, this has become limiting: * Header-only libraries do have sources, they just do not compile. Developers should be able to edit those sources (the header files) in their IDE. * Header-only libraries may need to generate some of their header files via custom commands. Some projects work around these limitations by pairing each interface library with an `add_custom_target` that makes the header files and custom commands appear in the generated buildsystem and in IDEs. Lift such limitations by allowing INTERFACE libraries to have SOURCES. For those with sources, add a corresponding build target to the generated buildsystem. Fixes: #19145
* target_link_libraries: Fix out-of-dir linking of a list of targetsBrad King2020-01-161-1/+1
| | | | | | | | | | | | | | In a case like target_link_libraries(targetInOtherDir PUBLIC "$<1:a;b>") then all entries in the list need to be looked up in the caller's scope. Previously our `::@(directory-id)` suffix would apply only to the last entry. Instead surround the entire entry by a pair `::@(directory-id);...;::@` so that the `::@` syntax can encode a directory lookup scope change evaluated as the list is processed. Fixes: #20204
* Tests: Enable CMP0022 in ExportImport out-of-dir linking caseBrad King2020-01-141-0/+1
| | | | | | Since out-of-dir linking is enabled by CMP0079, which is newer than CMP0022, it is likely that both will be set in practice when out-of-dir linking is used.
* Add set_property option: DEPRECATIONJoseph Snyder2020-01-022-0/+12
| | | | | | | | | | | | Add a new property flag for a target which contains a message regarding deprecation status. Add a warning at "Generate" time if a linked target is marked as deprecated. Expand ExportImport test to ensure that new property is being set and passed correctly. Ensure that the message is shown during the "Generate" step run of the ExportImport test.
* CUDA: Add cuda meta-features (e.g. ``cuda_std_11``) supportRobert Maynard2019-12-103-0/+20
|
* Merge topic 'cmake-e-rm'Kyle Edwards2019-11-151-1/+1
|\ | | | | | | | | | | | | | | 2d0100fac7 replace remove and remove_directory with rm in tests 5239fc5c75 cmake -E: Add rm with improved semantics over remove and remove_directory Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3949
| * replace remove and remove_directory with rm in testsJohnny Jazeix2019-11-131-1/+1
| |
* | Tests: Fix ExportImport PCH expectation on Cray Classic compilerBrad King2019-11-111-1/+1
|/ | | | Do not expect PCH-included definitions for this compiler.
* install,export: Do not treat language names as target namesBrad King2019-10-161-0/+5
| | | | | | | When generating `IMPORTED_LINK_INTERFACE_LANGUAGES`, do not treat the entries as target names. Fixes: #19846
* install,export: Fix export of a genex following $<INSTALL_PREFIX>Brad King2019-10-041-1/+4
| | | | | | | | | The relative path check added by commit 5838aba1aa (Export: Report error on relative include with genex., 2013-11-26, v3.0.0-rc1~285^2) was added one condition too early. If the value starts in `${_IMPORT_PREFIX}` (which comes from `$<INSTALL_PREFIX>`) then it is an absolute path. Fixes: #19791
* Revise include order using clang-format-6.0Kitware Robot2019-10-013-9/+6
| | | | | Run the `clang-format.bash` script to update our C and C++ code to a new include order `.clang-format`. Use `clang-format` version 6.0.
* PCH: Propagate INTERFACE_PRECOMPILE_HEADERS in install(EXPORT)Brad King2019-09-254-1/+39
| | | | | | | | | This was accidentally left out of commit 0467a2f91b (PCH: add PRECOMPILE_HEADERS to special properties, 2015-03-12). Also add a test case for `install(EXPORT)` and `export()` propagation of precompiled headers. Fixes: #19741
* InterfaceLibrary: Whitelist EXPORT_PROPERTIES propertyBrad King2019-05-172-0/+10
| | | | Fixes: #19261
* Tests: Teach tests when to treat clang-cl as MSVCZsolt Parragi2019-02-111-1/+1
| | | | | | | | | | | | | | | | | | | * Disable the system include unused variable test in ExportImport when clang is in MSVC compatible mode. * Disable CxxDialect testcase when clang is in MSVC compatible mode, as it doesn't support `typeof`. * Teach Module.WriteCompilerDetectionHeader to treat clang-cl as MSVC. * Disable the SystemIncludeDirectories testcase within IncludeDirectories when clang is in MSVC compatible mode. * Disable the CMakeOnly.CheckCXXCompilerFlag testcase when clang is in MSVC compatible mode. * Treat clang-cl as MSVC in LinkOptions.cmake in the try_run and try_compile testcases.
* Remove now-unused code once used on IRIXBrad King2019-01-111-1/+0
| | | | | We dropped support for IRIX as a host platform long ago. Remove some leftover code.
* LINK_DIRECTORIES: Add new properties and commandsMarc Chevrier2018-09-252-0/+17
| | | | | | | | | | | | These new capabilities enable to manage link directories Two new properties: * target properties: LINK_DIRECTORIES and INTERFACE_LINK_DIRECTORIES One new command * target_link_directories(): to populate target properties Fixes: #17215
* target_link_libraries: Allow use with targets in other directoriesBrad King2018-09-127-0/+66
| | | | | | | | | | | | | | | | | | | | | Previously the command did not allow naming targets on the LHS that were not created in the calling directory. Lift this restriction to enable more flexible use by projects. Targets named on the RHS will need to be looked up during generation in the scope of the call site rather than the scope of the LHS target. Introduce an internal syntax in `[INTERFACE_]LINK_LIBRARIES` properties to specify target names that need to be looked up in a directory other than that containing the target on which the property is set. Add minimal documentation of the syntax to help users that encounter it. Unfortunately CMake previously did allow such calls in the case that only `INTERFACE` libraries are specified, but those libraries would be looked up in the target's directory rather than the caller's. Add policy `CMP0079` to enable the new behavior with new lookup scope in a compatible way. Fixes: #17943
* Tests: Add test for $<0:...> in ExportImportKyle Edwards2018-07-171-3/+3
| | | | | This test case already includes test cases for $<1...> and $<0...>, but this commit adds a few $<0:...>'s in cases where it was missing.
* LINK_DEPENDS: add support for property INTERFACE_LINK_DEPENDSMarc Chevrier2018-06-272-0/+21
| | | | Fixes: #17997
* LINK_OPTIONS: Add new family of propertiesMarc Chevrier2018-06-063-0/+23
| | | | | | | | | | | | | | This family enable to manage link flags Three new properties: * directory property: LINK_OPTIONS * target properties: LINK_OPTIONS and INTERFACE_LINK_OPTIONS Two new commands * add_link_options(): to populate directory property * target_link_options(): to populate target properties Fixes: #16543
* Revise C++ coding style using clang-format-6.0Kitware Robot2018-06-0126-70/+70
| | | | | | | | | | | | Run the `clang-format.bash` script to update all our C and C++ code to a new style defined by `.clang-format`. Use `clang-format` version 6.0. * 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.
* Export: allow exporting of additional propertiesWouter Klouwen2018-03-162-0/+22
| | | | | | | | | This change introduces an additional property that may be set on a target to allow additional properties to be exported. Normally only a limited number of properties are exported. Additional properties may be exported by simply setting the `EXPORT_PROPERTIES` property on a target that is exported.
* Tests: Add cases for usage requirements of linked object libsBrad King2018-03-018-19/+91
| | | | | | | Add tests to cover transitive usage requirements on installation and export of targets that link to object libraries. Issue: #14778
* install,export: Maybe transform OBJECT libraries to INTERFACE librariesBrad King2018-02-283-5/+31
| | | | | | | | | | | Teach the `install` and `export` commands to support installing and exporting `OBJECT` libraries without their object files. Transform them to `INTERFACE` libraries in such cases. For `install(TARGETS)`, activate this when no destination for the object files is specified. For `export`, activate this only under Xcode with multiple architectures when we have no well-defined object file locations to give to clients.
* GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in TestsCraig Scott2017-12-291-2/+3
|
* Tests: Make function name not match SONAMECraig Scott2017-05-181-1/+1
| | | | | | | | We look for `SONAME` in the output of `readelf` to check whether the binary contains the field. Do not provide a symbol that may accidentally match. Fixes: #16894
* Allow OBJECT libraries to be installed, exported, and importedRobert Maynard2017-04-186-1/+42
| | | | | | | | Teach install() and export() to handle the actual object files. Disallow this on Xcode with multiple architectures because it still cannot be cleanly supported there. Co-Author: Brad King <brad.king@kitware.com>