Homebrew IDE

Programming, for all ages and all languages.
codertom
Posts: 22
Joined: Wed Apr 09, 2014 7:58 am

Homebrew IDE

Post by codertom »

Hey everyone, I've developed an IDE specifically for Operating System development which allows you to quickly compile and run the operating system solution.
  • It supports parsing the error messages from GCC/NASM/LD (GNU Linker) and displays them in the appropriate tabs as seen in the screenshot on the bottom left corner. Clicking on an error/warning takes you straight to the file, line and column that the error or warning is talking about.

    As well as this, it runs Qemu as soon as it's finished building (only if you press "Run") so you can quickly see if the code runs as expected (however, there is no debugging features (yet?)).

    The IDE uses it's own Solution/Project/Make system.

    If anyone is interested in using this, then please let me know. Most of the behaviour is inspired by the Microsoft Visual Studio IDE for Windows and it uses it's icons because I have no talent when it comes to icons...
[EDIT]
I am now looking into Qemu's "QMP" to see if I can impliment a "break" function which halts the OS and gives you exactly where in the code it is (via the program counter register) and a few more interesting things :)
Attachments
screen2.png
Rew
Member
Member
Posts: 28
Joined: Mon Oct 29, 2012 2:26 pm

Re: Homebrew IDE

Post by Rew »

looks really nice. This is exactly what I was looking for when I started OSdev. I'm assuming it has mixed language support for c and asm files. Does it support any other languages? Does it have intellisense? What did you use for the parser, or is that homebrew as well?

as far as debugging, i have used gdb support in qemu to implement a debugger. You could in theory implement a full debugging experience. Atleast for the gcc compiled stuff. i'm not sure of the debug output available from nasm.

I had started on my own ide like you did and ended up doing the approach of prviding a visual sudio package for my "ide" environment. The leanring curve is fairly steep and the documentation is sparse, but I ended up with the ide experience I was looking for and can focus solely on the functional (not ui) aspects. The downside of this approach is it ultimately makes it more difficult to host in my os down the road.

Caution: it is easy to get tied up in ide/toolkit development. My os development has been on halt for over a year as I built an assembler, linker, and debugger to support the development experience I wanted
codertom
Posts: 22
Joined: Wed Apr 09, 2014 7:58 am

Re: Homebrew IDE

Post by codertom »

Rew wrote:looks really nice. This is exactly what I was looking for when I started OSdev. I'm assuming it has mixed language support for c and asm files. Does it support any other languages? Does it have intellisense? What did you use for the parser, or is that homebrew as well?
Thanks :) It supports ASM/C/C Header (C Headers are treated as normal C code but compiled first) (right now though I'm having issues linking C/ASM together. It doesnt have intellisense.
As for the parser (if you mean syntax highlighter), I'm using SyntaxBox (http://syntaxbox.codeplex.com/)
Rew wrote: as far as debugging, i have used gdb support in qemu to implement a debugger. You could in theory implement a full debugging experience. Atleast for the gcc compiled stuff. i'm not sure of the debug output available from nasm.
I've an emulator class which exposes debugging like functions which interact with the GDP from Qemu (i'm still playing with it at the moment)
Rew wrote: I had started on my own ide like you did and ended up doing the approach of prviding a visual sudio package for my "ide" environment. The leanring curve is fairly steep and the documentation is sparse, but I ended up with the ide experience I was looking for and can focus solely on the functional (not ui) aspects. The downside of this approach is it ultimately makes it more difficult to host in my os down the road.
What do you mean by VS package? if you mean like a plugin for VS, I won't be doing that. It's completely standalone (providing you have .Net 2.0 installed)
Rew wrote: Caution: it is easy to get tied up in ide/toolkit development. My os development has been on halt for over a year as I built an assembler, linker, and debugger to support the development experience I wanted
Addicting right? I might just make it open source and let everyone contribute so I don't have to focus on it too much.
I'm not going in-depth with it and developing my own linker/compiler/debugger though, i'm using GCC/NASM for the compiler, GNU Linker (ld.exe) for the linker and Qemu for the emulator (possibly debugger)
User avatar
Lionel
Member
Member
Posts: 117
Joined: Fri Jul 16, 2010 2:16 pm
Libera.chat IRC: ryanel
Location: California

