blob: 1f215e39bc93221dcf629913bbe1f0df5c53d9d1 [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="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/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 src="../_static/jquery.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script 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
</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" aria-label="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="Navigation menu">
<p class="caption" role="heading"><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="Mobile navigation menu" >
<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="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Getting Started</a></li>
<li class="breadcrumb-item active">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">
<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 heading"></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>
<section id="root-directory">
<h2>Root Directory<a class="headerlink" href="#root-directory" title="Permalink to this heading"></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>
</section>
<section id="environment-variables">
<h2>Environment Variables<a class="headerlink" href="#environment-variables" title="Permalink to this heading"></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>
</section>
<section id="first-time-make">
<h2>First Time Make<a class="headerlink" href="#first-time-make" title="Permalink to this heading"></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>
</section>
</section>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2020, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>