Thread overview | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
January 17, 2018 So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Well, to be completely honest with you the only one thing I like about the Go programming language is the ability to easily cross-compile your Go program from any supported OS to any supported OS. So I was wondering what is the story of cross-compilation for different D language compilers? Is it possible to some extent now? Do you guys have interest in it? Basically as far as I understood what makes Go suitable for cross-compilation is their own linker implementation, and D compilers use current system linker. |
January 17, 2018 Re: So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rel | https://wiki.dlang.org/Build_D_for_Android https://wiki.dlang.org/Building_LDC_runtime_libraries https://github.com/ldc-developers/ldc/pull/2142#issuecomment-304472412 |
January 17, 2018 Re: So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rel | On Wednesday, 17 January 2018 at 12:06:23 UTC, Rel wrote: > Well, to be completely honest with you the only one > thing I like about the Go programming language is the > ability to easily cross-compile your Go program from > any supported OS to any supported OS. > > So I was wondering what is the story of cross-compilation > for different D language compilers? Is it possible to some > extent now? Do you guys have interest in it? > > Basically as far as I understood what makes Go suitable > for cross-compilation is their own linker implementation, > and D compilers use current system linker. Cross compiling from Windows to raspberry pi: http://d-land.sepany.de/einstieg-in-die-raspberry-pi-entwicklung-mit-ldc.html Kind regards Andre |
January 17, 2018 Re: So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rel | On Wednesday, 17 January 2018 at 12:06:23 UTC, Rel wrote:
> Well, to be completely honest with you the only one
> thing I like about the Go programming language is the
> ability to easily cross-compile your Go program from
> any supported OS to any supported OS.
>
> So I was wondering what is the story of cross-compilation
> for different D language compilers? Is it possible to some
> extent now? Do you guys have interest in it?
>
> Basically as far as I understood what makes Go suitable
> for cross-compilation is their own linker implementation,
> and D compilers use current system linker.
LDC is a cross compiler by default.
the `-mtriple` flag tells LDC what arch, OS and cpu to target.
`-linker=lld-link` or `-linker=lld` (not really sure of the difference) will use LLVM crosslinker, so provided you have the appropriate libraries to link against it should work
|
January 17, 2018 Re: So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rel | On 2018-01-17 13:06, Rel wrote: > Well, to be completely honest with you the only one > thing I like about the Go programming language is the > ability to easily cross-compile your Go program from > any supported OS to any supported OS. > > So I was wondering what is the story of cross-compilation > for different D language compilers? Is it possible to some > extent now? Yes, it works with LDC. > Do you guys have interest in it? Yes. > Basically as far as I understood what makes Go suitable > for cross-compilation is their own linker implementation, > and D compilers use current system linker. If the system linker supports cross-compilation it's no problem. Here's a Dockerfile [1] with LDC that cross-compiles to macOS. [1] https://github.com/jacob-carlborg/docker-ldc-darwin/blob/master/Dockerfile -- /Jacob Carlborg |
January 17, 2018 Re: So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nicholas Wilson | On 2018-01-17 14:28, Nicholas Wilson wrote: > LDC is a cross compiler by default. > the `-mtriple` flag tells LDC what arch, OS and cpu to target. > `-linker=lld-link` or `-linker=lld` (not really sure of the difference) will use LLVM crosslinker, so provided you have the appropriate libraries to link against it should work Unfortunately LLD is not ready yet for all targets, but for those targets it is ready it should work. -- /Jacob Carlborg |
January 19, 2018 Re: So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kagamin | On Wednesday, 17 January 2018 at 12:31:35 UTC, Kagamin wrote:
> https://wiki.dlang.org/Build_D_for_Android
> https://wiki.dlang.org/Building_LDC_runtime_libraries
> https://github.com/ldc-developers/ldc/pull/2142#issuecomment-304472412
As far as I understand I will need a C toolchain that
allows cross-compilation to target OS in order to build
runtime libraries, is it correct? Why is D's runtime library
is written in C? I thought that D is pretty much capable to
have runtime libraries written in D, especially after the
introduction of -betterC flag.
I'd like to cross-compile from Windows machine to Linux and
Mac OSX. Where can I get C toolchain that will allow me to
cross-compile D's runtime libraries from Windows to Linux
and Mac OSX?
|
January 19, 2018 Re: So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rel | On Friday, January 19, 2018 06:53:16 Rel via Digitalmars-d wrote:
> On Wednesday, 17 January 2018 at 12:31:35 UTC, Kagamin wrote:
> > https://wiki.dlang.org/Build_D_for_Android https://wiki.dlang.org/Building_LDC_runtime_libraries https://github.com/ldc-developers/ldc/pull/2142#issuecomment-304472412
>
> As far as I understand I will need a C toolchain that allows cross-compilation to target OS in order to build runtime libraries, is it correct? Why is D's runtime library is written in C? I thought that D is pretty much capable to have runtime libraries written in D, especially after the introduction of -betterC flag.
D's runtime is not written in C. It's written in D. However, the C linker is used to link, and by default, it's used by calling the C/C++ compiler (at least, that's what dmd does). ldc would be using LLVM's linker and possibly using it through clang.
However, D's runtime does _call_ into various C functions, because they're part of the OS' API, and that means that D is ultimately using the C runtime in addition to its own. So, C is also used in that way even though none of D's runtime is written in C.
- Jonathan M Davis
|
January 19, 2018 Re: So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rel | On 2018-01-19 07:53, Rel wrote: > I'd like to cross-compile from Windows machine to Linux and > Mac OSX. Where can I get C toolchain that will allow me to > cross-compile D's runtime libraries from Windows to Linux > and Mac OSX? Here's a Dockerfile that cross-compiles to macOS: https://github.com/jacob-carlborg/docker-ldc-darwin/blob/master/Dockerfile -- /Jacob Carlborg |
January 19, 2018 Re: So what is the state of cross-compilation in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan M Davis | On 19/01/2018 8:08 AM, Jonathan M Davis wrote: > On Friday, January 19, 2018 06:53:16 Rel via Digitalmars-d wrote: >> On Wednesday, 17 January 2018 at 12:31:35 UTC, Kagamin wrote: >>> https://wiki.dlang.org/Build_D_for_Android >>> https://wiki.dlang.org/Building_LDC_runtime_libraries >>> https://github.com/ldc-developers/ldc/pull/2142#issuecomment-304472412 >> >> As far as I understand I will need a C toolchain that >> allows cross-compilation to target OS in order to build >> runtime libraries, is it correct? Why is D's runtime library >> is written in C? I thought that D is pretty much capable to >> have runtime libraries written in D, especially after the >> introduction of -betterC flag. > > D's runtime is not written in C. It's written in D. However, the C linker is > used to link, and by default, it's used by calling the C/C++ compiler (at > least, that's what dmd does). ldc would be using LLVM's linker and possibly > using it through clang. It's in built into LLVM. No requirements on having clang (we already have it on offer). > However, D's runtime does _call_ into various C functions, because they're > part of the OS' API, and that means that D is ultimately using the C runtime > in addition to its own. So, C is also used in that way even though none of > D's runtime is written in C. > > - Jonathan M Davis > |
Copyright © 1999-2021 by the D Language Foundation