ticket for adding ARM backend to NCG?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Corey O'Connor
Is there an existing ticket or wiki page describing the work required for
adding an ARM backend to the NCG?

I tried the following search with no luck:

https://ghc.haskell.org/trac/ghc/query?status=infoneeded&status=merge&status=new&status=patch&component=Compiler+(NCG)&col=id&col=summary&col=status&col=type&col=priority&col=milestone&col=component&order=priority

-Corey O'Connor
coreyoconnor at gmail.com
http://corebotllc.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20131222/286e193c/attachment.html>

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Carter Schonwald
I believe there are no current plans to add arm to the ncg.

However, I'm hoping to spend a wee bit of time later this year cleaning up
the ncg, and one consequence of that that simon marlow remarked upon at
icfp is that would perhaps make it easier to add new targets to ncg.

Which arm variant are you thinking of? There's quite a few arm
isa variants.  Also once Ben gamari's current debugging is sorted, we'll
have stage 2 support for arm with ghci tooo.   What's your interest and or
use case?

Cheers
Carter



On Sunday, December 22, 2013, Corey O'Connor wrote:

> Is there an existing ticket or wiki page describing the work required for
> adding an ARM backend to the NCG?
>
> I tried the following search with no luck:
>
>
> https://ghc.haskell.org/trac/ghc/query?status=infoneeded&status=merge&status=new&status=patch&component=Compiler+(NCG)&col=id&col=summary&col=status&col=type&col=priority&col=milestone&col=component&order=priority
>
> -Corey O'Connor
> coreyoconnor at gmail.com <javascript:_e({}, 'cvml',
> 'coreyoconnor at gmail.com');>
> http://corebotllc.com/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20131222/9eef04c6/attachment.html>

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Erik de Castro Lopo-34
Carter Schonwald wrote:

> I believe there are no current plans to add arm to the ncg.
>
> However, I'm hoping to spend a wee bit of time later this year cleaning up

Dude, you have 7 days! Or did you mean next year :-).

> the ncg, and one consequence of that that simon marlow remarked upon at
> icfp is that would perhaps make it easier to add new targets to ncg.

As soon as that NCG cleanup is ready for public consumption, please
let me know so I can validate the PowerPC NCG. I think I am one of
the few people who regularly builds GHC on PowerPC and even I haven't
done it for two weeks because I just moved house.

Cheers,
Erik
--
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Carter Schonwald
I mean next year.  I'm hoping to start hacking on it and a few other ncg
related tasks early January with about 1-2 evenings of regularly scheduled
work on it.

So feel welcome to do a Ppc validate anyways in the mean time :-)

On Sunday, December 22, 2013, Erik de Castro Lopo wrote:

> Carter Schonwald wrote:
>
> > I believe there are no current plans to add arm to the ncg.
> >
> > However, I'm hoping to spend a wee bit of time later this year cleaning
> up
>
> Dude, you have 7 days! Or did you mean next year :-).
>
> > the ncg, and one consequence of that that simon marlow remarked upon at
> > icfp is that would perhaps make it easier to add new targets to ncg.
>
> As soon as that NCG cleanup is ready for public consumption, please
> let me know so I can validate the PowerPC NCG. I think I am one of
> the few people who regularly builds GHC on PowerPC and even I haven't
> done it for two weeks because I just moved house.
>
> Cheers,
> Erik
> --
> ----------------------------------------------------------------------
> Erik de Castro Lopo
> http://www.mega-nerd.com/
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org <javascript:;>
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20131222/2fd69193/attachment-0001.html>

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Corey O'Connor
My interest is just to get involved somehow in the NCG. Starting a new
backend seemed reasonable only because I couldn't break something that
didn't exist. ;-) Though cleaning up the NCG would probably be more
educational for me. So if that's desired then I'll get involved there.

Cheers,
Corey

-Corey O'Connor
coreyoconnor at gmail.com
http://corebotllc.com/


On Sun, Dec 22, 2013 at 7:54 PM, Carter Schonwald <
carter.schonwald at gmail.com> wrote:

