Commit Graph

42159 Commits

Author SHA1 Message Date
Kyle Edwards 264bdac185 CMAKE_ROLE: Fix value for ctest --build-and-test
--build-and-test builds a CMake project, so CMAKE_ROLE should be
PROJECT. Fix this and add a test case.
2019-01-18 10:15:25 -05:00
Andrew Paprocki a080914274 Fortran: Add compiler ID/Version generator expressions
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)
2019-01-18 08:56:13 -05:00
Saleem Abdulrasool 0ffe8f8844 Ninja: support SWIFT_MODULE_NAME property
Add a new `SWIFT_MODULE_NAME` property that defaults to the target name.
This is needed as otherwise, the first source file determines the module
name.

Issue: #18800
2019-01-18 07:52:17 -05:00
Sebastian Holtermann 1ed4d48dcf Autogen: Prepend instead of append mocs_compilation.cpp to the sources list
`mocs_compilation.cpp` easily takes a long time to compile when it
contains multiple `moc` files.  When it was appended like before
we ran into the situation that all smaller sources were already compiled when
`mocs_compilation.cpp` got compiled at last.  In that case a single core was
busy but all remaining cores stayed idle.

To optimize CPU core utilization we now prepend `mocs_compilation.cpp`
to the sources list instead of appending it.  This allows smaller source files
to get compiled *while* the long lasting `mocs_compilation.cpp` gets compiled.

Closes #18793
2019-01-18 13:47:23 +01:00
Sebastian Holtermann a42b700cc2 cmTarget,cmGeneratorTarget: Add optional before parameter to AddSource
The new optional `before` parameter in `cmTarget::AddSource` and
`cmGeneratorTarget::AddSource` allows to prepend a source file
to the sources list instead of appending it.
2019-01-18 13:47:23 +01:00
Brad King a61c061b61 Merge topic 'automoc-test-in-place'
1c08652580 Tests: Fix Qt4And5Automoc tests to work on in-source build

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2817
2019-01-18 07:02:01 -05:00
Brad King 65a3abf999 Merge topic 'GHS_updates'
21ab58d3f8 GHS: Update test suite
72e0c115b7 GHS: Add Compiler ID detection
436cc5e991 GHS: try_compile() now uses GHS platform variables
4a1ec0de3d GHS: Fix toolset selection
1a66acdef2 GHS: Append ".gpj" to target name when generating build command
0c9e47d7cd GHS: Integrity Application updates
8044318431 GHS: Add support for some of the source file properties
73092b2213 GHS: Add support for object libraries
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2231
2019-01-18 06:58:35 -05:00
Brad King 2e7d4029f4 Merge topic 'remove-duplicate-link'
00c7e006a5 Help: Remove duplicate reference to IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2818
2019-01-18 06:55:52 -05:00
Kitware Robot 92d132100a CMake Nightly Date Stamp 2019-01-18 00:01:05 -05:00
Ben Boeckel c09ec79981 ExternalProject: support SOURCE_SUBDIR for BUILD_IN_SOURCE 2019-01-17 13:40:30 -05:00
Regina Pfeifer ef61997b1b clang-tidy: Use emplace 2019-01-17 13:12:02 -05:00
Brad King 1c08652580 Tests: Fix Qt4And5Automoc tests to work on in-source build
Use a distinctly-named build directory for each case so that neither
one uses its own source tree as the build tree.

