Skip to contentSkip to conversation

Release 1.0.0 of the Buildroot/Eclipse integration

Buildroot New Thomas Petazzoni 5 participants 12 messages Jan 13, 2013 – Mar 21, 2013 Kbuild

lore
Share & tools
lore
#0 lore raw

Hello,

We are proud to announce today the first release of the Buildroot/Eclipse integration. This integration will make it easier for Eclipse users to develop, build, and debug applications in the context of embedded Linux systems generated with Buildroot.

This integration allows Eclipse to:

* Automatically discover the toolchain made available by each of the Buildroot project on your machine.

* Automatically build your application or library in Eclipse using the cross-compiler of a given Buildroot project. Eclipse also automatically recognizes all the cross-compiled libraries that are exposed through pkg-config, so that linking your application against one or several of those libraries is just a matter of selecting them in a list.

* Automatically copy your compiled application to the target and execute it, directly from Eclipse, with just one click on the "Run" button.

* Automatically start a remote debugging session, directly from Eclipse, with just one click on the "Debug" button.

* Explore the target filesystem from Eclipse, get access to a shell on the target (using SSH).

In order to help interested users, we are providing a detailed set of tutorials, with numerous screenshots at:

https://github.com/mbats/eclipse-buildroot-bundle/wiki

The first tutorial details the installation, which is very simple:

* Download and install Eclipse for C/C++ developers
* Enable an update site, hosted at
http://buildroot.org/downloads/eclipse/. It will automatically pull all the necessary Eclipse plugins to provide the features mentioned above.

A video of a conference given on this topic at EclipseCon Europe 2012 is also available at https://www.youtube.com/watch?v=CNl784ws8F0,
providing a demonstration of Eclipse usage in a Buildroot context. Note that a second presentation of this project will be done at EclipseCon US 2013 in March in Boston.

We are attaching to this e-mail two patches for Buildroot:

* The first patch is mandatory to make the Buildroot/Eclipse integration work. It registers the toolchain generated by each Buildroot project in a hidden file located in the user's home directory, which is then read by Eclipse to automatically find the available toolchains.

* The second patch updates the manual to mention the Eclipse/Buildroot integration, and a reference to the site for more details.

We are very interested in receiving feedback from users, either concerning bugs in the existing features, or suggestion of new features. The Wiki of the project already mentions a number of features that we would like to work on in the future, but having feedback would definitely be appreciated.

All the Eclipse development and integration work has been done by M?lanie Bats <[email protected]>.

Best regards,

M?lanie and Thomas

#1 lore raw

PATCH 1/2 Integration with Buildroot Toolchain Eclipse plugin

The Eclipse plugin at
https://github.com/mbats/eclipse-buildroot-toolchain-plugin allows users of Eclipse to easily use the toolchain available in Buildroot. To do so, this plugin reads ~/.buildroot-eclipse.toolchains, which contains the list of Buildroot toolchains available on the system, and then offer those toolchains to compile Eclipse projects.

In order to interface with this plugin, this commit adds an option that allows the user to tell whether (s)he wants the Buildroot project toolchain to be visible under this Eclipse plugin. It simply adds a line in this ~/.buildroot-eclipse.toolchains file.

---
 Makefile                                   |    7 +++++++
 support/scripts/eclipse-register-toolchain |   28 ++++++++++++++++++++++++++++
 toolchain/toolchain-common.in              |    7 +++++++
 3 files changed, 42 insertions(+)
 create mode 100755 support/scripts/eclipse-register-toolchain
Makefile +7 -0
index 074674a..70cb229 100644
@@ -336,6 +336,10 @@ TARGETS+=target-generatelocales
 endif
 endif
 
+ifeq ($(BR2_ECLIPSE_REGISTER),y)
+TARGETS+=toolchain-eclipse-register
+endif
+
 include fs/common.mk
 
 TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
@@ -531,6 +535,9 @@ target-generatelocales: host-localedef
 	done
 endif
 
+toolchain-eclipse-register:
+	./support/scripts/eclipse-register-toolchain `readlink -f $(O)` $(notdir $(TARGET_CROSS)) $(BR2_ARCH)
+
 source: dirs $(TARGETS_SOURCE) $(HOST_SOURCE)
 
 external-deps:
