Difference between revisions of "GDC/Cross Compiler/crosstool-NG"
m |
(update instructions) |
||
Line 16: | Line 16: | ||
== Obtaining GDC sources == | == Obtaining GDC sources == | ||
=== Checkout GDC === | === Checkout GDC === | ||
− | First clone the git repository. We'll use the gdc-4. | + | First clone the git repository. We'll use the gdc-4.8 branch. |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 22: | Line 22: | ||
git clone https://github.com/D-Programming-GDC/GDC.git gdc/dev | git clone https://github.com/D-Programming-GDC/GDC.git gdc/dev | ||
cd gdc/dev | cd gdc/dev | ||
− | git checkout gdc-4. | + | git checkout gdc-4.8 |
cd ../ | cd ../ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Get GCC sources === | === Get GCC sources === | ||
− | Grab GCC sources from a mirror. You will need the full gcc archives. Unpack the archives in the gdc dir. This creates something like gdc/gcc-4. | + | Grab GCC sources from a mirror. You will need the full gcc archives. Unpack the archives in the gdc dir. This creates something like gdc/gcc-4.8.2. |
=== Patch GCC sources === | === Patch GCC sources === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd gdc/dev | cd gdc/dev | ||
− | ./update-gcc.sh ../gcc-4. | + | ./update-gcc.sh ../gcc-4.8.2 |
cd ../ | cd ../ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 46: | Line 39: | ||
=== Make crosstool-NG use our patched sources === | === Make crosstool-NG use our patched sources === | ||
− | Start '''ct-ng menuconfig'''. Select '''Paths and misc options | + | Start '''ct-ng menuconfig'''. Select '''Paths and misc options''' and make sure '''Try features marked as EXPERIMENTAL''' is set. Select '''C compiler''' in the main menu and set '''GCC version''' to '''Custom gcc'''. Then set '''Full path to custom gcc source''' to the full path of the gdc/gcc-4.8.2 directory. |
=== Enable D language === | === Enable D language === | ||
Line 55: | Line 48: | ||
Start ct-ng menuconfig, go to "C compiler" and add "--disable-libphobos" to "Core gcc extra config" and "gcc extra config". | Start ct-ng menuconfig, go to "C compiler" and add "--disable-libphobos" to "Core gcc extra config" and "gcc extra config". | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Build it === | === Build it === |
Revision as of 10:38, 27 January 2014
Contents
First things first
Read the crosstool-NG website
Have a look at http://www.crosstool-ng.org/ and see if crosstool-NG fits you needs (Architecture, C library, OS, ...).
Install crosstool-NG
Download crosstool-NG from http://www.crosstool-ng.org/ . Install as described on it's homepage.
Read the documentation
crosstool-NG includes some useful documentation in it's source tarball. Have a look at the "docs" directory.
Build a C cross compiler
Before even trying to build a D cross compiler, built a C cross compiler with the desired configuration. Creating cross compilers is difficult, so you should first get a simple C compiler working before trying to build D.
Obtaining GDC sources
Checkout GDC
First clone the git repository. We'll use the gdc-4.8 branch.
mkdir -p gdc/dev
git clone https://github.com/D-Programming-GDC/GDC.git gdc/dev
cd gdc/dev
git checkout gdc-4.8
cd ../
Get GCC sources
Grab GCC sources from a mirror. You will need the full gcc archives. Unpack the archives in the gdc dir. This creates something like gdc/gcc-4.8.2.
Patch GCC sources
cd gdc/dev
./update-gcc.sh ../gcc-4.8.2
cd ../
Configure crosstool-NG for D
We assume you already have a configuration for your target system which produces a working C compiler so you only need to add D support.
Make crosstool-NG use our patched sources
Start ct-ng menuconfig. Select Paths and misc options and make sure Try features marked as EXPERIMENTAL is set. Select C compiler in the main menu and set GCC version to Custom gcc. Then set Full path to custom gcc source to the full path of the gdc/gcc-4.8.2 directory.
Enable D language
Go to C compiler, select Other languages and enter d
Disabling druntime & phobos
If druntime & phobos do not yet compile for your target you can disable them:
Start ct-ng menuconfig, go to "C compiler" and add "--disable-libphobos" to "Core gcc extra config" and "gcc extra config".
Build it
ct-ng build
Running the test suite
The object directory in which you'll run make check is ".build/TARGET-TRIPLET/build/build-cc-final/" relative to the folder where you ran ct-ng build. An example would be .build/arm-unknown-linux-gnueabihf/build/build-cc-final/.
Change to this directory then follow GDC/Test_Suite#Testing_Cross-compilers.