bgfx/docs/build.rst
Бранимир Караџић f3c07a1da6 Cleanup.
2022-04-06 18:55:46 -07:00

221 lines
5.0 KiB
ReStructuredText

Building
========
Dependencies
------------
https://github.com/bkaradzic/bx
https://github.com/bkaradzic/bimg
Getting Source
--------------
::
git clone git://github.com/bkaradzic/bx.git
git clone git://github.com/bkaradzic/bimg.git
git clone git://github.com/bkaradzic/bgfx.git
Quick Start
-----------
These are step for users who use Windows with Visual Studio.
Enter bgfx directory:
::
cd bgfx
Generate Visual Studio 2017 project files:
::
..\bx\tools\bin\windows\genie --with-examples vs2017
Open bgfx solution in Visual Studio 2017:
::
start .build\projects\vs2017\bgfx.sln
.. note:: For more detailed prerequisites and build steps on other platforms see below.
Prerequisites
-------------
Android
~~~~~~~
Download AndroidNDK:
- https://developer.android.com/tools/sdk/ndk/index.html
Set following enironment variables:
::
setx ANDROID_NDK_ROOT <path to AndroidNDK directory>
setx ANDROID_NDK_ARM <path to AndroidNDK directory>\toolchains\arm-linux-androideabi-4.7\prebuilt\windows-x86_64
setx ANDROID_NDK_MIPS <path to AndroidNDK directory>\toolchains\mipsel-linux-android-4.7\prebuilt\windows-x86_64
setx ANDROID_NDK_X86 <path to AndroidNDK directory>\toolchains\x86-4.7\prebuilt\windows-x86_64
To deploy on Android you can use bgfx android activity:
- https://github.com/Nodrev/bgfx-android-activity#bgfx-android-activity---android-glue-for-bgfx
Linux
~~~~~
::
sudo apt-get install libgl1-mesa-dev x11proto-core-dev libx11-dev
Windows
~~~~~~~
Windows users download GnuWin32 utilities:
- http://gnuwin32.sourceforge.net/packages/make.htm
- http://gnuwin32.sourceforge.net/packages/coreutils.htm
- http://gnuwin32.sourceforge.net/packages/libiconv.htm
- http://gnuwin32.sourceforge.net/packages/libintl.htm
Build
-----
bgfx uses `GENie - Project generator tool <https://github.com/bkaradzic/genie#genie---project-generator-tool>`__
to generate project files for various platform. Binaries for Linux, OSX, and Windows are included in
bx repository.
General
~~~~~~~
::
cd bgfx
make
After calling ``make``, .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.
::
make <configuration>
Configuration is ``<platform>-<debug/release>[32/64]``. For example:
::
linux-release32, nacl-debug64, nacl-arm-debug, pnacl-release,
android-release, etc.
Windows
~~~~~~~
Visual Studio 2017 command line:
::
make vs2017-release64
Visual Studio 2017 IDE:
::
start .build/projects/vs2017/bgfx.sln
Xcode
~~~~~
Xcode command line:
::
make osx-release
cd examples/runtime
../../.build/osx64_clang/bin/examples.app/Contents/MacOS/examplesRelease
Xcode IDE:
::
../bx/tools/bin/darwin/genie --with-combined-examples --xcode=osx xcode9
open .build/projects/xcode9-osx/bgfx.xcworkspace
Due to `inability <https://github.com/bkaradzic/genie/blob/master/docs/scripting-reference.md#debugdirpath>`__
to set working directory for an Xcode project from `GENie <https://github.com/bkaradzic/genie#genie---project-generator-tool>`__
configuration file, it has to be set manually for each example project:
1. Open *"Edit scheme..."* dialog for a given project.
2. Select *"Run"* settings.
3. Check *"Use custom working directory"* and enter following path:
``${PROJECT_DIR}/../../../examples/runtime``.
Linux
~~~~~
::
make linux-release64
WinRT / UWP
~~~~~~~~~~~
::
..\bx\tools\bin\windows\genie --vs=winstore100 vs2017
Build the resulting solution and deploy to device.
.. note:: Shaders will need to be compiled with the appropriate target profile for your platform.
Amalgamated Build
-----------------
For ease of integration to other build system bgfx library can be built
with single .cpp file. It's only necessary to build
`src/amalgamated.cpp <https://github.com/bkaradzic/bgfx/blob/master/src/amalgamated.cpp>`__
(for OSX/iOS use
`src/amalgamated.mm <https://github.com/bkaradzic/bgfx/blob/master/src/amalgamated.mm>`__
instead) inside different build system.
Tools
-----
To build bgfx project files for tools, use ``--with-tools`` option:
::
..\bx\tools\bin\windows\genie --with-tools vs2017
Alternative build systems
-------------------------
**CMake**
- https://github.com/bkaradzic/bgfx.cmake
- https://github.com/JoshuaBrookover/bgfx.cmake#bgfxcmake
- https://github.com/pr0g/sdl-bgfx-imgui-starter#sdl-bgfx-imgui-starter
- https://github.com/yuki-koyama/hello-bgfx
- https://github.com/ataulien/bgfx-cmake
**fips** is a highlevel build system wrapper written in Python for C/C++ projects.
https://github.com/floooh/fips#fips
**Conan** package
https://github.com/firefalcom/bgfx-conan
Minimal example without bgfx's example harness
----------------------------------------------
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.
https://github.com/jpcy/bgfx-minimal-example