Browse Source

Add StarPU Eclipse Plugin

Nathalie Furmento 4 years ago
parent
commit
1e1f1f8789
42 changed files with 1840 additions and 3 deletions
  1. 1 0
      ChangeLog
  2. 4 0
      Makefile.am
  3. 33 0
      configure.ac
  4. 10 3
      doc/doxygen/Makefile.am
  5. 1 0
      doc/doxygen/chapters/000_introduction.doxy
  6. 127 0
      doc/doxygen/chapters/497_eclipse_plugin.doxy
  7. BIN
      doc/doxygen/chapters/images/eclipse_hello_build.png
  8. BIN
      doc/doxygen/chapters/images/eclipse_hello_fxt.png
  9. BIN
      doc/doxygen/chapters/images/eclipse_hello_graph.png
  10. BIN
      doc/doxygen/chapters/images/eclipse_hello_run.png
  11. BIN
      doc/doxygen/chapters/images/eclipse_install_cdt.png
  12. BIN
      doc/doxygen/chapters/images/eclipse_install_pde.png
  13. BIN
      doc/doxygen/chapters/images/eclipse_installer.png
  14. 5 0
      doc/doxygen/refman.tex
  15. 11 0
      eclipse-plugin/.classpath
  16. 1 0
      eclipse-plugin/.gitignore
  17. 28 0
      eclipse-plugin/.project
  18. 9 0
      eclipse-plugin/.settings/org.eclipse.jdt.core.prefs
  19. 12 0
      eclipse-plugin/META-INF/MANIFEST.MF
  20. 34 0
      eclipse-plugin/Makefile.am
  21. 8 0
      eclipse-plugin/build.properties
  22. 343 0
      eclipse-plugin/build.xml
  23. 35 0
      eclipse-plugin/examples/Makefile.am
  24. 242 0
      eclipse-plugin/examples/hello/.cproject.in
  25. 26 0
      eclipse-plugin/examples/hello/.project
  26. 48 0
      eclipse-plugin/examples/hello/.settings/language.settings.xml
  27. 133 0
      eclipse-plugin/examples/hello/hello.c
  28. BIN
      eclipse-plugin/icons/fxt.png
  29. BIN
      eclipse-plugin/icons/svg.png
  30. BIN
      eclipse-plugin/icons/taskGraph.png
  31. BIN
      eclipse-plugin/icons/vite.png
  32. 159 0
      eclipse-plugin/plugin.xml
  33. 54 0
      eclipse-plugin/src/Makefile.am
  34. 7 0
      eclipse-plugin/src/deploy/build.xml
  35. 79 0
      eclipse-plugin/src/deploy/javaCompilerArgs
  36. 82 0
      eclipse-plugin/src/starpu/handlers/SvgHandler.java
  37. 68 0
      eclipse-plugin/src/starpu/handlers/TaskGraphHandler.java
  38. 70 0
      eclipse-plugin/src/starpu/handlers/TraceGenHandler.java
  39. 95 0
      eclipse-plugin/src/starpu/handlers/TraceUtils.java
  40. 49 0
      eclipse-plugin/src/starpu/handlers/TraceVizHandler.java
  41. 36 0
      eclipse-plugin/tools/cproject.sh
  42. 30 0
      eclipse-plugin/tools/install_workspace.sh

+ 1 - 0
ChangeLog

@@ -53,6 +53,7 @@ New features:
   * Add peek_data interface method.
   * Add STARPU_MPI_REDUX
   * Add starpu_data_query_status2 function.
+  * Add a StarPU Eclipse Plugin
 
 Small features:
   * New configure option --with-check-cflags to define flags for C,

+ 4 - 0
Makefile.am

@@ -67,6 +67,10 @@ if STARPU_USE_JULIA
 SUBDIRS += julia
 endif
 
+if STARPU_BUILD_ECLIPSE_PLUGIN
+SUBDIRS += eclipse-plugin
+endif
+
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libstarpu.pc starpu-1.0.pc starpu-1.1.pc starpu-1.2.pc starpu-1.3.pc
 

+ 33 - 0
configure.ac

@@ -3344,6 +3344,35 @@ AC_SUBST(JULIA, $juliapath)
 
 ###############################################################################
 #                                                                             #
+#                         Eclipse Plugin                                      #
+#                                                                             #
+###############################################################################
+AC_ARG_ENABLE(eclipse-plugin, [AS_HELP_STRING([--enable-eclipse-plugin],
+			      [Build the Eclipse plugin])],
+			      enable_eclipse_plugin=$enableval, enable_eclipse_plugin=no)
+if test "$enable_eclipse_plugin" = "yes" ; then
+   AC_PATH_PROG(eclipsepath, eclipse)
+   AC_MSG_CHECKING(whether eclipse is available)
+   AC_MSG_RESULT($eclipsepath)
+   if test ! -x "$eclipsepath" ; then
+      AC_MSG_ERROR(Eclipse executable '$eclipsepath' is not valid)
+      enable_eclipse_plugin=no
+   fi
+
+   libs=$(for x in starpu-$STARPU_EFFECTIVE_VERSION $(echo $STARPU_EXPORTED_LIBS | sed 's/-l//g') $HWLOC_REQUIRES ; do echo $x ; done)
+   option_libs=$($srcdir/eclipse-plugin/tools/cproject.sh option $libs)
+   module_libs=$($srcdir/eclipse-plugin/tools/cproject.sh module $libs)
+fi
+
+AM_CONDITIONAL([STARPU_BUILD_ECLIPSE_PLUGIN], [test "x$enable_eclipse_plugin" = "xyes"])
+AC_SUBST(ECLIPSE, $eclipsepath)
+AC_SUBST(STARPU_INCLUDE_PATH, $(eval echo ${includedir}/starpu/$STARPU_EFFECTIVE_VERSION))
+AC_SUBST(STARPU_LIB_PATH, $(eval echo ${prefix}/lib))
+AC_SUBST(STARPU_MODULE_LIBS, "$module_libs")
+AC_SUBST(STARPU_OPTION_LIBS, "$option_libs")
+
+###############################################################################
+#                                                                             #
 #                                Final settings                               #
 #                                                                             #
 ###############################################################################