Re: Homebrew IDE

Post by Lionel »

One problem I foresee is that since this runs .NET, it won't be compatible with Linux.
Realise that 95%+ of the people who do OSDev use linux, and that maybe ~4% would be able to use it.
Not to put the project down or anything (it looks pretty good), how will you handle losing/not having access to the majority of your userbase?
User avatar
VolTeK
Member
Member
Posts: 815
Joined: Sat Nov 15, 2008 2:37 pm
Location: The Fire Nation

Re: Homebrew IDE

Post by VolTeK »

Lionel wrote:and that maybe ~4% would be able to use it.
I too, use symbols to sound smart

If people wanna use it, they'll get their act together and emulate windows.
Kevin
Member
Member
Posts: 1071
Joined: Sun Feb 01, 2009 6:11 am
Location: Germany
Contact:

Re: Homebrew IDE

Post by Kevin »

Might Mono work for using it on Linux?

Though I can't see a reason for using it anyway, judging from the original post it doesn't seem to add anything to what I already have.
Developer of tyndur - community OS of Lowlevel (German)
codertom
Posts: 22
Joined: Wed Apr 09, 2014 7:58 am

Re: Homebrew IDE

Post by codertom »

Kevin wrote:Might Mono work for using it on Linux?
Mono works with linux yeah, however the IDE doesnt work with Mono since it's not 100% managed C#. There's a few P/invokes that the syntax highlighter uses which is locked to Windows however I'l see if I can change that.
Kevin wrote:Though I can't see a reason for using it anyway, judging from the original post it doesn't seem to add anything to what I already have.
Out of curiosity, what IDE/dev tools do you use?
Lionel wrote:how will you handle losing/not having access to the majority of your userbase?
The IDE isn't really intended for commercial use or any kind of distribution so i'm not really interested in the fact that most of the people here probably won't be able to run it. It was intended for my own personal use but I wanted to see if anyone here was interested in using it.
User avatar
bwat
Member
Member
Posts: 359
Joined: Fri Jul 03, 2009 6:21 am

Re: Homebrew IDE

Post by bwat »

codertom wrote:The IDE isn't really intended for commercial use or any kind of distribution so i'm not really interested in the fact that most of the people here probably won't be able to run it. It was intended for my own personal use but I wanted to see if anyone here was interested in using it.
Quite right. All too often I read comments from people who think it's a popularity contest. Sometimes we've just got to do things for our own personal reasons.
Every universe of discourse has its logical structure --- S. K. Langer.
User avatar
Bender
Member
Member
Posts: 449
Joined: Wed Aug 21, 2013 3:53 am
Libera.chat IRC: bender|
Location: Asia, Singapore

Re: Homebrew IDE

Post by Bender »

btw let's leave Linux support for a while, I wonder if you've written that solution explorer yourself, the only possible method i remember was using UIhierarchy.something.SolutionExplorer, I don't know the exact name :P.
edit: no it uihierarchy isn't the one, it manipulates the Visual Studio Solution Explorer.
"In a time of universal deceit - telling the truth is a revolutionary act." -- George Orwell
(R3X Runtime VM)(CHIP8 Interpreter OS)
Kevin
Member
Member
Posts: 1071
Joined: Sun Feb 01, 2009 6:11 am
Location: Germany
Contact:

Re: Homebrew IDE

Post by Kevin »

