1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-30 21:55:31 +02:00
Commit graph

46 commits

Author SHA1 Message Date
Jonah Graham
6f818cdffe
Refresh compile_commands.json during the build (#1098)
CMake compile_commands.json file is not found even though it has been
created. During a CMake build's generation stage, it generates the
compile_commands.json file inside the build folder. However,
when it comes to be used it is not found because it hasn't been
reliably refreshed.

To solve this, the file resource is refreshed

Co-authored-by: John Moule <evil_bandit_betamax@yahoo.co.uk>
2025-02-25 21:54:44 -05:00
betamax
cf359d59ad
Stops CMake build output folders being named "default" (#1084)
The default IBuildConfiguration is no longer used by projects that use
ICBuildConfigurationProvider.

For CMake, Makefile and other Core Build projects the build output
folder is sometimes named "default" rather than the pattern
toolName.launchMode.toolchain OS.toolchain Arch.launchTarget Id (eg:
cmake.debug.win32.x86_64.Local). PR #1076 exposes new API
(ICBuildConfigurationProvider.getCBuildConfigName) to encourage this
naming pattern.

The "sometimes" is variable and often happens when a project is first
created when the active launch target is Local and the launch mode is
"run", but not always. This gives a random, inconsistent impression to
CDT.

The Platform project always contains a IBuildConfiguration with the name
IBuildConfiguration.DEFAULT_CONFIG_NAME. It seems the original Core
Build system design went to some length to fit in with this and always
make use of this IBuildConfiguration when pairing it with a new
ICBuildConfiguration.

With this PR, this no longer happens, allowing CDT code to be simplified
and the build folder naming made consistent, always adhering to
ICBuildConfigurationProvider.getCBuildConfigName.

Addresses Issue: CDT CMake Improvements #1000, IDE-82683-REQ-024 Default
CMake build folder
2025-02-19 20:55:50 -05:00
DangMinhTam382
e819f8a35c
Add UI for user to control build type (#1090)
User can control the value of the CMake built type (CMAKE_BUILD_TYPE),
for example Debug or Release via new UI in CMakeBuildTab
 Added UT for ICMakeProperties.getBuildType()

Addresses Issue: CDT CMake Improvements #1000, IDE-82683-REQ-013
2025-02-19 13:36:13 -05:00
betamax
fc083dad86
The active Launch Target is now saved in the ICBuildConfiguration (#1076)
In addition to the active launch mode and toolchain, the active Launch
Target is now used to determine the Core Build Configuration
(ICBuildConfiguration).

The build output folder name now ends with the name of the Launch Target
(eg: cmake.debug.win32.x86_64.Local)

Additionally, API added to allow the ISV to configure the build output
folder name.

The ICBuildConfigurationProvider implementations, shown below, have been
tidied up to use common code.

  CMakeBuildConfigurationProvider
  AutotoolsBuildConfigurationProvider
  MakefileBuildConfigurationProvider
  MesonBuildConfigurationProvider

Addresses Issue: CDT CMake Improvements #1000, IDE-82683-REQ-016 Launch
Targets used in ICBuildConfiguration
Addresses Issue: CDT CMake Improvements #1000, IDE-82683-REQ-018 Build
output folder name
2025-02-12 12:30:48 -05:00
Jonah Graham
84d99f277a
Add some documentation and consistency to use of info vs output stream (#1060)
With some better Javadocs the cross referencing between IConsole
and the UI aspects of the console is a little easier to follow.

This resolves #1059 in two parts:

1. For Core Build System this update consistently uses info stream to
show information messages and output stream to be stdout of launched
build tool. This resolves the "Build Complete" appearing as the output
color when doing clean (See screenshots in #1059)

2. CBuildConfiguration.watchProcess(IConsole, IProgressMonitor) incorrectly
passed the info stream as the output stream. Mostly this was used for
the clean stage of builds. This resolves the CMake output like ("Cleaning
all built files...") appearing as the info color when doing clean (See
screenshots in #1059)

Fixes #1059
2025-01-28 18:54:38 -05:00
betamax
fe74d8dfee
Improve CMake build option handling and API (#1046)
Summary:

- Add some new API to make it easier for ISVs to provide defaults.
- Fully connect UI elements to CMake build process
- Add some missing UI elements (such as customizing generator)
- CMake generator default within CDT changed to Ninja

Details:

Add API to set CMake generator default (eg Ninja) ISV can set
their desired CMake generator by overriding
`CMakeBuildConfiguration.getDefaultProperties`. ISVs can also further
fine tune the build process by overriding
`CMakeBuildConfiguration.getDefaultProperties`

Remove API `IOsOverrides` and related code. `IOsOverrides` was a partial
implementation to achieve builds in Docker containers, however the
work was not complete and it the extra code was complicating some
basic use cases of setting defaults

Add support for all generators to CMake build settings UI page by
using a Combo instead of radio buttons. The non-deprecated generators
that are built-in to CDT populate the Combo, but additional generators
can be manually entered in the Combo.

Rename clean command to clean target to better reflect its use as
the argument passed to cmake's --target command line.

Add all target for the argument passed to cmake's --target
command line when doing a normal build.

Clarify usage of UI overrides and change the UI to be "use defaults"
(i.e. invert the checkbox). This is a **breaking** change as it means
user projects that were using UI overrides will revert to using defaults.
This is done on purpose as so many little things have changed in CMake
settings, that reverting to defaults on upgrade seems like a logical
decision. In addition *use defaults* matches the other GUIs in Eclipse,
for example the MBS build command settings.

Populate all defaults in getDefaultProperties() so that all CMake build
settings are displayed as used (greyed out) and can be used as a starting
point when editing settings.

Simplify some of the code in CMakeBuildTab.

Fix parsing of extra args so that quoted strings work.

Refactored manual tests document and brought it up to date.

Correct command line option for CMake's --warn-unused-vars

Correct command line option for CMake's --warn-uninitialized

Overall this is an API breaking change and the CHANGELOG-API.md has been
updated with all the API changes in and around ICMakeProperties,
including fixing typos in WarnUninitialized methods.

Fixes #1055
Fixes #818
Part of #1000

Co-authored-by: Jonah Graham <jonah@kichwacoders.com>
2025-01-27 12:31:38 -05:00
Jonah Graham
978eea5d42
Allow the new API for CMakeBuildConfiguration to be extended (#1051)
PR #1010 added the ability to extend CMakeBuildConfiguration and
CMakeBuildConfigurationProvider by making the classes public
API, they used to be internal API.

This change makes it easier to reuse the code in the provider
and configuration by allowing extenders to provide their own
implementations of CMakeBuildConfiguration. This has been
achieved by adding createCMakeBuildConfiguration methods to
control which CMakeBuildConfiguration is constructed.

Follow up to #1010
2025-01-23 09:20:11 -05:00
Jonah Graham
9c4ace138c
Fix XML syntax error in freemarker manifest (#1054)
The extra " inside XML property was actually being processed properly
by freemarker (surprisingly!), but XML editors/viewers reported an
error.
2025-01-22 16:39:20 -05:00
betamax
3c4287f03d
Make CMakeBuildConfiguration API (#1010)
For ISV integration/extension to CDT CMake, it is necessary to extend
several non-API classes (eg: CMakeBuildConfiguration,
CMakeBuildConfigurationProvider). This would cause "Discouraged access:
The type XXX is not API" warnings.

The classes have now been made API so can be extended without warnings.

Addresses Issue: CDT CMake Improvements #1000, IDE-82683-REQ-017
Extending CMakeBuildConfiguration
2025-01-15 11:18:36 -05:00
Ali Azam Rana
f680907cab
fix(908): fix for the cmake tool chain removal function. (#909)
Resolves that the calculated ID in the removal function was different than the one in the add

Fixes #908
2024-10-08 11:02:41 -04:00
ewaterlander
a65d3d7f28
Add user additional CMake arugments at the end. (#814)
The additional CMake arguments added by the user in the launch
configuration UI are added at the end of the CMake command, such that
the user is able to override arguments set by the system.
2024-09-12 17:16:52 -04:00
betamax
3ee0e61eed
Sets the CMake CMAKE_BUILD_TYPE define Fixes #807 (#810)
The CMAKE_BUILD_TYPE is added to CMake configuration build, based on the
active launch mode; DEBUG_MODE sets a buildType of "Debug", everything
else sets a buildType of "Release".
Note, the CMake CMAKE_BUILD_TYPE definition is not directly equivalent
to the Launch Bar Launch Mode; there might be a scenario where the user
wants to launch a debug session using the CMake Release build and not
run it. However, for most cases this is probably sufficient.

For Issue CMake projects are ignoring the Launch mode Run/Debug #807.
2024-09-12 17:15:24 -04:00
betamax
b7fa35979a
Bug579242: allow user to override CMake Settings (#683)
The Launch Bar Launch Configuration, Build Settings tab allows the user
to customise the CMake Settings (CMake generator, extra arguments, build
command and clean command). But changing these settings did not affect
the CMake build. This is now fixed.
A "Use these settings" checkbox allows the user to choose settings from
the UI or use the operating system defaults.
2024-02-07 13:52:58 -05:00
William Riley
5250f5a07b
Replace org.freemarker with org.freemarker.freemarker (#547)
Also remove re-exports & add package imports

Fixes #546
2023-09-19 14:02:39 -04:00
Jonah Graham
a92b90a4c8 Bump all bundles that are missing BREE in 11.3.0
Part of #551
2023-09-15 07:24:17 -04:00
Jonah Graham
de012f42a6 Remove and ignore object references from Yaml files
Yaml 2.0 fixes CVE-2022–1471 to error on object references. This
commit adapts our use of Yaml to not output object references
anymore and on loading explicitly allow object references to
expected types.

Fixes #498
2023-08-10 09:38:12 -04:00
Jonah Graham
ac84c4ec86 Prepare repo for CDT 11.3.0 development
Some bundles are bumped because dev happened between 11.2 release and
this version bump. The most significant change that happened
was the bump in Tycho version which changed ECJ version and
hence some class files changed

Part of #420
2023-07-10 21:41:39 -04:00
Jonah Graham
460c0021aa Move all dependencies to maven direct where possible
Includes:

- Sign all artifacts, particularly 3rd party with CDT's PGP key
- Using maven version managed and updated by EF Webmasters
- Update to latest SnakeYAML
- Move some 3rd party dependencies to Import-Package (instead of
  Require-Bundle)
2023-07-10 20:47:10 -04:00
Jonah Graham
0dc9d340f5 Lock snakeyaml to expected 1.x version
Snakeyml recentlyish came out with 2.0 version and more recently
TM4E started using the 2.0 version. As TM4E snapshots are in our
target platform we started failing as we started wiring to the newer
version due to a missing underbound on our dependency.

A separate task of updating to recent snakeyaml will be done as part
of #387
2023-06-26 11:49:51 -04:00
Jonah Graham
7146617411 Don't use tabs when indenting in yaml file 2023-04-25 14:16:37 -04:00
Jonah Graham
4bc687b83b Add .clangd file to simplify project sharing with non-CDT
In the example CMake project add a .clangd to enable pointing
clangd at the appropriate compilation database without having
to make a copy of it.
2023-02-16 12:12:56 -05:00
Jonah Graham
6eaaf714cc Upgrade build.properties warnings to errors
Warning in build.properties will be errors when they run
in the tycho build, like this:

```
Error:  Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:2.7.5:package-plugin
(default-package-plugin) on project org.eclipse.cdt.core.tests:
/home/runner/work/cdt/cdt/core/org.eclipse.cdt.core.tests/build.properties:
bin.includes value(s) [test.xml] do not match any files. -> [Help 1]
```

So make them errors in the workspace so that the issue is
detected before push.

Some build.properties issues don't affect the build, but
are still indicative of a problem.
2022-11-06 18:29:28 -05:00
Jonah Graham
1f19cff227 Make missing identifiers and classes in plugin.xml errors
Subsequent commits fix the errors
2022-11-04 08:19:23 -04:00
Mat Booth
1783120eb7 Improve the CMake project wizard template
Fixes out-of-the-box deprecation warnings, the template now specifies a
minimum CMake version of 3.10

Allows project names containing spaces by using freemarker syntax to
remove them where necessary in the CMakeLists.txt file.

Demonstrates how to implement the common idiom of configuration header
files.
2022-10-18 00:08:44 +01:00
Jonah Graham
e4e06008af Update to Java 17 as BREE. Fixes #80 2022-10-03 12:42:37 -04:00
Jonah Graham
b577257db1 Correct @since tags
Since tags should be major + minor only. maintenance releases
can't change API which is why it doesn't need to be specified.
2022-10-03 12:42:37 -04:00
Martin Weber
3d62e1696c make the cmake error parser public API
Change-Id: I2ab5d659e01ace32dbd61ffada18e2f8f47bc5cf
Signed-off-by: Martin Weber <11367029+15knots@users.noreply.github.com>
2022-09-13 20:20:14 +02:00
Martin Weber
d1a43d5417 avoid StringIndexOutOfBoundsException on close. Fixes #66
Signed-off-by: Martin Weber <11367029+15knots@users.noreply.github.com>

Change-Id: I816b8ee5852e6b25011a611c07c54d0a814a74d8
2022-09-07 15:25:38 -04:00
Mat Booth
5e4a66b0af Bug 580178 - Unable to stop build process from launchbar
Switch from the standard Java ProcessBuilder to the CDT CommandLauncher
for new style core build projects.

The CommandLauncher uses a more sophiscated mechanism for watching the
spawned process allowing us to interrupt the process when the user hits
the stop button on the launchbar by properly listening to a monitor.

The change adds new API to CBuildCongifuration that takes a progress
monitor, and changes all the affected build configuration types to use
this new API.

Change-Id: I0c4225616ad8331c2cea28bcb502028455a8ea71
2022-06-30 12:34:16 -04:00
Jonah Graham
a1c02e2cce [releng] Apply auto-clean of save to all files with Eclipse 4.23
This mostly is using diamond operator, but includes
adding missing @Override and organizing imports and
applying formatting improvements in the JDT formatter.

Change-Id: Id91cbff33b0a039cc5121945ffbc407ecba45866
2022-04-19 20:13:15 -04:00
Jonah Graham
148ae40d0f [releng] Make CDT Clean-up profile match Editor on save actions
The CDT Cleanup profile had a bunch of extra cleanups applied to it, this
prevents running the CDT cleanup profile manually to simulate running the
save actions on all Java files

Change-Id: Iad491e1258a4ba90d81d1457ea0f6779e3663e38
2022-04-19 20:13:15 -04:00
Jonah Graham
7400e22b1f [releng] Update all legal files with update_legal_files.sh
The about.html was changed as per
https://gitlab.eclipse.org/eclipsefdn/it/websites/eclipse.org/-/issues/90

Change-Id: Ied879279460a8fc610630fc26794ab3df9eae39f
2022-04-13 13:42:35 -04:00
Jonah Graham
1f0451c163 [releng] Prepare for 10.7.0 with version bumps
All the about.html files are updated, so every bundle that hasn't
already had a bump in 10.7 needs one now

Change-Id: I6143d2fbe77a58a3a6d2f4a226d96087117f9ac1
2022-04-13 13:15:06 -04:00
Mat Booth
a957e8121d Bug 575145 - Importing CMake/Meson Projects
Add API to o.e.tools.templates.ui that hooks into the smart import
feature and allows easy implementation of configurators for various
CDT project types.

Project types that have a IGenerator may use this API to offer smart
import functionality by registering their implementation using the
org.eclipse.ui.ide.projectConfigurator extension point.

This change includes project import implementations for Meson and
CMake project types.

For these project types users can use the normal project import
workflow for their existing non-Eclipse CMake projects instead of
using the New Project Wizard. As an additional benefit, users
can now also import more than one project at a time, even nested
projects.

Change also includes SWTBot tests to exercise the feature.

Signed-off-by: Mat Booth <mat.booth@gmail.com>
Change-Id: I96589e86bee561aa200a4a4487549305765d6409
2021-10-31 11:21:35 +00:00
Martin Weber
2f65266115 Bug 564349 - rename classes with 'Indexer' in name to sth. more appropriate
Change-Id: I3247f3a001a6d0f882a6b4c674b1c7c0f74b1b9e
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2021-07-14 17:35:57 -04:00
Martin Weber
422835d273 Bug 564349 - rename packages & projects o.e.cdt.cmake.is to o.e.cdt.jsoncdb
Change-Id: I29e4e0fdc988b6d9cdccfb50f73ad16591645fa4
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2021-07-14 17:35:57 -04:00
Martin Weber
f9ce4f03e3 show markers in problem view instead of printing to build console
Change-Id: Ic487adc11153fac206183a3ceb943d05c6d36066
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2021-06-27 09:43:17 -04:00
Martin Weber
fce6d2f93f eliminate class StringUtil
Change-Id: I07cd8c70d2db8abe415f720275b6c25d464ba91c
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2021-06-07 20:42:09 +02:00
Martin Weber
725ff665e7 Bug 569186: Fix: Project rebuild is causing Unresolved inclusion issues
Change-Id: I9c59c6a8b5963edac7d33a35b936a161ce9eb337
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2020-12-01 14:10:32 -05:00
Jonah Graham
4213379279 Bug 567488: Add missing @since tags and bump version
Change-Id: Ib1918a41f939907777fe7729a40fc55e51e33c7c
2020-11-16 14:06:22 -05:00
Martin Weber
9a70f31c4e Bug 567488: re-add what was lost in rebase
Change-Id: Ib9342193a91bda76d6809464fb2350fb56ed8175
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2020-11-15 20:05:42 +01:00
Martin Weber
4d40c5b68f generalize indexer-support API
Use IFile to specify the file to parse instead of a file-name implicitly
calculated from CBuildConfiguration.

Change-Id: If9d66a0b7533e9e403bc22fa21bf8e6e8fa80436
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2020-11-14 15:17:35 -05:00
Martin Weber
de80240232 Bug 567488: Use snakeyaml to persist command-line options to pass to cmake
Change-Id: Ia6b60865f663aecae74d6d571bc9d213bf7cd36b
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2020-11-14 15:17:35 -05:00
Martin Weber
ebf2d24c95 Bug 567488: Use command-line options to pass to cmake ICMakeProperties object
Change-Id: I4d6383ce240e6f2b8d7079f281ef7c2e56ea93a6
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2020-11-14 15:17:35 -05:00
Martin Weber
3a10f42019 Bug 567488: Define command-line options to pass to cmake for build-script generation
Change-Id: Ie62549cf2c0ddbdb0c9934d3cdb928874b8362aa
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2020-11-14 15:17:35 -05:00
Martin Weber
af1b6fa238 Bug 567488: Move cmake code to cmake dir
Change-Id: If3df1f176ed82475d01a047c3a6d8c0882bb1d76
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
2020-10-13 20:42:22 -04:00