support/scripts/eclipse-register-toolchain new file +28 -0
new file mode 100755
index 0000000..dd9f158
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+project_directory=$1
+toolchain_prefix=$2
+architecture=$3
+
+TOOLCHAIN_ECLIPSE_FILE=${HOME}/.buildroot-eclipse.toolchains
+
+if test -f ${TOOLCHAIN_ECLIPSE_FILE} ; then
+    mv ${TOOLCHAIN_ECLIPSE_FILE} ${TOOLCHAIN_ECLIPSE_FILE}.tmp
+    cat ${TOOLCHAIN_ECLIPSE_FILE}.tmp | while read toolchain ; do
+	path=$(echo ${toolchain} | cut -f1 -d ':')
+        # Filter lines corresponding to still existing projects
+	echo "Testing ${path} ..."
+	if ! test -d ${path} ; then
+	    continue
+	fi
+	# .. and the current project
+	if test ${path} = ${project_directory} ; then
+	    continue
+	fi
+	echo ${toolchain} >> ${TOOLCHAIN_ECLIPSE_FILE}
+    done
+    rm ${TOOLCHAIN_ECLIPSE_FILE}.tmp
+fi
+
+# Add the toolchain
+echo "${project_directory}:${toolchain_prefix}:${architecture}" >> ${TOOLCHAIN_ECLIPSE_FILE}
toolchain/toolchain-common.in +7 -0
index 9f11a39..f6905ae 100644
@@ -131,3 +131,10 @@ config BR2_TARGET_LDFLAGS
 	string "Target linker options"
 	help
 	  Extra options to pass to the linker when building for the target.
+
+config BR2_ECLIPSE_REGISTER
+	bool "Register toolchain within Eclipse Buildroot plug-in"
+	help
+	  This options tells Buildroot to generate the necessary
+	  configuration files to make your toolchain appear within
+	  Eclipse, through the Eclipse Buildroot plugin.
Signature · 1 line
1.7.9.5
#2 lore raw

PATCH 1/2 Integration with Buildroot Toolchain Eclipse plugin

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Thomas> The Eclipse plugin at
Thomas> https://github.com/mbats/eclipse-buildroot-toolchain-plugin allows Thomas> users of Eclipse to easily use the toolchain available in Thomas> Buildroot. To do so, this plugin reads
Thomas> ~/.buildroot-eclipse.toolchains, which contains the list of Buildroot Thomas> toolchains available on the system, and then offer those toolchains to Thomas> compile Eclipse projects.

Thomas> In order to interface with this plugin, this commit adds an option Thomas> that allows the user to tell whether (s)he wants the Buildroot project Thomas> toolchain to be visible under this Eclipse plugin. It simply adds a Thomas> line in this ~/.buildroot-eclipse.toolchains file.

Thomas> Signed-off-by: Thomas Petazzoni <[email protected]>

Thomas> +++ b/support/scripts/eclipse-register-toolchain Thomas> @@ -0,0 +1,28 @@
Thomas> +#!/bin/sh
Thomas> +
Thomas> +project_directory=$1
Thomas> +toolchain_prefix=$2
Thomas> +architecture=$3

Committed, thanks. I know this is an internal script, but a bit of documentation / argument checking could have been good.

Signature · 1 line
Bye, Peter Korsgaard
#3 lore raw

PATCH 2/2 docs/manual: mention the Eclipse integration

In reply to Thomas Petazzoni
---
 docs/manual/eclipse-integration.txt |   30 ++++++++++++++++++++++++++++++
 docs/manual/working-with.txt        |    2 ++
 2 files changed, 32 insertions(+)
 create mode 100644 docs/manual/eclipse-integration.txt
