IDE for Genode Development

Back to the topic that started it all… :wink:

My original intention in the question on the ML was about an IDE for Genode development, not necessarily running on Genode itself. But that is a very interesting topic as well, since native Genode development is the ultimate goal, of course!

For me, multi-language support (e.g., Ada, Rust, etc.) is an important feature. The leading contenders for this seem to be VSCodium and Eclipse, but please let me know of any other options. And obviously we need to be able to use the custom Genode toolchain.

Personally, I have a profound (multi-decade) distrust of Microsoft, so I would prefer something with a purer FLOSS pedigree, but my day job is in MS Visual Studio, so I’m sure I can get along in VSCodium, which seems to have a lot of plugin/extension support. Eclipse also has great extensibility (and a long history), but seemed cumbersome last time I used it. But that could be an out-of-date opinion.

If anyone has any thoughts on this topic, please share them! (Favorite IDE(s), setup hints, porting ideas/issues, etc.)

I’m on the minimalist end of the spectrum as I do all my Genode work with 2+ terminals with 3 tabs each (one terminal per directory, but 3 different repetitive tasks to be done in each, plus a terminal occasionally spawned for grepping and other tasks)… and either Pe or Koder as the editor. Both have syntax highlighting/coloring for dozens of language (didn’t check Ada and Rust though), but that’s it for “support” : no automatic completion and such.

Depending on what extensions you need, it might or might not be worth checking out Be-API editors (Paladin etc) and Qt-API ones (qCreator ?). There were also suggestions made on the mailing-list with seemingly innovative and FLOSS candidates.

So there it is… Not contributing much to the conversation, but basically trying to find a shortcut for you, as I suspect it will take much longer for Eclipse et al to ‘happen’ :wink: Versus Qt-based apps whose port should be easier since Genode already has Qt. (I’m mentionning this in the context of future Genode “self hosting”, but that might not be the relevant perspective here)

EDIT: Before writing anything, I should have asked which OS you’re cross-compiling from. I think you once mentionned Linux ?

1 Like

For me, it is just Vim and Unix all the way. Most of the time, I’m using merely three terminals. One for editing source code (Vim is almost always running there), one with a bash shell for building, and one for sporadic needs (like browsing a gIt log, downloading or copying a file, firing up gdb sometimes, etc.). A pretty calm way of life.

2 Likes

I tend to use editors that fits on the platform I use, vim on unix systems. With one exception: I use Sublime for refactoring large files. ,

It looks like we have mostly old-school, minimalist devs here. :slight_smile: I certainly like to know how to work at lower levels, but I have to admit that I am getting old and lazy, especially when it comes to larger projects and/or unfamiliar APIs.

I will try to fire up a couple of IDEs (probably Eclipse and VSCodium), and see how far I get. I’m assuming that things should work in general, but I don’t know how to do things like specifying the Genode toolchain. I’ll report back if I find anything useful.

Started using Debian Linux for building Genode and my Be stuff. It must have been at least 20 years since I last used Linux, ewww.

It comes in the nick of time too, as I was having trouble with my old toolchain build – now I can actually download and use the official Genode toolchain with full C++20 support.

On the upside, Linux is clearly faster than what I’m used to, in terms of filesystem throughput especially.

However I’m not clear yet on how to fix these Terminal issues:

  • paths are not clickable (generally speaking)
  • GCC error messages, in particular, are not clickable (which is pretty much a show stopper for any Terminal-based developement, seems to me ^^)

I’ll keep an eye out to try and find the key combo or configuration needed to fix those.

It would be a little “out of character” for me if I, too, ended up looking for an IDE as a ‘fix’ for those problems ^^

I would assume the IDE would just call make <target>, which would take care of anything toolchain-related ? Though it might take some configuration to tell the IDE that it must call make with specific kernel and platform environment variables.

1 Like

Nah . you just add BOARD and KERNEL to IDE make command. Wild guess: I think you can do templates in most IDEs

Forgive for my ignorance stemming from my 20+ years that I spent in Linux, but what do you mean by clickable exactly? Are you referring to hyperlink-like functionality?

‘Hyperlink’ would be the best way to describe it I think, yes.

When GCC outputs something like “semicolon missing at /path/to/source.cpp:50” then one may either…

  • switch to an editor (or IDE), open the file (navigating through the hierarchy), then scroll down to line 50, or
  • just command-click (or meta-click, super-click, depending on keyboard layout) the gcc error line to open the right file at the right line (in this example, line 50)

I always assumed this was the way it worked in Linux distros too. Was I wrong ? How do you guys handle GCC output (in a Terminal, absent an IDE, I mean) ?

EDIT:

Forgot to mention something (ironically) relevant to John’s original question, which might bring smiles on some faces, or raise eyebrows, or both : I used to be an IDE user… Until I switched back to Terminal !
That is, the opposite path of the one being discussed. I used to develop in BeIDE (Metrowerks Codewarrior for BeOS). It was a relatively cool experience, but some drawbacks (inability to put the binary .proj file in version control, unlike a makefile/jamfile which can be diff’ed and patched collaboratively) made me switch to Terminal+Pe, once I switched my projects to Jamfiles. At the beginning it took some getting used to, but as Terminal got better and better I really got into a groove and never looked back. Anyway that’s it for today’s useless factoid (grin).

In many editors you can just do a short command to get to the page you want to find. No need for scrolling. It would be absolutely bad if I needed to scroll to the right line. VIM also features command line argument to get to a specific line, but I have never used that.

I always assumed this was the way it worked in Linux distros too. Was I wrong ?

Yes you are :slight_smile: . The best way is probably to have a editor open … and just quick jump to the offending line. In VIM its is “ESC :linenumber”

With VIM you can do “vim file +22”. That brings you to line 22

1 Like

Yes, hopefully it’s just a matter of setting environment variables in the project file. :crossed_fingers: