Files
bgfx/build.html
Бранимир Караџић 54c958e5c6 Updated docs.
2019-03-14 18:28:38 -07:00

411 lines
17 KiB
HTML

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Building &mdash; bgfx 1.0 documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="top" title="bgfx 1.0 documentation" href="index.html"/>
<link rel="next" title="Examples" href="examples.html"/>
<link rel="prev" title="Overview" href="overview.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<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"> bgfx
</a>
<div class="version">
1.0
</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">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Building</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#dependencies">Dependencies</a></li>
<li class="toctree-l2"><a class="reference internal" href="#getting-source">Getting Source</a></li>
<li class="toctree-l2"><a class="reference internal" href="#quick-start">Quick Start</a></li>
<li class="toctree-l2"><a class="reference internal" href="#prerequisites">Prerequisites</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#android">Android</a></li>
<li class="toctree-l3"><a class="reference internal" href="#linux">Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="#windows">Windows</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#build">Build</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#general">General</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id1">Windows</a></li>
<li class="toctree-l3"><a class="reference internal" href="#xcode">Xcode</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="#winrt-uwp">WinRT / UWP</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#amalgamated-build">Amalgamated Build</a></li>
<li class="toctree-l2"><a class="reference internal" href="#tools">Tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="#alternative-build-systems">Alternative build systems</a></li>
<li class="toctree-l2"><a class="reference internal" href="#minimal-example-without-bgfx-example-harness">Minimal example without bgfx&#8217; example harness</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
<li class="toctree-l1"><a class="reference internal" href="bgfx.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="tools.html">Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">bgfx</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">Docs</a> &raquo;</li>
<li>Building</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="building">
<h1>Building<a class="headerlink" href="#building" title="Permalink to this headline"></a></h1>
<div class="section" id="dependencies">
<h2>Dependencies<a class="headerlink" href="#dependencies" title="Permalink to this headline"></a></h2>
<p><a class="reference external" href="https://github.com/bkaradzic/bx">https://github.com/bkaradzic/bx</a></p>
<p><a class="reference external" href="https://github.com/bkaradzic/bimg">https://github.com/bkaradzic/bimg</a></p>
</div>
<div class="section" id="getting-source">
<h2>Getting Source<a class="headerlink" href="#getting-source" title="Permalink to this headline"></a></h2>
<div class="highlight-python"><div class="highlight"><pre>git clone git://github.com/bkaradzic/bx.git
git clone git://github.com/bkaradzic/bimg.git
git clone git://github.com/bkaradzic/bgfx.git
</pre></div>
</div>
</div>
<div class="section" id="quick-start">
<h2>Quick Start<a class="headerlink" href="#quick-start" title="Permalink to this headline"></a></h2>
<p>These are step for users who use Windows with Visual Studio.</p>
<p>Enter bgfx directory:</p>
<div class="highlight-python"><div class="highlight"><pre>cd bgfx
</pre></div>
</div>
<p>Generate Visual Studio 2017 project files:</p>
<div class="highlight-python"><div class="highlight"><pre>..\bx\tools\bin\windows\genie --with-examples vs2017
</pre></div>
</div>
<p>Open bgfx solution in Visual Studio 2017:</p>
<div class="highlight-python"><div class="highlight"><pre>start .build\projects\vs2017\bgfx.sln
</pre></div>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">For more detailed prerequisites and build steps on other platforms see below.</p>
</div>
</div>
<div class="section" id="prerequisites">
<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline"></a></h2>
<div class="section" id="android">
<h3>Android<a class="headerlink" href="#android" title="Permalink to this headline"></a></h3>
<p>Download AndroidNDK:</p>
<blockquote>
<div><ul class="simple">
<li><a class="reference external" href="https://developer.android.com/tools/sdk/ndk/index.html">https://developer.android.com/tools/sdk/ndk/index.html</a></li>
</ul>
</div></blockquote>
<p>Set following enironment variables:</p>
<div class="highlight-python"><div class="highlight"><pre>setx ANDROID_NDK_ROOT &lt;path to AndroidNDK directory&gt;
setx ANDROID_NDK_ARM &lt;path to AndroidNDK directory&gt;\toolchains\arm-linux-androideabi-4.7\prebuilt\windows-x86_64
setx ANDROID_NDK_MIPS &lt;path to AndroidNDK directory&gt;\toolchains\mipsel-linux-android-4.7\prebuilt\windows-x86_64
setx ANDROID_NDK_X86 &lt;path to AndroidNDK directory&gt;\toolchains\x86-4.7\prebuilt\windows-x86_64
</pre></div>
</div>
<p>To deploy on Android you can use bgfx android activity:</p>
<blockquote>
<div><ul class="simple">
<li><a class="reference external" href="https://github.com/Nodrev/bgfx-android-activity#bgfx-android-activity---android-glue-for-bgfx">https://github.com/Nodrev/bgfx-android-activity#bgfx-android-activity&#8212;android-glue-for-bgfx</a></li>
</ul>
</div></blockquote>
</div>
<div class="section" id="linux">
<h3>Linux<a class="headerlink" href="#linux" title="Permalink to this headline"></a></h3>
<div class="highlight-python"><div class="highlight"><pre>sudo apt-get install libgl1-mesa-dev x11proto-core-dev libx11-dev
</pre></div>
</div>
</div>
<div class="section" id="windows">
<h3>Windows<a class="headerlink" href="#windows" title="Permalink to this headline"></a></h3>
<p>Windows users download GnuWin32 utilities:</p>
<blockquote>
<div><ul class="simple">
<li><a class="reference external" href="http://gnuwin32.sourceforge.net/packages/make.htm">http://gnuwin32.sourceforge.net/packages/make.htm</a></li>
<li><a class="reference external" href="http://gnuwin32.sourceforge.net/packages/coreutils.htm">http://gnuwin32.sourceforge.net/packages/coreutils.htm</a></li>
<li><a class="reference external" href="http://gnuwin32.sourceforge.net/packages/libiconv.htm">http://gnuwin32.sourceforge.net/packages/libiconv.htm</a></li>
<li><a class="reference external" href="http://gnuwin32.sourceforge.net/packages/libintl.htm">http://gnuwin32.sourceforge.net/packages/libintl.htm</a></li>
</ul>
</div></blockquote>
</div>
</div>
<div class="section" id="build">
<h2>Build<a class="headerlink" href="#build" title="Permalink to this headline"></a></h2>
<p>bgfx uses <a class="reference external" href="https://github.com/bkaradzic/genie#genie---project-generator-tool">GENie - Project generator tool</a>
to generate project files for various platform. Binaries for Linux, OSX, and Windows are included in
bx repository.</p>
<div class="section" id="general">
<h3>General<a class="headerlink" href="#general" title="Permalink to this headline"></a></h3>
<div class="highlight-python"><div class="highlight"><pre>cd bgfx
make
</pre></div>
</div>
<p>After calling <code class="docutils literal"><span class="pre">make</span></code>, .build/projects/* directory will be generated.
All intermediate files generated by compiler will be inside .build
directory structure. Deleting .build directory at any time is safe.</p>
<div class="highlight-python"><div class="highlight"><pre>make &lt;configuration&gt;
</pre></div>
</div>
<p>Configuration is <code class="docutils literal"><span class="pre">&lt;platform&gt;-&lt;debug/release&gt;[32/64]</span></code>. For example:</p>
<div class="highlight-python"><div class="highlight"><pre>linux-release32, nacl-debug64, nacl-arm-debug, pnacl-release,
android-release, etc.
</pre></div>
</div>
</div>
<div class="section" id="id1">
<h3>Windows<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h3>
<p>Visual Studio 2017 command line:</p>
<div class="highlight-python"><div class="highlight"><pre>make vs2017-release64
</pre></div>
</div>
<p>Visual Studio 2017 IDE:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">start</span> <span class="o">.</span><span class="n">build</span><span class="o">/</span><span class="n">projects</span><span class="o">/</span><span class="n">vs2017</span><span class="o">/</span><span class="n">bgfx</span><span class="o">.</span><span class="n">sln</span>
</pre></div>
</div>
</div>
<div class="section" id="xcode">
<h3>Xcode<a class="headerlink" href="#xcode" title="Permalink to this headline"></a></h3>
<p>Xcode command line:</p>
<div class="highlight-python"><div class="highlight"><pre>make osx-release64
cd examples/runtime
../../.build/osx64_clang/bin/examples.app/Contents/MacOS/examplesRelease
</pre></div>
</div>
<p>Xcode IDE:</p>
<div class="highlight-python"><div class="highlight"><pre>../bx/tools/bin/darwin/genie --with-combined-examples --xcode=osx xcode9
open .build/projects/xcode9-osx/bgfx.xcworkspace
</pre></div>
</div>
<p>Due to <a class="reference external" href="https://github.com/bkaradzic/genie/blob/master/docs/scripting-reference.md#debugdirpath">inability</a>
to set working directory for an Xcode project from <a class="reference external" href="https://github.com/bkaradzic/genie#genie---project-generator-tool">GENie</a>
configuration file, it has to be set manually for each example project:</p>
<ol class="arabic simple">
<li>Open <em>&#8220;Edit scheme...&#8221;</em> dialog for a given project.</li>
<li>Select <em>&#8220;Run&#8221;</em> settings.</li>
<li>Check <em>&#8220;Use custom working directory&#8221;</em> and enter following path:
<code class="docutils literal"><span class="pre">${PROJECT_DIR}/../../../examples/runtime</span></code>.</li>
</ol>
</div>
<div class="section" id="id2">
<h3>Linux<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h3>
<div class="highlight-python"><div class="highlight"><pre>make linux-release64
</pre></div>
</div>
</div>
<div class="section" id="winrt-uwp">
<h3>WinRT / UWP<a class="headerlink" href="#winrt-uwp" title="Permalink to this headline"></a></h3>
<div class="highlight-python"><div class="highlight"><pre>..\bx\tools\bin\windows\genie --vs=winstore100 vs2017
</pre></div>
</div>
<p>Build the resulting solution and deploy to device.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Shaders will need to be compiled with the appropriate target profile for your platform.</p>
</div>
</div>
</div>
<div class="section" id="amalgamated-build">
<h2>Amalgamated Build<a class="headerlink" href="#amalgamated-build" title="Permalink to this headline"></a></h2>
<p>For ease of integration to other build system bgfx library can be built
with single .cpp file. It&#8217;s only necessary to build
<a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/src/amalgamated.cpp">src/amalgamated.cpp</a>
(for OSX/iOS use
<a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/src/amalgamated.mm">src/amalgamated.mm</a>
instead) inside different build system.</p>
</div>
<div class="section" id="tools">
<h2>Tools<a class="headerlink" href="#tools" title="Permalink to this headline"></a></h2>
<p>To build bgfx project files for tools, use <code class="docutils literal"><span class="pre">--with-tools</span></code> option:</p>
<div class="highlight-python"><div class="highlight"><pre>..\bx\tools\bin\windows\genie --with-tools vs2017
</pre></div>
</div>
</div>
<div class="section" id="alternative-build-systems">
<h2>Alternative build systems<a class="headerlink" href="#alternative-build-systems" title="Permalink to this headline"></a></h2>
<p><strong>CMake</strong>
<a class="reference external" href="https://github.com/JoshuaBrookover/bgfx.cmake#bgfxcmake">https://github.com/JoshuaBrookover/bgfx.cmake#bgfxcmake</a></p>
<p><strong>fips</strong> is a highlevel build system wrapper written in Python for C/C++ projects.
<a class="reference external" href="https://github.com/floooh/fips#fips">https://github.com/floooh/fips#fips</a></p>
<p><strong>mkvfx</strong> is a tool that builds open source libraries commonly used in games, film, and vfx.
<a class="reference external" href="https://github.com/meshula/mkvfx#mkvfx---make-vfx-libraries-and-programs">https://github.com/meshula/mkvfx#mkvfx&#8212;make-vfx-libraries-and-programs</a></p>
</div>
<div class="section" id="minimal-example-without-bgfx-example-harness">
<h2>Minimal example without bgfx&#8217; example harness<a class="headerlink" href="#minimal-example-without-bgfx-example-harness" title="Permalink to this headline"></a></h2>
<p>This project demonstrates minimal amount of code needed to integrate bgfx with GLFW, but without
any of existing bgfx example harness. It also demonstrates how to build bgfx with alternative build
system.</p>
<p><a class="reference external" href="https://github.com/jpcy/bgfx-minimal-example">https://github.com/jpcy/bgfx-minimal-example</a></p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="examples.html" class="btn btn-neutral float-right" title="Examples" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="overview.html" class="btn btn-neutral" title="Overview" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2010-2018, Branimir Karadžić.
</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>