blob: 1380bdad1a79392d7ef319dea639b403fca4c347 [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Build and Make Details &mdash; NuttX latest documentation</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/semantic-ui-2.4.1/segment.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/semantic-ui-2.4.1/menu.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/semantic-ui-2.4.1/tab.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/tabs.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="OS Components" href="../components/index.html" />
<link rel="prev" title="Directory Structure" href="organization.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> NuttX
<img src="../_static/NuttX.png" class="logo" alt="Logo"/>
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select>
<option value="latest" selected="selected">latest</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="quickstart.html">Quickstart</a></li>
<li class="toctree-l2"><a class="reference internal" href="install.html">Installing</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiling.html">Compiling</a></li>
<li class="toctree-l2"><a class="reference internal" href="running.html">Running</a></li>
<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging.html">Debugging</a></li>
<li class="toctree-l2"><a class="reference internal" href="organization.html">Directory Structure</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Build and Make Details</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#root-directory">Root Directory</a></li>
<li class="toctree-l3"><a class="reference internal" href="#environment-variables">Environment Variables</a></li>
<li class="toctree-l3"><a class="reference internal" href="#first-time-make">First Time Make</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../components/index.html">OS Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="../applications/index.html">Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../boards/index.html">Supported Boards</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../releases/index.html">Releases</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><a href="index.html">Getting Started</a> &raquo;</li>
<li>Build and Make Details</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/quickstart/build_and_make.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="build-and-make-details">
<span id="build-and-make"></span><h1>Build and Make Details<a class="headerlink" href="#build-and-make-details" title="Permalink to this headline"></a></h1>
<p>This is included for reference, and it’s not necessary to know all these details.</p>
<p>As described in <a class="reference internal" href="compiling.html#compiling"><span class="std std-ref">Compiling</span></a>, you use <code class="docutils literal notranslate"><span class="pre">make</span></code> at the root <code class="docutils literal notranslate"><span class="pre">nuttx/</span></code> directory to build NuttX. This is also
referenced as <code class="docutils literal notranslate"><span class="pre">$(TOPDIR)</span></code> in the <code class="docutils literal notranslate"><span class="pre">Makefile</span></code>.</p>
<div class="section" id="root-directory">
<h2>Root Directory<a class="headerlink" href="#root-directory" title="Permalink to this headline"></a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">$(TOPDIR)</span></code> directory holds:</p>
<ul class="simple">
<li><p>The top level <code class="docutils literal notranslate"><span class="pre">`Makefile</span></code> &lt;#topmakefile&gt;`__ that controls the
NuttX build.</p></li>
</ul>
<p>That directory also holds:</p>
<ul class="simple">
<li><p>The makefile fragment <a class="reference internal" href="organization.html#nuttx-boards"><span class="std std-ref">.config</span></a>
that describes the current configuration, and</p></li>
<li><p>The makefile fragment <a class="reference internal" href="organization.html#nuttx-boards"><span class="std std-ref">Make.defs</span></a>
that provides customized build targets.</p></li>
</ul>
</div>
<div class="section" id="environment-variables">
<h2>Environment Variables<a class="headerlink" href="#environment-variables" title="Permalink to this headline"></a></h2>
<p>The specific environmental definitions
are unique for each board but should include, as a minimum,
updates to the <code class="docutils literal notranslate"><span class="pre">PATH</span></code> variable to include the full path to the
architecture-specific toolchain identified in
<a class="reference internal" href="organization.html#nuttx-boards"><span class="std std-ref">Make.defs</span></a>.</p>
</div>
<div class="section" id="first-time-make">
<h2>First Time Make<a class="headerlink" href="#first-time-make" title="Permalink to this headline"></a></h2>
<p>Additional configuration actions will be taken the first time that system is built. These additional steps
include:</p>
<ul class="simple">
<li><p>Auto-generating the file <code class="docutils literal notranslate"><span class="pre">include/nuttx/config.h</span></code> using the
<code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/.config</span></code> file.</p></li>
<li><p>Auto-generating the file <code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/.version</span></code> with version
0.0 if one does not exist.</p></li>
<li><p>Auto-generating the file <code class="docutils literal notranslate"><span class="pre">include/nuttx/version.h</span></code> using the
<code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/.version</span></code> file.</p></li>
<li><p>Creating a link to
<code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/arch/</span></code><em>&lt;arch-name&gt;</em><code class="docutils literal notranslate"><span class="pre">/include</span></code> at
<code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/include/arch</span></code>.</p></li>
<li><p>Creating a link to
<code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/boards/</span></code><em>&lt;arch-name&gt;</em><code class="docutils literal notranslate"><span class="pre">/</span></code><em>&lt;chip-name&gt;</em><code class="docutils literal notranslate"><span class="pre">/</span></code><em>&lt;board-name&gt;</em><code class="docutils literal notranslate"><span class="pre">/include</span></code>
at <code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/include/arch/board</span></code>.</p></li>
<li><p>Creating a link to
<code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/boards/</span></code><em>&lt;arch-name&gt;</em><code class="docutils literal notranslate"><span class="pre">/</span></code><em>&lt;chip-name&gt;</em><code class="docutils literal notranslate"><span class="pre">/</span></code><em>&lt;board-name&gt;</em><code class="docutils literal notranslate"><span class="pre">/src</span></code>
at <code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/arch/</span></code><em>&lt;arch-name&gt;</em><code class="docutils literal notranslate"><span class="pre">/src/board</span></code></p></li>
<li><p>Creating a link to <code class="docutils literal notranslate"><span class="pre">${APPDIR}/include</span></code> at
<code class="docutils literal notranslate"><span class="pre">$(TOPDIR)/include/apps</span></code></p></li>
<li><p>Creating make dependencies.</p></li>
</ul>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2020, The Apache Software Foundation
</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>