Difference between revisions of "GDC/Cross Compiler/crosstool-NG"
(Created page with "{{ParentArticle|GDC > Cross Compiler}} == First things first == === Read the crosstool-NG website === Have a look at http://www.crosstool-ng.org/ ...") |
(Add information on how to run the test suite with cross-compilers) |
||
Line 70: | Line 70: | ||
ct-ng build | ct-ng build | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | == 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]]. |
Revision as of 17:43, 11 December 2013
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.7 branch.
mkdir -p gdc/dev
git clone https://github.com/D-Programming-GDC/GDC.git gdc/dev
cd gdc/dev
git checkout gdc-4.7
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.7.1. If you want to keep the original GCC sources, rename the gcc-4.7.1 tarball.
Patch GCC sources
cd gdc/dev
./update-gcc.sh ../gcc-4.7.1
cd ../
Package GCC sources
We'll now package the GCC sources again, so we'll have a ready to use GCC gcc-4.7.1.tar.bz2 source tarball with the GDC sources included.
tar -hcjf gcc-4.7.1.tar.bz2 gcc-4.7.1/
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, Local tarballs directory and enter the path to the directory which contains the patched GCC sources: /home/jpf/gdc. Also make sure Try features marked as EXPERIMENTAL is set. Select C compiler in the main menu and make sure GCC version is set to 4.7.1
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 the cross compiler
We have to make sure crosstool-NG uses our new sources instead of reusing already extracted or downloaded sources. So if you've already built a plain C cross compiler in your working directory, you'll have to delete the extracted / downloaded sources:
rm .build/src/.gcc-4.7.1.extracted
rm .build/src/.gcc-4.7.1.patched
rm .build/tarballs/gcc-4.7.1.tar.bz2
rm -rf .build/src/gcc-4.7.1
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.