Announcing a new build system for Myrddin code.
[Thread Prev] | [Thread Next]
[Date Prev] | [Date Next]
- Subject: Announcing a new build system for Myrddin code.
- From: Ori Bernstein <ori@xxxxxxxxxxxxxx>
- Date: Fri, 12 Dec 2014 10:33:29 -0800
- To: myrddin-dev@xxxxxxxxxxxxxx
Until recently, Myrddin was built using a buggy hack known as
myrbuild. It was only usable when hosted in a makefile, and would
often miss dependencies that needed to be rebuilt, leading to
confusing errors:
main.myr:55: can't unify <old-type-version> and <new-type-version>
or
main.myr:55: duplicate definition of type <type-name>
So, I rewrote it. Now you have a buggy hack known as 'mild'.
My goals with the rewrite:
- Solves the "missed dependency" bugs.
- Usable completely independently.
- Self hosted (ie, written in Myrddin).
- Automatically handles the usual make targets:
- build
- install
- clean
- subdirs
- test
- configure
- Simple input files.
- Easy to use.
- myrbuild compatible.
For now, the rewrite is called 'mbld', although the plan is to rename
it to 'myrbuild' as soon as I am satisfied that it is stable.
The rewrite doesn't replace myrbuild+makefiles yet, but it's close.
The main missing features are testing and configuration, since I
don't yet know how I want to handle them.
An example input file:
bin hello = hello.myr goodbye.myr;
lib fuckyou = fuck.myr you.myr;
sub subdir list;
If you want build attributes, you pass them in short curlies
after the target name, as below:
bin kernel {ldscript = kernel.ld
runtime = none
noinst}
=
kernel.myr
loader.s
;;
Right now, only 3 attributes are supported:
noinst: don't install the binary
runtime = rt: use a custom runtime library
ldscript = script: use a custom linker script
Others can be added pretty easily, as needed.
--
Ori Bernstein <ori@xxxxxxxxxxxxxx>
| Re: Announcing a new build system for Myrddin code. | Ori Bernstein <ori@xxxxxxxxxxxxxx> |
- Next by Date: Re: Announcing a new build system for Myrddin code.
- Next by thread: Re: Announcing a new build system for Myrddin code.
- Index(es):