> I mean next year.  I'm hoping to start hacking on it and a few other ncg
> related tasks early January with about 1-2 evenings of regularly scheduled
> work on it.
>
> So feel welcome to do a Ppc validate anyways in the mean time :-)
>
>
> On Sunday, December 22, 2013, Erik de Castro Lopo wrote:
>
>> Carter Schonwald wrote:
>>
>> > I believe there are no current plans to add arm to the ncg.
>> >
>> > However, I'm hoping to spend a wee bit of time later this year cleaning
>> up
>>
>> Dude, you have 7 days! Or did you mean next year :-).
>>
>> > the ncg, and one consequence of that that simon marlow remarked upon at
>> > icfp is that would perhaps make it easier to add new targets to ncg.
>>
>> As soon as that NCG cleanup is ready for public consumption, please
>> let me know so I can validate the PowerPC NCG. I think I am one of
>> the few people who regularly builds GHC on PowerPC and even I haven't
>> done it for two weeks because I just moved house.
>>
>> Cheers,
>> Erik
>> --
>> ----------------------------------------------------------------------
>> Erik de Castro Lopo
>> http://www.mega-nerd.com/
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://www.haskell.org/mailman/listinfo/ghc-devs
>>
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20140102/a957d901/attachment-0001.html>

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Jens Petersen-4
On 3 January 2014 03:10, Corey O'Connor <coreyoconnor at gmail.com> wrote:

> My interest is just to get involved somehow in the NCG. Starting a new
> backend seemed reasonable only because I couldn't break something that
> didn't exist. ;-)
>

Well a big +1 from me for armv7 NCG.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20140103/5f12b4e9/attachment.html>

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Karel Gardas

Guys,

I've been tinkering with ARM NCG idea for quite some time now, but
honestly I've been always in doubts if it's the best way for GHC at all.
I've thought that the plan was to kind of move out of NCG to LLVM based
backends and I've though that although this plan may be kind of stuck
now, it's still on the table.

Yes, I know that GHC is volunteering effort so if someone comes and asks
for an ARM NCG implementation merge it'll be probably done in some time,
but I'm not sure if it's what's the most welcome at the end.

Just some of my doubts about it...

I would really appreciate some authoritative word about the topic from
more involved GHC developers... I mean especially about NCG future...

Thanks!
Karel

On 01/ 3/14 09:35 AM, Jens Petersen wrote:

> On 3 January 2014 03:10, Corey O'Connor <coreyoconnor at gmail.com
> <mailto:coreyoconnor at gmail.com>> wrote:
>
>     My interest is just to get involved somehow in the NCG. Starting a
>     new backend seemed reasonable only because I couldn't break
>     something that didn't exist. ;-)
>
>
> Well a big +1 from me for armv7 NCG.
>
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs


Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Simon Peyton Jones
| I've been tinkering with ARM NCG idea for quite some time now, but
| honestly I've been always in doubts if it's the best way for GHC at all.
| I've thought that the plan was to kind of move out of NCG to LLVM based
| backends and I've though that although this plan may be kind of stuck
| now, it's still on the table.

I have not been following the ARM and LLVM threads very closely, but here's my take:

* LLVM is (I hope) very much on the table. LLVM itself is a well-resourced project,
  and we can expect it to continue to exist.  We should piggy-back on all the
  hard work that is going into it.

* But using LLVM has some disadvantages.
  a) it imposes a dependency on LLVM
  b) it makes compilation slower
  c) we play some efficiency tricks (notably "tables next to code") that
     LLVM can't play (yet).  I think.

So GHC currently aims to have a built-in NCG for popular platforms, and to rely on LLVM for more esoteric platforms and also for superior optimisation.

Is this still a sensible policy?  

Maybe you can articulate your doubts on the ARM NCG?

Simon

| -----Original Message-----
| From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of Karel
| Gardas
| Sent: 03 January 2014 11:24
| To: Jens Petersen
| Cc: ghc-devs at haskell.org
| Subject: Re: ticket for adding ARM backend to NCG?
|
|
| Guys,
|
| I've been tinkering with ARM NCG idea for quite some time now, but
| honestly I've been always in doubts if it's the best way for GHC at all.
| I've thought that the plan was to kind of move out of NCG to LLVM based
| backends and I've though that although this plan may be kind of stuck
| now, it's still on the table.
|
| Yes, I know that GHC is volunteering effort so if someone comes and asks
| for an ARM NCG implementation merge it'll be probably done in some time,
| but I'm not sure if it's what's the most welcome at the end.
|
| Just some of my doubts about it...
|
| I would really appreciate some authoritative word about the topic from
| more involved GHC developers... I mean especially about NCG future...
|
| Thanks!
| Karel
|
| On 01/ 3/14 09:35 AM, Jens Petersen wrote:
| > On 3 January 2014 03:10, Corey O'Connor <coreyoconnor at gmail.com
| > <mailto:coreyoconnor at gmail.com>> wrote:
| >
| >     My interest is just to get involved somehow in the NCG. Starting a
| >     new backend seemed reasonable only because I couldn't break
| >     something that didn't exist. ;-)
| >
| >
| > Well a big +1 from me for armv7 NCG.
| >
| >
| > _______________________________________________
| > ghc-devs mailing list
| > ghc-devs at haskell.org
| > http://www.haskell.org/mailman/listinfo/ghc-devs
|
| _______________________________________________
| ghc-devs mailing list
| ghc-devs at haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-devs

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Karel Gardas
On 01/ 3/14 01:37 PM, Simon Peyton-Jones wrote:

