Difference between revisions of "Building under Posix"
(Moved from Starting_as_a_Contributor) |
(add link back to contributing guide) |
||
Line 70: | Line 70: | ||
The build produces (with similar anticlimacticity) static and shared libraries such as <tt>~/code/phobos/generated/linux/release/64/libphobos2.a</tt> and <tt>~/code/phobos/generated/linux/release/64/libphobos2.so</tt>. | The build produces (with similar anticlimacticity) static and shared libraries such as <tt>~/code/phobos/generated/linux/release/64/libphobos2.a</tt> and <tt>~/code/phobos/generated/linux/release/64/libphobos2.so</tt>. | ||
− | If you want to contribute to | + | == Where to go from here == |
+ | |||
+ | If you want to contribute to a D project, please continue with the [[Starting_as_a_Contributor| starting a a contributor]] guide. | ||
+ | If you want to contribute to Phobos, you may also read the [[Contributing to Phobos|contributing to Phobos guide]]. |
Revision as of 04:45, 22 August 2016
Contents
Prerequisites
To build D on POSIX, you will need to have make, g++, libcurl4-openssl-dev, and git installed on your system, as well as a working GitHub account. To install the appropriate dependencies on e.g. Ubuntu:
sudo apt-get install curl git make g++ libcurl4-openssl-dev
On OS X with Homebrew:
$ xcode-select --install $ brew install git openssl
To build the 32-bit phobos on a 64-bit machine, some 32-bit packages are also needed:
sudo apt-get install gcc-multilib libc6-dev-i386 libcurl4-gnutls-dev:i386
Other versions and variations of libcurl may work as well.
Building D
Fetch dmd from GitHub
Let's start by getting the current development (master) branch of dmd from GitHub. Assume the root directory for everything D-related is ~/code (replace appropriately). This is easily done by running at a command prompt:
cd ~/code
git clone https://github.com/dlang/dmd
After this step completes successfully, the directory ~/code/dmd should be up and filled with good stuff.
Bootstrap dmd
This step is interesting because in order to build dmd, dmd is necessary. Fortunately, the steps of downloading and using a preexisting dmd compiler are automated. All you need to do is run this command:
cd ~/code/dmd
make -f posix.mak AUTO_BOOTSTRAP=1
That's going to take a while. To make it faster, passing -j8 accelerates things by running eight processes in parallel. The build produces the compiler binary ~/code/dmd/src/dmd.
To make dmd builds faster in the future, you need to obviate the need for bootstrapping. Install dmd from the download page or simply put the freshly built dmd binary in a place accessible through $PATH (a popular choice is ~/bin).
On Windows, you will need
Fetch and build druntime
druntime is the core runtime library for D, needed for building most every D program, including the standard library itself. So it's the next step in the progression (note that it requires a properly built dmd, so make sure the above steps have completed successfully). To fetch and build druntime, issue these commands:
cd ~/code
git clone https://github.com/dlang/druntime
cd druntime
make -f posix.mak
All that should go pretty fast. The somewhat anticlimactic result of the build is a library called libdruntime.a situated in an OS-dependent directory such as ~/code/druntime/generated/linux/release/64/. Make sure it's there. This library is made available to your applications through Phobos, so you must follow the next step to reflect any changes to druntime in your application.
Fetch and build phobos
Most D programs use D's standard library phobos. To get and build it, make sure you first fetch and build the latest dmd and druntime. Then:
cd ~/code
git clone https://github.com/dlang/phobos
cd phobos
make -f posix.mak
The build produces (with similar anticlimacticity) static and shared libraries such as ~/code/phobos/generated/linux/release/64/libphobos2.a and ~/code/phobos/generated/linux/release/64/libphobos2.so.
Where to go from here
If you want to contribute to a D project, please continue with the starting a a contributor guide. If you want to contribute to Phobos, you may also read the contributing to Phobos guide.