1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-05 16:56:04 +02:00
Commit graph

1158 commits

Author SHA1 Message Date
Victor Rubezhny
2b67c0bda9 Bug 418579 - String index out of range: -8
Signed-off-by: Victor Rubezhny <vrubezhny@redhat.com>
Change-Id: I02763d18fdf8f9715670b671a7f84f9fe06489ca
2020-08-25 16:08:45 -04:00
Jonah Graham
fd9382d8a9 Bug 562494: Update BREE to Java 11
Change-Id: I0c91aafc0cb1b179936acbd4c9df2d961899e3fa
2020-08-24 17:50:56 -04:00
Marc-Andre Laperle
e933f46289 Bug 565553 - Improve performance of build command parsers with large number of files
Compile a pattern ahead of time and early return.

The first pattern is used to trim extra characters that are not
contained within the actual option pattern. If this first pattern
doesn't match, there is no point in continuing because it is a superset.

Times before/after, only counting AbstractOptionParser.parseOption
LLVM before: 4289ms, after: 622ms

Change-Id: Id40fc9a35359c39aea00ba14813ffe6c343158fc
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
2020-08-23 23:21:14 -04:00
Marc-Andre Laperle
68c9b53de0 Bug 566107 - Option parsers can fail to trim extra characters when using patterns with numbered back-references
Clarify in the javadoc that numbered back-references should not be used
in order for option pattern to safely work.  Add a unit test
demonstrating the flaw when numbered back-references are used.  Update
GCC parser as an example for not using numbered back-references.

Change-Id: I008b3589486dc9fb0d9d9aa41f7cc2443bf4351e
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
2020-08-23 21:33:05 -04:00
jantje
2a62d58621 Bug 564123 Treat environment and build variable case sensitively
Remove all equalIgnoreCase and equal with uppercasing for environment
variables

Change-Id: Ic15974b5fb62413c7b1826ced544ff6d4a8eba2f
Signed-off-by: jantje <eclipse@baeyens.it>
2020-08-18 18:11:48 -04:00
Marc-Andre Laperle
4ebaaf7b25 Bug 565457 - CDB settings provider/parser's automatic exclusion of files is very slow
Implement a file exclusion algorithm that favors excluding whole folders when
possible.

The way it works is we gather exclusion information of each folder as we visit
each children. When "leaving" the folder, we can act on whether or not it can
be considered for exclusion as a whole or instead individually exclude a subset
of its children.

Using LLVM code base as a test:
Before: 613 sec
After: 2.4 sec

Change-Id: Ib882a72cae157e3db6b6c94a1a09cb6f05b66bc4
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
2020-08-03 21:46:22 -04:00
Marc-Andre Laperle
9e7b5beaa9 Bug 565553 - Improve performance of build command parsers with large number of files
Cache results of various path resolution algorithms.

Resolving paths is particularly slow while creating entries, see
AbstractLanguageSettingsOutputScanner.createResolvedPathEntry.

There are three main callees within that method that this patch addresses with
a caching approach:

* findContainerForLocationURI: First, this finds containers for a given URI in
the workspace using Eclipse resources API. Then a single container is
selected based on a preferred project. This can done repeatedly for include
paths, which are often similar for source files in a given project or source
folder. This first step is the expensive one and it only depends on one
argument (the URI) and a simple IResource[] return type, so the cache here is
done for this operation. Then the post-filtering is kept as is.

* findFileForLocationURI: Similar to the container case but for files. A
typical projet has much less file paths than folder paths in its options. One
more common option using file paths is -include. The same approach is applied
here as the previous point because there are performance gains but they are
smaller if you consider typical projet setup.

* findBestFitInWorkspace: When a path cannot be found, this makes an attempt to
find the parsed path relative to every folder of the workspace, by starting
first with the preferred project, then its referenced projects and then the
rest. Caching the result of findBestFitInWorkspace itself is too cumbersome
because the result depends on 3 variables (currentProject,
currentCfgDescription and parsedName) which would make a complex cache key.
Instead, caching the result of findPathInFolder at the project level is
sufficient, with little to no performance difference.

In all three cases, the class LRUCache is used in order to limit memory
consumption of the cache. A limit of 100 elements for each cache was chosen
based on experimentation with a few projects like LLVM and projets several
times bigger. A limit higher than necessary for small projects does not incur a
noticeable overhead for small projects and a limit too small for very large
projects merely diminishes the performance gains.

