# Basic toplevel package includes
include BuildStream.doap
include COMMITTERS.rst
include CONTRIBUTING.rst
include COPYING
include NEWS
include README.rst

# Cython files
recursive-include src/buildstream *.pyx
recursive-include src/buildstream *.pxd
recursive-include src/buildstream *.c

# Data files required by BuildStream's generic source tests
graft src/buildstream/testing/_sourcetests/project

# Documentation package includes
include doc/Makefile
include doc/badges.py
include doc/bst2html.py
include doc/source/conf.py
include doc/source/plugin.rsttemplate
recursive-include doc/source *.rst
recursive-include doc/source *.py
recursive-include doc/source *.in
recursive-include doc/source *.html
recursive-include doc/source *.odg
recursive-include doc/source *.svg
recursive-include doc/examples *
recursive-include doc/sessions *.run

# Tests
graft tests
include tox.ini
include .coveragerc
include .pylintrc

# Protocol Buffers
recursive-include src/buildstream/_protos *.proto

# Requirements files
recursive-include requirements *.in
recursive-include requirements *.txt

# Versioneer
include versioneer.py

# setuptools.build_meta don't include setup.py by default. Add it
include setup.py