codertom wrote:Out of curiosity, what IDE/dev tools do you use?
Nothing fancy, just vim (with some cscope key mappings configured for source code navigation, but apart from that I didn't configure all that much) and a Makefile that has a target for starting qemu after having compiled everything (with serial console on stdio) and a second target that enables the gdb server and drops me to a gdb command line for the kernel binary.
Developer of tyndur - community OS of Lowlevel (German)
codertom
Posts: 22
Joined: Wed Apr 09, 2014 7:58 am

Re: Homebrew IDE

Post by codertom »

Bender wrote:I wonder if you've written that solution explorer yourself, the only possible method i remember was using UIhierarchy.something.SolutionExplorer, I don't know the exact name :P.
edit: no it uihierarchy isn't the one, it manipulates the Visual Studio Solution Explorer.
It's my own solution explorer with my own solution file format :). The icons though are ripped from VS's "Image Library" thing that comes with VS.
Kevin wrote:Nothing fancy, just vim (with some cscope key mappings configured for source code navigation, but apart from that I didn't configure all that much) and a Makefile that has a target for starting qemu after having compiled everything (with serial console on stdio) and a second target that enables the gdb server and drops me to a gdb command line for the kernel binary.
Ah, my IDE doesnt use Makefiles but manipulates the compiler/linker/qemu directly depending on what building configuration you have set. I'm thinking of making a Makefile generator though if people want a standard file that is "universal".
Kevin
Member
Member
Posts: 1071
Joined: Sun Feb 01, 2009 6:11 am
Location: Germany
Contact:

Re: Homebrew IDE

Post by Kevin »

codertom wrote:Ah, my IDE doesnt use Makefiles but manipulates the compiler/linker/qemu directly depending on what building configuration you have set. I'm thinking of making a Makefile generator though if people want a standard file that is "universal".
Probably a good idea, even if the IDE doesn't use the Makefile internally for building the project. But if you publish the source code of your OS, you'll want to include a Makefile so that everyone can build it with their standard system tools, without installing the IDE first.
Developer of tyndur - community OS of Lowlevel (German)
codertom
Posts: 22
Joined: Wed Apr 09, 2014 7:58 am

Re: Homebrew IDE

Post by codertom »

Kevin wrote:
codertom wrote:Ah, my IDE doesnt use Makefiles but manipulates the compiler/linker/qemu directly depending on what building configuration you have set. I'm thinking of making a Makefile generator though if people want a standard file that is "universal".
Probably a good idea, even if the IDE doesn't use the Makefile internally for building the project. But if you publish the source code of your OS, you'll want to include a Makefile so that everyone can build it with their standard system tools, without installing the IDE first.
Yeah :) I may not make it open source because I don't know 100% what to do with e.g sell the OS or something. (Maybe just the kernel would be open source and licensed GNU and the rest would be commercial)
lexected
Posts: 23
Joined: Wed Aug 14, 2013 11:48 am

Re: Homebrew IDE

Post by lexected »

codertom wrote: Mono works with linux yeah, however the IDE doesnt work with Mono since it's not 100% managed C#. There's a few P/invokes that the syntax highlighter uses which is locked to Windows however I'l see if I can change that.
syntaxbox.codeplex.com wrote: Powerful Syntax Highlight Windows Forms Control for the Microsoft.NET Platform.
Written in 100% managed C#.
Hmm.
codertom
Posts: 22
Joined: Wed Apr 09, 2014 7:58 am

Re: Homebrew IDE

Post by codertom »

flipkrajnc wrote:
codertom wrote: Mono works with linux yeah, however the IDE doesnt work with Mono since it's not 100% managed C#. There's a few P/invokes that the syntax highlighter uses which is locked to Windows however I'l see if I can change that.
syntaxbox.codeplex.com wrote: Powerful Syntax Highlight Windows Forms Control for the Microsoft.NET Platform.
Written in 100% managed C#.
Hmm.
I know that SyntaxBox says that. However, the source code tells otherwise. It uses P/invokes for GDI+ etc which is platform locked. 100% managed is EVERYTHING is using .Net framework calls and not native ones.

The Mono framework does not emulate kernel32,gdi+ or user32 libraries so it renders [DllImport(dll)] useless.
Post Reply