> | I've been tinkering with ARM NCG idea for quite some time now, but
> | honestly I've been always in doubts if it's the best way for GHC at all.
> | I've thought that the plan was to kind of move out of NCG to LLVM based
> | backends and I've though that although this plan may be kind of stuck
> | now, it's still on the table.
>
> I have not been following the ARM and LLVM threads very closely, but here's my take:
>
> * LLVM is (I hope) very much on the table. LLVM itself is a well-resourced project,
>    and we can expect it to continue to exist.  We should piggy-back on all the
>    hard work that is going into it.
>
> * But using LLVM has some disadvantages.
>    a) it imposes a dependency on LLVM
>    b) it makes compilation slower
>    c) we play some efficiency tricks (notably "tables next to code") that
>       LLVM can't play (yet).  I think.
>
> So GHC currently aims to have a built-in NCG for popular platforms, and to rely on LLVM for more esoteric platforms and also for superior optimisation.

This sounds indeed good.

> Maybe you can articulate your doubts on the ARM NCG?

My main doubt was to invest a lot of time into something which will be
deprecated in near future (as ARM NCG will take some time to do)
assuming GHC is switching to LLVM completely and deprecating NCG. Your
policy stated above clears that.

Thanks!
Karel

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Rob Stewart-2
In reply to this post by Simon Peyton Jones
On 3 January 2014 12:37, Simon Peyton-Jones <simonpj at microsoft.com> wrote:

> * But using LLVM has some disadvantages.
>   c) we play some efficiency tricks (notably "tables next to code") that
>      LLVM can't play (yet).  I think.

In fact, this could well be implemented in the GHC 7.10, as this has
been committed in LLVM on 15th September:
http://www.haskell.org/pipermail/ghc-devs/2013-September/002565.html

Implementing "tables next to code" in the LLVM IR generation may be
something to get one's teeth into in time for 7.10 ?

Carter: was this discussed further on #haskell-llvm ?

--
Rob


> | -----Original Message-----
> | From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of Karel
> | Gardas
> | Sent: 03 January 2014 11:24
> | To: Jens Petersen
> | Cc: ghc-devs at haskell.org
> | Subject: Re: ticket for adding ARM backend to NCG?
> |
> |
> | Guys,
> |
> | I've been tinkering with ARM NCG idea for quite some time now, but
> | honestly I've been always in doubts if it's the best way for GHC at all.
> | I've thought that the plan was to kind of move out of NCG to LLVM based
> | backends and I've though that although this plan may be kind of stuck
> | now, it's still on the table.
> |
> | Yes, I know that GHC is volunteering effort so if someone comes and asks
> | for an ARM NCG implementation merge it'll be probably done in some time,
> | but I'm not sure if it's what's the most welcome at the end.
> |
> | Just some of my doubts about it...
> |
> | I would really appreciate some authoritative word about the topic from
> | more involved GHC developers... I mean especially about NCG future...
> |
> | Thanks!
> | Karel
> |
> | On 01/ 3/14 09:35 AM, Jens Petersen wrote:
> | > On 3 January 2014 03:10, Corey O'Connor <coreyoconnor at gmail.com
> | > <mailto:coreyoconnor at gmail.com>> wrote:
> | >
> | >     My interest is just to get involved somehow in the NCG. Starting a
> | >     new backend seemed reasonable only because I couldn't break
> | >     something that didn't exist. ;-)
> | >
> | >
> | > Well a big +1 from me for armv7 NCG.
> | >
> | >
> | > _______________________________________________
> | > ghc-devs mailing list
> | > ghc-devs at haskell.org
> | > http://www.haskell.org/mailman/listinfo/ghc-devs
> |
> | _______________________________________________
> | ghc-devs mailing list
> | ghc-devs at haskell.org
> | http://www.haskell.org/mailman/listinfo/ghc-devs
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Carter Schonwald
yes, but the conclusion was its unclear if it makes sense,

