Note: the Windows dll is not actually modified, apart from the embedded
date stamp to match the date of the jni/ modification
Also-by: Liviu Ionescu <ilg@livius.net>
Change-Id: Ice3d5e7ae5999a0e4d1866e76e515a91e30e9f11
The native directory can contain both libraries and utilities. In
Gerrit https://git.eclipse.org/r/c/cdt/org.eclipse.cdt/+/165270,
there is a utility, so the directory name "jni", or even "library" does
not work. In order to support both utilities and libraries, the
suggested name of the directory is "native_src" and thus, this commit
syncs that change in o.e.c.native.serial.
Change-Id: Iafa9ce9ae1dca7ef563ab397e8b3eb0b8642372d
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
The vendor specific support files need to be installed separately.
Includes changing the bundles display names to match the CMake main bundle
so that in the install wizard it is clear(er) what they work with.
Change-Id: I12ca155228e906c6c38fe37e37e8ce08d05a2452
This is one way to publish the cmake.is plug-ins. It may be that
additional features are desired as this implementation is all of cmake
support or non of it.
Change-Id: Ie945d2ce94b5ac34c6c238ed7bfbdc3ff336e538
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>
New types TerminalColor and TerminalStyle replace StyleColor and Style
to separate the meta information about styles and colors from the
user currently selected colors.
The StyleMap maps the TerminalColor/Style to the concrete fonts and
colors used in the display.
Colors are now configurable via the terminal preference page using
the new TerminalColorsFieldEditor.
All preferences are now passed in to the VT100 control so that
different terminal consumers can have different preferences and
styles.
Remove dark theme contribution. The colors of the terminal are
now inherited from the editor settings (using SystemDefaultColors)
which come from the theme. If we were to invert colors
too when in Dark theme then the colors actually end up light
background.
Change-Id: I2cf5427ac0be9a189a7f0d3565cfc97ceedb8749
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>
By design, the parser/provider fires when loading the cproject
description but we also call it by hand in the main code of the tests.
This means CompilationDatabaseParser could be running twice
simultaenously along with the same output parser code that it delegates
to. The problem was exposed fully when adding more complex data
structure (hash maps) to the output parsers in another commit, as it
would produce ConcurrentModificationException.
We need to be careful when we choose to call setProjectDescription
because it triggers the provider and then we have to wait for the jobs
to complete (joinLanguageSettingsJobs). By taking this into
consideration, several tests had to be updated. Most notably, the
read-only config test case had to be merged with the time-stamp update
test case because it was the only sensible way to test before/after
changes of language settings with such config.
Change-Id: Ib3a7caefa95b436ad9b699a2614e966a4a8dfca9
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
This can be used when walking the ICElement tree and wanting
to act after visiting all children of an element and the element itself.
For example, I use this to collect information about whether or not
all files in a folder are excluded or not and when "leaving" the source
container, I can then act on whether or not the
source exclusions can be simplified by excluding the whole folder.
Without the leave() method, one would have to do cumbersome and
error-prone path checking when visiting each node to detect if we
have left a parent node.
Change-Id: Iad480fe18f28db1477d5d527ac51c320f6d280b7
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
Don't overwrite it in plugins as version is set in
parent/pluginManagement.
Change-Id: I73d2b4d234ba83eae7ec2cd51f3e53d58256b81e
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
Get rid of tycho-extras-version as there is no more tycho-extras.
Change-Id: I9d215aad94c4e8320153f06368d6b3ecfa4a3c42
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
There is no need to have custom JNI implementation any more in java to
be able to access native functions. JNA solves this just fine with the
benefit that the code is easier to debug and maintain.
Change-Id: Ia9d36981cb10fa7348bf0a5f0549b3e96bd4c982
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
As Eclipse only support 64-bit JRE on Windows, some legacy support has
been dropped.
* Dropped support for listing 16-bit applications using NTVDM.EXE
process (was only supported on 32-bit WinNT based systems).
* Dropped support for listing processes on non-WinNT based systems
(Windows 9x/ME is 32-bit only).
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
Change-Id: Ib827de6510a342c0de5c6eaca68a944b2f1d641e
When git is configured to honor executable bit for files
(core.fileMode=true), the .exe and .dll files in the
repository needs to have execute bit set to be able to run
Eclipse in runtime mode on Windows.
For more details:
https://git-scm.com/docs/git-config#Documentation/git-config.txt-corefileMode
"Git for Windows" does not appear to have this problem,
but at least Cygwin does.
Change-Id: I4c164f6d99219d461c301189f101ccbf63debb50
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
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>
Switch Eclipse Platform to 4.17 M1 for .setup and
.target
Switch baseline comparator to the latest released CDT
And I need this root project manifest to simplify my work, please
Change-Id: I8c3af45144d3859d171a87d5d37dfa7e5c7ea97b
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
Updated cdt.target to 2020-09 (still use Eclipse Platform 4.16)
Updated cdt-baseline.target to 2020-06
Added repositories for 2020-09 to CDT.setup (still use Eclipse Platform
4.16)
Updated baseline to 2020-06 for CDT.setup
Change-Id: Iba1c98e5e9f89ca953727c857788298d57aa40fc
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
Change order of repositories: start the list from the most recent
platform release
Change-Id: I565f640c72f1ab67b63c8cffc0858f8303282609
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
Prefer release specific update URLs for p2 repositories
Change-Id: I61923c4b3c0b3e3ed151916ca35c9ec5d674e1dd
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
Remove some Wizard classes that are not referenced anywhere anymore.
This commit is just a first of probably several commits but is already
a start. I already had very large commits in progress in the past but
it became big and hard to push so I'd rather do it step by step this
time and at least have some of it done for the next release.
Also moved some messages to its own message bundle in managedbuilder.ui
because it's the only place they are used now.
Change-Id: Ib4258684c91f205dc4af3b17169609b5ebcff253
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>