SCA2AMALTHEA provides commandlie interface
Signed-off-by: Aoun.Raza@de.bosch.com <Aoun.Raza@de.bosch.com>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAUtils.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAUtils.java
index c5c1931..f36a144 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAUtils.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAUtils.java
@@ -35,7 +35,11 @@
return createSCADirectory(projectPath, directoryType.getDirectoryName(), componentDirectoryName);
}
-
+public static boolean isAbsolutePath(final String path) {
+ String regex = "[a-zA-Z]:\\\\.*";
+ return path.matches(regex);
+ }
+
private static String createSCADirectory(final String projectPath, final String dirType,
final String componentDirectoryName) {
File scaDir;
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/.classpath b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/.project b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/.project
new file mode 100644
index 0000000..1538302
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.sca2amalthea.headless</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a56113d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Headless
+Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.headless
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.headless
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.eclipse.osgi.service.environment,
+ org.osgi.service.component.annotations;resolution:=optional
+Service-Component: OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaBndStarter.xml,
+ OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaEquinoxStarter.xml
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.app4mc.sca2amalthea.llvm,
+ org.eclipse.equinox.registry,
+ org.eclipse.app4mc.sca.util,
+ com.google.guava,
+ org.eclipse.app4mc.sca.logging
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaBndStarter.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaBndStarter.xml
new file mode 100644
index 0000000..13d57ee
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaBndStarter.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="runSCA2Amalthea" immediate="true" name="org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaBndStarter">
+ <reference bind="setLauncherArguments" interface="java.lang.Object" name="LauncherArguments" target="(launcher.arguments=*)"/>
+ <implementation class="org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaBndStarter"/>
+</scr:component>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaEquinoxStarter.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaEquinoxStarter.xml
new file mode 100644
index 0000000..d9ceade
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaEquinoxStarter.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" activate="activate" immediate="true" name="org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaEquinoxStarter">
+ <reference cardinality="1..1" field="environmentInfo" interface="org.eclipse.osgi.service.environment.EnvironmentInfo" name="environmentInfo"/>
+ <implementation class="org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaEquinoxStarter"/>
+</scr:component>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/about.html b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/about.html
new file mode 100644
index 0000000..164f781
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ ("Content"). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 ("EPL"). A copy of the EPL is
+ available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, "Program" will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ ("Redistributor") and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ </p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/build.properties b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/build.properties
new file mode 100644
index 0000000..33dd97e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaBndStarter.xml,\
+ OSGI-INF/org.eclipse.app4mc.sca2amalthea.headless.SCA2AmaltheaEquinoxStarter.xml
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/epl-2.0.html b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Eclipse Public License - Version 2.0</title>
+ <style type="text/css">
+ body {
+ margin: 1.5em 3em;
+ }
+ h1{
+ font-size:1.5em;
+ }
+ h2{
+ font-size:1em;
+ margin-bottom:0.5em;
+ margin-top:1em;
+ }
+ p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ ul, ol{
+ list-style-type:none;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Eclipse Public License - v 2.0</h1>
+ <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+ </p>
+ <h2 id="definitions">1. DEFINITIONS</h2>
+ <p>“Contribution” means:</p>
+ <ul>
+ <li>a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+ </li>
+ <li>
+ b) in the case of each subsequent Contributor:
+ <ul>
+ <li>i) changes to the Program, and</li>
+ <li>ii) additions to the Program;</li>
+ </ul>
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ “originates” from a Contributor if it was added to the Program by such
+ Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+ </li>
+ </ul>
+ <p>“Contributor” means any person or entity that Distributes the Program.</p>
+ <p>“Licensed Patents” mean patent claims licensable by a Contributor which
+ are necessarily infringed by the use or sale of its Contribution alone
+ or when combined with the Program.
+ </p>
+ <p>“Program” means the Contributions Distributed in accordance with this
+ Agreement.
+ </p>
+ <p>“Recipient” means anyone who receives the Program under this Agreement
+ or any Secondary License (as applicable), including Contributors.
+ </p>
+ <p>“Derivative Works” shall mean any work, whether in Source Code or other
+ form, that is based on (or derived from) the Program and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship.
+ </p>
+ <p>“Modified Works” shall mean any work in Source Code or other form that
+ results from an addition to, deletion from, or modification of the
+ contents of the Program, including, for purposes of clarity any new file
+ in Source Code form that contains any contents of the Program. Modified
+ Works shall not include works that contain only declarations, interfaces,
+ types, classes, structures, or files of the Program solely in each case
+ in order to link to, bind by name, or subclass the Program or Modified
+ Works thereof.
+ </p>
+ <p>“Distribute” means the acts of a) distributing or b) making available
+ in any manner that enables the transfer of a copy.
+ </p>
+ <p>“Source Code” means the form of a Program preferred for making
+ modifications, including but not limited to software source code,
+ documentation source, and configuration files.
+ </p>
+ <p>“Secondary License” means either the GNU General Public License,
+ Version 2.0, or any later versions of that license, including any
+ exceptions or additional permissions as identified by the initial
+ Contributor.
+ </p>
+ <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+ <ul>
+ <li>a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+ </li>
+ <li>b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if,
+ at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered
+ by the Licensed Patents. The patent license shall not apply to any
+ other combinations which include the Contribution. No hardware per
+ se is licensed hereunder.
+ </li>
+ <li>c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the rights
+ and licenses granted hereunder, each Recipient hereby assumes sole
+ responsibility to secure any other intellectual property rights needed,
+ if any. For example, if a third party patent license is required to
+ allow Recipient to Distribute the Program, it is Recipient's
+ responsibility to acquire that license before distributing the Program.
+ </li>
+ <li>d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+ </li>
+ <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+ makes additional grants to any Recipient (other than those set forth
+ in this Agreement) as a result of such Recipient's receipt of the
+ Program under the terms of a Secondary License (if permitted under
+ the terms of Section 3).
+ </li>
+ </ul>
+ <h2 id="requirements">3. REQUIREMENTS</h2>
+ <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+ <ul>
+ <li>a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+ </li>
+ <li>
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ <ul>
+ <li>i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including warranties
+ or conditions of title and non-infringement, and implied warranties
+ or conditions of merchantability and fitness for a particular purpose;
+ </li>
+ <li>ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special, incidental
+ and consequential damages, such as lost profits;
+ </li>
+ <li>iii) does not attempt to limit or alter the recipients' rights in the
+ Source Code under section 3.2; and
+ </li>
+ <li>iv) requires any subsequent distribution of the Program by any party
+ to be under a license that satisfies the requirements of this section 3.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p>3.2 When the Program is Distributed as Source Code:</p>
+ <ul>
+ <li>a) it must be made available under this Agreement, or if the Program (i)
+ is combined with other material in a separate file or files made available
+ under a Secondary License, and (ii) the initial Contributor attached to
+ the Source Code the notice described in Exhibit A of this Agreement,
+ then the Program may be made available under the terms of such
+ Secondary Licenses, and
+ </li>
+ <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+ </ul>
+ <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+ attribution notices, disclaimers of warranty, or limitations of liability
+ (‘notices’) contained within the Program from any copy of the Program which
+ they Distribute, provided that Contributors may add their own appropriate
+ notices.
+ </p>
+ <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+ <p>Commercial distributors of software may accept certain responsibilities
+ with respect to end users, business partners and the like. While this
+ license is intended to facilitate the commercial use of the Program, the
+ Contributor who includes the Program in a commercial product offering should
+ do so in a manner which does not create potential liability for other
+ Contributors. Therefore, if a Contributor includes the Program in a
+ commercial product offering, such Contributor (“Commercial Contributor”)
+ hereby agrees to defend and indemnify every other Contributor
+ (“Indemnified Contributor”) against any losses, damages and costs
+ (collectively “Losses”) arising from claims, lawsuits and other legal actions
+ brought by a third party against the Indemnified Contributor to the extent
+ caused by the acts or omissions of such Commercial Contributor in connection
+ with its distribution of the Program in a commercial product offering.
+ The obligations in this section do not apply to any claims or Losses relating
+ to any actual or alleged intellectual property infringement. In order to
+ qualify, an Indemnified Contributor must: a) promptly notify the
+ Commercial Contributor in writing of such claim, and b) allow the Commercial
+ Contributor to control, and cooperate with the Commercial Contributor in,
+ the defense and any related settlement negotiations. The Indemnified
+ Contributor may participate in any such claim at its own expense.
+ </p>
+ <p>For example, a Contributor might include the Program
+ in a commercial product offering, Product X. That Contributor is then a
+ Commercial Contributor. If that Commercial Contributor then makes performance
+ claims, or offers warranties related to Product X, those performance claims
+ and warranties are such Commercial Contributor's responsibility alone.
+ Under this section, the Commercial Contributor would have to defend claims
+ against the other Contributors related to those performance claims and
+ warranties, and if a court requires any other Contributor to pay any damages
+ as a result, the Commercial Contributor must pay those damages.
+ </p>
+ <h2 id="warranty">5. NO WARRANTY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+ WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+ solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its
+ exercise of rights under this Agreement, including but not limited to the
+ risks and costs of program errors, compliance with applicable laws, damage
+ to or loss of data, programs or equipment, and unavailability or
+ interruption of operations.
+ </p>
+ <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+ LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ </p>
+ <h2 id="general">7. GENERAL</h2>
+ <p>If any provision of this Agreement is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of the
+ remainder of the terms of this Agreement, and without further action by the
+ parties hereto, such provision shall be reformed to the minimum extent
+ necessary to make such provision valid and enforceable.
+ </p>
+ <p>If Recipient institutes patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+ (excluding combinations of the Program with other software or hardware)
+ infringes such Recipient's patent(s), then such Recipient's rights granted
+ under Section 2(b) shall terminate as of the date such litigation is filed.
+ </p>
+ <p>All Recipient's rights under this Agreement shall terminate if it fails to
+ comply with any of the material terms or conditions of this Agreement and
+ does not cure such failure in a reasonable period of time after becoming
+ aware of such noncompliance. If all Recipient's rights under this Agreement
+ terminate, Recipient agrees to cease use and distribution of the Program
+ as soon as reasonably practicable. However, Recipient's obligations under
+ this Agreement and any licenses granted by Recipient relating to the
+ Program shall continue and survive.
+ </p>
+ <p>Everyone is permitted to copy and distribute copies of this Agreement,
+ but in order to avoid inconsistency the Agreement is copyrighted and may
+ only be modified in the following manner. The Agreement Steward reserves
+ the right to publish new versions (including revisions) of this Agreement
+ from time to time. No one other than the Agreement Steward has the right
+ to modify this Agreement. The Eclipse Foundation is the initial Agreement
+ Steward. The Eclipse Foundation may assign the responsibility to serve as
+ the Agreement Steward to a suitable separate entity. Each new version of
+ the Agreement will be given a distinguishing version number. The Program
+ (including Contributions) may always be Distributed subject to the version
+ of the Agreement under which it was received. In addition, after a new
+ version of the Agreement is published, Contributor may elect to Distribute
+ the Program (including its Contributions) under the new version.
+ </p>
+ <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+ receives no rights or licenses to the intellectual property of any
+ Contributor under this Agreement, whether expressly, by implication,
+ estoppel or otherwise. All rights in the Program not expressly granted
+ under this Agreement are reserved. Nothing in this Agreement is intended
+ to be enforceable by any entity that is not a Contributor or Recipient.
+ No third-party beneficiary rights are created under this Agreement.
+ </p>
+ <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
+ <p>“This Source Code may also be made available under the following
+ Secondary Licenses when the conditions for such availability set forth
+ in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+ version(s), and exceptions or additional permissions here}.”
+ </p>
+ <blockquote>
+ <p>Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+ </p>
+ <p>If it is not possible or desirable to put the notice in a particular file,
+ then You may include the notice in a location (such as a LICENSE file in a
+ relevant directory) where a recipient would be likely to look for
+ such a notice.
+ </p>
+ <p>You may add additional accurate notices of copyright ownership.</p>
+ </blockquote>
+ </body>
+</html>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/src/org/eclipse/app4mc/sca2amalthea/headless/AbstractSCA2AmaltheaStarter.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/src/org/eclipse/app4mc/sca2amalthea/headless/AbstractSCA2AmaltheaStarter.java
new file mode 100644
index 0000000..e7f825d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/src/org/eclipse/app4mc/sca2amalthea/headless/AbstractSCA2AmaltheaStarter.java
@@ -0,0 +1,296 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.headless;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.eclipse.app4mc.sca.logging.manager.LogFactory.Severity;
+import org.eclipse.app4mc.sca.logging.manager.Logmanager;
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+import org.eclipse.app4mc.sca2amalthea.llvm.headless.GenerateAmaltheaModelFromLLVM;
+import org.eclipse.app4mc.sca2amalthea.llvm.headless.SCA2AMALTHEAStarterProperties;
+import org.eclipse.app4mc.sca2amalthea.llvm.util.SCA2AmaltheaHeadlessConstants;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+
+import com.google.common.base.Strings;
+
+/**
+ * Common class for both the BndStarter and Equinox starter. The class parses the command line parameters and generates
+ * amalthea model.
+ */
+public class AbstractSCA2AmaltheaStarter {
+
+ private String pdir;
+ private String astPath;
+ private String blog;
+ private String hdirList;
+ private String taskInfo;
+ private String lockInfo;
+ private String enableStructMember;
+ private String xmlCallTreePath;
+ private String outDir;
+
+ /**
+ * Performs static code analysis and generates a amalthea model.
+ *
+ * @param args command line args provided by the user.
+ * @param isInteractive if the OSGI console has to stay open.
+ * @param showConsoleLog true if a seperate shell has to be opened and if it should stay open.
+ */
+ protected void runSCA2Amalthea(final String[] args, final boolean isInteractive, final boolean showConsoleLog) {
+ boolean isParseCmdArgsSuccessfull = parseCommandLineParameters(args);
+ if (isParseCmdArgsSuccessfull) {
+ SCA2AMALTHEAStarterProperties sca2AmaltheaStarterProperties = new SCA2AMALTHEAStarterProperties();
+ sca2AmaltheaStarterProperties.setProjectPath(this.pdir);
+ sca2AmaltheaStarterProperties.getLlvmStarterProperties().setTraverseAstFile(this.astPath);
+ sca2AmaltheaStarterProperties.setBuildLogFile(this.blog);
+ sca2AmaltheaStarterProperties.setHDirFilePath(this.hdirList);
+ sca2AmaltheaStarterProperties.setTaskListFile(this.taskInfo);
+ sca2AmaltheaStarterProperties.setLockinfoFile(this.lockInfo);
+ sca2AmaltheaStarterProperties.setIsStructMemberEnabled(Boolean.parseBoolean(this.enableStructMember));
+ sca2AmaltheaStarterProperties.setPathToxmlCallTree(this.xmlCallTreePath);
+ sca2AmaltheaStarterProperties.setOutPutPath(this.outDir);
+ boolean isValidationSuccessfull = validateInputParameters(sca2AmaltheaStarterProperties);
+ try {
+ if (isValidationSuccessfull) {
+ IStatus status = new GenerateAmaltheaModelFromLLVM(sca2AmaltheaStarterProperties).run();
+ if (status == Status.OK_STATUS) {
+ logOnCmdLine("Amalthea model generated successfully");
+ }
+ else {
+ logOnCmdLine("Amalthea model was not successfull.");
+ }
+ }
+ }
+ catch (Exception e) {
+ logOnCmdLine("Exception while generating amalthea model " + e.getMessage());
+ }
+ }
+
+ if (showConsoleLog && !isInteractive) {
+ logOnCmdLine("Press Enter to exit the shell");
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
+ reader.readLine();
+ }
+ catch (IOException e) {
+ System.out.println("Error on waiting for user input " + e);
+ }
+ }
+ if (!isInteractive) {
+ System.exit(0);
+ }
+ }
+
+ private boolean parseCommandLineParameters(final String args[]) {
+ boolean parseSuccess = true;
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].equals(SCA2AmaltheaHeadlessConstants.PDIR)) {
+ i++;
+ this.pdir = args[i];
+ }
+ else if (args[i].equals(SCA2AmaltheaHeadlessConstants.ASTP)) {
+ i++;
+ this.astPath = args[i];
+ }
+ else if (args[i].equals(SCA2AmaltheaHeadlessConstants.BLOG)) {
+ i++;
+ this.blog = args[i];
+ }
+ else if (args[i].equals(SCA2AmaltheaHeadlessConstants.HDIR_LIST)) {
+ i++;
+ this.hdirList = args[i];
+ }
+ else if (args[i].equals(SCA2AmaltheaHeadlessConstants.TASKINFO)) {
+ i++;
+ this.taskInfo = args[i];
+ }
+ else if (args[i].equals(SCA2AmaltheaHeadlessConstants.LOCKINFO)) {
+ i++;
+ this.lockInfo = args[i];
+ }
+ else if (args[i].equals(SCA2AmaltheaHeadlessConstants.ENABLE_STRUCT_MEMBER)) {
+ this.enableStructMember = "True";
+ }
+ else if (args[i].equals(SCA2AmaltheaHeadlessConstants.XMLCALLTREE_PATH)) {
+ i++;
+ this.xmlCallTreePath = args[i];
+ }
+ else if (args[i].equals(SCA2AmaltheaHeadlessConstants.OUTDIR)) {
+ i++;
+ this.outDir = args[i];
+ }
+ else if (args[i].equals(SCA2AmaltheaHeadlessConstants.HELP)) {
+ printHelp();
+ parseSuccess = false;
+ break;
+ }
+ else {
+ logOnCmdLine("Invalid option " + args[i]);
+ parseSuccess = false;
+ break;
+ }
+ }
+ return parseSuccess;
+ }
+
+private void printHelp(){
+
+ System.out.println("java -jar sca.jar <-pdir> [-astp] [-hdirlist] [-taskinfo] [-lockinfo] [-enableStructMember] [-xmlCallTreePath] [-outdir]\n");
+ System.out.println("Mandatory parameters:");
+ System.out.println("\t"+ SCA2AmaltheaHeadlessConstants.PDIR + " " + SCA2AmaltheaHeadlessConstants.C_PROJECT_DIR_HELP);
+ System.out.println("\t"+ SCA2AmaltheaHeadlessConstants.ASTP + " " + SCA2AmaltheaHeadlessConstants.AST_PARSER_HELP+"\n");
+ System.out.println("Optional parameters:");
+ System.out.println("\t"+SCA2AmaltheaHeadlessConstants.HDIR_LIST + " " + SCA2AmaltheaHeadlessConstants.HDIR_LIST_HELP);
+ System.out.println("\t"+SCA2AmaltheaHeadlessConstants.TASKINFO + " " + SCA2AmaltheaHeadlessConstants.TASKINFO_HELP);
+ System.out.println("\t"+SCA2AmaltheaHeadlessConstants.LOCKINFO + " " + SCA2AmaltheaHeadlessConstants.LOCKINFO_HELP);
+ System.out.println("\t"+SCA2AmaltheaHeadlessConstants.ENABLE_STRUCT_MEMBER + " " +
+ SCA2AmaltheaHeadlessConstants.ENABLE_STRUCT_MEMBER_HELP);
+ System.out.println("\t"+SCA2AmaltheaHeadlessConstants.XMLCALLTREE_PATH + " " + SCA2AmaltheaHeadlessConstants.XMLCALLTREE_HELP);
+ System.out.println("\t"+SCA2AmaltheaHeadlessConstants.OUTDIR + " " + SCA2AmaltheaHeadlessConstants.OUTDIR_HELP);
+}
+ private boolean validateInputParameters(final SCA2AMALTHEAStarterProperties properties) {
+ boolean validationSuccess = true;
+ if (properties != null) {
+ if (Strings.isNullOrEmpty(properties.getProjectPath())) {
+ logOnCmdLine("Manadatory argument is missing");
+ printHelp();
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getProjectPath()) && !new File(properties.getProjectPath()).exists()) {
+ logOnCmdLine("Project Path " + properties.getProjectPath() + " does not exist ");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getProjectPath()) &&
+ !new File(properties.getProjectPath()).isDirectory()) {
+ logOnCmdLine("Project Path " + properties.getProjectPath() + " is not a directory");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getPathToxmlCallTree()) &&
+ !new File(properties.getPathToxmlCallTree()).exists()) {
+ logOnCmdLine("XMLCalltree Path " + properties.getPathToxmlCallTree() + " does not exist ");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getPathToxmlCallTree()) &&
+ !new File(properties.getPathToxmlCallTree()).isFile()) {
+ logOnCmdLine("XMLCalltree Path " + properties.getPathToxmlCallTree() + " is not a file");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getPathToxmlCallTree()) &&
+ !properties.getPathToxmlCallTree().endsWith(".xml")) {
+ logOnCmdLine("XMLCalltree Path " + properties.getPathToxmlCallTree() + " should have .xml extension");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getPathToxmlCallTree()) &&
+ !new File(properties.getPathToxmlCallTree()).getName().equals("XMLCalltree.xml")) {
+ logOnCmdLine("The xml file name should be XMLCalltree.xml");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getPathToxmlCallTree()) &&
+ !Strings.isNullOrEmpty(properties.getTraverseAstFile())) {
+ logOnCmdLine("-astp parameter should not be provided if xmlCallTreePath option is provided ");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getPathToxmlCallTree()) &&
+ !Strings.isNullOrEmpty(properties.getBuildLogFile())) {
+ logOnCmdLine("-blog parameter should not be provided if xmlCallTreePath option is provided ");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getPathToxmlCallTree()) &&
+ !Strings.isNullOrEmpty(properties.gethDirFilePath())) {
+ logOnCmdLine("-hdirlist parameter should not be provided if xmlCallTreePath option is provided ");
+ validationSuccess = false;
+ }
+ else if (Strings.isNullOrEmpty(properties.getPathToxmlCallTree()) &&
+ Strings.isNullOrEmpty(properties.getTraverseAstFile())) {
+ logOnCmdLine("-astp parameter is mandatory");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getTraverseAstFile()) &&
+ !new File(properties.getTraverseAstFile()).exists()) {
+ logOnCmdLine("Ast Path " + properties.getTraverseAstFile() + " does not exist");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getBuildLogFile()) &&
+ !new File(properties.getBuildLogFile()).exists()) {
+ logOnCmdLine("Build command log file path " + properties.getBuildLogFile() + " does not exist");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getBuildLogFile()) &&
+ !new File(properties.getBuildLogFile()).isFile()) {
+ logOnCmdLine("Build command log file path " + properties.getBuildLogFile() + " is not a file");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getBuildLogFile()) && !properties.getBuildLogFile().endsWith(".log")) {
+ logOnCmdLine("Build command log file " + properties.getBuildLogFile() + " should have a .log extension");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getTaskListFile()) &&
+ !new File(properties.getTaskListFile()).exists()) {
+ logOnCmdLine("Task info file path " + properties.getTaskListFile() + " does not exist ");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getTaskListFile()) &&
+ !new File(properties.getTaskListFile()).isFile()) {
+ logOnCmdLine("Task info file path " + properties.getTaskListFile() + " is not a file ");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getTaskListFile()) && !properties.getTaskListFile().endsWith(".csv")) {
+ logOnCmdLine("Task info file path " + properties.getTaskListFile() + " should have a .csv extension");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getLockinfoFile()) &&
+ !new File(properties.getLockinfoFile()).exists()) {
+ logOnCmdLine("Lock info file path " + properties.getLockinfoFile() + " does not exist");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getLockinfoFile()) &&
+ !new File(properties.getLockinfoFile()).isFile()) {
+ logOnCmdLine("Lock info file path " + properties.getLockinfoFile() + " is not a file ");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getLockinfoFile()) && !properties.getLockinfoFile().endsWith(".csv")) {
+ logOnCmdLine("Lock info file path " + properties.getLockinfoFile() + " should have a .csv extension");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getOutPutPath()) && !new File(properties.getOutPutPath()).exists()) {
+ logOnCmdLine("Output directory path " + properties.getOutPutPath() + " does not exist");
+ validationSuccess = false;
+ }
+ else if (!Strings.isNullOrEmpty(properties.getOutPutPath()) &&
+ !new File(properties.getOutPutPath()).isDirectory()) {
+ logOnCmdLine("Output directory path " + properties.getOutPutPath() + " is not a directory");
+ validationSuccess = false;
+ }
+ if (!Strings.isNullOrEmpty(properties.gethDirFilePath())) {
+ String[] pathList = properties.gethDirFilePath().split(File.pathSeparator);
+ for (String path : pathList) {
+ if (!new File(path).exists()) {
+ logOnCmdLine("Header file path " + path + " does not exist");
+ validationSuccess = false;
+ break;
+ }
+ }
+ }
+ }
+ else {
+ validationSuccess = false;
+ }
+ return validationSuccess;
+ }
+
+ private void logOnCmdLine(final String message) {
+ LogInformation logInformation = new LogInformation();
+ logInformation.setMessage(message);
+ logInformation.setSeverity(Severity.INFO);
+ logInformation.setMessageId("DEFAULT_ID");
+ logInformation.setLogClass(this.getClass());
+ Logmanager.getInstance().logOnCommandLine(logInformation);
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/src/org/eclipse/app4mc/sca2amalthea/headless/SCA2AmaltheaBndStarter.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/src/org/eclipse/app4mc/sca2amalthea/headless/SCA2AmaltheaBndStarter.java
new file mode 100644
index 0000000..69f9cbb
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/src/org/eclipse/app4mc/sca2amalthea/headless/SCA2AmaltheaBndStarter.java
@@ -0,0 +1,50 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.headless;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * This class gets activated when the launcher arguments provided by the bnd launcher are available.This class is
+ * responsible for handling the command line parameters when invoked through a executable jar generated using bnd
+ * export.
+ */
+@Component(immediate = true)
+public class SCA2AmaltheaBndStarter extends AbstractSCA2AmaltheaStarter {
+
+ private String[] launcherArguments;
+
+ @Reference(target = "(launcher.arguments=*)")
+ void setLauncherArguments(final Object object, final Map<String, Object> launcherMap) {
+ this.launcherArguments = (String[]) launcherMap.get("launcher.arguments");
+ }
+
+ /**
+ * Extracts the command line arguments and processes them to generate a amalthea model.
+ */
+ @Activate
+ public void runSCA2Amalthea() {
+ try {
+ String consoleProperty = System.getProperty("osgi.console");
+ boolean isInteractive = (consoleProperty != null) && (consoleProperty.length() == 0);
+
+ String[] args = Arrays.stream(this.launcherArguments)
+ .filter(arg -> !"-console".equals(arg) && !"-consoleLog".equals(arg)).toArray(String[]::new);
+
+ runSCA2Amalthea(args, isInteractive, false);
+
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
+
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/src/org/eclipse/app4mc/sca2amalthea/headless/SCA2AmaltheaEquinoxStarter.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/src/org/eclipse/app4mc/sca2amalthea/headless/SCA2AmaltheaEquinoxStarter.java
new file mode 100644
index 0000000..9fc7cf4
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.headless/src/org/eclipse/app4mc/sca2amalthea/headless/SCA2AmaltheaEquinoxStarter.java
@@ -0,0 +1,47 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.headless;
+
+import java.util.Arrays;
+
+import org.eclipse.osgi.service.environment.EnvironmentInfo;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * This class is responsible for handling the command line parameters when sca2Amalthea is invoked through the equinox
+ * executable.
+ */
+@Component(immediate = true)
+public class SCA2AmaltheaEquinoxStarter extends AbstractSCA2AmaltheaStarter {
+
+ @Reference
+ EnvironmentInfo environmentInfo;
+
+
+ @Activate
+ void activate() {
+ if ((this.environmentInfo.getFrameworkArgs() != null) && (this.environmentInfo.getNonFrameworkArgs() != null)) {
+ boolean isThisAProduct =
+ Arrays.asList(environmentInfo.getNonFrameworkArgs()).stream().anyMatch(arg->arg.equals("-product"))
+ || this.environmentInfo.getProperty("eclipse.product") != null;
+ boolean isThisApplication =
+ Arrays.asList(environmentInfo.getNonFrameworkArgs()).stream().anyMatch(arg->arg.equals("-application"))
+ || this.environmentInfo.getProperty("eclipse.application") != null;
+
+ if(!isThisAProduct && !isThisApplication) {
+ boolean showConsoleLog =
+ Arrays.stream(this.environmentInfo.getFrameworkArgs()).anyMatch(arg -> "-consoleLog".equals(arg));
+ boolean isInteractive =
+ Arrays.stream(this.environmentInfo.getFrameworkArgs()).anyMatch(arg -> "-console".equals(arg));
+
+ String args[] = this.environmentInfo.getNonFrameworkArgs();
+ runSCA2Amalthea(args, isInteractive, showConsoleLog);
+ }
+ }
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/META-INF/MANIFEST.MF
index da40bd9..8b373e4 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/META-INF/MANIFEST.MF
@@ -28,6 +28,7 @@
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.eclipse.app4mc.sca2amalthea.llvm.headless,
org.eclipse.app4mc.sca2amalthea.llvm.srcfiles.support,
- org.eclipse.app4mc.sca2amalthea.llvm.starter
+ org.eclipse.app4mc.sca2amalthea.llvm.starter,
+ org.eclipse.app4mc.sca2amalthea.llvm.util
Bundle-Activator: org.eclipse.app4mc.sca2amalthea.llvm.Activator
Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.llvm
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/CmdLineArgumentParser.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/CmdLineArgumentParser.java
index a3ae3a0..8cf8be9 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/CmdLineArgumentParser.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/CmdLineArgumentParser.java
@@ -1,16 +1,7 @@
/**
- ********************************************************************************
- * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
*/
package org.eclipse.app4mc.sca2amalthea.llvm.headless;
@@ -23,7 +14,7 @@
import org.apache.commons.cli.ParseException;
import org.eclipse.app4mc.sca.logging.manager.Logmanager;
import org.eclipse.app4mc.sca2amalthea.llvm.Activator;
-import org.eclipse.app4mc.sca2amalthea.llvm.util.LLVMConstants;
+import org.eclipse.app4mc.sca2amalthea.llvm.util.SCA2AmaltheaHeadlessConstants;
/**
* Command line parser class. Creates a wrapper out of the arguments passed in the headless command line prompt.
@@ -52,100 +43,125 @@
cmd = parser.parse(helpOptions, args, true);
if (cmd.hasOption("h")) {
HelpFormatter helpformatter = new HelpFormatter();
- helpformatter.printHelp("GenerateAmaltheaModelFromLLVM", options);
+ helpformatter.printHelp("Generate Amalthea from c sources", options);
return null;
}
// now parse main options
cmd = parser.parse(options, args);
- String cProjectPath = cmd.getOptionValue(LLVMConstants.PDIR);
- String hFilePathList = null;
- if (cmd.hasOption(LLVMConstants.HDIR_LIST)) {
- hFilePathList = cmd.getOptionValue(LLVMConstants.HDIR_LIST);
- }
- String buildLogFilePath = null;
- if (cmd.hasOption(LLVMConstants.BLOG)) {
- buildLogFilePath = cmd.getOptionValue(LLVMConstants.BLOG);
- }
+ String cProjectPath = cmd.getOptionValue(SCA2AmaltheaHeadlessConstants.PDIR);
+
String astpPath = null;
- if (cmd.hasOption(LLVMConstants.ASTP)) {
- astpPath = cmd.getOptionValue(LLVMConstants.ASTP);
+ if (cmd.hasOption(SCA2AmaltheaHeadlessConstants.ASTP)) {
+ astpPath = cmd.getOptionValue(SCA2AmaltheaHeadlessConstants.ASTP);
}
- String outdir = null;
- if (cmd.hasOption(LLVMConstants.OUTDIR)) {
- outdir = cmd.getOptionValue(LLVMConstants.OUTDIR);
+
+ String buildLogFilePath = null;
+ if (cmd.hasOption(SCA2AmaltheaHeadlessConstants.BLOG)) {
+ buildLogFilePath = cmd.getOptionValue(SCA2AmaltheaHeadlessConstants.BLOG);
}
+
+ String hFilePathList = null;
+ if (cmd.hasOption(SCA2AmaltheaHeadlessConstants.HDIR_LIST)) {
+ hFilePathList = cmd.getOptionValue(SCA2AmaltheaHeadlessConstants.HDIR_LIST);
+ }
+
String taskinfo = null;
- if (cmd.hasOption(LLVMConstants.TASKINFO)) {
- taskinfo = cmd.getOptionValue(LLVMConstants.TASKINFO);
+ if (cmd.hasOption(SCA2AmaltheaHeadlessConstants.TASKINFO)) {
+ taskinfo = cmd.getOptionValue(SCA2AmaltheaHeadlessConstants.TASKINFO);
}
+
String lockinfo = null;
- if (cmd.hasOption(LLVMConstants.LOCKINFO)) {
- lockinfo = cmd.getOptionValue(LLVMConstants.LOCKINFO);
+ if (cmd.hasOption(SCA2AmaltheaHeadlessConstants.LOCKINFO)) {
+ lockinfo = cmd.getOptionValue(SCA2AmaltheaHeadlessConstants.LOCKINFO);
}
-
- String enableStructMembers=null;
- if(cmd.hasOption(LLVMConstants.ENABLE_STRUCT_MEMBER)){
- enableStructMembers=cmd.getOptionValue(LLVMConstants.ENABLE_STRUCT_MEMBER);
+
+ String enableStructMembers = null;
+ if (cmd.hasOption(SCA2AmaltheaHeadlessConstants.ENABLE_STRUCT_MEMBER)) {
+ enableStructMembers = cmd.getOptionValue(SCA2AmaltheaHeadlessConstants.ENABLE_STRUCT_MEMBER);
}
- return new SCA2AMALTHEAStarterProperties(astpPath, outdir, taskinfo, 10, cProjectPath, hFilePathList,
- buildLogFilePath, lockinfo, Boolean.valueOf(enableStructMembers));
+
+ String outdir = null;
+ if (cmd.hasOption(SCA2AmaltheaHeadlessConstants.OUTDIR)) {
+ outdir = cmd.getOptionValue(SCA2AmaltheaHeadlessConstants.OUTDIR);
+ }
+
+ String xmlCallTreePath = null;
+ if (cmd.hasOption(SCA2AmaltheaHeadlessConstants.XMLCALLTREE_PATH)) {
+ xmlCallTreePath = cmd.getOptionValue(SCA2AmaltheaHeadlessConstants.XMLCALLTREE_PATH);
+ }
+
+ SCA2AMALTHEAStarterProperties sca2amaltheaStarterProperties = new SCA2AMALTHEAStarterProperties();
+ sca2amaltheaStarterProperties.setProjectPath(cProjectPath);
+ sca2amaltheaStarterProperties.getLlvmStarterProperties().setTraverseAstFile(astpPath);
+ sca2amaltheaStarterProperties.setOutPutPath(outdir);
+ sca2amaltheaStarterProperties.setTaskListFile(taskinfo);
+ sca2amaltheaStarterProperties.setHDirFilePath(hFilePathList);
+ sca2amaltheaStarterProperties.setBuildLogFile(buildLogFilePath);
+ sca2amaltheaStarterProperties.setLockinfoFile(lockinfo);
+ sca2amaltheaStarterProperties.setIsStructMemberEnabled(Boolean.valueOf(enableStructMembers));
+ sca2amaltheaStarterProperties.setPathToxmlCallTree(xmlCallTreePath);
+ return sca2amaltheaStarterProperties;
}
catch (ParseException e) {
Logmanager.getInstance().logException(this.getClass(), e, Activator.PLUGIN_ID);
HelpFormatter helpformatter = new HelpFormatter();
- helpformatter.printHelp("GenerateAmaltheaModelFromLLVM", options);
+ helpformatter.printHelp("Generate Amalthea from c sources", options);
return null;
}
}
+
/**
* @param options {@link Option}
*/
private void addOptions(final Options options) {
options.addOption("h", "help", false, "show help");
- Option astOption = new Option(LLVMConstants.ASTP, "ASTParser", true,
- "Path to the LLVM ASTParser executable");
- astOption.setRequired(true);
- options.addOption(astOption);
-
- Option outDirOption = new Option(LLVMConstants.OUTDIR, "output_directory", true, "Path to the output directory");
- outDirOption.setRequired(false);
- options.addOption(outDirOption);
-
- Option pDirOption = new Option(LLVMConstants.PDIR, "cproject_directory", true,
- "Path of the root directory of the c project (PVER)");
+ Option pDirOption = new Option(SCA2AmaltheaHeadlessConstants.PDIR, "cproject_directory", true,
+ SCA2AmaltheaHeadlessConstants.C_PROJECT_DIR_HELP);
pDirOption.setRequired(true);
options.addOption(pDirOption);
- Option hDirOption = new Option(LLVMConstants.HDIR_LIST, "hdir_directories", true,
- "List of paths to directories that contain h source files seperated by the path seperator ;");
- hDirOption.setRequired(false);
- options.addOption(hDirOption);
+ Option astOption = new Option(SCA2AmaltheaHeadlessConstants.ASTP, "astparser", true,
+ SCA2AmaltheaHeadlessConstants.AST_PARSER_HELP);
+ options.addOption(astOption);
- Option taskInfoOption =
- new Option(LLVMConstants.TASKINFO, "task_info_file", true, "Path to the task/isr information file");
- taskInfoOption.setRequired(false);
- options.addOption(taskInfoOption);
+ Option xmlCallTreeOption = new Option(SCA2AmaltheaHeadlessConstants.XMLCALLTREE_PATH, "xmlCallTree_path", true,
+ SCA2AmaltheaHeadlessConstants.XMLCALLTREE_HELP);
+ xmlCallTreeOption.setRequired(false);
+ options.addOption(xmlCallTreeOption);
- Option buildLogOption = new Option(LLVMConstants.BLOG, "build_log_file", true, "Path to the build_cmd.log file");
+ Option buildLogOption =
+ new Option(SCA2AmaltheaHeadlessConstants.BLOG, "build_log_file", true, SCA2AmaltheaHeadlessConstants.BLOG_HELP);
buildLogOption.setRequired(false);
options.addOption(buildLogOption);
- Option hashDefineOption =
- new Option(LLVMConstants.DLIST, "hashDefines.txt", true, "Path to the hashDefines.txt file");
- hashDefineOption.setRequired(false);
- options.addOption(hashDefineOption);
+ Option hDirOption = new Option(SCA2AmaltheaHeadlessConstants.HDIR_LIST, "hdir_directories", true,
+ SCA2AmaltheaHeadlessConstants.HDIR_LIST_HELP);
+ hDirOption.setRequired(false);
+ options.addOption(hDirOption);
- Option lockinfoOption =
- new Option(LLVMConstants.LOCKINFO, "bsw_lock_functions.csv", true, "Path to the lock_functions.csv file");
+ Option taskInfoOption = new Option(SCA2AmaltheaHeadlessConstants.TASKINFO, "task_info_file", true,
+ SCA2AmaltheaHeadlessConstants.TASKINFO_HELP);
+ taskInfoOption.setRequired(false);
+ options.addOption(taskInfoOption);
+
+
+ Option lockinfoOption = new Option(SCA2AmaltheaHeadlessConstants.LOCKINFO, "bsw_lock_functions", true,
+ SCA2AmaltheaHeadlessConstants.LOCKINFO_HELP);
lockinfoOption.setRequired(false);
options.addOption(lockinfoOption);
-
- Option enableStructMember =
- new Option(LLVMConstants.ENABLE_STRUCT_MEMBER, "enableStructMember", true, "Boolean value for enabling struct members in amalthea file");
+
+ Option enableStructMember = new Option(SCA2AmaltheaHeadlessConstants.ENABLE_STRUCT_MEMBER, "enableStructMember",
+ false, SCA2AmaltheaHeadlessConstants.ENABLE_STRUCT_MEMBER_HELP);
enableStructMember.setRequired(false);
- options.addOption(enableStructMember);
+
+ Option outDirOption = new Option(SCA2AmaltheaHeadlessConstants.OUTDIR, "output_directory", true,
+ SCA2AmaltheaHeadlessConstants.OUTDIR_HELP);
+ outDirOption.setRequired(false);
+ options.addOption(outDirOption);
+
+ options.addOption(enableStructMember);
}
}
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/GenerateAmaltheaModelFromLLVM.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/GenerateAmaltheaModelFromLLVM.java
index efa9d65..9608a9d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/GenerateAmaltheaModelFromLLVM.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/GenerateAmaltheaModelFromLLVM.java
@@ -65,8 +65,9 @@
this.sca2amProperties = llvmProperties;
}
+
/**
- * @throws IOException IOException
+ * @throws IOException IOException
* @throws InterruptedException InterruptedException
* @return int status of the amalthea model generation
*/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEAStarterProperties.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEAStarterProperties.java
index f5fec96..04b5265 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEAStarterProperties.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEAStarterProperties.java
@@ -1,16 +1,7 @@
/**
- ********************************************************************************
- * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
*/
package org.eclipse.app4mc.sca2amalthea.llvm.headless;
@@ -19,6 +10,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.app4mc.sca.util.util.SCAUtils;
import org.eclipse.app4mc.sca2amalthea.llvm.starter.LLVMStarterProperties;
import com.google.common.base.Joiner;
@@ -46,6 +38,9 @@
public static final String LOCK_DEFINITION_FILE = "default_bsw_lock_functions.csv";
+ /**
+ * No Arg constructor
+ */
public SCA2AMALTHEAStarterProperties() {
// no -arg constructor
}
@@ -99,24 +94,24 @@
* @param outPutPath the outPutPath to set
*/
public void setOutPutPath(final String outPutPath) {
- if ((outPutPath == null) || outPutPath.isEmpty() || new File(outPutPath).isAbsolute()) {
+ if ((outPutPath == null) || outPutPath.isEmpty() || SCAUtils.isAbsolutePath(outPutPath)) {
this.outPutPath = outPutPath;
}
else {
- this.outPutPath = this.projectPath + outPutPath;
+ this.outPutPath = this.projectPath + File.separator + outPutPath;
}
- this.llvmStarterProperties.setOutPutPath(outPutPath);
+ this.llvmStarterProperties.setOutPutPath(this.outPutPath);
}
/**
* @param buildLogFile the build command log file path
*/
public void setBuildLogFile(final String buildLogFile) {
- if ((buildLogFile == null) || buildLogFile.isEmpty() || new File(buildLogFile).isAbsolute()) {
+ if ((buildLogFile == null) || buildLogFile.isEmpty() || SCAUtils.isAbsolutePath(buildLogFile)) {
this.buildLogFile = buildLogFile;
}
else {
- this.buildLogFile = this.projectPath + buildLogFile;
+ this.buildLogFile = this.projectPath + File.separator + buildLogFile;
}
}
@@ -143,11 +138,11 @@
List<String> hdirList = new ArrayList<>();
if ((hDirFilePath != null) && !hDirFilePath.isEmpty()) {
for (String s : hDirFilePath.split(File.pathSeparator)) {
- if (new File(s).isAbsolute()) {
+ if (SCAUtils.isAbsolutePath(s)) {
hdirList.add(s);
}
else {
- hdirList.add(this.projectPath + s);
+ hdirList.add(this.projectPath + File.separator + s);
}
}
}
@@ -158,11 +153,11 @@
* @param taskListFile the taskListFile to set
*/
public void setTaskListFile(final String taskListFile) {
- if ((taskListFile == null) || taskListFile.isEmpty() || new File(taskListFile).isAbsolute()) {
+ if ((taskListFile == null) || taskListFile.isEmpty() || SCAUtils.isAbsolutePath(taskListFile)) {
this.taskListFile = taskListFile;
}
else {
- this.taskListFile = this.projectPath + taskListFile;
+ this.taskListFile = this.projectPath + File.separator + taskListFile;
}
}
@@ -251,11 +246,11 @@
* @param lockinfoFile the lockinfoFile to set
*/
public void setLockinfoFile(final String lockinfoFile) {
- if ((lockinfoFile == null) || lockinfoFile.isEmpty() || new File(lockinfoFile).isAbsolute()) {
+ if ((lockinfoFile == null) || lockinfoFile.isEmpty() || SCAUtils.isAbsolutePath(lockinfoFile)) {
this.lockinfoFile = lockinfoFile;
}
else {
- this.lockinfoFile = this.projectPath + lockinfoFile;
+ this.lockinfoFile = this.projectPath + File.separator + lockinfoFile;
}
}
@@ -282,13 +277,19 @@
this.binDirectory = binDirecotry;
}
-public String getPathToxmlCallTree() {
- return pathToxmlCallTree;
-}
+ /**
+ * @return path of the xmlCallTree
+ */
+ public String getPathToxmlCallTree() {
+ return this.pathToxmlCallTree;
+ }
-public void setPathToxmlCallTree(String pathToxmlCallTree) {
- this.pathToxmlCallTree = pathToxmlCallTree;
-}
+ /**
+ * @param pathToxmlCallTree the path of the xmlCallTree to be set.
+ */
+ public void setPathToxmlCallTree(final String pathToxmlCallTree) {
+ this.pathToxmlCallTree = pathToxmlCallTree;
+ }
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/ProcessExecutor.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/ProcessExecutor.java
index af381b6..5d91bed 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/ProcessExecutor.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/ProcessExecutor.java
@@ -33,9 +33,9 @@
/**
* @param workingDirectory {@link String}
- * @param commandLine Command line arguments
- * @param standardOutFile {@link String}
- * @param standardErrFile {@link String}
+ * @param commandLine Command line arguments
+ * @param standardOutFile {@link String}
+ * @param standardErrFile {@link String}
*/
public ProcessExecutor(final String workingDirectory, final String standardOutFile, final String standardErrFile,
final String... commandLine) {
@@ -47,7 +47,7 @@
}
/**
- * @throws IOException IOException
+ * @throws IOException IOException
* @throws InterruptedException InterruptedException
*/
public void runProgramm() throws IOException, InterruptedException {
@@ -75,7 +75,6 @@
UtilityForProcessHandling.setCurrentRunningProcess(p);
p.waitFor();
-
if (UtilityForProcessHandling.isModelGenerationcancelled()) {
throw new InterruptedException("Programm has been cancelled.");
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/SCA2AmaltheaHeadlessConstants.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/SCA2AmaltheaHeadlessConstants.java
new file mode 100644
index 0000000..e394840
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/SCA2AmaltheaHeadlessConstants.java
@@ -0,0 +1,128 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.llvm.util;
+
+
+/**
+ * Constants for all the LLVM operations
+ */
+public final class SCA2AmaltheaHeadlessConstants {
+
+ /**
+ * Private constructor
+ */
+ private SCA2AmaltheaHeadlessConstants() {
+ // Private constructor
+ }
+
+ /**
+ *
+ */
+ public static final String PDIR = "-pdir";
+ /**
+ *
+ */
+ public static final String TASKINFO = "-taskinfo";
+ /**
+ *
+ */
+ public static final String LOCKINFO = "-lockinfo";
+ /**
+ *
+ */
+ public static final String OUTDIR = "-outdir";
+ /**
+ *
+ */
+ public static final String HDIR_LIST = "-hdirlist";
+ /**
+ *
+ */
+ public static final String ASTP = "-astp";
+ /**
+ *
+ */
+ public static final String BLOG = "-blog";
+ /**
+ *
+ */
+ public static final String DLIST = "-dlist";
+
+ /**
+ *
+ */
+ public static final String OUT_FOLDER = "-out";
+
+ /**
+ *
+ */
+ public static final String ENABLE_STRUCT_MEMBER = "-enableStructMember";
+
+ /**
+ *
+ */
+ public static final String XMLCALLTREE_PATH = "-xmlCallTreePath";
+
+ /**
+ *
+ */
+ public static final String HELP = "-h";
+
+ /**
+ *
+ */
+ public static final String C_PROJECT_DIR_HELP =
+ "Mandatory parameter. This parameter takes path of the root directory of the c project";
+
+ /**
+ *
+ */
+ public static final String AST_PARSER_HELP =
+ "Mandatory parameter if xmlCallTreePath is not provided .This parameter takes path to the LLVM ASTParser executable";
+
+ /**
+ *
+ */
+ public static final String XMLCALLTREE_HELP =
+ "This is a optional parameter and it takes the path of the XMLCallTree.xml to be converted to amalthea model";
+
+ /**
+ *
+ */
+ public static final String BLOG_HELP = "This is a optional parameter and it takes path to the build_cmd.log file";
+
+ /**
+ *
+ */
+ public static final String HDIR_LIST_HELP =
+ "This is a optional parameter and it takes a list of directory paths that contain header files.The directory paths should be seperated by the path seperator ie ;";
+
+
+ /**
+ *
+ */
+ public static final String TASKINFO_HELP =
+ "This is a optional parameter and it takes path of the task/isr information file";
+
+ /**
+ *
+ */
+ public static final String LOCKINFO_HELP =
+ "This is a optional parameter and it takes path of a csv file containing information of lock functions.";
+
+ /**
+ *
+ */
+ public static final String ENABLE_STRUCT_MEMBER_HELP =
+ "This is a optional parameter and it takes a boolean value for reporting struct member accesses in amalthea model.";
+
+ /**
+ *
+ */
+ public static final String OUTDIR_HELP =
+ "This is a optional parameter and it takes the path of the directory where the amalthea model has to be stored.";
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/pom.tycho b/eclipse-tools/sca2amalthea/plugins/pom.tycho
index 39f0a77..f15ccc3 100644
--- a/eclipse-tools/sca2amalthea/plugins/pom.tycho
+++ b/eclipse-tools/sca2amalthea/plugins/pom.tycho
@@ -13,3 +13,4 @@
org.eclipse.app4mc.sca2amalthea.serialization
org.eclipse.app4mc.sca2amalthea.ui
org.eclipse.app4mc.sca2amalthea.utils
+org.eclipse.app4mc.sca2amalthea.headless
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/.classpath b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/.project b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/.project
new file mode 100644
index 0000000..02bf6d6
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.sca2amalthea.headless.product</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1473beb
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Product
+Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.headless.product;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.headless.product
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/README-sca-jar.txt b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/README-sca-jar.txt
new file mode 100644
index 0000000..eab5319
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/README-sca-jar.txt
@@ -0,0 +1,48 @@
+SCA2Amalthea Headless Tool
+
+Launch via executable jar (uses the bnd launcher)
+
+ java -jar sca.jar <-pdir> [-astp] [-hdirlist] [-taskinfo] [-lockinfo] [-enableStructMember] [-xmlCallTreePath] [-outdir]
+
+ Options:
+ -hdirlist This optional parameter takes a list of directory paths that contain header files.The directory paths should be seperated by the path seperator ie ;
+
+ -taskinfo This optional parameter takes path of the task/isr information file
+
+ -lockinfo This optional parameter takes path of a csv file containing information of lock functions.
+
+ -enableStructMember This optional parameter takes a boolean value for reporting struct member accesses in amalthea model.
+
+ -xmlCallTreePath This optional parameter takes the path of the XMLCallTree.xml to be converted to amalthea model.
+
+ -outdir This optional parameter takes the path of the directory where the amalthea model has to be stored.
+
+ Mandatory Parameter:
+ -pdir Mandatory parameter.This parameter takes path of the root directory of the c project.
+
+ -astp Mandatory parameter if xmlCallTreePath option is not provided. This parameter takes path to the LLVM ASTParser executable.
+ Examples:
+
+ Displaying sca2Amalthea help
+ java -jar sca.jar -h
+
+ Generate amalthea model for all source files in project directory
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir
+
+ Generate amalthea model for all source files in project directory with task information
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -taskinfo C:\\Temp\\project_dir\\task_info\\taskInfo.csv
+
+ Generate amalthea model from xmlCallTree.xml file
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -xmlCallTreePath C:\\Temp\\project_dir\\_gen\\sca2Amalthea\\XMLCallTree.xml
+
+ Generate amalthea model for all source files in project directory with struct members enabled
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -enableStructMember
+
+ Generate amalthea model for some header directory paths
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -hdirlist C:\\Temp\\project_dir\\header_dir1;C:\\Temp\\project_dir\\header_dir2
+
+ Generate amalthea model for all source files in some output directory
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -outdir C:\\Desktop\\outdir
+
+ Open the osgi shell
+ java -jar -Dosgi.console= sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/README.txt b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/README.txt
new file mode 100644
index 0000000..3c2ee88
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/README.txt
@@ -0,0 +1,153 @@
+SCA2Amalthea Headless Tool
+
+The sca2Amalthea headless tool can be started in different ways:
+
+1. Launch via Equinox launcher executable, e.g. on Windows (sca2Amalthea.exe)
+
+ sca2Amalthea <-pdir> [-astp] [-hdirlist] [-taskinfo] [-lockinfo] [-enableStructMember] [-xmlCallTreePath] [-outdir] [-consoleLog] [-console]
+
+ Options:
+ -hdirlist This optional parameter takes a list of directory paths that contain header files.The directory paths should be seperated by the path seperator ie ;
+
+ -taskinfo This optional parameter takes path of the task/isr information file
+
+ -lockinfo This optional parameter takes path of a csv file containing information of lock functions.
+
+ -enableStructMember This optional parameter takes a boolean value for reporting struct member accesses in amalthea model.
+
+ -xmlCallTreePath This optional parameter takes the path of the XMLCallTree.xml to be converted to amalthea model.
+
+ -outdir This optional parameter takes the path of the directory where the amalthea model has to be stored.
+
+ -h Shows the help
+
+ -consoleLog When using the launcher, the console outputs are not printed to the shell.
+ By using this option a separate shell is opened to which the results are printed.
+
+ -console Opens the OSGi console. This option has to be provided in addition to the options listed above.
+
+ Mandatory Parameter:
+ -pdir Mandatory parameter.This parameter takes path of the root directory of the c project.
+
+ -astp Mandatory parameter if xmlCallTreePath option is not provided. This parameter takes path to the LLVM ASTParser executable.
+
+ Examples:
+
+ Displaying sca2Amalthea help
+ sca2Amalthea.exe -h -console
+
+ Generate amalthea model for all source files in project directory
+ sca2Amalthea.exe -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir
+
+ Generate amalthea model for all source files in project directory with task information
+ sca2Amalthea.exe -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -taskinfo C:\\Temp\\project_dir\\task_info\\taskInfo.csv
+
+ Generate amalthea model from xmlCallTree.xml file
+ sca2Amalthea.exe -pdir C:\\Temp\\project_dir -xmlCallTreePath C:\\Temp\\project_dir\\_gen\\sca2Amalthea\\XMLCallTree.xml
+
+ Generate amalthea model for all source files in project directory with struct members enabled
+ sca2Amalthea.exe -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -enableStructMember
+
+ Generate amalthea model for with some header directory paths
+ sca2Amalthea.exe -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -hdirlist C:\\Temp\\project_dir\\header_dir1;C:\\Temp\\project_dir\\header_dir2
+
+ Generate amalthea model for all source files in some output directory
+ sca2Amalthea.exe -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -outdir C:\\Desktop\\outdir
+
+
+2. Launch via executable jar (uses the bnd launcher)
+
+ java -jar sca.jar <-pdir> [-astp] [-hdirlist] [-taskinfo] [-lockinfo] [-enableStructMember] [-xmlCallTreePath] [-outdir]
+
+ Options:
+ -hdirlist This optional parameter takes a list of directory paths that contain header files.The directory paths should be seperated by the path seperator ie ;
+
+ -taskinfo This optional parameter takes path of the task/isr information file
+
+ -lockinfo This optional parameter takes path of a csv file containing information of lock functions.
+
+ -enableStructMember This optional parameter takes a boolean value for reporting struct member accesses in amalthea model.
+
+ -xmlCallTreePath This optional parameter takes the path of the XMLCallTree.xml to be converted to amalthea model.
+
+ -outdir This optional parameter takes the path of the directory where the amalthea model has to be stored.
+
+ Mandatory Parameter:
+ -pdir Mandatory parameter.This parameter takes path of the root directory of the c project.
+
+ -astp Mandatory parameter if xmlCallTreePath option is not provided. This parameter takes path to the LLVM ASTParser executable.
+
+ Examples:
+
+ Displaying sca2Amalthea help
+ java -jar sca.jar -h
+
+ Generate amalthea model for all source files in project directory
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir
+
+ Generate amalthea model for all source files in project directory with task information
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -taskinfo C:\\Temp\\project_dir\\task_info\\taskInfo.csv
+
+ Generate amalthea model from xmlCallTree.xml file
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -xmlCallTreePath C:\\Temp\\project_dir\\_gen\\sca2Amalthea\\XMLCallTree.xml
+
+ Generate amalthea model for all source files in project directory with struct members enabled
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -enableStructMember
+
+ Generate amalthea model for header directory paths
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -hdirlist C:\\Temp\\project_dir\\header_dir1;C:\\Temp\\project_dir\\header_dir2
+
+ Generate amalthea model for all source files in some output directory
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -outdir C:\\Desktop\\outdir
+
+ Open the osgi shell
+ java -jar -Dosgi.console= sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir
+
+
+3. Launch via Equinox Framework JAR
+
+ java -jar plugins/org.eclipse.osgi_3.15.100.v20191114-1701.jar -configuration ./configuration <-pdir> [-astp] [-hdirlist] [-taskinfo] [-lockinfo] [-enableStructMember] [-xmlCallTreePath] [-outdir]
+
+ Options:
+ -hdirlist This optional parameter takes a list of directory paths that contain header files.The directory paths should be seperated by the path seperator ie ;
+
+ -taskinfo This optional parameter takes path of the task/isr information file
+
+ -lockinfo This optional parameter takes path of a csv file containing information of lock functions.
+
+ -enableStructMember This optional parameter takes a boolean value for reporting struct member accesses in amalthea model.
+
+ -xmlCallTreePath This optional parameter takes the path of the XMLCallTree.xml to be converted to amalthea model.
+
+ -outdir This optional parameter takes the path of the directory where the amalthea model has to be stored.
+
+ Mandatory Parameter:
+ -pdir Mandatory parameter.This parameter takes path of the root directory of the c project.
+
+ -astp Mandatory parameter if xmlCallTreePath option is not provided. This parameter takes path to the LLVM ASTParser executable.
+
+ -configuration<location> This parameter is needed to specify the location of the config.ini file.When starting the via Equinox Framework JAR the location needs to be provided this way to startup correctly.
+
+
+ Examples:
+
+ Displaying sca2Amalthea help
+ java -jar sca.jar -h
+
+ Generate amalthea model for all source files in project directory
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir
+
+ Generate amalthea model for all source files in project directory with task information
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -taskinfo C:\\Temp\\project_dir\\task_info\\taskInfo.csv
+
+ Generate amalthea model from xmlCallTree.xml file
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -xmlCallTreePath C:\\Temp\\project_dir\\_gen\\sca2Amalthea\\XMLCallTree.xml
+
+ Generate amalthea model for all source files in project directory with struct members enabled
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -enableStructMember
+
+ Generate amalthea model for some header directory paths
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -hdirlist C:\\Temp\\project_dir\\header_dir1;C:\\Temp\\project_dir\\header_dir2
+
+ Generate amalthea model for all source files in some output directory
+ java -jar sca.jar -pdir C:\\Temp\\project_dir -astp C:\\Desktop\\ast_dir -outdir C:\\Desktop\\outdir
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/SCA2AmaltheaHeadless.product b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/SCA2AmaltheaHeadless.product
new file mode 100644
index 0000000..9d8223e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/SCA2AmaltheaHeadless.product
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="SCA2Amalthea Headless" uid="org.eclipse.plat4mc.sca2amalthea.headless.product.id" version="1.0.0" useFeatures="false" includeLaunchers="true">
+
+ <configIni use="">
+ </configIni>
+
+ <launcherArgs>
+ </launcherArgs>
+
+ <windowImages/>
+
+ <launcher name="sca2Amalthea">
+ <win useIco="false">
+ <bmp/>
+ </win>
+ </launcher>
+
+ <vm>
+ </vm>
+
+ <plugins>
+ <plugin id="com.google.guava"/>
+ <plugin id="com.ibm.icu"/>
+ <plugin id="javax.annotation"/>
+ <plugin id="javax.inject"/>
+ <plugin id="javax.xml"/>
+ <plugin id="org.apache.batik.constants"/>
+ <plugin id="org.apache.batik.css"/>
+ <plugin id="org.apache.batik.i18n"/>
+ <plugin id="org.apache.batik.util"/>
+ <plugin id="org.apache.commons.cli"/>
+ <plugin id="org.apache.commons.io"/>
+ <plugin id="org.apache.commons.jxpath"/>
+ <plugin id="org.apache.commons.lang"/>
+ <plugin id="org.apache.commons.logging"/>
+ <plugin id="org.apache.commons.math3"/>
+ <plugin id="org.apache.felix.gogo.command"/>
+ <plugin id="org.apache.felix.gogo.runtime"/>
+ <plugin id="org.apache.felix.gogo.shell"/>
+ <plugin id="org.apache.felix.scr"/>
+ <plugin id="org.apache.log4j"/>
+ <plugin id="org.apache.xerces"/>
+ <plugin id="org.apache.xml.resolver"/>
+ <plugin id="org.apache.xml.serializer"/>
+ <plugin id="org.apache.xmlgraphics"/>
+ <plugin id="org.eclipse.app4mc.amalthea.model"/>
+ <plugin id="org.eclipse.app4mc.sca.amalthea.loader"/>
+ <plugin id="org.eclipse.app4mc.sca.amalthea.model.utils"/>
+ <plugin id="org.eclipse.app4mc.sca.logging"/>
+ <plugin id="org.eclipse.app4mc.sca.scheduling.loader"/>
+ <plugin id="org.eclipse.app4mc.sca.ui"/>
+ <plugin id="org.eclipse.app4mc.sca.util"/>
+ <plugin id="org.eclipse.app4mc.sca2amalthea.exporter"/>
+ <plugin id="org.eclipse.app4mc.sca2amalthea.headless"/>
+ <plugin id="org.eclipse.app4mc.sca2amalthea.ir"/>
+ <plugin id="org.eclipse.app4mc.sca2amalthea.ir.loader"/>
+ <plugin id="org.eclipse.app4mc.sca2amalthea.llvm"/>
+ <plugin id="org.eclipse.app4mc.sca2amalthea.scairmodelenricher"/>
+ <plugin id="org.eclipse.app4mc.sca2amalthea.serialization"/>
+ <plugin id="org.eclipse.app4mc.sca2amalthea.utils"/>
+ <plugin id="org.eclipse.compare.core"/>
+ <plugin id="org.eclipse.core.commands"/>
+ <plugin id="org.eclipse.core.contenttype"/>
+ <plugin id="org.eclipse.core.databinding"/>
+ <plugin id="org.eclipse.core.databinding.observable"/>
+ <plugin id="org.eclipse.core.databinding.property"/>
+ <plugin id="org.eclipse.core.expressions"/>
+ <plugin id="org.eclipse.core.filesystem"/>
+ <plugin id="org.eclipse.core.filesystem.linux.ppc64le" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.jobs"/>
+ <plugin id="org.eclipse.core.resources"/>
+ <plugin id="org.eclipse.core.resources.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.runtime"/>
+ <plugin id="org.eclipse.e4.core.commands"/>
+ <plugin id="org.eclipse.e4.core.contexts"/>
+ <plugin id="org.eclipse.e4.core.di"/>
+ <plugin id="org.eclipse.e4.core.di.annotations"/>
+ <plugin id="org.eclipse.e4.core.di.extensions"/>
+ <plugin id="org.eclipse.e4.core.di.extensions.supplier"/>
+ <plugin id="org.eclipse.e4.core.services"/>
+ <plugin id="org.eclipse.e4.emf.xpath"/>
+ <plugin id="org.eclipse.e4.ui.bindings"/>
+ <plugin id="org.eclipse.e4.ui.css.core"/>
+ <plugin id="org.eclipse.e4.ui.css.swt"/>
+ <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
+ <plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.dialogs"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench"/>
+ <plugin id="org.eclipse.e4.ui.services"/>
+ <plugin id="org.eclipse.e4.ui.swt.gtk" fragment="true"/>
+ <plugin id="org.eclipse.e4.ui.widgets"/>
+ <plugin id="org.eclipse.e4.ui.workbench"/>
+ <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/>
+ <plugin id="org.eclipse.e4.ui.workbench.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench3"/>
+ <plugin id="org.eclipse.emf.common"/>
+ <plugin id="org.eclipse.emf.ecore"/>
+ <plugin id="org.eclipse.emf.ecore.change"/>
+ <plugin id="org.eclipse.emf.ecore.xcore.lib"/>
+ <plugin id="org.eclipse.emf.ecore.xmi"/>
+ <plugin id="org.eclipse.emf.edit"/>
+ <plugin id="org.eclipse.emf.transaction"/>
+ <plugin id="org.eclipse.emf.validation"/>
+ <plugin id="org.eclipse.emf.workspace"/>
+ <plugin id="org.eclipse.equinox.app"/>
+ <plugin id="org.eclipse.equinox.common"/>
+ <plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
+ <plugin id="org.eclipse.equinox.preferences"/>
+ <plugin id="org.eclipse.equinox.registry"/>
+ <plugin id="org.eclipse.help"/>
+ <plugin id="org.eclipse.jface"/>
+ <plugin id="org.eclipse.jface.databinding"/>
+ <plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
+ <plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.osgi.util"/>
+ <plugin id="org.eclipse.sphinx.emf"/>
+ <plugin id="org.eclipse.sphinx.emf.workspace"/>
+ <plugin id="org.eclipse.sphinx.platform"/>
+ <plugin id="org.eclipse.swt"/>
+ <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.ppc64le" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.team.core"/>
+ <plugin id="org.eclipse.ui"/>
+ <plugin id="org.eclipse.ui.cocoa" fragment="true"/>
+ <plugin id="org.eclipse.ui.workbench"/>
+ <plugin id="org.eclipse.xtend.lib"/>
+ <plugin id="org.eclipse.xtend.lib.macro"/>
+ <plugin id="org.eclipse.xtext.logging" fragment="true"/>
+ <plugin id="org.eclipse.xtext.xbase.lib"/>
+ <plugin id="org.jdom"/>
+ <plugin id="org.slf4j.api"/>
+ <plugin id="org.slf4j.impl.log4j12" fragment="true"/>
+ <plugin id="org.w3c.css.sac"/>
+ <plugin id="org.w3c.dom.events"/>
+ <plugin id="org.w3c.dom.smil"/>
+ <plugin id="org.w3c.dom.svg"/>
+ </plugins>
+
+ <configurations>
+ <plugin id="org.apache.felix.scr" autoStart="true" startLevel="0" />
+ <property name="eclipse.ignoreApp" value="true" />
+ <property name="osgi.noShutdown" value="true" />
+ </configurations>
+
+ <preferencesInfo>
+ <targetfile overwrite="false"/>
+ </preferencesInfo>
+
+ <cssInfo>
+ </cssInfo>
+
+</product>
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/about.html b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/about.html
new file mode 100644
index 0000000..164f781
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ ("Content"). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 ("EPL"). A copy of the EPL is
+ available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, "Program" will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ ("Redistributor") and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ </p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/build.properties b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/build.properties
new file mode 100644
index 0000000..3527903
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ sca.bndrun,\
+ pom.xml
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/epl-2.0.html b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Eclipse Public License - Version 2.0</title>
+ <style type="text/css">
+ body {
+ margin: 1.5em 3em;
+ }
+ h1{
+ font-size:1.5em;
+ }
+ h2{
+ font-size:1em;
+ margin-bottom:0.5em;
+ margin-top:1em;
+ }
+ p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ ul, ol{
+ list-style-type:none;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Eclipse Public License - v 2.0</h1>
+ <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+ </p>
+ <h2 id="definitions">1. DEFINITIONS</h2>
+ <p>“Contribution” means:</p>
+ <ul>
+ <li>a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+ </li>
+ <li>
+ b) in the case of each subsequent Contributor:
+ <ul>
+ <li>i) changes to the Program, and</li>
+ <li>ii) additions to the Program;</li>
+ </ul>
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ “originates” from a Contributor if it was added to the Program by such
+ Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+ </li>
+ </ul>
+ <p>“Contributor” means any person or entity that Distributes the Program.</p>
+ <p>“Licensed Patents” mean patent claims licensable by a Contributor which
+ are necessarily infringed by the use or sale of its Contribution alone
+ or when combined with the Program.
+ </p>
+ <p>“Program” means the Contributions Distributed in accordance with this
+ Agreement.
+ </p>
+ <p>“Recipient” means anyone who receives the Program under this Agreement
+ or any Secondary License (as applicable), including Contributors.
+ </p>
+ <p>“Derivative Works” shall mean any work, whether in Source Code or other
+ form, that is based on (or derived from) the Program and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship.
+ </p>
+ <p>“Modified Works” shall mean any work in Source Code or other form that
+ results from an addition to, deletion from, or modification of the
+ contents of the Program, including, for purposes of clarity any new file
+ in Source Code form that contains any contents of the Program. Modified
+ Works shall not include works that contain only declarations, interfaces,
+ types, classes, structures, or files of the Program solely in each case
+ in order to link to, bind by name, or subclass the Program or Modified
+ Works thereof.
+ </p>
+ <p>“Distribute” means the acts of a) distributing or b) making available
+ in any manner that enables the transfer of a copy.
+ </p>
+ <p>“Source Code” means the form of a Program preferred for making
+ modifications, including but not limited to software source code,
+ documentation source, and configuration files.
+ </p>
+ <p>“Secondary License” means either the GNU General Public License,
+ Version 2.0, or any later versions of that license, including any
+ exceptions or additional permissions as identified by the initial
+ Contributor.
+ </p>
+ <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+ <ul>
+ <li>a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+ </li>
+ <li>b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if,
+ at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered
+ by the Licensed Patents. The patent license shall not apply to any
+ other combinations which include the Contribution. No hardware per
+ se is licensed hereunder.
+ </li>
+ <li>c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the rights
+ and licenses granted hereunder, each Recipient hereby assumes sole
+ responsibility to secure any other intellectual property rights needed,
+ if any. For example, if a third party patent license is required to
+ allow Recipient to Distribute the Program, it is Recipient's
+ responsibility to acquire that license before distributing the Program.
+ </li>
+ <li>d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+ </li>
+ <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+ makes additional grants to any Recipient (other than those set forth
+ in this Agreement) as a result of such Recipient's receipt of the
+ Program under the terms of a Secondary License (if permitted under
+ the terms of Section 3).
+ </li>
+ </ul>
+ <h2 id="requirements">3. REQUIREMENTS</h2>
+ <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+ <ul>
+ <li>a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+ </li>
+ <li>
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ <ul>
+ <li>i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including warranties
+ or conditions of title and non-infringement, and implied warranties
+ or conditions of merchantability and fitness for a particular purpose;
+ </li>
+ <li>ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special, incidental
+ and consequential damages, such as lost profits;
+ </li>
+ <li>iii) does not attempt to limit or alter the recipients' rights in the
+ Source Code under section 3.2; and
+ </li>
+ <li>iv) requires any subsequent distribution of the Program by any party
+ to be under a license that satisfies the requirements of this section 3.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p>3.2 When the Program is Distributed as Source Code:</p>
+ <ul>
+ <li>a) it must be made available under this Agreement, or if the Program (i)
+ is combined with other material in a separate file or files made available
+ under a Secondary License, and (ii) the initial Contributor attached to
+ the Source Code the notice described in Exhibit A of this Agreement,
+ then the Program may be made available under the terms of such
+ Secondary Licenses, and
+ </li>
+ <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+ </ul>
+ <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+ attribution notices, disclaimers of warranty, or limitations of liability
+ (‘notices’) contained within the Program from any copy of the Program which
+ they Distribute, provided that Contributors may add their own appropriate
+ notices.
+ </p>
+ <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+ <p>Commercial distributors of software may accept certain responsibilities
+ with respect to end users, business partners and the like. While this
+ license is intended to facilitate the commercial use of the Program, the
+ Contributor who includes the Program in a commercial product offering should
+ do so in a manner which does not create potential liability for other
+ Contributors. Therefore, if a Contributor includes the Program in a
+ commercial product offering, such Contributor (“Commercial Contributor”)
+ hereby agrees to defend and indemnify every other Contributor
+ (“Indemnified Contributor”) against any losses, damages and costs
+ (collectively “Losses”) arising from claims, lawsuits and other legal actions
+ brought by a third party against the Indemnified Contributor to the extent
+ caused by the acts or omissions of such Commercial Contributor in connection
+ with its distribution of the Program in a commercial product offering.
+ The obligations in this section do not apply to any claims or Losses relating
+ to any actual or alleged intellectual property infringement. In order to
+ qualify, an Indemnified Contributor must: a) promptly notify the
+ Commercial Contributor in writing of such claim, and b) allow the Commercial
+ Contributor to control, and cooperate with the Commercial Contributor in,
+ the defense and any related settlement negotiations. The Indemnified
+ Contributor may participate in any such claim at its own expense.
+ </p>
+ <p>For example, a Contributor might include the Program
+ in a commercial product offering, Product X. That Contributor is then a
+ Commercial Contributor. If that Commercial Contributor then makes performance
+ claims, or offers warranties related to Product X, those performance claims
+ and warranties are such Commercial Contributor's responsibility alone.
+ Under this section, the Commercial Contributor would have to defend claims
+ against the other Contributors related to those performance claims and
+ warranties, and if a court requires any other Contributor to pay any damages
+ as a result, the Commercial Contributor must pay those damages.
+ </p>
+ <h2 id="warranty">5. NO WARRANTY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+ WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+ solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its
+ exercise of rights under this Agreement, including but not limited to the
+ risks and costs of program errors, compliance with applicable laws, damage
+ to or loss of data, programs or equipment, and unavailability or
+ interruption of operations.
+ </p>
+ <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+ LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ </p>
+ <h2 id="general">7. GENERAL</h2>
+ <p>If any provision of this Agreement is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of the
+ remainder of the terms of this Agreement, and without further action by the
+ parties hereto, such provision shall be reformed to the minimum extent
+ necessary to make such provision valid and enforceable.
+ </p>
+ <p>If Recipient institutes patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+ (excluding combinations of the Program with other software or hardware)
+ infringes such Recipient's patent(s), then such Recipient's rights granted
+ under Section 2(b) shall terminate as of the date such litigation is filed.
+ </p>
+ <p>All Recipient's rights under this Agreement shall terminate if it fails to
+ comply with any of the material terms or conditions of this Agreement and
+ does not cure such failure in a reasonable period of time after becoming
+ aware of such noncompliance. If all Recipient's rights under this Agreement
+ terminate, Recipient agrees to cease use and distribution of the Program
+ as soon as reasonably practicable. However, Recipient's obligations under
+ this Agreement and any licenses granted by Recipient relating to the
+ Program shall continue and survive.
+ </p>
+ <p>Everyone is permitted to copy and distribute copies of this Agreement,
+ but in order to avoid inconsistency the Agreement is copyrighted and may
+ only be modified in the following manner. The Agreement Steward reserves
+ the right to publish new versions (including revisions) of this Agreement
+ from time to time. No one other than the Agreement Steward has the right
+ to modify this Agreement. The Eclipse Foundation is the initial Agreement
+ Steward. The Eclipse Foundation may assign the responsibility to serve as
+ the Agreement Steward to a suitable separate entity. Each new version of
+ the Agreement will be given a distinguishing version number. The Program
+ (including Contributions) may always be Distributed subject to the version
+ of the Agreement under which it was received. In addition, after a new
+ version of the Agreement is published, Contributor may elect to Distribute
+ the Program (including its Contributions) under the new version.
+ </p>
+ <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+ receives no rights or licenses to the intellectual property of any
+ Contributor under this Agreement, whether expressly, by implication,
+ estoppel or otherwise. All rights in the Program not expressly granted
+ under this Agreement are reserved. Nothing in this Agreement is intended
+ to be enforceable by any entity that is not a Contributor or Recipient.
+ No third-party beneficiary rights are created under this Agreement.
+ </p>
+ <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
+ <p>“This Source Code may also be made available under the following
+ Secondary Licenses when the conditions for such availability set forth
+ in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+ version(s), and exceptions or additional permissions here}.”
+ </p>
+ <blockquote>
+ <p>Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+ </p>
+ <p>If it is not possible or desirable to put the notice in a particular file,
+ then You may include the notice in a location (such as a LICENSE file in a
+ relevant directory) where a recipient would be likely to look for
+ such a notice.
+ </p>
+ <p>You may add additional accurate notices of copyright ownership.</p>
+ </blockquote>
+ </body>
+</html>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/plugin.xml b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/plugin.xml
new file mode 100644
index 0000000..5535690
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/plugin.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+</plugin>
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/pom.xml b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/pom.xml
new file mode 100644
index 0000000..de8ee81
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/pom.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>sca2amalthea</groupId>
+ <artifactId>parent</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <groupId>sca2amalthea</groupId>
+ <artifactId>org.eclipse.app4mc.sca2amalthea.headless.product</artifactId>
+ <packaging>eclipse-repository</packaging>
+ <version>1.0.0-SNAPSHOT</version>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-repository-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <includeAllDependencies>true</includeAllDependencies>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-director-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <executions>
+ <execution>
+ <id>materialize-products</id>
+ <goals>
+ <goal>materialize-products</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>archive-products</id>
+ <goals>
+ <goal>archive-products</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>biz.aQute.bnd</groupId>
+ <artifactId>bnd-indexer-maven-plugin</artifactId>
+ <version>4.3.1</version>
+ <configuration>
+ <inputDir>${project.build.directory}/repository/plugins/</inputDir>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <id>index</id>
+ <goals>
+ <goal>local-index</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- <plugin>
+ <groupId>biz.aQute.bnd</groupId>
+ <artifactId>bnd-resolver-maven-plugin</artifactId>
+ <version>4.3.1</version>
+ <configuration>
+ <failOnChanges>false</failOnChanges>
+ <bndruns>
+ <bndrun>sca.bndrun</bndrun>
+ </bndruns>
+ <bundles>
+ <include>target/repository/plugins/*</include>
+ </bundles>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>resolve</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>-->
+ <plugin>
+ <groupId>biz.aQute.bnd</groupId>
+ <artifactId>bnd-export-maven-plugin</artifactId>
+ <version>4.3.1</version>
+ <configuration>
+ <failOnChanges>false</failOnChanges>
+ <bndruns>
+ <bndrun>sca.bndrun</bndrun>
+ </bndruns>
+ <bundles>
+ <include>target/repository/plugins/*</include>
+ </bundles>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>export</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/sca.bndrun b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/sca.bndrun
new file mode 100644
index 0000000..99a300b
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.headless.product/sca.bndrun
@@ -0,0 +1,121 @@
+index: target/index.xml;name="org.eclipse.app4mc.sca2amalthea.headless.product"
+-standalone: ${index}
+-runee: JavaSE-1.8
+-runfw: org.eclipse.osgi;version='[3.15.100.v20191114-1701,3.15.100.v20191114-1701]'
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+-runrequires: osgi.identity;filter:='(osgi.identity=org.eclipse.app4mc.sca2amalthea.headless)'
+-runbundles: \
+ com.google.guava;version='[27.1.0,27.1.1)',\
+ com.ibm.icu;version='[64.2.0,64.2.1)',\
+ javax.inject;version='[1.0.0,1.0.1)',\
+ javax.xml;version='[1.3.4,1.3.5)',\
+ org.apache.batik.constants;version='[1.11.0,1.11.1)',\
+ org.apache.batik.css;version='[1.11.0,1.11.1)',\
+ org.apache.batik.i18n;version='[1.11.0,1.11.1)',\
+ org.apache.batik.util;version='[1.11.0,1.11.1)',\
+ org.apache.commons.cli;version='[1.2.0,1.2.1)',\
+ org.apache.commons.io;version='[2.6.0,2.6.1)',\
+ org.apache.commons.jxpath;version='[1.3.0,1.3.1)',\
+ org.apache.commons.lang;version='[2.6.0,2.6.1)',\
+ org.apache.commons.logging;version='[1.2.0,1.2.1)',\
+ org.apache.commons.math3;version='[3.5.0,3.5.1)',\
+ org.apache.felix.scr;version='[2.1.14,2.1.15)',\
+ org.apache.log4j;version='[1.2.15,1.2.16)',\
+ org.apache.xerces;version='[2.9.0,2.9.1)',\
+ org.apache.xml.resolver;version='[1.2.0,1.2.1)',\
+ org.apache.xml.serializer;version='[2.7.1,2.7.2)',\
+ org.apache.xmlgraphics;version='[2.3.0,2.3.1)',\
+ org.eclipse.app4mc.sca2amalthea.headless;version='[1.0.0,1.0.1)',\
+ org.eclipse.core.commands;version='[3.9.600,3.9.601)',\
+ org.eclipse.core.contenttype;version='[3.7.500,3.7.501)',\
+ org.eclipse.core.databinding;version='[1.7.700,1.7.701)',\
+ org.eclipse.core.databinding.observable;version='[1.8.100,1.8.101)',\
+ org.eclipse.core.databinding.property;version='[1.7.200,1.7.201)',\
+ org.eclipse.core.expressions;version='[3.6.600,3.6.601)',\
+ org.eclipse.core.filesystem;version='[1.7.600,1.7.601)',\
+ org.eclipse.core.jobs;version='[3.10.600,3.10.601)',\
+ org.eclipse.core.resources;version='[3.13.600,3.13.601)',\
+ org.eclipse.core.runtime;version='[3.17.0,3.17.1)',\
+ org.eclipse.e4.core.commands;version='[0.12.800,0.12.801)',\
+ org.eclipse.e4.core.contexts;version='[1.8.300,1.8.301)',\
+ org.eclipse.e4.core.di;version='[1.7.500,1.7.501)',\
+ org.eclipse.e4.core.di.annotations;version='[1.6.500,1.6.501)',\
+ org.eclipse.e4.core.di.extensions;version='[0.15.400,0.15.401)',\
+ org.eclipse.e4.core.di.extensions.supplier;version='[0.15.400,0.15.401)',\
+ org.eclipse.e4.core.services;version='[2.2.100,2.2.101)',\
+ org.eclipse.e4.emf.xpath;version='[0.2.500,0.2.501)',\
+ org.eclipse.e4.ui.bindings;version='[0.12.700,0.12.701)',\
+ org.eclipse.e4.ui.css.core;version='[0.12.900,0.12.901)',\
+ org.eclipse.e4.ui.css.swt;version='[0.13.700,0.13.701)',\
+ org.eclipse.e4.ui.css.swt.theme;version='[0.12.500,0.12.501)',\
+ org.eclipse.e4.ui.di;version='[1.2.700,1.2.701)',\
+ org.eclipse.e4.ui.dialogs;version='[1.1.600,1.1.601)',\
+ org.eclipse.e4.ui.model.workbench;version='[2.1.600,2.1.601)',\
+ org.eclipse.e4.ui.services;version='[1.3.700,1.3.701)',\
+ org.eclipse.e4.ui.widgets;version='[1.2.600,1.2.601)',\
+ org.eclipse.e4.ui.workbench;version='[1.11.0,1.11.1)',\
+ org.eclipse.e4.ui.workbench.addons.swt;version='[1.3.700,1.3.701)',\
+ org.eclipse.e4.ui.workbench.renderers.swt;version='[0.14.900,0.14.901)',\
+ org.eclipse.e4.ui.workbench.swt;version='[0.14.800,0.14.801)',\
+ org.eclipse.e4.ui.workbench3;version='[0.15.300,0.15.301)',\
+ org.eclipse.emf.common;version='[2.17.0,2.17.1)',\
+ org.eclipse.emf.ecore;version='[2.20.0,2.20.1)',\
+ org.eclipse.emf.ecore.change;version='[2.14.0,2.14.1)',\
+ org.eclipse.emf.ecore.xcore.lib;version='[1.4.0,1.4.1)',\
+ org.eclipse.emf.ecore.xmi;version='[2.16.0,2.16.1)',\
+ org.eclipse.emf.edit;version='[2.16.0,2.16.1)',\
+ org.eclipse.emf.transaction;version='[1.9.1,1.9.2)',\
+ org.eclipse.emf.validation;version='[1.8.0,1.8.1)',\
+ org.eclipse.emf.workspace;version='[1.5.1,1.5.2)',\
+ org.eclipse.equinox.app;version='[1.4.300,1.4.301)',\
+ org.eclipse.equinox.common;version='[3.10.600,3.10.601)',\
+ org.eclipse.equinox.preferences;version='[3.7.600,3.7.601)',\
+ org.eclipse.equinox.registry;version='[3.8.600,3.8.601)',\
+ org.eclipse.help;version='[3.8.600,3.8.601)',\
+ org.eclipse.jface;version='[3.18.0,3.18.1)',\
+ org.eclipse.jface.databinding;version='[1.9.200,1.9.201)',\
+ org.eclipse.osgi.services;version='[3.8.0,3.8.1)',\
+ org.eclipse.osgi.util;version='[3.5.300,3.5.301)',\
+ org.eclipse.sphinx.emf;version='[0.11.2,0.11.3)',\
+ org.eclipse.sphinx.emf.workspace;version='[0.11.2,0.11.3)',\
+ org.eclipse.sphinx.platform;version='[0.11.2,0.11.3)',\
+ org.eclipse.swt;version='[3.113.0,3.113.1)',\
+ org.eclipse.ui;version='[3.115.0,3.115.1)',\
+ org.eclipse.ui.workbench;version='[3.117.0,3.117.1)',\
+ org.eclipse.xtend.lib;version='[2.20.0,2.20.1)',\
+ org.eclipse.xtend.lib.macro;version='[2.20.0,2.20.1)',\
+ org.eclipse.xtext.xbase.lib;version='[2.20.0,2.20.1)',\
+ org.jdom;version='[1.1.1,1.1.2)',\
+ org.w3c.css.sac;version='[1.3.1,1.3.2)',\
+ org.w3c.dom.events;version='[3.0.0,3.0.1)',\
+ org.w3c.dom.smil;version='[1.0.1,1.0.2)',\
+ org.w3c.dom.svg;version='[1.1.0,1.1.1)',\
+ javax.inject;version='[1.0.0,1.0.1)',\
+ org.eclipse.swt.win32.win32.x86_64,\
+ org.apache.felix.gogo.command,\
+ org.apache.felix.gogo.runtime,\
+ org.apache.felix.gogo.shell,\
+ org.eclipse.equinox.console,\
+ org.eclipse.osgi.services,\
+ org.eclipse.osgi.util,\
+ org.eclipse.app4mc.amalthea.model;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca.amalthea.loader;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca.amalthea.model.utils;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca.logging;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca.scheduling.loader;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca.ui;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca.util;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca2amalthea.exporter;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca2amalthea.ir;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca2amalthea.ir.loader;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca2amalthea.llvm;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca2amalthea.scairmodelenricher;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca2amalthea.serialization;version='[1.0.0,1.0.1)',\
+ org.eclipse.app4mc.sca2amalthea.utils;version='[1.0.0,1.0.1)',\
+ org.slf4j.api;version='[1.7.2,1.7.3)',\
+ org.slf4j.impl.log4j12
+-runproperties: \
+ osgi.console=xxx
+-resolve: auto
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.target b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.target
index 55b6d07..6d3cee4 100644
--- a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.target
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.target
@@ -1,9 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="SCA2AMALTHEA Target" sequenceNumber="1611921626">
+<target name="SCA2AMALTHEA Target" sequenceNumber="1612449955">
<locations>
<location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.platform.sdk.feature.group" version="1.0.0.202011301553"/>
+ <repository location="http://download.eclipse.org/app4mc/updatesites/releases/1.0.0"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
+ <unit id="org.apache.commons.math3" version="3.5.0.v20190611-1023"/>
+ <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.sphinx.sdk.feature.group" version="0.11.2.201802230805"/>
+ <repository location="http://download.eclipse.org/sphinx/updates/0.11.x"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.license.feature.group" version="2.0.2.v20181016-2210"/>
+ <repository location="http://download.eclipse.org/cbi/updates/license"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.equinox.executable.feature.group" version="3.8.600.v20191014-2025"/>
<unit id="org.eclipse.sdk.ide" version="4.14.0.I20191210-0610"/>
<unit id="org.eclipse.emf.ecore.xcore.lib.feature.group" version="1.5.0.v20190401-0856"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="2.20.0.v20191028-0905"/>
@@ -31,22 +49,5 @@
<unit id="org.slf4j.impl.log4j12" version="1.7.2.v20131105-2200"/>
<repository location="http://download.eclipse.org/releases/2019-12"/>
</location>
- <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
- <unit id="org.eclipse.app4mc.platform.sdk.feature.group" version="1.0.0.202011301553"/>
- <repository location="http://download.eclipse.org/app4mc/updatesites/releases/1.0.0"/>
- </location>
- <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
- <unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
- <unit id="org.apache.commons.math3" version="3.5.0.v20190611-1023"/>
- <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository"/>
- </location>
- <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
- <unit id="org.eclipse.sphinx.sdk.feature.group" version="0.11.2.201802230805"/>
- <repository location="http://download.eclipse.org/sphinx/updates/0.11.x"/>
- </location>
- <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
- <unit id="org.eclipse.license.feature.group" version="2.0.2.v20181016-2210"/>
- <repository location="http://download.eclipse.org/cbi/updates/license"/>
- </location>
</locations>
</target>
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.tpd b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.tpd
index ff1de3b..933a622 100644
--- a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.tpd
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.tpd
@@ -45,4 +45,8 @@
location "http://download.eclipse.org/cbi/updates/license" {
org.eclipse.license.feature.group
+}
+
+location "http://download.eclipse.org/releases/2019-12" {
+ org.eclipse.equinox.executable.feature.group
}
\ No newline at end of file