Metadata-Version: 2.1
Name: bfg9000
Version: 0.4.1
Summary: A cross-platform build file generator
Home-page: https://jimporter.github.io/bfg9000/
Author: Jim Porter
Author-email: itsjimporter@gmail.com
License: BSD
Keywords: build file generator
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Dist: colorama
Requires-Dist: packaging (>=17.0)
Requires-Dist: setuptools
Requires-Dist: six
Requires-Dist: doppel (>=0.3.1)
Requires-Dist: patchelf-wrapper; platform_system == "Linux"
Requires-Dist: pysetenv; platform_system == "Windows"
Requires-Dist: enum34; python_version < "3.4"
Provides-Extra: dev
Requires-Dist: coverage; extra == 'dev'
Requires-Dist: flake8 (>=3.0); extra == 'dev'
Requires-Dist: lxml; extra == 'dev'
Requires-Dist: mike (>=0.3.1); extra == 'dev'
Requires-Dist: mkdocs-bootswatch; extra == 'dev'
Requires-Dist: mock; extra == 'dev'
Requires-Dist: pypandoc; extra == 'dev'
Requires-Dist: stdeb; extra == 'dev'
Provides-Extra: msbuild
Requires-Dist: lxml; extra == 'msbuild'
Provides-Extra: test
Requires-Dist: coverage; extra == 'test'
Requires-Dist: flake8 (>=3.0); extra == 'test'
Requires-Dist: lxml; extra == 'test'
Requires-Dist: mock; extra == 'test'

bfg9000 - build file generator
==============================

**bfg9000** is a cross-platform *build configuration system* with an
emphasis on making it easy to define how to build your software. It
converts a Python-based build script into the appropriate files for your
underlying build system of choice (Ninja, Make, or MSBuild).

Why bfg9000?
------------

Familiar syntax
^^^^^^^^^^^^^^^

``build.bfg`` files are just Python scripts with some new functions
added, so you may already know how to write them; and when your build
gets complicated, you can rely on the existing Python ecosystem to get
you out of trouble.

Fast builds
^^^^^^^^^^^

bfg9000 ensures your builds are fast by relying on existing, mature
build systems like Make and Ninja to do the heavy lifting of building
your software; often, incremental builds don't need to execute bfg9000
at all!

Stay sane
^^^^^^^^^

Building your code shouldn't be the hard part of developing your
project. Above all else, bfg9000 strives to help you get your build
right the *first* time with many helpful
`features <https://jimporter.github.io/bfg9000/latest/user/features>`__.

A brief example
---------------

You can't get much simpler than the simplest ``build.bfg`` file:

.. code:: python

    executable('simple', files=['simple.cpp'])

To build this executable, we need to create the actual build files and
then run them:

.. code:: sh

    $ cd /path/to/src/
    $ 9k build/
    $ cd build/
    $ ninja

From there, you can run your newly-created executable: ``./simple``.
Hooray!

For further examples, please see the
```examples/`` <https://github.com/jimporter/bfg9000/tree/master/examples>`__
subdirectory.

Installation
------------

bfg9000 uses `setuptools <https://pythonhosted.org/setuptools/>`__, so
installation is much the same as any other Python package:

.. code:: sh

    $ pip install bfg9000

From there, you can start using bfg to build your software! (If you're
using Ubuntu, you can also install bfg9000 from the following PPA:
`ppa:jimporter/stable <https://launchpad.net/~jimporter/+archive/ubuntu/stable>`__).
For more information about how to install bfg9000, see the
`documentation <https://jimporter.github.io/bfg9000/latest/getting-started>`__.

License
-------

This project is licensed under the `BSD 3-clause license <LICENSE>`__.