docs/manual/eclipse-integration.txt new file +30 -0
new file mode 100644
index 0000000..3d8179f
@@ -0,0 +1,30 @@
+// -*- mode:doc; -*-
+
+Integration with Eclipse
+------------------------
+
+While a part of the embedded Linux developers like classical text
+editors like Vim or Emacs, and command-line based interfaces, a number
+of other embedded Linux developers like richer graphical interfaces to
+do their development work. Eclipse being one of the most popular
+Integrated Development Environment, Buildroot integrates with Eclipse
+in order to ease the development work of Eclipse users.
+
+Our integration with Eclipse simplifies the compilation, remote
+execution and remote debugging of applications and libraries that are
+built on top of a Buildroot system. It does not integrate the
+Buildroot configuration and build processes themselves with
+Eclipse. Therefore, the typical usage model of our Eclipse integration
+would be:
+
+* Configure your Buildroot system with +make menuconfig+, +make
+  xconfig+ or any other configuration interface provided with
+  Buildroot.
+* Build your Buildroot system by running +make+.
+* Start Eclipse to develop, execute and debug your own custom
+  applications and libraries, that will rely on the libraries built
+  and installed by Buildroot.
+
+The Buildroot Eclipse integration installation process and usage is
+described in detail at
+https://github.com/mbats/eclipse-buildroot-bundle/wiki.
docs/manual/working-with.txt +2 -0
index b62bacd..fb6bc40 100644
@@ -14,6 +14,8 @@ include::customize.txt[]
 
 include::common-usage.txt[]
 
+include::eclipse-integration.txt[]
+
 Hacking Buildroot
 -----------------
 
Signature · 1 line
1.7.9.5
#4 lore raw

PATCH 2/2 docs/manual: mention the Eclipse integration

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Thomas> Signed-off-by: Thomas Petazzoni <[email protected]>

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#5 lore raw
In reply to Thomas Petazzoni

2013/1/13 Thomas Petazzoni <[email protected]>:

Quoted 66 lines

Hello,

We are proud to announce today the first release of the Buildroot/Eclipse integration. This integration will make it easier for Eclipse users to develop, build, and debug applications in the context of embedded Linux systems generated with Buildroot.

This integration allows Eclipse to:

* Automatically discover the toolchain made available by each of the Buildroot project on your machine.

* Automatically build your application or library in Eclipse using the cross-compiler of a given Buildroot project. Eclipse also automatically recognizes all the cross-compiled libraries that are exposed through pkg-config, so that linking your application against one or several of those libraries is just a matter of selecting them in a list.

* Automatically copy your compiled application to the target and execute it, directly from Eclipse, with just one click on the "Run" button.

* Automatically start a remote debugging session, directly from Eclipse, with just one click on the "Debug" button.

* Explore the target filesystem from Eclipse, get access to a shell on the target (using SSH).

In order to help interested users, we are providing a detailed set of tutorials, with numerous screenshots at:

https://github.com/mbats/eclipse-buildroot-bundle/wiki

The first tutorial details the installation, which is very simple:

* Download and install Eclipse for C/C++ developers
* Enable an update site, hosted at
http://buildroot.org/downloads/eclipse/. It will automatically pull all the necessary Eclipse plugins to provide the features mentioned above.

A video of a conference given on this topic at EclipseCon Europe 2012 is also available at https://www.youtube.com/watch?v=CNl784ws8F0,
providing a demonstration of Eclipse usage in a Buildroot context. Note that a second presentation of this project will be done at EclipseCon US 2013 in March in Boston.

We are attaching to this e-mail two patches for Buildroot:

* The first patch is mandatory to make the Buildroot/Eclipse integration work. It registers the toolchain generated by each Buildroot project in a hidden file located in the user's home directory, which is then read by Eclipse to automatically find the available toolchains.

* The second patch updates the manual to mention the Eclipse/Buildroot integration, and a reference to the site for more details.

We are very interested in receiving feedback from users, either concerning bugs in the existing features, or suggestion of new features. The Wiki of the project already mentions a number of features that we would like to work on in the future, but having feedback would definitely be appreciated.

Quoted 7 lines

All the Eclipse development and integration work has been done by M?lanie Bats <[email protected]>.

Best regards,

M?lanie and Thomas

Do the patches miss ?

Quoted 4 lines

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#6 lore raw

Dear Willy Lambert,

Quoted 1 line · Willy Lambert

Do the patches miss ?

Hum, not sure to understand. The two patches were sent as a reply to the introduction e-mail announcing the Buildroot/Eclipse integration release, like for all patch series.

See:

http://lists.busybox.net/pipermail/buildroot/2013-January/065340.html
http://lists.busybox.net/pipermail/buildroot/2013-January/065341.html

Best regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#7 lore raw
In reply to Thomas Petazzoni

Let me just say that this is just awesome....

