1try:
2    from setuptools import setup, Extension
3    # setuptools doesn't support template param for MANIFEST.in
4    from setuptools.command.egg_info import manifest_maker
5    manifest_maker.template = 'python/MANIFEST.in'
6except ImportError:
7    from distutils.core import setup, Extension
8
9import os
10import sys
11
12LIB_ROOT = os.path.abspath(os.path.join(__file__, os.pardir, os.pardir))
13if os.getcwd() != LIB_ROOT:
14    os.chdir(LIB_ROOT)
15if LIB_ROOT not in sys.path:
16    sys.path.append(LIB_ROOT)
17
18tests_require = []
19
20if sys.version < '2.7':
21    tests_require.append('unittest2')
22
23uclmodule = Extension(
24    'ucl',
25    libraries=['ucl', 'curl'],
26    sources=['python/src/uclmodule.c'],
27    include_dirs=['include'],
28    language='c',
29)
30
31ucl_lib = {
32    'sources': ['src/' + fn for fn in os.listdir('src') if fn.endswith('.c')],
33    'include_dirs': ['include', 'src', 'uthash', 'klib'],
34    'macros': [('CURL_FOUND', '1')],
35}
36
37# sdist setup() will pull in the *.c files automatically, but not headers
38# MANIFEST.in will include the headers for sdist only
39template = 'python/MANIFEST.in'
40
41# distutils assume setup.py is in the root of the project
42# we need to include C source from the parent so trick it
43in_ucl_root = 'setup.py' in os.listdir('python')
44if in_ucl_root:
45    os.link('python/setup.py', 'setup.py')
46
47setup(
48    name = 'ucl',
49    version = '0.8.1',
50    description = 'ucl parser and emitter',
51    ext_modules = [uclmodule],
52    template=template, # no longer supported with setuptools but doesn't hurt
53    libraries = [('ucl', ucl_lib)],
54    test_suite = 'tests',
55    tests_require = tests_require,
56    author = "Eitan Adler, Denis Volpato Martins",
57    author_email = "lists@eitanadler.com",
58    url = "https://github.com/vstakhov/libucl/",
59    license = "MIT",
60    classifiers = [
61        "Development Status :: 3 - Alpha",
62        "Intended Audience :: Developers",
63        "License :: DFSG approved",
64        "License :: OSI Approved :: MIT License",
65        "Programming Language :: C",
66        "Programming Language :: Python :: 2",
67        "Programming Language :: Python :: 3",
68        "Programming Language :: Python :: Implementation :: CPython",
69        "Topic :: Software Development :: Libraries",
70    ]
71)
72
73# clean up the trick after the build
74if in_ucl_root:
75    os.unlink("setup.py")
76