| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
2c43fb5be3 FindThreads: Fix pthread library check in GHS Multi Generator
0404efe786 GHS: Add support for GHS Multi Generator in Linux
2060a1445c Tests: Fix file name case in GHS object library test
ddad70c8a4 Tests: Run GHS tests in a separate ctest process
f7dca1fc97 GHS: Fix include-what-you-use and clang-tidy diagnostics
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3006
|
| |
| |
| |
| | |
We will soon build GHS sources on Linux where we run these lints.
|
|/
|
|
|
|
|
|
|
|
|
| |
`CollapseCombinedPath` was introduced by commit 551d3343cd (cmDependsC:
Collapse relative include paths, 2013-06-19, v2.8.12~237^2) where the
existing `CollapseFullPath` should have been used instead. Then its use
proliferated slightly. Since `CollapseCombinedPath` is less widely used
and less robust (see issue #19049), use `CollapseFullPath` everywhere
instead.
Issue: #19050
|
| |
|
|
|
|
|
|
| |
Rather than taking a number of out parameters for the various names,
create a structure that is reused for both `GetLibraryNames` and
`GetExecutableNames`. Replace uses according to the new interface.
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
01b2d6ab74 Modernize: Use ranged for-loops when possible
15bdbec017 cmAlgorithms: Make cmRange advance/retreat safe for rvalues
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Daniel Pfeifer <daniel@pfeifer-mail.de>
Merge-request: !2901
|
| |
| |
| |
| |
| |
| |
| | |
Replaced most manual `const_iterator`-based loops and some
reverse-iterator loops with range loops.
Fixes: #18858
|
|/
|
|
| |
-- Also change variable name to CMAKE_GHS_NO_SOURCE_GROUP_FILE
|
|\
| |
| |
| |
| |
| |
| | |
b6a957c969 cmOutputConverter: move ConvertToRelativePath to cmStateDirectory.
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2831
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
|
|
| |
-- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-- 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.
|
|
|
|
| |
-- INCLUDE_DIRECTORIES, COMPILE_DEFINITIONS, and COMPILE_OPTIONS
|
| |
|
|
|
|
|
| |
-- Excluded targets should be generated but not included in build ALL
-- Use the correct source list for this configuration when writing sources
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-- 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
|
|
|
|
|
|
| |
-- File handling cleanup
-- Rename some functions to clarify what they do
-- Update to source file path conversion; only perform conversion when using windows
|
|
|
|
|
|
|
|
|
| |
-- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-- 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
|
|
|
|
|
|
|
|
|
|
|
|
| |
-- 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
|
|
|
|
|
|
|
|
|
|
|
|
| |
-- 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
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
This method offers the same definitions as `GetTargetDefines` except
that it excludes the "export" macro on shared libraries. Update call
sites to use `GetTargetDefines` instead. Some of them were incorrectly
excluding the export macro.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
* Change some functions to take `std::string` instead of
`const char*` in the following classes: `cmMakeFile`, `cmake`,
`cmCoreTryCompile`, `cmSystemTools`, `cmState`, `cmLocalGenerator`
and a few others.
* Greatly reduce using of `const char*` overloads for
`cmSystemTools::MakeDirectory` and `cmSystemTools::RelativePath`.
* Remove many redundant `c_str()` conversions throughout the code.
|
|
|
|
|
| |
Follow up commit 969c1f94ae (cmSourceGroup: code improvements; use
std::string and C++11 loops, 2017-01-10).
|
| |
|
|
|
|
| |
Signed-off-by: Matthias Maennich <matthias@maennich.net>
|
| |
|
|
|
|
|
|
| |
Move addition of IPO flags into `cmLocalGenerator::AddLanguageFlags`
because all call sites of that need the IPO flags, but not all were
following the call with `AppendFeatureOptions`.
|
| |
|
|
|
|
|
|
| |
Add a `cmGeneratorTarget::GetEffectiveFolderName` helper to abstract
lookup of the `FOLDER` property in combination with checking for
generator support of folders.
|
|
|
|
| |
Add UseWatcomQuote state, and remove corresponding method parameters.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a cmOutputConverter to the cmLinkLineComputer and factory methods to
facilitate shell escapes.
Add state to the cmLinkLineComputer to record whether outputting for
response files or for watcom, to satisfy the cmOutputConverter API.
These are constant for the lifetime of the cmLinkLineComputer, even when
its functionality is extended in the future. This also keeps the
signatures of cmLinkLineComputer relatively simple.
Pass the cmComputeLinkInformation as a method parameter so that
cmLinkLineComputer is free from target-specific state. An instance
should be usable for all targets in a directory.
|
|
|
|
|
|
|
|
|
|
|
| |
CMake has several classes which have too many responsibilities.
cmLocalGenerator is one of them. Start to extract the link line
computation. Create generator-specific implementations of the interface
to account for generator-specific behavior.
Unfortunately MSVC60 has different behavior to everything else and CMake
still generates makefiles for it. Isolate it with MSVC60-specific
names.
|
|
|
|
| |
Flip condition in GHS for readability.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
Move the configuration lookup to call sites. This will allow
multi-configuration callers to use the method.
|
|
|
|
|
| |
All generators use cmLocalGenerator::GetIncludeDirectories to construct
the final list of include directories for a target.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Detect when the resulting object path is too long and compute an
alternative name using a hash.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sort include directives within each block (separated by a blank line) in
lexicographic order (except to prioritize `sys/types.h` first). First
run `clang-format` with the config file:
---
SortIncludes: false
...
Commit the result temporarily. Then run `clang-format` again with:
---
SortIncludes: true
IncludeCategories:
- Regex: 'sys/types.h'
Priority: -1
...
Commit the result temporarily. Start a new branch and cherry-pick the
second commit. Manually resolve conflicts to preserve indentation of
re-ordered includes. This cleans up the include ordering without
changing any other style.
Use the following command to run `clang-format`:
$ git ls-files -z -- \
'*.c' '*.cc' '*.cpp' '*.cxx' '*.h' '*.hh' '*.hpp' '*.hxx' |
egrep -z -v '(Lexer|Parser|ParserHelper)\.' |
egrep -z -v '^Source/cm_sha2' |
egrep -z -v '^Source/(kwsys|CursesDialog/form)/' |
egrep -z -v '^Utilities/(KW|cm).*/' |
egrep -z -v '^Tests/Module/GenerateExportHeader' |
egrep -z -v '^Tests/RunCMake/CommandLine/cmake_depends/test_UTF-16LE.h' |
xargs -0 clang-format -i
This selects source files that do not come from a third-party.
Inspired-by: Daniel Pfeifer <daniel@pfeifer-mail.de>
|
|
|
|
|
| |
Each source file has a logical first include file. Include it in an
isolated block so that tools that sort includes do not move them.
|
|
|
|
|
| |
Green Hills MULTI project files must specify explicitly distinct object
file names for source files with the same name.
|
| |
|
| |
|