1#!/usr/bin/python2 2 3from os import getenv 4 5cc = getenv("CC") 6if cc == "clang": 7 from _sysconfigdata import build_time_vars 8 from re import sub 9 build_time_vars["CFLAGS"] = sub("-specs=[^ ]+", "", build_time_vars["CFLAGS"]) 10 11from distutils.core import setup, Extension 12 13from distutils.command.build_ext import build_ext as _build_ext 14from distutils.command.install_lib import install_lib as _install_lib 15 16class build_ext(_build_ext): 17 def finalize_options(self): 18 _build_ext.finalize_options(self) 19 self.build_lib = build_lib 20 self.build_temp = build_tmp 21 22class install_lib(_install_lib): 23 def finalize_options(self): 24 _install_lib.finalize_options(self) 25 self.build_dir = build_lib 26 27 28cflags = getenv('CFLAGS', '').split() 29# switch off several checks (need to be at the end of cflags list) 30cflags += ['-fno-strict-aliasing', '-Wno-write-strings', '-Wno-unused-parameter' ] 31 32src_perf = getenv('srctree') + '/tools/perf' 33build_lib = getenv('PYTHON_EXTBUILD_LIB') 34build_tmp = getenv('PYTHON_EXTBUILD_TMP') 35libtraceevent = getenv('LIBTRACEEVENT') 36libapikfs = getenv('LIBAPI') 37 38ext_sources = [f.strip() for f in file('util/python-ext-sources') 39 if len(f.strip()) > 0 and f[0] != '#'] 40 41# use full paths with source files 42ext_sources = map(lambda x: '%s/%s' % (src_perf, x) , ext_sources) 43 44perf = Extension('perf', 45 sources = ext_sources, 46 include_dirs = ['util/include'], 47 extra_compile_args = cflags, 48 extra_objects = [libtraceevent, libapikfs], 49 ) 50 51setup(name='perf', 52 version='0.1', 53 description='Interface with the Linux profiling infrastructure', 54 author='Arnaldo Carvalho de Melo', 55 author_email='acme@redhat.com', 56 license='GPLv2', 57 url='http://perf.wiki.kernel.org', 58 ext_modules=[perf], 59 cmdclass={'build_ext': build_ext, 'install_lib': install_lib}) 60