1e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#!/usr/bin/python2
2e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
3e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengfrom distutils.core import setup, Extension
4e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengfrom os import getenv
5e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
6e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengfrom distutils.command.build_ext   import build_ext   as _build_ext
7e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengfrom distutils.command.install_lib import install_lib as _install_lib
8e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
9e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengclass build_ext(_build_ext):
10e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng    def finalize_options(self):
11e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng        _build_ext.finalize_options(self)
12e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng        self.build_lib  = build_lib
13e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng        self.build_temp = build_tmp
14e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
15e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengclass install_lib(_install_lib):
16e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng    def finalize_options(self):
17e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng        _install_lib.finalize_options(self)
18e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng        self.build_dir = build_lib
19e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
20e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
21e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengcflags = getenv('CFLAGS', '').split()
22e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# switch off several checks (need to be at the end of cflags list)
23e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengcflags += ['-fno-strict-aliasing', '-Wno-write-strings', '-Wno-unused-parameter' ]
24e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
25e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengbuild_lib = getenv('PYTHON_EXTBUILD_LIB')
26e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengbuild_tmp = getenv('PYTHON_EXTBUILD_TMP')
27e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenglibtraceevent = getenv('LIBTRACEEVENT')
28e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengliblk = getenv('LIBLK')
29e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
30e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengext_sources = [f.strip() for f in file('util/python-ext-sources')
31e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng				if len(f.strip()) > 0 and f[0] != '#']
32e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
33e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengperf = Extension('perf',
34e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		  sources = ext_sources,
35e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		  include_dirs = ['util/include'],
36e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		  extra_compile_args = cflags,
37e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		  extra_objects = [libtraceevent, liblk],
38e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng                 )
39e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
40e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsetup(name='perf',
41e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng      version='0.1',
42e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng      description='Interface with the Linux profiling infrastructure',
43e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng      author='Arnaldo Carvalho de Melo',
44e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng      author_email='acme@redhat.com',
45e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng      license='GPLv2',
46e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng      url='http://perf.wiki.kernel.org',
47e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng      ext_modules=[perf],
48e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng      cmdclass={'build_ext': build_ext, 'install_lib': install_lib})
49