I am not an eclipse user myself, but we regularly have request for providing a BSP based on buildroot and a compatible developement environement. This plugin is going to make things way more easier for us...

keep up the great work

Regards

J?r?my Rosen

fight key loggers : write some perl using vim

----- Mail original -----

Quoted 81 lines

Hello,

We are proud to announce today the first release of the Buildroot/Eclipse integration. This integration will make it easier for Eclipse users to develop, build, and debug applications in the context of embedded Linux systems generated with Buildroot.

This integration allows Eclipse to:

* Automatically discover the toolchain made available by each of the Buildroot project on your machine.

* Automatically build your application or library in Eclipse using the cross-compiler of a given Buildroot project. Eclipse also automatically recognizes all the cross-compiled libraries that are exposed through pkg-config, so that linking your application against one or several of those libraries is just a matter of selecting them in a list.

* Automatically copy your compiled application to the target and execute it, directly from Eclipse, with just one click on the "Run"
button.

* Automatically start a remote debugging session, directly from Eclipse, with just one click on the "Debug" button.

* Explore the target filesystem from Eclipse, get access to a shell on the target (using SSH).

In order to help interested users, we are providing a detailed set of tutorials, with numerous screenshots at:

https://github.com/mbats/eclipse-buildroot-bundle/wiki

The first tutorial details the installation, which is very simple:

* Download and install Eclipse for C/C++ developers
* Enable an update site, hosted at
http://buildroot.org/downloads/eclipse/. It will automatically pull
all the necessary Eclipse plugins to provide the features mentioned
above.

A video of a conference given on this topic at EclipseCon Europe 2012 is also available at https://www.youtube.com/watch?v=CNl784ws8F0,
providing a demonstration of Eclipse usage in a Buildroot context. Note that a second presentation of this project will be done at EclipseCon US 2013 in March in Boston.

We are attaching to this e-mail two patches for Buildroot:

* The first patch is mandatory to make the Buildroot/Eclipse integration work. It registers the toolchain generated by each Buildroot project in a hidden file located in the user's home directory, which is then read by Eclipse to automatically find the available toolchains.

* The second patch updates the manual to mention the Eclipse/Buildroot integration, and a reference to the site for more
details.

We are very interested in receiving feedback from users, either concerning bugs in the existing features, or suggestion of new features. The Wiki of the project already mentions a number of features that we would like to work on in the future, but having feedback would definitely be appreciated.

All the Eclipse development and integration work has been done by M?lanie Bats <[email protected]>.

Best regards,

M?lanie and Thomas

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#8 lore raw

Dear Jeremy Rosen,

Quoted 6 lines · Jeremy Rosen

Let me just say that this is just awesome....

I am not an eclipse user myself, but we regularly have request for providing a BSP based on buildroot and a compatible developement environement. This plugin is going to make things way more easier for us...

keep up the great work

Thanks for the kind words. At this point, it is really a first release, and there are certainly many improvements to be made to make it more useful. However, to achieve this, we really need some feedback from potential users. The best would be users who are used to do embedded development with IDEs, so that they can compare with what they are used to have, and we can see how to improve this integration to fill the missing gaps if any.

Thanks!

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#9 lore raw

I'll keep that in mind when I do some testing of the plugins...
I'm not doing buildroot work right now but it comes back often enough that you can expect feedback from me at some point...

Cordialement

J?r?my Rosen

fight key loggers : write some perl using vim

----- Mail original -----

Quoted 32 lines

Dear Jeremy Rosen,

Quoted 8 lines · Jeremy Rosen

Let me just say that this is just awesome....

I am not an eclipse user myself, but we regularly have request for providing a BSP based on buildroot and a compatible developement environement. This plugin is going to make things way more easier for us...

keep up the great work

Thanks for the kind words. At this point, it is really a first release,
and there are certainly many improvements to be made to make it more useful. However, to achieve this, we really need some feedback from potential users. The best would be users who are used to do embedded development with IDEs, so that they can compare with what they are used
to have, and we can see how to improve this integration to fill the missing gaps if any.

Thanks!

Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

#10 lore raw
In reply to Thomas Petazzoni
Quoted 18 lines

-----Original Message-----
From: buildroot-bounces at busybox.net [mailto:buildroot-bounces at busybox.net] On Behalf Of Thomas Petazzoni
Sent: 13 January 2013 14:52