Fixes: #18159
2019-01-17 12:58:41 -05:00
Vitaly Stakhovsky 25caf7bafe cmMakefile::ReadListFile() accepts std::string argument
Same for cmMakefile::ReadDependentFile(); some cleanup
2019-01-17 12:36:07 -05:00
Brad King cae9d2a61a CTest: Teach --show-only= to reject unknown values 2019-01-17 12:01:07 -05:00
Brad King 7370b02c36 CTest: Teach --show-only=json-v1 to filter out not-available tests
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.
2019-01-17 12:01:07 -05:00
Brad King 62fec84ad7 Tests: Fix RunCMake.CTestCommandLine case when no python is found
Do not try to run the python checks if the python executable is
not available.
2019-01-17 12:01:07 -05:00
Brad King 2e5307a2a4 CTestSVN: Accept std::string in SVNInfo constructor 2019-01-17 11:43:56 -05:00
Brad King 68e20f674a Merge topic 'cmake_role-global-property'
4568d046c4 Properties: Add CMAKE_ROLE global property

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2805
2019-01-17 11:43:09 -05:00
Brad King 5b3af28e45 libuv: Update CMake-internal buildsystem 2019-01-17 11:29:44 -05:00
Brad King bd3685b6cf Merge topic 'vs-debug-utility-targets'
22b43b0009 VS: Add support for VS_DEBUGGER_* properties on custom targets

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2794
2019-01-17 11:07:11 -05:00
Brad King 9e3e93fc6f Merge topic 'fix_csharp_defines'
a541d113e6 VS: Honor target_compile_definitions for C# projects

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2809
2019-01-17 11:06:04 -05:00
Brad King 75a7a23746 Tests: Rename RunCMake.CTestCommandLine show-only test cases
The current name was chosen from an earlier design iteration of the
command-line option name.  Rename the case to match the final name.
2019-01-17 10:57:51 -05:00
Brad King 1136275ae1 libuv: Include uv/ headers from each other without any path
Headers in `uv/` can include each other without the `uv/` prefix.  Using
the prefix assumes that the location of `uv/` is in the include file
search path, but it is possible to include `uv.h` via a longer path.
2019-01-17 10:27:14 -05:00
Brad King 1e1209729b Merge branch 'upstream-libuv' into update-libuv
* upstream-libuv:
  libuv 2019-01-15 (f84c5e69)
2019-01-17 10:26:32 -05:00
Kyle Edwards 00c7e006a5 Help: Remove duplicate reference to IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG> 2019-01-17 10:21:25 -05:00
Kyle Edwards 4568d046c4 Properties: Add CMAKE_ROLE global property
This property allows scripts to determine whether they're in project
mode, script mode, find-package mode, CTest, or CPack.
2019-01-17 09:44:29 -05:00
Kitware Robot c144db1b8c CMake Nightly Date Stamp 2019-01-17 00:01:06 -05:00
Craig Scott 9e84e14db7 Merge topic 'qt_wrap_command_deprecations'
74dc68b406 qt_wrap_*: Add deprecation notes to command docs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Brad King <brad.king@kitware.com>
Merge-request: !2738
2019-01-16 15:20:59 -05:00
libuv upstream 4fcb0d0213 libuv 2019-01-15 (f84c5e69)
Code extracted from:

    https://github.com/libuv/libuv.git

at commit f84c5e693b80cb0c62bcefba147e7a66e2b839c9 (v1.x).
2019-01-16 14:48:27 -05:00
Brad King fecbc87608 Tests: Fix RunCMake.CTestCommandLine to actually check json-v1
Add a file missing from commit 67209a9291 (Tests: Add cases for ctest
--show-only=json-v1, 2018-11-01) to actually hook up the content check.
2019-01-16 14:10:15 -05:00
Fred Baksik 21ab58d3f8 GHS: Update test suite
-- Allow for testing default toolset settings
   If CMake_TEST_GreenHillsMULTI_config is not defined then
   just run the GHS tests using defaults.
-- Handle paths that contain spaces
-- Update test suite to use "-non_shared" linker option
   Fixes linking issue if GHS is not shipped with shared libraries
-- Other minor cleanup
2019-01-16 10:42:08 -05:00
Fred Baksik 72e0c115b7 GHS: Add Compiler ID detection
-- Detect GHS compiler and version
   Detect ARCHITECTURE_ID for PPC / ARM / 86 targets
   Detect PLATFORM_ID for Integrity and Integrity178 platforms
   Using defines specified in the documents for the compilers: 201416 PPC / 201754 ARM / 201714 86
-- Fallback C/CXX compiler ID to GHS if not otherwise detected and using GHS MULTI generator
   Works around issue with some GHS compilers not setting __ghs__ compiler define