also thats orthogonal to whether or not someone decides to do an arm NCG :)


On Fri, Jan 3, 2014 at 2:06 PM, Rob Stewart <robstewart57 at gmail.com> wrote:

> On 3 January 2014 12:37, Simon Peyton-Jones <simonpj at microsoft.com> wrote:
>
> > * But using LLVM has some disadvantages.
> >   c) we play some efficiency tricks (notably "tables next to code") that
> >      LLVM can't play (yet).  I think.
>
> In fact, this could well be implemented in the GHC 7.10, as this has
> been committed in LLVM on 15th September:
> http://www.haskell.org/pipermail/ghc-devs/2013-September/002565.html
>
> Implementing "tables next to code" in the LLVM IR generation may be
> something to get one's teeth into in time for 7.10 ?
>
> Carter: was this discussed further on #haskell-llvm ?
>
> --
> Rob
>
>
> > | -----Original Message-----
> > | From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of
> Karel
> > | Gardas
> > | Sent: 03 January 2014 11:24
> > | To: Jens Petersen
> > | Cc: ghc-devs at haskell.org
> > | Subject: Re: ticket for adding ARM backend to NCG?
> > |
> > |
> > | Guys,
> > |
> > | I've been tinkering with ARM NCG idea for quite some time now, but
> > | honestly I've been always in doubts if it's the best way for GHC at
> all.
> > | I've thought that the plan was to kind of move out of NCG to LLVM based
> > | backends and I've though that although this plan may be kind of stuck
> > | now, it's still on the table.
> > |
> > | Yes, I know that GHC is volunteering effort so if someone comes and
> asks
> > | for an ARM NCG implementation merge it'll be probably done in some
> time,
> > | but I'm not sure if it's what's the most welcome at the end.
> > |
> > | Just some of my doubts about it...
> > |
> > | I would really appreciate some authoritative word about the topic from
> > | more involved GHC developers... I mean especially about NCG future...
> > |
> > | Thanks!
> > | Karel
> > |
> > | On 01/ 3/14 09:35 AM, Jens Petersen wrote:
> > | > On 3 January 2014 03:10, Corey O'Connor <coreyoconnor at gmail.com
> > | > <mailto:coreyoconnor at gmail.com>> wrote:
> > | >
> > | >     My interest is just to get involved somehow in the NCG. Starting
> a
> > | >     new backend seemed reasonable only because I couldn't break
> > | >     something that didn't exist. ;-)
> > | >
> > | >
> > | > Well a big +1 from me for armv7 NCG.
> > | >
> > | >
> > | > _______________________________________________
> > | > ghc-devs mailing list
> > | > ghc-devs at haskell.org
> > | > http://www.haskell.org/mailman/listinfo/ghc-devs
> > |
> > | _______________________________________________
> > | ghc-devs mailing list
> > | ghc-devs at haskell.org
> > | http://www.haskell.org/mailman/listinfo/ghc-devs
> > _______________________________________________
> > ghc-devs mailing list
> > ghc-devs at haskell.org
> > http://www.haskell.org/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20140103/89ca67ad/attachment-0001.html>

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Mikhail Glushenkov-2
In reply to this post by Rob Stewart-2
Hi,

On Fri, Jan 3, 2014 at 8:06 PM, Rob Stewart <robstewart57 at gmail.com> wrote:
> On 3 January 2014 12:37, Simon Peyton-Jones <simonpj at microsoft.com> wrote:
>
>> * But using LLVM has some disadvantages.
>>   c) we play some efficiency tricks (notably "tables next to code") that
>>      LLVM can't play (yet).  I think.
>
> In fact, this could well be implemented in the GHC 7.10, as this has
> been committed in LLVM on 15th September:
> http://www.haskell.org/pipermail/ghc-devs/2013-September/002565.html

>From my reading of the documentation for this feature it seems like
for GHC to take advantage of it LLVM also needs to implement global
symbol offsets [1]. I've emailed the author of the function prefix
data patch, but he didn't respond.

[1] http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-April/061511.html

--
()  ascii ribbon campaign - against html e-mail
/\  www.asciiribbon.org   - against proprietary attachments

Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Simon Marlow-7
In reply to this post by Simon Peyton Jones
On 03/01/14 12:37, Simon Peyton-Jones wrote:

