1#!/usr/bin/python 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' ] 31if cc != "clang": 32 cflags += ['-Wno-cast-function-type' ] 33 34src_perf = getenv('srctree') + '/tools/perf' 35build_lib = getenv('PYTHON_EXTBUILD_LIB') 36build_tmp = getenv('PYTHON_EXTBUILD_TMP') 37libtraceevent = getenv('LIBTRACEEVENT') 38libapikfs = getenv('LIBAPI') 39 40ext_sources = [f.strip() for f in open('util/python-ext-sources') 41 if len(f.strip()) > 0 and f[0] != '#'] 42 43# use full paths with source files 44ext_sources = list(map(lambda x: '%s/%s' % (src_perf, x) , ext_sources)) 45 46perf = Extension('perf', 47 sources = ext_sources, 48 include_dirs = ['util/include'], 49 extra_compile_args = cflags, 50 extra_objects = [libtraceevent, libapikfs], 51 ) 52 53setup(name='perf', 54 version='0.1', 55 description='Interface with the Linux profiling infrastructure', 56 author='Arnaldo Carvalho de Melo', 57 author_email='acme@redhat.com', 58 license='GPLv2', 59 url='http://perf.wiki.kernel.org', 60 ext_modules=[perf], 61 cmdclass={'build_ext': build_ext, 'install_lib': install_lib}) 62