-- Tweak Compiler ID checking so major id of 002017 is not replaced with 217
-- Prefer try_compile() library targets when testing for working GHS compilers
-- Avoid CMake errors if reading past end of file for checking if file is PE executable
2019-01-16 10:42:04 -05:00
Fred Baksik 436cc5e991 GHS: try_compile() now uses GHS platform variables
-- Forward GHS platform variables to try_compile()
   CMAKE_TRY_COMPILE_PLATFORM_VARIABLES only worked for source signature try_compile()
-- Update tests to no longer add GHS platform variables to try_compile()
-- Avoid linker error in GhsMulti/GhsMultiCompilerOptions/CMakeLists.txt by building library
2019-01-16 10:42:00 -05:00
Fred Baksik 4a1ec0de3d GHS: Fix toolset selection
-- Allow -T to accept full or partial paths
-- Use "C:/ghs" if GHS_TOOLSET_ROOT is empty string
-- Put more information in error messages
2019-01-16 10:41:56 -05:00
Fred Baksik 1a66acdef2 GHS: Append ".gpj" to target name when generating build command
-- Add test demonstrating issue
-- In the case of executable targets the target name is usually the same as used in "-o filename"
   But for static libraries the target name is usually "-o libname.a"
   "gbuild.exe target" will build whatever target matches against even the output from the compiler or linker
   But the targets in "cmake --build . --target name" should be target names in CMakeLists.txt not the actual filenames
   So change the "name" to "name.gpj" so it matches the target name in CMakeLists.txt.

Fixes #15975
2019-01-16 10:41:53 -05:00
Fred Baksik 0c9e47d7cd GHS: Integrity Application updates
-- Check the property "ghs_integrity_app" on executables to set [INTEGRITY Application]
   If the property is not set then check if an integrate file is one of the source files (.int file).
   Dynamic Downloads that do not have an integrate file can use this property along with setting
   the compiler flag "-dynamic".

-- Remove parsing for -dynamic flag; it is only used to print a comment
   The MULTI GUI will show if it is a Monolith or Dynamic Download application

-- Use project references to specify which executables are part of the Integrity Application
   Usually Implicit Dependency Analysis will ensure that executable targets
   become part of the application.  This does not work for Dynamic Download without integrate files.
   Use `add_dependencies(dd vas)` to mark that the vas target is part of dd target.

-- Update file locations in the Integrate files.
2019-01-16 10:41:49 -05:00
Fred Baksik 8044318431 GHS: Add support for some of the source file properties
-- INCLUDE_DIRECTORIES, COMPILE_DEFINITIONS, and COMPILE_OPTIONS
2019-01-16 10:41:45 -05:00
Fred Baksik 73092b2213 GHS: Add support for object libraries 2019-01-16 10:41:42 -05:00
Fred Baksik 14f3ba2059 GHS: EXCLUDE_FROM_ALL updates
-- Excluded targets should be generated but not included in build ALL
-- Use the correct source list for this configuration when writing sources
2019-01-16 10:41:38 -05:00
Fred Baksik 702121c5f3 GHS: Use the correct compiler flags for CMAKE_BUILD_TYPE
-- Do not use CMAKE_C_FLAGS_RELEASE flags when CMAKE_BUILD_TYPE is empty
   if CMAKE_BUILD_TYPE was not set the generator would use Release settings
   this does not match the documented behavior of CMAKE_BUILD_TYPE

-- CMAKE_C_FLAGS_<CONFIG> not used when -kernel is present
   Fixes issue where CMAKE_C_FLAGS_<CONFIG> is ignored when -kernel option is present as a compiler option
   When the -kernel option is added to an executable it uses a different set of language flags
   This does not occur -kernel=<type> is used or if it is added as part of a link flag
   The variables CMAKE_<LANG>_GHS_KERNEL_FLAGS_<CONFIG> are removed
   NOTE: By default this only added the flag -ldebug which links in the debugger library.