Using LLVM code base as a test, the time to parse options for all files:
Before: 68395ms, after: 5599ms

Change-Id: Ib997e9373087950f9ae6d93bbb1a5f265431c6bc
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
2020-08-03 12:47:18 -04:00
Marc-Andre Laperle
d017917f35 Bug 563006 - CDB settings provider/parser doesn't support "arguments"
One flaw with this implementation is that the "arguments" coming from
the CDB do not have shell quoting and shell escaping of quotes whereas
the current implementations of Build Output parsers assume some form of
shell quoting. This means that simply joining strings of arguments with
spaces will be missing the expected shell quoting and possibly misparsed
by the build output parsers.
It is not clear to be at this point if this should be fixed or not as it
might involve revamping the existing build output parsers to add the
concept of shell/environment and this could also affect potential
extenders.

In this current form, simple cases with no spacing and quote escaping
involved work correctly and is still a nice improvement.

Change-Id: Ia81796e63c748318b34696998ac4a467712e5f96
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
2020-07-11 17:28:56 -04:00
Torbjörn Svensson
0391d6ccf1 Fixed NLS and null warnings
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
Change-Id: I6e40038e99c37a4efc25f64d8d186b00c6f55f8c
2020-07-04 04:20:49 -04:00
Jonah Graham
12cf801870 Bug 564272: Increment major version of org.eclipse.cdt.core to 7.0.0
Change-Id: I9124dd406c5981435a72ff4aaa7033f1c3d1979b
2020-06-13 16:21:05 -04:00
jantje
f5e029d19c Bug 564123 delete org.eclipse.cdt.utils.Platform
The class overrode org.eclipse.core.runtime.Platform to
workaround bugs in the platform that have since been fixed.
As 32-bit x86 and PPC support has been removed this
class is no longer needed as all the code is now
unreachable anyway.

Change-Id: I01bb00b9203aa02663ff25ce36c4c14f22dadee5
Signed-off-by: jantje <eclipse@baeyens.it>
2020-06-13 13:05:41 -04:00
Torbjörn Svensson
ef2ee6df71 Bug 564257: Respect commandGenerator and applicabilityCalculator
The method Configuration.getUserObjects() and Configuration.getLibs()
should respect the commandGenerator and applicabilityCalculator defined
for the option in the toolchain definition.
The method Tool.getToolCommandFlags() should call the commandGenerator
only if the value type would generate a default command.

Change-Id: I4d6224627888e602682076ac929adbf808cff8d7
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
2020-06-12 20:02:31 +02:00
Sergei Kovalchuk
4bd9fed83b Bug 562004 - Remove dependency to com.ibm.icu from CDT Managed Build
Core

Dependency removed for Managed Build Core

Change-Id: I15e29453a1452a5060c470f3b3658cb5763615b0
Signed-off-by: Sergei Kovalchuk <serjiokov@gmail.com>
2020-06-08 06:12:46 -04:00
Marc-Andre Laperle
167ce562b2 Bug 559186 - Allow using variables for the CDB path in CDB settings provider
For example, you can use ${ProjDirPath}/buid/compile_commands.json
which is a more sharable setting

Change-Id: Ic51775ea1f7d258c55e2e720c94f626a17444744
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
2020-05-10 14:44:18 -04:00
Jonah Graham
eeebe5234c Bug 562452: Avoid using .C for C++ files when calculating specs
Change-Id: I0fe24a8343e73d501ae09e8bf3721e3d310a696d
2020-04-25 16:43:23 -04:00
Jonah Graham
5a6b9b4bf4 Revert "Bug 560614 - Drop dependency on ICU4J"
This reverts commit 87b627bf02.

Change-Id: I54ea1ac766437deb174eeba571a7a5094c180828
2020-03-02 06:49:24 -05:00
Alexander Kurtakov
87b627bf02 Bug 560614 - Drop dependency on ICU4J
Straightforward conversion. Still usages left that need deeper
investigation how to be done proper.
Some long time commented code removed as java formatter breaks trailing
whitespaces on save.


Change-Id: If74259bed5735b0d4cc98fc2cfa609c9c53c80c9
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
2020-03-02 06:46:15 -05:00
Alexander Fedorov
d4bcea1ec7 Bug 559707 - Promote ToolchainBuiltinSpecsDetector.getTool(String)
added
protected Optional<ITool> languageTool(String languageId)
instead of
private ITool getTool(String languageId)