@@ -3540,6 +3569,10 @@ AC_OUTPUT([
 	julia/src/dynamic_compiler/Makefile
 	julia/examples/Makefile
 	julia/examples/execute.sh
+	eclipse-plugin/Makefile
+	eclipse-plugin/src/Makefile
+	eclipse-plugin/examples/Makefile
+	eclipse-plugin/examples/hello/.cproject
 ])
 
 AC_MSG_NOTICE([

+ 10 - 3
doc/doxygen/Makefile.am

@@ -87,6 +87,7 @@ chapters =	\
 	chapters/480_openmp_runtime_support.doxy		\
 	chapters/490_clustering_a_machine.doxy		\
 	chapters/495_interoperability.doxy		\
+	chapters/497_eclipse_plugin.doxy 		\
 	chapters/501_environment_variables.doxy		\
 	chapters/510_configure_options.doxy		\
 	chapters/520_files.doxy		\
@@ -141,7 +142,13 @@ images = 	\
 	chapters/images/tasks_size_overhead.eps \
 	chapters/images/tasks_size_overhead.pdf \
 	chapters/images/tasks_size_overhead.png \
-	chapters/images/temanejo.png
+	chapters/images/temanejo.png		\
+	chapters/images/eclipse_installer.png	\
+	chapters/images/eclipse_install_cdt.png	\
+	chapters/images/eclipse_hello_build.png	\
+	chapters/images/eclipse_hello_run.png	\
+	chapters/images/eclipse_hello_fxt.png	\
+	chapters/images/eclipse_hello_graph.png
 
 if STARPU_BUILD_DOC
 EXTRA_DIST += \
@@ -170,7 +177,7 @@ chapters/version.sty: $(chapters)
 		if test -f $$f ; then $(RM) $$f ; fi ;\
 	done
 
-chapters/version.html: $(chapters)
+chapters/version.html: $(chapters) $(images)
 	@for f in $(chapters) ; do \
                 if test -f $(top_srcdir)/doc/doxygen/$$f ; then $(PROG_STAT) --format=%Y $(top_srcdir)/doc/doxygen/$$f ; fi \
         done | sort -r | head -1 > timestamp_html
@@ -269,7 +276,7 @@ $(DOX_TAG): $(dox_inputs)
 
 $(DOX_HTML_DIR): $(DOX_TAG)
 
-$(DOX_PDF): $(DOX_TAG) refman.tex
+$(DOX_PDF): $(DOX_TAG) refman.tex $(images)
 	@cp $(top_srcdir)/doc/doxygen/chapters/version.sty $(DOX_LATEX_DIR)
 	@cp $(top_srcdir)/doc/doxygen/chapters/images/*pdf $(DOX_LATEX_DIR)
 	@echo $(PDFLATEX) $(DOX_LATEX_DIR)/refman.tex

+ 1 - 0
doc/doxygen/chapters/000_introduction.doxy

@@ -302,6 +302,7 @@ The documentation chapters include
 <li> \ref OpenMPRuntimeSupport
 <li> \ref ClusteringAMachine
 <li> \ref InteroperabilitySupport
+<li> \ref EclipsePlugin
 </ul>
 <li> Part 5: StarPU Reference API
 <ul>

+ 127 - 0
doc/doxygen/chapters/497_eclipse_plugin.doxy

@@ -0,0 +1,127 @@
+/* StarPU --- Runtime system for heterogeneous multicore architectures.
+ *
+ * Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+ *
+ * StarPU is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at
+ * your option) any later version.
+ *
+ * StarPU is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * See the GNU Lesser General Public License in COPYING.LGPL for more details.
+ */
+
+/*! \page EclipsePlugin Eclipse Plugin
+
+The StarPU Eclipse Plugin provides the ability to visualise traces directly from the Eclipse IDE.
+
+\section EclipseInstallation Eclipse Installation
+
+Download the Eclipse installer from
+https://www.eclipse.org/downloads/packages/installer. When you run the
+installer, click on <em>Eclipse IDE for Java Developers</em> to start
+the installation process.
+
+\image html eclipse_installer.png
+\image latex eclipse_installer.png "" width=10cm
+
+To be able to develop C/C++ applications, you need to install the CDT
+plugin. To do so, go to the <em>Help</em> dropdown menu at the top of the
+Eclipse window, choose <em>Install New Software ...</em>. In the new
+window, enter the URL
+http://download.eclipse.org/tools/cdt/releases/9.10
+into the box <em>Work with</em> and press the return key.
+
+\image html eclipse_install_cdt.png
+\image latex eclipse_install_cdt.png "" width=10cm
+
+You need then to select <em>CDT Main Features</em>, then click the
+button <em>Next</em> twice, accept the terms of the license, and click
+the button <em>Finish</em>. Eclipse will ask you to restart.
+
+To be able to compile the plugin, you need to install the plugin
+development environnement (PDE). To do so, go to the menu
+<em>Help</em>, choose <em>Eclipse Marketplace...</em>. In the new
+window, enter <em>PDE</em> into the box <em>Find</em> and press the
+return key.
+
+\image html eclipse_install_pde.png
+\image latex eclipse_install_pde.png "" width=10cm
+
+You can then click on the button <em>Install</em> of the <em>Eclipse
+PDE latest</em>. You may need to confirm the installation, then accept
+the terms of the license, and finally restart the Eclipse IDE.
+
+The installation is now done.
+
+\section PluginInstallation StarPU Eclipse Plugin Compilation and Installation
+
+StarPU can now be compiled and installed with its Eclipse plugin. To
+do so, you first need to configure StarPU with the option \ref
+enable-eclipse-plugin "--enable-eclipse-plugin". The Eclipse IDE
+executable \c eclipse must be in your \c PATH.
+
+\verbatim
+export PATH=$HOME/usr/local/eclipse/java-2021-03/eclipse:$PATH
+mkdir build
+cd build
+../configure --prefix=$HOME/usr/local/starpu --enable-eclipse-plugin
+make
+make install
+\endverbatim
+
+The StarPU Eclipse plugin is installed in the directory \c dropins.
+
+\verbatim
+$ ls $HOME/usr/local/eclipse/java-2021-03/eclipse/dropins
+StarPU_1.0.0.202105272056.jar
+\endverbatim
+
+\section PluginUsage Using The StarPU Eclipse Plugin
+
+You first need to set up your environment for StarPU.
+
+\verbatim
+cd $HOME/usr/local/starpu
+source ./bin/starpu_env
+\endverbatim
+
+The eclipse workspace together with an example is available in \c lib/starpu/eclipse-plugin.
+
+\verbatim
+cd ./lib/starpu/eclipse-plugin
+eclipse -data workspace
+\endverbatim
+
+You can then open the file \c hello/hello.c, and build the application by pressing \c Ctrl-B.
+
+\image html eclipse_hello_build.png
+\image latex eclipse_hello_build.png "" width=10cm
+
+The application can now be executed.
+
+\image html eclipse_hello_run.png
+\image latex eclipse_hello_run.png "" width=10cm
+
+The StarPU plugin eclipse is either available through the icons in the upper toolbar, or from the dropdown menu \c StarPU.
+
+You first need to run the StarPU FxT tool, either through the \c FxT icon, or from the menu \c StarPU / \c StarPU Fxt Tool.
+This will call the tool \c starpu_fxt_tool to generate traces for your application execution.
+
+\image html eclipse_hello_fxt.png
+\image latex eclipse_hello_fxt.png "" width=10cm
+
+You can then visualise the Paje trace with the tool \c vite, or display the graph task directly from eclipse.
+
+\image html eclipse_hello_graph.png
+\image latex eclipse_hello_graph.png "" width=10cm
+
+or through a web browser. From the HTML file, you can see the graph
+task, and by clicking on a task name, it will open the C file in which
+the task submission was called (if you have an editor which
+understands the syntax \c href="file.c#123").
+
+*/

BIN
doc/doxygen/chapters/images/eclipse_hello_build.png


BIN
doc/doxygen/chapters/images/eclipse_hello_fxt.png


BIN
doc/doxygen/chapters/images/eclipse_hello_graph.png


BIN
doc/doxygen/chapters/images/eclipse_hello_run.png


BIN
doc/doxygen/chapters/images/eclipse_install_cdt.png


BIN
doc/doxygen/chapters/images/eclipse_install_pde.png


BIN
doc/doxygen/chapters/images/eclipse_installer.png


+ 5 - 0
doc/doxygen/refman.tex

@@ -193,6 +193,11 @@ Documentation License”.
 \hypertarget{InteropSupport}{}
 \input{InteroperabilitySupport}
 
+\chapter{Eclipse Plugin}
+\label{EclipsePlugin}
+\hypertarget{EclipsePlugin}{}
+\input{EclipsePlugin}
+
 \part{StarPU Reference API}
 
 \chapter{Execution Configuration Through Environment Variables}

+ 11 - 0
eclipse-plugin/.classpath

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry exported="true" kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="build/bin"/>
+</classpath>

+ 1 - 0
eclipse-plugin/.gitignore

@@ -0,0 +1 @@
+build/

+ 28 - 0
eclipse-plugin/.project

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>plugin</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>

+ 9 - 0
eclipse-plugin/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11

+ 12 - 0
eclipse-plugin/META-INF/MANIFEST.MF

@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: StarPU
+Bundle-SymbolicName: StarPU;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.e4.ui.model.workbench,
+ org.eclipse.equinox.registry,
+ org.eclipse.e4.core.di.annotations
+Automatic-Module-Name: StarPU
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ClassPath: .

+ 34 - 0
eclipse-plugin/Makefile.am

@@ -0,0 +1,34 @@
+# StarPU --- Runtime system for heterogeneous multicore architectures.
+#
+# Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+#
+# StarPU is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or (at
+# your option) any later version.
+#
+# StarPU is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# See the GNU Lesser General Public License in COPYING.LGPL for more details.
+#
+include $(top_srcdir)/starpu.mk
+
+EXTRA_DIST =			\
+	tools/cproject.sh	\
+	tools/install_workspace.sh \
+	build.properties	\
+	build.xml		\
+	.classpath		\
+	plugin.xml		\
+	.project		\
+	META-INF/MANIFEST.MF	\
+	icons/fxt.png		\
+	icons/svg.png		\
+	icons/taskGraph.png	\
+	icons/vite.png
+
+SUBDIRS	= src
+SUBDIRS += examples
+

+ 8 - 0
eclipse-plugin/build.properties

@@ -0,0 +1,8 @@
+source.. = src/
+output.. = build/bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .,\
+               icons/,\
+               .classpath,\
+src.includes = .classpath

+ 343 - 0
eclipse-plugin/build.xml

@@ -0,0 +1,343 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="StarPU" default="build.jars" basedir=".">
+
+ 	<property environment="env"/>
+	<property name="p2.build.repo" value="file:${buildDirectory}/buildRepo"/>
+	<property name="basews" value="${ws}"/>
+	<property name="baseos" value="${os}"/>
+	<property name="basearch" value="${arch}"/>
+	<property name="basenl" value="${nl}"/>
+	<property name="bundleId" value="StarPU"/>
+	<property name="bundleVersion" value="1.0.0.202105060849"/>
+	<property name="p2.publishonerror" value="false"/>
+
+	<!-- Compiler settings. -->
+	<property name="javacFailOnError" value="false"/>
+	<property name="javacDebugInfo" value="on"/>
+	<property name="javacVerbose" value="false"/>
+	<property name="logExtension" value=".log"/>
+	<property name="compilerArg" value=""/>
+	<property name="compilation.prereq.log" value="${buildDirectory}/prereqErrors.log"/>
+	<property name="javacSource" value="1.3"/>
+	<property name="javacTarget" value="1.2"/>
+	<condition property="dir_bootclasspath" value="${java.home}/../Classes">
+		<and>
+			<os family="mac"/>
+			<available file="${java.home}/../Classes" type="dir"/>
+		</and>
+	</condition>
+	<property name="dir_bootclasspath" value="${java.home}/lib"/>
+	<path id="path_bootclasspath">
+		<fileset dir="${dir_bootclasspath}">
+			<include name="*.jar"/>
+		</fileset>
+	</path>
+	<property name="bootclasspath" refid="path_bootclasspath"/>
+	<condition property="bundleBootClasspath" value="${JavaSE-11}"	>
+		<isset property="JavaSE-11"/>
+	</condition>
+	<condition property="bundleJavacSource" value="11"	>
+		<isset property="JavaSE-11"/>
+	</condition>
+	<property name="bundleJavacSource" value="${javacSource}"/>
+	<property name="bundleJavacTarget" value="${javacTarget}"/>
+	<property name="bundleBootClasspath" value="${bootclasspath}"/>
+
+	<target name="init" depends="properties">
+		<condition property="pluginTemp" value="${buildTempFolder}/plugins"		>
+			<isset property="buildTempFolder"/>
+		</condition>
+		<property name="pluginTemp" value="${basedir}"/>
+		<condition property="build.result.folder" value="${pluginTemp}/StarPU_1.0.0.202105060849"		>
+			<isset property="buildTempFolder"/>
+		</condition>
+		<property name="build.result.folder" value="${env.PWD}/build"/>
+		<property name="temp.folder" value="${basedir}/temp.folder"/>
+		<property name="plugin.destination" value="${basedir}"/>
+		<condition property="p2.publish.parts" value="true"		>
+			<istrue value="${p2.gathering}"/>
+		</condition>
+		<property name="compilation.problem.marker" value="${build.result.folder}/compilation.problem"/>
+		<condition property="compilation.problem.marker.exists" value="true"		>
+			<and>
+			<available file="${compilation.problem.marker}"/>
+			<isfalse value="${p2.publishonerror}"/>
+			</and>
+		</condition>
+	</target>
+
+	<target name="properties" if="eclipse.running">
+		<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+
+	</target>
+
+	<target name="build.update.jar" depends="init" description="Build the plug-in: StarPU for an update site.">
+		<delete dir="${temp.folder}"/>
+		<mkdir dir="${temp.folder}"/>
+		<antcall target="build.jars"/>
+		<antcall target="gather.bin.parts">
+			<param name="destination.temp.folder" value="${temp.folder}/"/>
+		</antcall>
+		<jar destfile="${plugin.destination}/StarPU_1.0.0.202105060849.jar" basedir="${temp.folder}/StarPU_1.0.0.202105060849" filesetmanifest="merge"/>
+		<delete dir="${temp.folder}"/>
+	</target>
+
+	<target name="@dot.nestedJars">
+	</target>
+	<target name="@dot" depends="init,@dot.nestedJars" unless="@dot" description="Create jar: StarPU @dot.">
+		<mkdir dir="${build.result.folder}"/>
+		<delete dir="${build.result.folder}/@dot"/>
+		<mkdir dir="${build.result.folder}/@dot"/>
+		<path id="@dot.classpath">
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.ui_3.119.0.v20210111-1350.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.runtime_3.20.100.v20210111-0815.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.osgi_3.16.200.v20210226-1447.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.osgi.compatibility.state_1.2.300.v20210212-1137.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.equinox.common_3.14.100.v20210212-1143.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.jobs_3.10.1100.v20210111-0815.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.equinox.registry_3.10.100.v20210212-1143.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.equinox.preferences_3.8.200.v20210212-1143.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.contenttype_3.7.900.v20210111-0918.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.equinox.app_1.5.100.v20210212-1143.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.osgi.services_3.10.0.v20210212-1137.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.osgi.util_3.6.0.v20210212-1137.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/javax.servlet_3.1.0.v201410161800.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.swt_3.116.0.v20210302-1107.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.swt.browser.chromium.gtk.linux.x86_64_3.116.0.v20210302-1107.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.swt.gtk.linux.x86_64_3.116.0.v20210302-1107.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.jface_3.22.100.v20210126-0831.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.commands_3.9.800.v20201021-1339.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.equinox.bidi_1.3.100.v20210212-1143.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.ui.workbench_3.122.100.v20210215-1525.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/com.ibm.icu_67.1.0.v20200706-1749.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/javax.annotation_1.3.5.v20200909-1856.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/javax.inject_1.0.0.v20091030.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.core.commands_0.13.0.v20201119-1132.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.expressions_3.7.100.v20210203-1000.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.core.contexts_1.8.400.v20191217-1710.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.core.di_1.7.700.v20210128-2123.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.core.di.annotations_1.6.600.v20191216-2352.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.core.services_2.2.600.v20210110-1654.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.workbench_1.12.100.v20210122-1731.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.apache.commons.jxpath_1.3.0.v200911051830.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.model.workbench_2.1.1000.v20210111-0958.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.emf.ecore_2.23.0.v20200630-0516.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.emf.common_2.22.0.v20210114-1734.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.resources_3.14.0.v20210215-0934.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.ant.core_3.5.800.v20200608-1251.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.variables_3.4.800.v20200120-1101.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.filesystem_1.7.700.v20200110-1734.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.filesystem.linux.x86_64_1.2.300.v20180828-0158.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.emf.xpath_0.2.800.v20200609-0849.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.services_1.5.0.v20210115-1333.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.di_1.3.0.v20210222-1018.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.core.di.extensions.supplier_0.15.800.v20210110-1654.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.core.di.extensions_0.16.0.v20200507-0938.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.emf.ecore.change_2.14.0.v20190528-0725.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.emf.ecore.xmi_2.16.0.v20190528-0725.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.jdt.annotation_2.2.600.v20200408-1511.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.workbench.renderers.swt_0.15.0.v20201125-0918.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.workbench.swt_0.16.0.v20201230-1610.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.dialogs_1.2.100.v20201109-2317.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.databinding_1.10.100.v20200926-1123.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.databinding.observable_1.10.0.v20200730-0848.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.core.databinding.property_1.8.100.v20200619-0651.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.jface.databinding_1.12.200.v20210111-0911.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.css.core_0.13.0.v20201015-0653.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.w3c.css.sac_1.3.1.v200903091627.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.apache.batik.css_1.13.0.v20200622-2037.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.apache.batik.i18n_1.13.0.v20200622-2037.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.apache.xmlgraphics_2.4.0.v20200622-2037.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.apache.commons.io_2.6.0.v20190123-2029.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.apache.commons.logging_1.2.0.v20180409-1502.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/javax.xml_1.3.4.v201005080400.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.w3c.dom.events_3.0.0.draft20060413_v201105210656.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.w3c.dom.svg_1.1.0.v201011041433.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.w3c.dom.smil_1.0.1.v200903091627.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.apache.batik.util_1.13.0.v20200622-2037.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.apache.batik.constants_1.13.0.v20200622-2037.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.css.swt_0.14.100.v20201217-1340.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.bindings_0.13.0.v20201119-1132.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.workbench3_0.15.500.v20201021-1339.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.css.swt.theme_0.13.0.v20201026-1147.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.swt.gtk_1.1.100.v20210108-1832.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.widgets_1.2.800.v20201021-1339.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.urischeme_1.1.300.v20210113-1544.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/com.sun.jna_4.5.1.v20190425-1842.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/com.sun.jna.platform_4.5.1.v20190425-1842.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.jface.notifications_0.3.0.v20210218-1820.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.help_3.8.800.v20200525-0755.jar"/>
+			<pathelement path="../../../../.p2/pool/plugins/org.eclipse.e4.ui.workbench.addons.swt_1.4.100.v20201221-2332.jar"/>
+		</path>
+		<!-- compile the source code -->
+		<javac destdir="${build.result.folder}/@dot" failonerror="${javacFailOnError}" verbose="${javacVerbose}" debug="${javacDebugInfo}" includeAntRuntime="no" source="${bundleJavacSource}" target="${bundleJavacTarget}"		>
+			<compilerarg line="${compilerArg}" compiler="${build.compiler}"/>
+			<classpath refid="@dot.classpath" />
+			<src path="src/"			/>
+			<compilerarg value="@${basedir}/src/deploy/javaCompilerArgs" compiler="org.eclipse.jdt.core.JDTCompilerAdapter"			/>
+			<compilerarg line="-log &apos;${build.result.folder}/@dot${logExtension}&apos;" compiler="org.eclipse.jdt.core.JDTCompilerAdapter"			/>
+		</javac>
+		<antcall target="checkCompilationResults"/>
+		<!-- Copy necessary resources -->
+		<copy todir="${build.result.folder}/@dot" failonerror="true" overwrite="false">
+			<fileset dir="src/">
+				<exclude name="**/*.java"/>
+				<exclude name="**/package.htm*"/>
+			</fileset>
+		</copy>
+	</target>
+
+	<target name="src.zip" depends="init" unless="src.zip">
+		<mkdir dir="${build.result.folder}"/>
+		<antcall target="zip.src.zip"/>
+	</target>
+	<target name="zip.src.zip">
+		<zip destfile="${build.result.folder}/src.zip" filesonly="false" whenempty="skip" update="false">
+			<fileset dir="src/">
+				<include name="**/*.java"/>
+			</fileset>
+		</zip>
+	</target>
+	<target name="copy.src.zip">
+		<copy todir="${source.destination.folder}/" failonerror="true" overwrite="true">
+			<fileset dir="src/">
+				<include name="**/*.java"/>
+			</fileset>
+		</copy>
+	</target>
+
+	<target name="build.jars" depends="init" description="Compile classes and build nested jars for the plug-in: StarPU.">
+		<delete file="${compilation.problem.marker}" quiet="true"/>
+		<available property="@dot" file="${build.result.folder}/@dot"/>
+		<antcall target="@dot"/>
+	</target>
+
+	<target name="checkCompilationResults" if="compilation.error.occured">
+		<echo file="${compilation.problem.marker}" message="StarPU_1.0.0.202105060849${line.separator}compilation.error.occured=${compilation.error.occured}"/>
+		<eclipse.logCompileError log="${compilation.prereq.log}" bundle="StarPU_1.0.0.202105060849">
+		</eclipse.logCompileError>
+	</target>
+
+	<target name="build.sources" depends="init">
+		<available property="src.zip" file="${build.result.folder}/src.zip"/>
+		<antcall target="src.zip"/>
+	</target>
+
+	<target name="publish.bin.parts" depends="init" if="p2.publish.parts" unless="compilation.problem.marker.exists">
+		<mkdir dir="${build.result.folder}/StarPU_1.0.0.202105060849"/>
+		<copy todir="${build.result.folder}" failonerror="true" overwrite="true">
+			<fileset dir="${basedir}">
+				<include name="META-INF/MANIFEST.MF"/>
+				<include name="plugin.xml"/>
+				<include name="fragment.xml"/>
+			</fileset>
+		</copy>
+		<eclipse.versionReplacer path="${build.result.folder}" version="1.0.0.202105060849"/>
+		<antcall target="apitools.generation">
+			<param name="projectLocation" value="${basedir}"/>
+			<param name="projectName" value="${bundleId}_${bundleVersion}"/>
+			<param name="target.folder" value="${build.result.folder}"/>
+		</antcall>
+		<eclipse.gatherBundle 
+		   metadataRepository="${p2.build.repo}"
+		   artifactRepository="${p2.build.repo}"
+		   buildResultFolder="${build.result.folder}"
+		   baseDirectory="${basedir}"
+		/>
+	</target>
+
+	<target name="gather.bin.parts" depends="init" if="destination.temp.folder">
+		<mkdir dir="${destination.temp.folder}/StarPU_1.0.0.202105060849"/>
+		<copy todir="${destination.temp.folder}/StarPU_1.0.0.202105060849" failonerror="true" overwrite="false">
+			<fileset dir="${build.result.folder}/@dot">
+				<include name="**"/>
+			</fileset>
+		</copy>
+		<copy todir="${destination.temp.folder}/StarPU_1.0.0.202105060849" failonerror="true" overwrite="true">
+			<fileset dir="${basedir}">
+				<include name="plugin.xml"/>
+				<include name="META-INF/"/>
+				<include name="icons/"/>
+				<include name=".classpath"/>
+				<include name="src.includes = .classpath"/>
+			</fileset>
+		</copy>
+		<eclipse.versionReplacer path="${destination.temp.folder}/StarPU_1.0.0.202105060849" version="1.0.0.202105060849"/>
+		<antcall target="apitools.generation">
+			<param name="projectLocation" value="${basedir}"/>
+			<param name="projectName" value="${bundleId}_${bundleVersion}"/>
+			<param name="target.folder" value="${destination.temp.folder}/StarPU_1.0.0.202105060849"/>
+		</antcall>
+	</target>
+
+	<target name="build.zips" depends="init">
+	</target>
+
+	<target name="gather.sources" depends="init" if="destination.temp.folder">
+		<mkdir dir="${destination.temp.folder}/StarPU_1.0.0.202105060849"/>
+		<copy file="${build.result.folder}/src.zip" todir="${destination.temp.folder}/StarPU_1.0.0.202105060849" failonerror="false" overwrite="false"/>
+		<antcall target="copy.src.includes">
+			<param name="source.destination.folder" value="${destination.temp.folder}/StarPU_1.0.0.202105060849"/>
+		</antcall>
+	</target>
+
+	<target name="gather.individual.sources" depends="init">
+		<antcall target="copy.src.zip">
+			<param name="source.destination.folder" value="${destination.temp.folder}"/>
+		</antcall>
+		<antcall target="copy.src.includes">
+			<param name="source.destination.folder" value="${destination.temp.folder}"/>
+		</antcall>
+	</target>
+
+	<target name="copy.src.includes" depends="init">
+	</target>
+
+	<target name="gather.logs" depends="init" if="destination.temp.folder">
+		<mkdir dir="${destination.temp.folder}/StarPU_1.0.0.202105060849"/>
+		<copy todir="${destination.temp.folder}/StarPU_1.0.0.202105060849" failonerror="false" overwrite="false">
+			<fileset dir="${build.result.folder}">
+				<include name="@dot${logExtension}"/>
+			</fileset>
+		</copy>
+	</target>
+
+	<target name="clean" depends="init" description="Clean the plug-in: StarPU of all the zips, jars and logs created.">
+		<delete dir="${build.result.folder}/@dot"/>
+		<delete file="${build.result.folder}/src.zip"/>
+		<delete file="${plugin.destination}/StarPU_1.0.0.202105060849.jar"/>
+		<delete file="${plugin.destination}/StarPU_1.0.0.202105060849.zip"/>
+		<delete dir="${temp.folder}"/>
+		<delete file="${compilation.problem.marker}" quiet="true"/>
+	</target>
+
+	<target name="refresh" depends="init" if="eclipse.running" description="Refresh this folder.">
+		<eclipse.convertPath fileSystemPath="${env.PWD}" property="resourcePath"/>
+		<eclipse.refreshLocal resource="${resourcePath}" depth="infinite"/>
+	</target>
+
+	<target name="zip.plugin" depends="init" description="Create a zip containing all the elements for the plug-in: StarPU.">
+		<delete dir="${temp.folder}"/>
+		<mkdir dir="${temp.folder}"/>
+		<antcall target="build.jars"/>
+		<antcall target="build.sources"/>
+		<antcall target="gather.bin.parts">
+			<param name="destination.temp.folder" value="${temp.folder}/"/>
+		</antcall>
+		<antcall target="gather.sources">
+			<param name="destination.temp.folder" value="${temp.folder}/"/>
+		</antcall>
+		<delete>
+			<fileset dir="${temp.folder}">
+				<include name="**/*.bin${logExtension}"/>
+			</fileset>
+		</delete>
+		<zip destfile="${plugin.destination}/StarPU_1.0.0.202105060849.zip" basedir="${temp.folder}" filesonly="true" whenempty="skip" update="false"/>
+		<delete dir="${temp.folder}"/>
+	</target>
+
+	<target name="apitools.generation" if="generateAPIDescription">
+		<apitooling.apigeneration  projectName="${projectName}" project="${projectLocation}" binary="${binary.folders}" target="${target.folder}" extramanifests="${extraManifests}" allownonapiproject="${allowNonApiProject}"		/>
+	</target>
+
+</project>

+ 35 - 0
eclipse-plugin/examples/Makefile.am

@@ -0,0 +1,35 @@
+# StarPU --- Runtime system for heterogeneous multicore architectures.
+#
+# Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+#
+# StarPU is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or (at
+# your option) any later version.
+#
+# StarPU is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# See the GNU Lesser General Public License in COPYING.LGPL for more details.
+#
+include $(top_srcdir)/starpu.mk
+
+EXTRA_DIST =					\
+	./hello/hello.c				\
+	./hello/.settings/language.settings.xml	\
+	./hello/.project
+
+ECLIPSE_DIR		=	$(shell dirname @ECLIPSE@)
+ECLIPSE_WORKSPACE	=	$(abs_top_builddir)/eclipse-plugin/workspace
+
+txtdir   = $(libdir)/starpu/eclipse-plugin/examples/hello
+txt_DATA = hello/hello.c \
+	   hello/.cproject \
+	   hello/.project
+
+script=$(abs_top_srcdir)/eclipse-plugin/tools/install_workspace.sh
+install-data-hook:
+	$(INSTALL_DATA) $(abs_top_srcdir)/eclipse-plugin/examples/hello/.settings/language.settings.xml $(txtdir).settings
+	$(ECLIPSE_DIR)/eclipse -noSplash -data $(DESTDIR)$(txtdir)/../../workspace -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import $(txtdir)
+

+ 242 - 0
eclipse-plugin/examples/hello/.cproject.in

@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+
+    <storageModule moduleId="org.eclipse.cdt.core.settings">
+
+        <cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.2100624537">
+
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.2100624537" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+
+                <externalSettings/>
+
+                <extensions>
+
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                </extensions>
+
+            </storageModule>
+
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+
+                <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.2100624537" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug">
+
+                    <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.2100624537." name="/" resourcePath="">
+
+                        <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.1383927705" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
+
+                            <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.389755606" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
+
+                            <builder buildPath="${workspace_loc:/hello}/Debug" id="cdt.managedbuild.target.gnu.builder.exe.debug.1695422602" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/>
+
+                            <tool id="cdt.managedbuild.tool.gnu.archiver.base.1374780537" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+
+                            <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1322180533" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug">
+
+                                <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.1567219705" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+
+                                <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="gnu.cpp.compiler.exe.debug.option.debugging.level.832298241" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
+
+                            </tool>
+
+                            <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1028592348" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
+
+                                <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1147430098" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+
+                                <option defaultValue="gnu.c.debugging.level.max" id="gnu.c.compiler.exe.debug.option.debugging.level.1967259291" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
+
+                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.include.paths.2064046424" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+
+                                    <listOptionValue builtIn="false" value="@STARPU_INCLUDE_PATH@"/>
+
+                                </option>
+
+                                <option id="gnu.c.compiler.option.dialect.std.1848438983" name="Language standard" superClass="gnu.c.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.c.compiler.dialect.default" valueType="enumerated"/>
+
+                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.943383707" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+
+                            </tool>
+
+                            <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.579137969" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug">
+
+                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.link.option.paths.1502847159" name="Library search path (-L)" superClass="gnu.c.link.option.paths" useByScannerDiscovery="false" valueType="libPaths">
+
+                                    <listOptionValue builtIn="false" value="@STARPU_LIB_PATH@"/>
+
+                                </option>
+
+                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.link.option.libs.1021432973" name="Libraries (-l)" superClass="gnu.c.link.option.libs" useByScannerDiscovery="false" valueType="libs">
+
+				  @STARPU_OPTION_LIBS@
+
+                                </option>
+
+                                <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.398489076" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+
+                                </inputType>
+
+                            </tool>
+
+                            <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.1511995291" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"/>
+
+                            <tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.1184081452" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug">
+
+                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="gnu.both.asm.option.include.paths.1623769217" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" useByScannerDiscovery="false" valueType="includePath"/>
+
+                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1188762128" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+
+                            </tool>
+
+                        </toolChain>
+
+                    </folderInfo>
+
+                </configuration>
+
+            </storageModule>
+
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings">
+
+                <externalSettings containerId="org.eclipse.cdt.managedbuilder.pkgconfig.extSettings" factoryId="org.eclipse.cdt.core.extension.container.factory"/>
+
+            </storageModule>
+
+            <storageModule moduleId="packages" @STARPU_MODULE_LIBS@ />
+
+        </cconfiguration>
+
+        <cconfiguration id="cdt.managedbuild.config.gnu.exe.release.1533299051">
+
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.1533299051" moduleId="org.eclipse.cdt.core.settings" name="Release">
+
+                <externalSettings/>
+
+                <extensions>
+
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+
+                </extensions>
+
+            </storageModule>
+
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+
+                <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.1533299051" name="Release" parent="cdt.managedbuild.config.gnu.exe.release">
+
+                    <folderInfo id="cdt.managedbuild.config.gnu.exe.release.1533299051." name="/" resourcePath="">
+
+                        <toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.348259542" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
+
+                            <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.1056676762" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
+
+                            <builder buildPath="${workspace_loc:/hello}/Release" id="cdt.managedbuild.target.gnu.builder.exe.release.200714749" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
+
+                            <tool id="cdt.managedbuild.tool.gnu.archiver.base.987737323" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+
+                            <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.321396296" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
+
+                                <option id="gnu.cpp.compiler.exe.release.option.optimization.level.2087144166" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+
+                                <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="gnu.cpp.compiler.exe.release.option.debugging.level.118686227" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
+
+                            </tool>
+
+                            <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.412219185" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
+
+                                <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.1797350145" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+
+                                <option defaultValue="gnu.c.debugging.level.none" id="gnu.c.compiler.exe.release.option.debugging.level.1018649438" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
+
+                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.414280418" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+
+                            </tool>
+
+                            <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.1278673895" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release">
+
+                                <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.454497736" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+
+                                </inputType>
+
+                            </tool>
+
+                            <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.530048548" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release"/>
+
+                            <tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.421625725" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release">
+
+                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.722225800" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+
+                            </tool>
+
+                        </toolChain>
+
+                    </folderInfo>
+
+                </configuration>
+
+            </storageModule>
+
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+
+        </cconfiguration>
+
+    </storageModule>
+
+    <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+
+        <project id="hello.cdt.managedbuild.target.gnu.exe.1220242327" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/>
+
+    </storageModule>
+
+    <storageModule moduleId="scannerConfiguration">
+
+        <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+
+        <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1533299051;cdt.managedbuild.config.gnu.exe.release.1533299051.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.412219185;cdt.managedbuild.tool.gnu.c.compiler.input.414280418">
+
+            <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+
+        </scannerConfigBuildInfo>
+
+        <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.2100624537;cdt.managedbuild.config.gnu.exe.debug.2100624537.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1028592348;cdt.managedbuild.tool.gnu.c.compiler.input.943383707">
+
+            <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+
+        </scannerConfigBuildInfo>
+
+    </storageModule>
+
+    <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+
+    <storageModule moduleId="refreshScope"/>
+
+    <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+
+</cproject>

+ 26 - 0
eclipse-plugin/examples/hello/.project

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>hello</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>

+ 48 - 0
eclipse-plugin/examples/hello/.settings/language.settings.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project>
+    	
+    <configuration id="cdt.managedbuild.config.gnu.exe.debug.2100624537" name="Debug">
+        		
+        <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+            			
+            <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+            			
+            <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+            			
+            <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+            			
+            <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="325456944513131706" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+                				
+                <language-scope id="org.eclipse.cdt.core.gcc"/>
+                				
+                <language-scope id="org.eclipse.cdt.core.g++"/>
+                			
+            </provider>
+            		
+        </extension>
+        	
+    </configuration>
+    	
+    <configuration id="cdt.managedbuild.config.gnu.exe.release.1533299051" name="Release">
+        		
+        <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+            			
+            <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+            			
+            <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+            			
+            <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+            			
+            <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="325456944513131706" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+                				
+                <language-scope id="org.eclipse.cdt.core.gcc"/>
+                				
+                <language-scope id="org.eclipse.cdt.core.g++"/>
+                			
+            </provider>
+            		
+        </extension>
+        	
+    </configuration>
+    
+</project>

+ 133 - 0
eclipse-plugin/examples/hello/hello.c

@@ -0,0 +1,133 @@
+/* StarPU --- Runtime system for heterogeneous multicore architectures.
+ *
+ * Copyright (C) 2009-2021  Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+ *
+ * StarPU is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at
+ * your option) any later version.
+ *
+ * StarPU is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * See the GNU Lesser General Public License in COPYING.LGPL for more details.
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <starpu.h>
+
+void display_cpu_func(void *buffers[], void *cl_arg)
+{
+	(void)cl_arg;
+	int nx, i;
+	struct starpu_vector_interface *vector;
+	int *val;
+
+	vector = (struct starpu_vector_interface *) buffers[0];
+	nx = STARPU_VECTOR_GET_NX(vector);
+	val = (int *)STARPU_VECTOR_GET_PTR(vector);
+
+	for (i = 0; i < nx; i++)
+		fprintf(stdout, "V[%d] = %d\n", i, val[i]);
+}
+
+void scal_cpu_func(void *buffers[], void *cl_arg)
+{
+	int factor, nx, i;
+	struct starpu_vector_interface *vector;
+	int *val;
+
+	vector = (struct starpu_vector_interface *) buffers[0];
+	nx = STARPU_VECTOR_GET_NX(vector);
+	val = (int *)STARPU_VECTOR_GET_PTR(vector);
+	starpu_codelet_unpack_args(cl_arg, &factor);
+
+	for (i = 0; i < nx; i++)
+		val[i] *= factor;
+}
+
+void hello_cpu_func(void *buffers[], void *cl_arg)
+{
+	(void)buffers;
+	int answer;
+
+	starpu_codelet_unpack_args(cl_arg, &answer);
+	fprintf(stdout, "Hello world, the answer is %d\n", answer);
+}
+
+struct starpu_codelet hello_codelet =
+{
+	.cpu_funcs = {hello_cpu_func},
+	.cpu_funcs_name = {"hello_cpu_func"},
+	.nbuffers = 0,
+	.name = "hello"
+};
+
+struct starpu_codelet scal_codelet =
+{
+	.cpu_funcs = {scal_cpu_func},
+	.cpu_funcs_name = {"scal_cpu_func"},
+	.nbuffers = 1,
+	.modes = {STARPU_RW},
+	.name = "scal"
+};
+
+struct starpu_codelet display_codelet =
+{
+	.cpu_funcs = {display_cpu_func},
+	.cpu_funcs_name = {"display_cpu_func"},
+	.nbuffers = 1,
+	.modes = {STARPU_R},
+	.name = "display"
+};
+
+#define NX 5
+
+int main(void)
+{
+	int answer = 42;
+	int ret;
+	int vector[NX];
+	unsigned i;
+	starpu_data_handle_t vector_handle;
+
+	setenv("STARPU_FXT_TRACE", "1", 1);
+
+	ret = starpu_init(NULL);
+	if (ret == -ENODEV) return 77;
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
+
+	for (i = 0; i < NX; i++)
+                vector[i] = i+1;
+	starpu_vector_data_register(&vector_handle, STARPU_MAIN_RAM, (uintptr_t)vector, NX, sizeof(vector[0]));
+
+	ret = starpu_task_insert(&hello_codelet,
+				 STARPU_VALUE, &answer, sizeof(answer),
+				 0);
+	if (ret == -ENODEV) goto enodev;
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+
+	ret = starpu_task_insert(&scal_codelet,
+				 STARPU_RW, vector_handle,
+				 STARPU_VALUE, &answer, sizeof(answer),
+				 0);
+	if (ret == -ENODEV) goto enodev;
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+
+	ret = starpu_task_insert(&display_codelet,
+				 STARPU_R, vector_handle,
+				 0);
+	if (ret == -ENODEV) goto enodev;
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+
+	starpu_data_unregister(vector_handle);
+	starpu_shutdown();
+
+	return 0;
+
+enodev:
+	starpu_shutdown();
+	return 77;
+}

BIN
eclipse-plugin/icons/fxt.png


BIN
eclipse-plugin/icons/svg.png


BIN
eclipse-plugin/icons/taskGraph.png


BIN
eclipse-plugin/icons/vite.png


+ 159 - 0
eclipse-plugin/plugin.xml

@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.ui.commands">
+      <category
+            id="StarPU.commands.category"
+            name="StarPU Category">
+      </category>
+      <command
+            categoryId="StarPU.commands.category"
+            name="StarPU FxT tool"
+            id="StarPU.commands.traceGenCommand">
+      </command>
+      <command
+            categoryId="StarPU.commands.category"
+            id="StarPU.commands.traceVizCommand"
+            name="Visualize Paje trace">
+      </command>
+      <command
+            categoryId="StarPU.commands.category"
+            id="StarPU.commands.taskGraphCommand"
+            name="Run Task graph">
+      </command>
+      <command
+            categoryId="StarPU.commands.category"
+            id="StarPU.commands.svgCommand"
+            name="Generate SVG graph">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="starpu.handlers.TraceGenHandler"
+            commandId="StarPU.commands.traceGenCommand">
+      </handler>
+      <handler
+            class="starpu.handlers.TraceVizHandler"
+            commandId="StarPU.commands.traceVizCommand">
+      </handler>
+      <handler
+            class="starpu.handlers.TaskGraphHandler"
+            commandId="StarPU.commands.taskGraphCommand">
+      </handler>
+      <handler
+            class="starpu.handlers.SvgHandler"
+            commandId="StarPU.commands.svgCommand">
+      </handler>
+   </extension>
+   <extension
+         point="org.eclipse.ui.bindings">
+      <key
+            commandId="StarPU.commands.traceGenCommand"
+            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+            contextId="org.eclipse.ui.contexts.window"
+            sequence="M1+6">
+      </key>
+      <key
+            commandId="StarPU.commands.traceVizCommand"
+            contextId="org.eclipse.ui.contexts.window"
+            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+            sequence="M1+7">
+      </key>
+      <key
+            commandId="StarPU.commands.taskGraphCommand"
+            contextId="org.eclipse.ui.contexts.window"
+            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+            sequence="M1+8">
+      </key>
+      <key
+            commandId="StarPU.commands.svgCommand"
+            contextId="org.eclipse.ui.contexts.window"
+            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+            sequence="M1+9">
+      </key>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            locationURI="menu:org.eclipse.ui.main.menu?after=additions">
+         <menu
+               id="StarPU.menus.sampleMenu"
+               label="StarPU"
+               mnemonic="M">
+            <command
+                  commandId="StarPU.commands.traceGenCommand"
+                  id="StarPU.menus.traceGenCommand"
+                  mnemonic="S">
+            </command>
+            <command
+                  commandId="StarPU.commands.traceVizCommand"
+                  id="StarPU.menus.traceVizCommand"
+                  mnemonic="S"
+                  style="push">
+            </command>
+            <command
+                  commandId="StarPU.commands.taskGraphCommand"
+                  id="StarPU.commands.taskGraphCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="StarPU.commands.svgCommand"
+                  id="StarPU.commands.svgCommand"
+                  style="push">
+            </command>
+         </menu>
+      </menuContribution>
+      <menuContribution
+            locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
+         <toolbar
+               id="StarPU.toolbars.sampleToolbar">
+            <command
+                  id="StarPU.toolbars.traceGenCommand"
+                  commandId="StarPU.commands.traceGenCommand"
+                  icon="icons/fxt.png"
+                  tooltip="StarPU FxT tool">
+            </command>
+         </toolbar>
+      </menuContribution>
+      <menuContribution
+            locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
+         <toolbar
+               id="StarPU.toolbars.sampleToolbar">
+            <command
+                  commandId="StarPU.commands.traceVizCommand"
+                  icon="icons/vite.png"
+                  id="StarPU.toolbars.traceVizCommand"
+                  tooltip="Vizualise Paje trace">
+            </command>
+         </toolbar>
+      </menuContribution>
+      <menuContribution
+            locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
+         <toolbar
+               id="StarPU.toolbars.sampleToolbar">
+            <command
+                  commandId="StarPU.commands.taskGraphCommand"
+                  icon="icons/taskGraph.png"
+                  id="StarPU.toolbars.taskGraphCommand"
+                  tooltip="Run Task graph">
+            </command>
+         </toolbar>
+      </menuContribution>
+      <menuContribution
+            locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
+         <toolbar
+               id="StarPU.toolbars.sampleToolbar">
+            <command
+                  commandId="StarPU.commands.svgCommand"
+                  icon="icons/svg.png"
+                  id="StarPU.toolbars.svgCommand"
+                  tooltip="Generate SVG graph">
+            </command>
+         </toolbar>
+      </menuContribution>
+   </extension>
+
+</plugin>

+ 54 - 0
eclipse-plugin/src/Makefile.am

@@ -0,0 +1,54 @@
+# StarPU --- Runtime system for heterogeneous multicore architectures.
+#
+# Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+#
+# StarPU is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or (at
+# your option) any later version.
+#
+# StarPU is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# See the GNU Lesser General Public License in COPYING.LGPL for more details.
+#
+include $(top_srcdir)/starpu.mk
+
+EXTRA_DIST =					\
+	deploy/build.xml			\
+	deploy/javaCompilerArgs			\
+	starpu/handlers/SvgHandler.java		\
+	starpu/handlers/TraceVizHandler.java	\
+	starpu/handlers/TaskGraphHandler.java	\
+	starpu/handlers/TraceGenHandler.java	\
+	starpu/handlers/TraceUtils.java
+
+ECLIPSE_DIR		=	$(shell dirname @ECLIPSE@)
+ECLIPSE_WORKSPACE	=	$(abs_top_builddir)/eclipse-plugin/workspace
+
+all: package
+	cp $(abs_top_srcdir)/eclipse-plugin/build.xml $(abs_top_srcdir)/eclipse-plugin/plugin_build.xml
+	rm -f build/plugin/plugins/StarPU_*jar
+	$(ECLIPSE_DIR)/eclipse -noSplash -data $(ECLIPSE_WORKSPACE) -application org.eclipse.ant.core.antRunner -buildfile $(abs_top_srcdir)/eclipse-plugin/src/deploy/build.xml
+	rm -f $(ECLIPSE_DIR)/dropins/StarPU_*jar
+	cp build/plugin/plugins/*.jar $(ECLIPSE_DIR)/dropins/
+	mv $(abs_top_srcdir)/eclipse-plugin/plugin_build.xml $(abs_top_srcdir)/eclipse-plugin/build.xml
+
+package:
+	$(ECLIPSE_DIR)/eclipse -noSplash -data $(ECLIPSE_WORKSPACE) -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import $(abs_top_srcdir)/eclipse-plugin
+	rm -f $(ECLIPSE_DIR)/dropins/StarPU_*jar
+	$(ECLIPSE_DIR)/eclipse -noSplash -data $(ECLIPSE_WORKSPACE) -application org.eclipse.ant.core.antRunner -buildfile $(abs_top_srcdir)/eclipse-plugin/build.xml
+
+txtdir = $(libdir)/starpu/eclipse-plugin/workspace
+script = $(abs_top_srcdir)/eclipse-plugin/tools/install_workspace.sh
+
+install-data-hook:
+	(cd $(abs_top_builddir)/eclipse-plugin/workspace && $(PROG_FIND) . -type f -exec $(script) {} $(DESTDIR)$(txtdir) $(INSTALL_DATA) \;)
+
+clean-local:
+	rm -rf build
+
+distclean-local: clean-local
+	rm -f $(ECLIPSE_DIR)/dropins/StarPU_*jar
+	rm -rf $(ECLIPSE_WORKSPACE)

+ 7 - 0
eclipse-plugin/src/deploy/build.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project default="plugin_export" name="build">
+ 	<property environment="env"/>
+	<target name="plugin_export">
+		<pde.exportPlugins destination="${env.PWD}/build/plugin" exportSource="false" exportType="directory" plugins="StarPU" useJARFormat="true"/>
+	</target>
+</project>

File diff suppressed because it is too large
+ 79 - 0
eclipse-plugin/src/deploy/javaCompilerArgs


+ 82 - 0
eclipse-plugin/src/starpu/handlers/SvgHandler.java

@@ -0,0 +1,82 @@
+// StarPU --- Runtime system for heterogeneous multicore architectures.
+//
+// Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+//
+// StarPU is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation; either version 2.1 of the License, or (at
+// your option) any later version.
+//
+// StarPU is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+//
+// See the GNU Lesser General Public License in COPYING.LGPL for more details.
+//
+package starpu.handlers;
+
+import java.awt.EventQueue;
+import java.io.File;
+import java.io.PrintWriter;
+import java.util.regex.Pattern;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPathEditorInput;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class SvgHandler extends AbstractHandler {
+
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		EventQueue.invokeLater(() -> {
+			try {
+				String workDir = System.getProperty("user.dir") + "/" + TraceUtils.getRandomDirectoryName();
+				String inputfilename = workDir + "/dag.dot";
+				File f = new File(inputfilename);
+				if (!f.isFile())
+					throw new Exception("File <" + inputfilename + "> does not exist. Have you run StarPU FxT tool?");
+
+				String[] cmd1 = { "dot", "-Tcmapx", inputfilename, "-o", workDir + "/output.map"};
+				TraceUtils.runCommand(cmd1);
+
+				String[] cmd2 = { "dot", "-Tsvg", inputfilename, "-o", workDir + "/output.svg" };
+				TraceUtils.runCommand(cmd2);
+
+				IEditorInput input = HandlerUtil.getActiveEditor(event).getEditorInput();
+
+				if (!(input instanceof IPathEditorInput)) {
+					System.out.println("There is no path");
+				}
+				else
+				{
+					String map = TraceUtils.readFileToString(workDir + "/output.map");
+					Pattern p = Pattern.compile("href=\"[a-zA-Z./]+#");
+					IPath ipath = ((IPathEditorInput) input).getPath().makeAbsolute();
+					String chemin = ipath.toString();
+					String replaceBy = "href=\"" + chemin + "#";
+					map = p.matcher(map).replaceAll(replaceBy);
+
+					PrintWriter pw = new PrintWriter(workDir + "/output.html");
+					pw.println(new String("<html>\n" + "<img src=\"output.svg\" usemap=\"#G\" />\n"));
+					pw.println(map);
+					pw.println(new String("</html>"));
+					pw.close();
+				}
+
+				String[] cmd8 = { "firefox", workDir + "/output.html" };
+				TraceUtils.runCommand(cmd8);
+			} catch (Exception e) {
+				TraceUtils.displayMessage("Error: " + e.toString());
+				e.printStackTrace();
+			}
+
+		});
+
+		return null;
+	}
+
+}

+ 68 - 0
eclipse-plugin/src/starpu/handlers/TaskGraphHandler.java

@@ -0,0 +1,68 @@
+// StarPU --- Runtime system for heterogeneous multicore architectures.
+//
+// Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+//
+// StarPU is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation; either version 2.1 of the License, or (at
+// your option) any later version.
+//
+// StarPU is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+//
+// See the GNU Lesser General Public License in COPYING.LGPL for more details.
+//
+package starpu.handlers;
+
+import java.awt.EventQueue;
+import java.awt.Image;
+import java.io.File;
+
+import javax.imageio.ImageIO;
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+
+public class TaskGraphHandler extends AbstractHandler {
+
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		EventQueue.invokeLater(() -> {
+			try {
+				String workDir = System.getProperty("user.dir") + "/" + TraceUtils.getRandomDirectoryName();
+				String inputfilename = workDir + "/dag.dot";
+				File f = new File(inputfilename);
+				if (!f.isFile())
+					throw new Exception("File <" + inputfilename + "> does not exist. Have you run StarPU FxT tool?");
+
+				String[] cmd2 = { "dot", "-Tpng", inputfilename, "-o", workDir + "/" + "output.png" };
+				starpu.handlers.TraceUtils.runCommand(cmd2);
+				String[] cmd3 = { "starpu_tasks_rec_complete", workDir + "/" + "tasks.rec" };
+				starpu.handlers.TraceUtils.runCommand(cmd3);
+
+				JFrame frame = new JFrame();
+				File imageFile = new File(workDir + "/" + "output.png");
+				Image i = ImageIO.read(imageFile);
+				ImageIcon image = new ImageIcon(i);
+				JLabel imageLabel = new JLabel(image);
+				frame.add(imageLabel);
+				frame.pack();
+				imageLabel.setVisible(true);
+				frame.setVisible(true);
+				frame.setTitle("StarPU application: Task Graph.png");
+			} catch (Exception e) {
+				TraceUtils.displayMessage("Error: " + e.toString());
+				e.printStackTrace();
+			}
+
+		});
+
+		return null;
+	}
+
+}

+ 70 - 0
eclipse-plugin/src/starpu/handlers/TraceGenHandler.java

@@ -0,0 +1,70 @@
+// StarPU --- Runtime system for heterogeneous multicore architectures.
+//
+// Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+//
+// StarPU is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation; either version 2.1 of the License, or (at
+// your option) any later version.
+//
+// StarPU is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+//
+// See the GNU Lesser General Public License in COPYING.LGPL for more details.
+//
+package starpu.handlers;
+
+import java.awt.EventQueue;
+import java.io.File;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class TraceGenHandler extends AbstractHandler {
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
+		MessageDialog.openInformation(window.getShell(), "StarPU FxT Tool",
+				"Running Starpu FxT Tool: generation of different trace formats");
+		EventQueue.invokeLater(() -> {
+			try {
+				String value = System.getenv("STARPU_FXT_PREFIX");
+				if (value != null) {
+					System.out.println("STARPU_FXT_PREFIX=" + value);
+				} else {
+					System.out.println("STARPU_FXT_PREFIX does not have a value");
+					value = "/tmp";
+				}
+
+				String value1 = System.getenv("STARPU_FXT_SUFFIX");
+				if (value1 != null) {
+					System.out.println("STARPU_FXT_SUFFIX=" + value1);
+				} else {
+					System.out.println("STARPU_FXT_SUFFIX does not have a value");
+					String value2 = System.getenv("USER");
+					value1 = "prof_file_" + value2 + "_0";
+				}
+
+				String inputfilename = value + "/" + value1;
+				File f = new File(inputfilename);
+				if (!f.isFile())
+					throw new Exception("File <" + inputfilename + "> does not exist. Have you run your application?");
+
+				String[] command = {"starpu_fxt_tool", "-i", inputfilename, "-d", TraceUtils.getRandomDirectoryName()};
+				TraceUtils.runCommand(command);
+			} catch (Exception e) {
+				TraceUtils.displayMessage("Error: " + e.toString());
+				e.printStackTrace();
+			}
+
+		});
+
+		return null;
+	}
+
+}

+ 95 - 0
eclipse-plugin/src/starpu/handlers/TraceUtils.java

@@ -0,0 +1,95 @@
+// StarPU --- Runtime system for heterogeneous multicore architectures.
+//
+// Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+//
+// StarPU is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation; either version 2.1 of the License, or (at
+// your option) any later version.
+//
+// StarPU is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+//
+// See the GNU Lesser General Public License in COPYING.LGPL for more details.
+//
+package starpu.handlers;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+import java.util.Random;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+public class TraceUtils {
+
+	private static int x = 1000 + new Random().nextInt(9999);
+
+	public static void runCommand(String[] command) throws Exception
+	{
+		System.out.println("Running command " + Arrays.toString(command));
+		Process p = Runtime.getRuntime().exec(command);
+
+		String line;
+		BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
+		while ((line = in.readLine()) != null) {
+			System.out.println(line);
+		}
+		in.close();
+	}
+
+	public static String getRandomDirectoryName()
+	{
+		return "traces_" + x;
+	}
+
+	public static void displayMessage(String message)
+	{
+		final JFrame f = new JFrame("StarPU Message");
+
+		JLabel l = new JLabel(message);
+		JButton b19 = new JButton("OK");
+
+		b19.addActionListener(new ActionListener()
+			{
+				public void actionPerformed(ActionEvent evt)
+				{
+					f.setVisible(false);
+				}
+			});
+
+		JPanel p = new JPanel();
+		p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
+		p.add(l);
+		p.add(b19);
+
+		f.add(p);
+		f.pack();
+		f.setVisible(true);
+	}
+
+	public static String readFileToString(String filename) throws IOException
+	{
+		BufferedReader reader = new BufferedReader(new FileReader(filename));
+		StringBuilder stringBuilder = new StringBuilder();
+		char[] buffer = new char[10];
+		while (reader.read(buffer) != -1) {
+			stringBuilder.append(new String(buffer));
+			buffer = new char[10];
+		}
+		reader.close();
+
+		return stringBuilder.toString();
+	}
+
+
+}

+ 49 - 0
eclipse-plugin/src/starpu/handlers/TraceVizHandler.java

@@ -0,0 +1,49 @@
+// StarPU --- Runtime system for heterogeneous multicore architectures.
+//
+// Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+//
+// StarPU is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation; either version 2.1 of the License, or (at
+// your option) any later version.
+//
+// StarPU is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+//
+// See the GNU Lesser General Public License in COPYING.LGPL for more details.
+//
+package starpu.handlers;
+
+import java.awt.EventQueue;
+import java.io.File;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+
+public class TraceVizHandler extends AbstractHandler {
+
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		EventQueue.invokeLater(() -> {
+			try {
+				String workDir = System.getProperty("user.dir") + "/" + TraceUtils.getRandomDirectoryName();
+				String inputfilename = workDir + "/paje.trace";
+
+				File f = new File(inputfilename);
+				if (!f.isFile())
+					throw new Exception("File <" + inputfilename + "> does not exist. Have you run StarPU FxT tool?");
+
+				String[] cmd1 = { "vite", inputfilename };
+				starpu.handlers.TraceUtils.runCommand(cmd1);
+			} catch (Exception e) {
+				TraceUtils.displayMessage("Error: " + e.toString());
+				e.printStackTrace();
+			}
+		});
+
+		return null;
+	}
+
+}

+ 36 - 0
eclipse-plugin/tools/cproject.sh

@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# StarPU --- Runtime system for heterogeneous multicore architectures.
+#
+# Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+#
+# StarPU is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or (at
+# your option) any later version.
+#
+# StarPU is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# See the GNU Lesser General Public License in COPYING.LGPL for more details.
+#
+
+type=$1
+shift
+
+if test "$type" == "module"
+then
+    input='@STARPU_LIB@="true"'
+elif test "$type" == "option"
+then
+     input='<listOptionValue builtIn="false" srcPrefixMapping="" srcRootPath="" value="@STARPU_LIB@"/>'
+else
+    echo Unknown type $type
+    exit 1
+fi
+
+for x in $*
+do
+    echo $input | sed -e 's/@STARPU_LIB@/'$x'/'
+done | tr '\012' ' '

+ 30 - 0
eclipse-plugin/tools/install_workspace.sh

@@ -0,0 +1,30 @@
+#!/bin/bash
+#
+# StarPU --- Runtime system for heterogeneous multicore architectures.
+#
+# Copyright (C) 2021       Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+#
+# StarPU is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or (at
+# your option) any later version.
+#
+# StarPU is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# See the GNU Lesser General Public License in COPYING.LGPL for more details.
+#
+
+src=$1
+dst=$2
+shift
+shift
+
+if test ! -d $dst/$(dirname $src)
+then
+    echo mkdir -p $dst/$(dirname $src)
+    mkdir -p $dst/$(dirname $src)
+fi
+echo $* $src $dst/$(dirname $src)
+$* $src $dst/$(dirname $src)