-- Separate compiler options by newlines
2019-01-16 10:41:35 -05:00
Fred Baksik b2a72ec72d GHS: Cleanup unused file handling functions and file output updates
-- File handling cleanup
-- Rename some functions to clarify what they do
-- Update to source file path conversion; only perform conversion when using windows
2019-01-16 10:41:31 -05:00
Fred Baksik 595932c4f0 GHS: Update the link line processing
-- add missing executable linker libs from:
   CMAKE_C_STANDARD_LIBRARIES
-- add missed transitive link libraries
-- add skipped library linker options
-- The linker expects -l../relative/path/to/lib.a to be relative to the top-level project
   Because there can be multiple top-level projects convert the path to an absolute path to target
2019-01-16 10:41:27 -05:00
Fred Baksik 2ed2d6b46f GHS: Place build system outputs per target output directives
-- Set output and object file locations
-- Suffixes are no longer being forced but will now follow the target properties
   By default GHS tools have no suffix for executable files so
   CMAKE_EXECUTABLE_SUFFIX was changed to meet this behavior
-- Remove #if 0 blocked out code; it has been replaced.
   Forcing the -relprog option has been removed from non-kernel executable targets.
   The default value of this option (if it is even available) is determined by the
   tool-chain for the specified target and platform (Some tool-chains default to
   -locatedprogram).  The use of -relprog can have unexpected results as it cannot
   always produce a fully relocated executable.
-- Clarify use of CMAKE_BUILD_TYPE to control build configuration
2019-01-16 10:41:24 -05:00
Fred Baksik ead7117afd GHS: Update the top-level project generation
-- Sort targets by name
-- Generate a top-level project for each project command named as project.top.gpj
   Use the target set for the current project instead of assuming all targets
-- Add support for building projects not in binary root
-- Directly create files and pass ostream
-- Do no generate project files for UTILITY targets; this was never supported
-- Do no generate project files for OBJECT, SHARED, or MODULE libraries; this was never supported
-- Update GHS tags to support project types
   NOTE: The default tag is changed to "" because "[ ]" is an invalid token in project file
2019-01-16 10:41:20 -05:00
Fred Baksik e7825386e2 GHS: Cleanup how source files are listed
-- Sort the items of the project files, previously they were unsorted
   The layout is similar to Visual Studio projects
-- Do not make a make a tree of directories and projects files
   The main project file is in the binary folder
   The sub-project files are located in the project object directory
   This is similar to the Makefile generator
-- Allow the creation of a single project file
   If the variable or target property GHS_NO_SOURCE_GROUP_FILE is set
   then all sources will be listed in the main project file
2019-01-16 10:41:15 -05:00
Fred Baksik 447b57a267 GHS: Update binary structure so that install scripts work
GHS doesn't follow the binary structure that VS or Makefiles use
Also setting binary location outputs do not work

-- Update to act like Visual Studio Generator and use its project layout
-- Fix open/close issues where open() was used instead of Open()
   Now passes the file handle to all function that require it
-- Avoid triggering MULTI reloads; use SetCopyIfDifferent mode
2019-01-16 10:41:11 -05:00
Fred Baksik 6436080996 GHS: Have the top-level project name follow the specified project name 2019-01-16 10:41:07 -05:00
Fred Baksik 5cef3c61fc GHS: Update test suite
-- Update test suite so that CMake can use multiple toolsets
       CMake_TEST_GreenHillsMULTI_config
       ghs_config_name
       ghs_target_arch
       ghs_tools
       ghs_toolset_name
       ghs_os_root
       ghs_os_dir
       ghs_target_platform
       ghs_bsp_name

-- Change ARM Integrity test to generic Integrity test
   Add Monolithic build test

-- Add other GHS generator tests
2019-01-16 10:41:03 -05:00
Fred Baksik a42e40e78d GHS: Only print bsp and os directives if specified by user
-- standalone platforms will not build if bsp/os is specified in project file
-- integrity platforms will always print these directives because they are required
-- cleanup -os_dir setting
   allow customization of the actual setting because it is determined by tool-set customization files
   remove variable that was set but never used
-- add message when using default values
2019-01-16 10:40:59 -05:00
Regina Pfeifer 2915a75615 CTest: Add documentation and release notes for SubmitURL 2019-01-16 10:34:08 -05:00