> | I've been tinkering with ARM NCG idea for quite some time now, but
> | honestly I've been always in doubts if it's the best way for GHC at all.
> | I've thought that the plan was to kind of move out of NCG to LLVM based
> | backends and I've though that although this plan may be kind of stuck
> | now, it's still on the table.
>
> I have not been following the ARM and LLVM threads very closely, but here's my take:
>
> * LLVM is (I hope) very much on the table. LLVM itself is a well-resourced project,
>    and we can expect it to continue to exist.  We should piggy-back on all the
>    hard work that is going into it.
>
> * But using LLVM has some disadvantages.
>    a) it imposes a dependency on LLVM
>    b) it makes compilation slower

Correct

>    c) we play some efficiency tricks (notably "tables next to code") that
>       LLVM can't play (yet).  I think.

Actually we have to generate tables-next-to-code from LLVM too, because
the LLVM and NCG backends must be compatible (you can choose to use LLVM
on a module-by-module basis using -fllvm).  So tables-next-to-code is
currently done using a post-processing step on the asm generated by LLVM.

Cheers,
        Simon


> So GHC currently aims to have a built-in NCG for popular platforms, and to rely on LLVM for more esoteric platforms and also for superior optimisation.
>
> Is this still a sensible policy?
>
> Maybe you can articulate your doubts on the ARM NCG?
>
> Simon
>
> | -----Original Message-----
> | From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of Karel
> | Gardas
> | Sent: 03 January 2014 11:24
> | To: Jens Petersen
> | Cc: ghc-devs at haskell.org
> | Subject: Re: ticket for adding ARM backend to NCG?
> |
> |
> | Guys,
> |
> | I've been tinkering with ARM NCG idea for quite some time now, but
> | honestly I've been always in doubts if it's the best way for GHC at all.
> | I've thought that the plan was to kind of move out of NCG to LLVM based
> | backends and I've though that although this plan may be kind of stuck
> | now, it's still on the table.
> |
> | Yes, I know that GHC is volunteering effort so if someone comes and asks
> | for an ARM NCG implementation merge it'll be probably done in some time,
> | but I'm not sure if it's what's the most welcome at the end.
> |
> | Just some of my doubts about it...
> |
> | I would really appreciate some authoritative word about the topic from
> | more involved GHC developers... I mean especially about NCG future...
> |
> | Thanks!
> | Karel
> |
> | On 01/ 3/14 09:35 AM, Jens Petersen wrote:
> | > On 3 January 2014 03:10, Corey O'Connor <coreyoconnor at gmail.com
> | > <mailto:coreyoconnor at gmail.com>> wrote:
> | >
> | >     My interest is just to get involved somehow in the NCG. Starting a
> | >     new backend seemed reasonable only because I couldn't break
> | >     something that didn't exist. ;-)
> | >
> | >
> | > Well a big +1 from me for armv7 NCG.
> | >
> | >
> | > _______________________________________________
> | > ghc-devs mailing list
> | > ghc-devs at haskell.org
> | > http://www.haskell.org/mailman/listinfo/ghc-devs
> |
> | _______________________________________________
> | ghc-devs mailing list
> | ghc-devs at haskell.org
> | http://www.haskell.org/mailman/listinfo/ghc-devs
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>


Reply | Threaded
Open this post in threaded view
|

ticket for adding ARM backend to NCG?

Simon Marlow-7
In reply to this post by Jens Petersen-4
On 03/01/14 08:35, Jens Petersen wrote:
> On 3 January 2014 03:10, Corey O'Connor <coreyoconnor at gmail.com
> <mailto:coreyoconnor at gmail.com>> wrote:
>
>     My interest is just to get involved somehow in the NCG. Starting a
>     new backend seemed reasonable only because I couldn't break
>     something that didn't exist. ;-)
>
>
> Well a big +1 from me for armv7 NCG.

I've been thinking about doing an ARM NCG, mainly for fun and to learn
ARM.  But in reality I'm not likely to get around to this any time soon.
  To give you an idea of the work involved, it took me around a week of
hacking to do the x86_64 NCG, and that was largely based on the existing
x86 one.

Rather than wading into an ARM NCG directly, it would pay off to first
refactor the existing NCG infrastructure to make it much easier to add
new targets, as Carter mentioned.  We should have machine descriptions
rather than the existing way that involves writing lots of
special-purpose code for each target.

Cheers,
        Simon