Change-Id: Ic21d2a493acf4e547c7354c544c2cef34b53eab6
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
2020-01-30 15:50:54 +03:00
Torbjörn Svensson
a0963136f8 Mark ToolchainBuiltinSpecsDetector.getTool(String) protected
Change-Id: Ib0f4172d0a97ce46465ef50ed521b515a59bbab9
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
2020-01-29 18:33:02 -05:00
Jonah Graham
b7bd96d371 Bug 551817: Normalize case of (c) to match Eclipse Handbook
Change-Id: I46404d20d20c385bf8efaaada66e18eea4d4e163
2020-01-09 12:18:50 -05:00
Jonah Graham
35338f28a3 [releng] Cleanup code that has been misformatted and update to SDK 4.13
The check-code-cleanliness CI jobs have not been running recently,
so this commit is to the code up to those minor changes

Change-Id: I9fb4b0213dec558f58c5ca718b3d2685564ef456
2019-10-28 13:07:02 -04:00
Marc-Andre Laperle
0c577f6e7e Bug 548730 - Compilation database (CDB) language settings provider
This language settings provider lets you specify the path to the
compile_commands.json and reuses existing build output parsers to figure out all
the language entries for each file to be used while indexing. With this, there
is no need to do a full build and in fact no need to have a working build
configured in CDT for indexing to work and be fully configured. This is
especially useful for non-CMake build systems that have no existing integration
in CDT but indexing would still works with little effort.  The build output
parser (GCC, MSVC, etc) is selectable as part of the configuration of the CDB
provider. There is also an option to exclude any file that is not present in
the CDB. This option is useful for large projects in order to speed up indexing
but also to increase index accuracy (conflicting symbol names, etc).

Change-Id: If21455ec529f9e162cdf3e5aff7a1bca83e362f6
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
2019-10-23 21:47:54 -04:00
Jonah Graham
7a2ff27b91 [releng] Update comparator repo to last release
Change-Id: I00901808f1eda041f070b2f3e1cda076987c69a5
2019-10-17 10:07:44 -04:00
Alexander Kurtakov
3317465cdf Do not use deprecated Boolean constructor.
Change-Id: If317ec13ca9ae0cc9ec6d4555afd0b26a402e376
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
2019-10-11 00:23:13 +03:00
Jeff Johnston
232e3d7153 Bug 551089 - Builds with libraries having spaces in the name fail
- add new checkIfQuotedOption() method to GnuMakefileGenerator
- have ensurePathIsGNUMakeTargetRuleCompatibleSyntax() look to
  see if the path is actually an option with path in which case
  if it is quoted, do not try to escape white space

Change-Id: I67a286962ba67acb75d1f8c29cac47069ab07353
2019-10-03 15:19:19 -04:00
Jonah Graham
2cbf927a36 Bug 550076 - Use PE64 parser by default
Change-Id: I757c8ace43e79f1215ad0e817430e5ab90415401
2019-09-09 15:56:07 -04:00
Alexander Kurtakov
a3938937f2 Convert new Runnable to lambda.
Take 2.

Change-Id: I060b0e41d8c6058db0c2ba88af8454b5517105b8
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
2019-08-12 17:31:30 +03:00
Umair Sair
84e2470069 Bug 545976 Clicking on error/warning in build console doesn't open file
Problem:
========
Common builder invokes the build on all the referenced projects. For the
markers creation, the project on which build is invoked by user is used,
that is incorrect. Once all the referenced projects are built, the
actual project starts building and removes all the markers associated
with it, hence the markers created previously for referenced projects
are removed and now clicking on error/warning in build console of
referenced projects will not open source file because of missing
markers.

Fix:
====
Always set the correct project being built for markers creation using
setCurrentProject(..) API.

Change-Id: Ief051ac664ea964816fdcbe7f2f54bcf43caa212
Signed-off-by: Umair Sair <umair_sair@hotmail.com>
2019-06-21 13:19:27 -04:00
Umair Sair
15cf760405 Bug 546407 Project dependencies are not built in the correct order
Problem:
========
filterConfigsToBuild(..) always filters the configs that are once added
to set irrespective if it has been built or not. Consider scenario where
there are three project a, b, c and a depends on b & c and b depends on
c. When a is built, filterConfigsToBuild(..) returns configs of b and c.
Then b starts building and filterConfigsToBuild(..) doesn't return
config of c because its already in set. This is wrong and it should
return config of c because it is not yet built and b depends on it.

