View mode: basic / threaded / horizontal-split · Log in · Help
November 12, 2012
iphone + D, getting closer!
Ok, D is not there yet, but I managed to build a crippled gcc-4.8 (with
D) targeting arm-apple-darwin and I can compile simple C functions to .o
files and link them into an iphone app.  And run it on my iphone.  The D
and C++ compilers built, but I have probably a potpourri of issues since
I gave 4.8 a arm-darwin target by selectively copying apple's 4.2
changes for arm-darwin.  gcc-4.8 was configured to use tools (as, ld) in
the apple iphone SDK.

The biggest hassle is that apple's version of arm as is different than
binutils as.  So I am learning what it wants for debug and pseudo op
differences.

Even a simple D module with just a extern(C) function depends on
something in druntime, so I have to get part of that to build first.

-- 
dano
November 12, 2012
Re: iphone + D, getting closer!
On 2012-11-12 02:38, Dan Olson wrote:
> Ok, D is not there yet, but I managed to build a crippled gcc-4.8 (with
> D) targeting arm-apple-darwin and I can compile simple C functions to .o
> files and link them into an iphone app.  And run it on my iphone.  The D
> and C++ compilers built, but I have probably a potpourri of issues since
> I gave 4.8 a arm-darwin target by selectively copying apple's 4.2
> changes for arm-darwin.  gcc-4.8 was configured to use tools (as, ld) in
> the apple iphone SDK.
>
> The biggest hassle is that apple's version of arm as is different than
> binutils as.  So I am learning what it wants for debug and pseudo op
> differences.
>
> Even a simple D module with just a extern(C) function depends on
> something in druntime, so I have to get part of that to build first.

Cool, I'm really looking forward to this. How did it go with the simulator?

-- 
/Jacob Carlborg
November 12, 2012
Re: iphone + D, getting closer!
Am Sun, 11 Nov 2012 17:38:08 -0800
schrieb Dan Olson <zans.is.for.cans@yahoo.com>:

> Ok, D is not there yet, but I managed to build a crippled gcc-4.8
> (with D) targeting arm-apple-darwin and I can compile simple C
> functions to .o files and link them into an iphone app.  And run it
> on my iphone.  The D and C++ compilers built, but I have probably a
> potpourri of issues since I gave 4.8 a arm-darwin target by
> selectively copying apple's 4.2 changes for arm-darwin.  gcc-4.8 was
> configured to use tools (as, ld) in the apple iphone SDK.
> 
> The biggest hassle is that apple's version of arm as is different than
> binutils as.  So I am learning what it wants for debug and pseudo op
> differences.
> 
> Even a simple D module with just a extern(C) function depends on
> something in druntime, so I have to get part of that to build first.
> 

_Dmodule_ref?
You can just declare it as extern(C) __gshared void* _Dmodule_ref; (But
IIRC you have to compile with -nophoboslib to make it work)
It's used by the runtime/compiler to setup the ModuleInfos but you
don't have to initialize it, it just needs to be declared.
November 12, 2012
Re: iphone + D, getting closer!
On Monday, 12 November 2012 at 08:31:32 UTC, Johannes Pfau wrote:
> Am Sun, 11 Nov 2012 17:38:08 -0800
> schrieb Dan Olson <zans.is.for.cans@yahoo.com>:
>
>
>> 
>> Even a simple D module with just a extern(C) function depends 
>> on
>> something in druntime, so I have to get part of that to build 
>> first.
>> 
>
> _Dmodule_ref?
> You can just declare it as extern(C) __gshared void* 
> _Dmodule_ref; (But
> IIRC you have to compile with -nophoboslib to make it work)
> It's used by the runtime/compiler to setup the ModuleInfos but 
> you
> don't have to initialize it, it just needs to be declared.

Module initialization code seems to use _Dmodule_ref to make some 
kind of linked list of module constructors even when we do not 
have any. I disabled module stuff from d-glue.cc:2828. The only 
unresolved reference I get now is __aeabi_unwind_cpp_pr1, which 
is found in libgcc.a. This library may not be searched by default 
in cross compilers, but has to be given separately.

 In arm compiler it should be checked in gcc sources that the 
right library for the target processor is generated (Cortex 
libraries for example are not generated by default) The file is 
in one in gcc-source/gcc/config/arm/t-* . If the library is there 
it has to be checked that the linker finds the right one. Command 
gcc -print-libgcc-file-name tells the library name and gcc 
-print-multi-lib tells the available libraries

