Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc: update mac instructions #7537

Merged
merged 1 commit into from
May 16, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 13 additions & 106 deletions doc/getting_started/installation_mac.rst
Original file line number Diff line number Diff line change
Expand Up @@ -108,114 +108,20 @@ To build for the ARM-based Nordic nRF52 Development Kit:
Setting Up the Toolchain
************************

Install tools needed for building the toolchain (if needed):
In case a toolchain is not available for the board you are using, you can build
a toolchain from scratch using crosstool-NG. Follow the steps on the
crosstool-NG website to `prepare your host
<http://crosstool-ng.github.io/docs/os-setup/>`_

.. code-block:: console

brew install gettext help2man mpfr gmp coreutils wget
brew tap homebrew/dupes
brew install grep --with-default-names


To build the toolchain, you will need crosstool-ng version 1.23 or higher.
Install it by using Homebrew:

.. code-block:: console

brew install crosstool-ng

Creating a Case-sensitive File System
=====================================

Building the compiler requires a case-sensitive file system. Therefore, use
:program:`diskutil` to create an 8 GB blank sparse image making sure you select
case-sensitive file system (OS X Extended (Case-sensitive, Journaled) and
mount it.

Alternatively you can use the script below to create the image:

.. code-block:: bash

#!/bin/bash
ImageName=CrossToolNG
ImageNameExt=${ImageName}.sparseimage
diskutil umount force /Volumes/${ImageName} && true
rm -f ${ImageNameExt} && true
hdiutil create ${ImageName} -volname ${ImageName} -type SPARSE -size 8g -fs HFSX
hdiutil mount ${ImageNameExt}
cd /Volumes/$ImageName

When mounted, the file system of the image will be available under
:file:`/Volumes`. Change to the mounted directory:

.. code-block:: console

cd /Volumes/CrossToolNG
mkdir build
cd build

Setting the Toolchain Options
=============================

In the Zephyr kernel source tree we provide configurations for NIOS-II and
X86 that can be used to preselect the options needed for building the toolchain.

The configuration files can be found in
:file:`${ZEPHYR_BASE}/scripts/cross_compiler/`.

Currently the following configurations are provided:
Follow the `Zephyr SDK with Crosstool NG instructions <https://github.com/zephyrproject-rtos/sdk-ng/blob/master/README.md>`_ to build
the toolchain for various architectures. You will need to clone the ``sdk-ng``
repo and run the following command::

* i586.config: for standard ABI, for example for Galileo and qemu_x86
* iamcu.config: for IAMCU ABI, for example for the Arduino 101
* nios2.config: for Nios II boards
./go.sh <arch>

.. code-block:: console

cp ${ZEPHYR_BASE}/scripts/cross_compiler/i586.config .config

You can create a toolchain configuration or customize an existing configuration
yourself using the configuration menus:

.. code-block:: console

export CT_PREFIX=/Volumes/CrossToolNG
ct-ng oldconfig

Verifying the Configuration of the Toolchain
============================================

Before building the toolchain it is advisable to perform a quick verification
of the configuration set for the toolchain.

1. Open the generated :file:`.config` file.

2. Verify the following lines are present, assuming the sparse image was
mounted under :file:`/Volumes/CrossToolNG`:

.. code-block:: bash

...
CT_LOCAL_TARBALLS_DIR="/Volumes/CrossToolNG/src"
# CT_SAVE_TARBALLS is not set
CT_WORK_DIR="${CT_TOP_DIR}/.build"
CT_PREFIX_DIR="/Volumes/CrossToolNG/x-tools/${CT_TARGET}"
CT_INSTALL_DIR="${CT_PREFIX_DIR}"
# Following options prevent link errors
CT_WANTS_STATIC_LINK=n
CT_CC_STATIC_LIBSTDCXX=n
...

Building the Toolchain
======================

To build the toolchain, enter:

.. code-block:: console

ct-ng build
.. note::
Currently only i586 and arm builds are verified.

The above process takes a while. When finished, the toolchain will be available
under :file:`/Volumes/CrossToolNG/x-tools`.

Repeat the step for all architectures you want to support in your environment.

Expand All @@ -225,7 +131,7 @@ and use the target location where the toolchain was installed, type:
.. code-block:: console

export ZEPHYR_TOOLCHAIN_VARIANT=xtools
export XTOOLS_TOOLCHAIN_PATH=/Volumes/CrossToolNG/x-tools
export XTOOLS_TOOLCHAIN_PATH=/Volumes/CrossToolNGNew/build/output/


To use the same toolchain in new sessions in the future you can set the
Expand All @@ -234,7 +140,7 @@ variables in the file :file:`${HOME}/.zephyrrc`, for example:
.. code-block:: console

cat <<EOF > ~/.zephyrrc
export XTOOLS_TOOLCHAIN_PATH=/Volumes/CrossToolNG/x-tools
export XTOOLS_TOOLCHAIN_PATH=/Volumes/CrossToolNGNew/build/output/
export ZEPHYR_TOOLCHAIN_VARIANT=xtools
EOF

Expand All @@ -244,3 +150,4 @@ variables in the file :file:`${HOME}/.zephyrrc`, for example:
.. _Homebrew site: http://brew.sh/

.. _crosstool-ng site: http://crosstool-ng.org