Fix:
====
If a referenced config by any project/config is not yet built,
filterConfigsToBuild(..) shouldn't filter it.

Change-Id: I5fbe77789f14ce3114200998070a7461069c98ab
Signed-off-by: Umair Sair <umair_sair@hotmail.com>
2019-06-21 13:18:06 -04:00
Clément Hurlin
a201acf7c1 Use IToolChain instead of ToolChain in constructor of Configuration.
The constructor's body and the rest of the class was already using
IToolChain.

Change-Id: I905e15dcedb6c3280c271bf3c47ef6f1e898d3b9
Signed-off-by: Clément Hurlin <clement.hurlin@provenrun.com>
2019-05-24 10:31:10 +02:00
Dorothea Pilz-Roeder
8b88c9bffe Bug 180451 - fix generateMakefiles() on incremental build
- generateMakefiles() requires similar patch for the top build
directory like regenerateMakefiles().
 - need to extend the check in isGeneratedResource for config
directories located in subdirectory of the project root.

Change-Id: Id1809e216aee54524bc6cb072f8883ea5a202b61
Signed-off-by: Dorothea Pilz-Roeder <dorothea.pilz-roeder@advantest.com>
2019-05-07 14:09:27 -04:00
Dorothea Pilz-Roeder
3dc407d008 Bug 180451 - [Build] Build output directory should be selectable for
managed build

Allow clients extend GnuMakefileGenerator and allow them to provide a
different top build output directory.

Change-Id: I37dd96089f6f4bed6f4255def4bef193fb27e7e4
Signed-off-by: Dorothea Pilz-Roeder <dorothea.pilz-roeder@advantest.com>
2019-04-10 10:57:14 +02:00
Jonah Graham
783af3dee6 Bug 544721: Increment version following new standard
See https://wiki.eclipse.org/CDT/policy#Version_Numbering

Change-Id: Icac4c041d2ea1178ab40bd97531d014c4be22675
2019-02-26 09:04:57 +00:00
Philip Langer
90c82078ac Bug 544721 Retain rebuildState state when cloning build configs
When cloning build config, all its childrens' rebuildState and dirty
state are maintained except for the states of AdditionalInput and
InputOrder.

With this change, we also retain their rebuildState and dirty state,
if it is a clone (that is, copyId is true in the InputType).

Change-Id: I63b2d38d0065e50357887bfccb340d458d2f4441
Signed-off-by: Philip Langer <planger@eclipsesource.com>
2019-02-22 14:52:52 +01:00
Marc-Andre Laperle
efb9ddbb63 Remove a few internal, deprecated methods
Change-Id: I073f7770a594ec226f7adf5d5022960a298608c7
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
2018-12-03 23:12:24 -05:00
Marc-Andre Laperle
52b4a02b20 Remove a couple of StreamMonitor classes (unused)
Change-Id: I13224ff79440fc181ab7128d7620ca2c1190f646
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
2018-12-02 12:01:27 -05:00
Jonah Graham
37ed2c406d Bug 540373: Update the compiler warnings/ignores
The previous alignment of all the warnings/ignores
led to too many warnings that weren't there before. This
commit relaxes them a bit.

The core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs
is still the "master" copy, with
releng/scripts/check_code_cleanliness.sh containing the
exceptions that apply to test plug-ins.

Change-Id: Ibd4e31ade0b42b31e7cbe5a94f06c6fc15183a56
2018-11-24 10:55:06 +00:00
Jonah Graham
3caea240a3 Bug 540373: Format some Java files that were missed
Some files which has other cleanups applied meant they needed to be
reformatted again. e.g. the removing of type parameters shortened
some lines of code that meant the wrapping changed.