I have now a minimum libdruntime library for arm-eabi. If there 
are any other unresolved symbols, please let us know.
November 12, 2012
Re: iphone + D, getting closer!
Jacob Carlborg <doob@me.com> writes:
>
> Cool, I'm really looking forward to this. How did it go with the simulator?

D for the iphone simulator worked without changes to gcc-4.8 src since
it targets i686 darwin fine.  To get it to work it was more of finding
the right config recipe.  I did have to use my druntme changes for osx.
For the simulator, I built an i686-apple-darwin target and had it use
the iphone simulator sdk + as, ld toolchain.

To run D code in the iphone sim, the D code is compiled to .o files on
the command line then added to an xcode project along with libgphobos2.a
and libgcc_eh.a.  I give my D code an extern(C) entry point so I can
kick it off.

-- 
dano
November 12, 2012
Re: iphone + D, getting closer!
Johannes Pfau <nospam@example.com> writes:
>
> _Dmodule_ref?
> You can just declare it as extern(C) __gshared void* _Dmodule_ref; (But
> IIRC you have to compile with -nophoboslib to make it work)
> It's used by the runtime/compiler to setup the ModuleInfos but you
> don't have to initialize it, it just needs to be declared.

I might try that.  It will give me a warm+fuzy before I get all of
libgdruntime built.  It would just be a simple "Hello D" to the console
using puts().

My main task now is creating a arm-*-darwin target for libgcc.  Last
time I worked on gcc for a custom toolchain, libgcc was configured as
part of gcc.
November 12, 2012
Re: iphone + D, getting closer!
Dan Olson <zans.is.for.cans@yahoo.com> writes:

> Johannes Pfau <nospam@example.com> writes:
>>
>> _Dmodule_ref?
>> You can just declare it as extern(C) __gshared void* _Dmodule_ref; (But
>> IIRC you have to compile with -nophoboslib to make it work)
>> It's used by the runtime/compiler to setup the ModuleInfos but you
>> don't have to initialize it, it just needs to be declared.
>
> I might try that.  It will give me a warm+fuzy before I get all of
> libgdruntime built.  It would just be a simple "Hello D" to the console
> using puts().

Ok, that gave me an arm object file with simple D code.  I linked in to
an iphone app.  When I run, module init code get called (yeah) but soon
tries a move from an bad address.  Probably my own doing with my port of
arm-darwin.  I'll look through Timo post, see if it is related.  Later
this week I will compare my toolchain's D assembler output with a D
arm-eabi chain, see what's up.
November 12, 2012
Re: iphone + D, getting closer!
On 2012-11-12 16:28, Dan Olson wrote:

> D for the iphone simulator worked without changes to gcc-4.8 src since
> it targets i686 darwin fine.  To get it to work it was more of finding
> the right config recipe.  I did have to use my druntme changes for osx.
> For the simulator, I built an i686-apple-darwin target and had it use
> the iphone simulator sdk + as, ld toolchain.
>
> To run D code in the iphone sim, the D code is compiled to .o files on
> the command line then added to an xcode project along with libgphobos2.a
> and libgcc_eh.a.  I give my D code an extern(C) entry point so I can
> kick it off.

Sounds like a great start :)

-- 
/Jacob Carlborg
November 12, 2012
Re: iphone + D, getting closer!
On 12 November 2012 01:38, Dan Olson <zans.is.for.cans@yahoo.com> wrote:
> Ok, D is not there yet, but I managed to build a crippled gcc-4.8 (with
> D) targeting arm-apple-darwin and I can compile simple C functions to .o
> files and link them into an iphone app.  And run it on my iphone.  The D
> and C++ compilers built, but I have probably a potpourri of issues since
> I gave 4.8 a arm-darwin target by selectively copying apple's 4.2
> changes for arm-darwin.  gcc-4.8 was configured to use tools (as, ld) in
> the apple iphone SDK.
>
> The biggest hassle is that apple's version of arm as is different than
> binutils as.  So I am learning what it wants for debug and pseudo op
> differences.
>
> Even a simple D module with just a extern(C) function depends on
> something in druntime, so I have to get part of that to build first.
>
> --
> dano

Doesn't Apple forbid any language except Objective-C ?  Or is that a
misguided fallacy of mine? (Objective D, anyone? :-)


-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';
November 13, 2012
Re: iphone + D, getting closer!
On Monday, 12 November 2012 at 23:45:37 UTC, Iain Buclaw wrote:
(Objective D, anyone? :-)


Too far man. D:
« First   ‹ Prev
1 2
Top | Discussion index | About this forum | D home