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