Change-Id: I68ca09567b9530cc2a085c33923642b6de2ec77b
2018-11-23 13:59:46 +00:00
Jonah Graham
ff75ae80fa Bug 540373: Cleanup: Remove trailing whitespace in properties files
Command used:
# Remove space at eol in comments
find .  ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/^(#.*)[ \t]+$/\1/' {} +
# Remove space at eol in blank lines
find .  ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/^[ \t]+$//' {} +
# Replace escaped spaces at eol with unicode
find .  ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/([^\\])\\ $/\1\\u0020/' {} +
# Replace unescaped spaces at eol with unicode
find .  ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/([^\\]) $/\1\\u0020/' {} +
# Replace escaped tabs at eol with unicode
find .  ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/([^\\])\\\t$/\1\\u0009/' {} +
# Replace unescaped tabs at eol with unicode
find .  ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/([^\\])\t$/\1\\u0009/' {} +
# Stage all changes
git add -A .
# trim any remaining whitespace and then identify and fixup
# manually
# Only dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/MessagesForDebugVM.properties
# needed this due to missing newline at end of the file
find .  ! -path "./.git/*" -type f -name *.properties -exec sed -i -E 's/[ \t]+$//' {} +

Change-Id: I858f16891fe001f4f7e62d5a4f904146e891cd39
2018-11-23 07:52:26 +00:00
Jonah Graham
aa1040a21a Bug 540373: Remove '(non-Javadoc)' comments
These were inserted in the past automatically by Eclipse but
newer tooling makes them redundant.

These were removed by doing a global find/replace on *.java files
using the following regular expression:
\t/\*\n\t \* \(non-Javadoc\)[^/]*/\n

Change-Id: I59d3248020f10934fde1dda5b5a31e20bb188e19
2018-11-22 22:00:29 +00:00
Jonah Graham
caf2292768 Bug 540373: Cleanup: Remove redundant type arguments
This was done by selecting all projects in Eclipse then
Source -> Clean Up... -> choosing:
- Remove redundant type arguments
and completing the wizard

Change-Id: Iaecc7010f097b4b1fabd29ccaa34ccb23a716fbf
2018-11-22 21:55:36 +00:00
Jonah Graham
a923614c73 Bug 540373: Cleanup: Organize Imports
This was done by selecting all projects in Eclipse then
Source -> Clean Up... -> choosing:
- Organize Imports
and completing the wizard

Change-Id: Ia7b305a4c967d0e6f4e8fb8c1041e7028b24006c
2018-11-22 21:47:02 +00:00
Jonah Graham
170e654b47 Bug 540373: Cleanup: Format & Remove trailing whitespace
This was done by selecting all projects in Eclipse then
Source -> Clean Up... -> choosing:
- Format source code
- Remove trailing white spaces on all lines
and completing the wizard

Change-Id: I63685372c6bcc67719bcf145123bcb72e5b00394
2018-11-22 21:47:02 +00:00
Jonah Graham
35996a5c5c Bug 540373: Standard .settings auto applied
The releng/scripts/apply_jdt_prefs_to_all_projects.sh was run to
copy standard settings to all other projects.

Change-Id: I4436c947d7f0142f56b709e661379c3eb54f666b
2018-11-22 21:47:02 +00:00
Jonah Graham
f70a8b35c1 Bug 540371: Update to EPLv2 using releng/scripts/change_to_eplv2.sh
Change-Id: Ifbb1d5af2a00bd5634dea200320e8c4303ffca6c
2018-11-22 20:31:51 +00:00
Karsten Thoms
652602febd Bug 540610 - Add Automatic-Module-Name header
Change-Id: Ia990b24469751050dd9ec8f9b5550804816308b3
Signed-off-by: Karsten Thoms <karsten.thoms@itemis.de>
2018-10-30 15:49:15 +01:00
William Riley
f3ca365140 Bug 540367 - Increment version numbers
Change-Id: I4a355170a7075f0a98ba3c1a5131c235c89b07d2
2018-10-23 11:20:31 -04:00
Evgueni Driouk
1fa5f7d6e5 Bug 540369 - HeadlessBuilder: change private to protected
Change-Id: Ib8ca36aa50ce6060d4f8fb14f5b74c3662bc8862
Signed-off-by: Evgueni Driouk <Evgueni.Driouk@arm.com>
2018-10-22 09:51:01 -04:00
Michael Keppler
c7ddddc339 Bug 537211 - Error running Builtin Specs Detector (closed project)
Just check for the resource being accessible immediately before trying
to delete markers of it.

Change-Id: Ic359dc5a5a865a981847c6da1dd2e8cc312b3bd9
Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de>
2018-07-20 07:47:33 +02:00
Jonah Graham
45279d5ffc Bug 511161: Early fail on non-absolute URIs when looking for files in workspace
Change-Id: Idefa850b3d43e13d878d5a19bd89bd42ee1c534f
2018-05-30 19:11:24 -04:00