Hello,

We are proud to announce today the first release of the Buildroot/Eclipse integration. This integration will make it easier for Eclipse users to develop, build, and debug applications in the context of embedded Linux systems generated with Buildroot.

This integration allows Eclipse to:

* Automatically discover the toolchain made available by each of the Buildroot project on your machine.

Quoted 6 lines

* Automatically build your application or library in Eclipse using the cross-compiler of a given Buildroot project. Eclipse also automatically recognizes all the cross-compiled libraries that are exposed through pkg-config, so that linking your application against one or several of those libraries is just a matter of selecting them in a list.

So far so good, I have eclipse integration working up to this point, this saves a lot of messing about that was previously required to configure a project to pick up the cross tools and libraries - thanks!

The only thing I have noticed so far: there is a slight feature around the pkg-config automatic inclusion of libraries. If I select then unselect a library in the project properties "Pkg-config" tab in eclipse, then look at the "Tool Settings", "Libraries" I find that the library is still in the list. Actually there are multiple inclusions of the same library in the libraries list. Then when I do a build, the linker command line has e.g. "... -luuid -lz -luuid -lz ..." on it. It doesn't stop it working but it is untidy ... and when I have deselected the library I don't think I should find the linker still linking against it.

I hope to explore more later ...

Quoted 59 lines

* Automatically copy your compiled application to the target and execute it, directly from Eclipse, with just one click on the "Run" button.

* Automatically start a remote debugging session, directly from Eclipse, with just one click on the "Debug" button.

* Explore the target filesystem from Eclipse, get access to a shell on the target (using SSH).

In order to help interested users, we are providing a detailed set of tutorials, with numerous screenshots at:

https://github.com/mbats/eclipse-buildroot-bundle/wiki

The first tutorial details the installation, which is very simple:

* Download and install Eclipse for C/C++ developers
* Enable an update site, hosted at
http://buildroot.org/downloads/eclipse/. It will automatically pull all the necessary Eclipse plugins to provide the features mentioned above.

A video of a conference given on this topic at EclipseCon Europe 2012 is also available at https://www.youtube.com/watch?v=CNl784ws8F0,
providing a demonstration of Eclipse usage in a Buildroot context. Note that a second presentation of this project will be done at EclipseCon US 2013 in March in Boston.

We are attaching to this e-mail two patches for Buildroot:

* The first patch is mandatory to make the Buildroot/Eclipse integration work. It registers the toolchain generated by each Buildroot project in a hidden file located in the user's home directory, which is then read by Eclipse to automatically find the available toolchains.

* The second patch updates the manual to mention the Eclipse/Buildroot integration, and a reference to the site for more details.

We are very interested in receiving feedback from users, either concerning bugs in the existing features, or suggestion of new features. The Wiki of the project already mentions a number of features that we would like to work on in the future, but having feedback would definitely be appreciated.

All the Eclipse development and integration work has been done by M?lanie Bats <[email protected]>.

Best regards,

M?lanie and Thomas

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#11 lore raw

Dear Will Moore,

Quoted 3 lines · Will Moore

So far so good, I have eclipse integration working up to this point, this saves a lot of messing about that was previously required to configure a project to pick up the cross tools and libraries - thanks!

Thanks a lot for your feedback, really appreciated!

Quoted 9 lines

The only thing I have noticed so far: there is a slight feature around the pkg-config automatic inclusion of libraries. If I select then unselect a library in the project properties "Pkg-config" tab in eclipse, then look at the "Tool Settings", "Libraries" I find that the library is still in the list. Actually there are multiple inclusions of the same library in the libraries list. Then when I do a build, the linker command line has e.g. "... -luuid -lz -luuid -lz ..." on it. It doesn't stop it working but it is untidy ... and when I have deselected the library I don't think I should find the linker still linking against it.

Yes, we also noticed this problem and we intend to work on fixing it.

It's worth noting that we will soon be releasing a new version of the Eclipse integration, which includes support for Autotools projects and Makefile-based projects.

Also, this work will be presented next week at EclipseCon US in Boston, see
http://www.eclipsecon.org/2013/sessions/buildroot-eclipse-bundle-powerful-ide-embedded-linux-developers.

Best regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com