1*f4ee7fbaSAndroid Build Coastguard Worker# Copyright 2015 The Brotli Authors. All rights reserved. 2*f4ee7fbaSAndroid Build Coastguard Worker# 3*f4ee7fbaSAndroid Build Coastguard Worker# Distributed under MIT license. 4*f4ee7fbaSAndroid Build Coastguard Worker# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT 5*f4ee7fbaSAndroid Build Coastguard Worker 6*f4ee7fbaSAndroid Build Coastguard Workerimport os 7*f4ee7fbaSAndroid Build Coastguard Workerimport platform 8*f4ee7fbaSAndroid Build Coastguard Workerimport re 9*f4ee7fbaSAndroid Build Coastguard Workerimport unittest 10*f4ee7fbaSAndroid Build Coastguard Worker 11*f4ee7fbaSAndroid Build Coastguard Workertry: 12*f4ee7fbaSAndroid Build Coastguard Worker from setuptools import Extension 13*f4ee7fbaSAndroid Build Coastguard Worker from setuptools import setup 14*f4ee7fbaSAndroid Build Coastguard Workerexcept: 15*f4ee7fbaSAndroid Build Coastguard Worker from distutils.core import Extension 16*f4ee7fbaSAndroid Build Coastguard Worker from distutils.core import setup 17*f4ee7fbaSAndroid Build Coastguard Workerfrom distutils.command.build_ext import build_ext 18*f4ee7fbaSAndroid Build Coastguard Workerfrom distutils import errors 19*f4ee7fbaSAndroid Build Coastguard Workerfrom distutils import dep_util 20*f4ee7fbaSAndroid Build Coastguard Workerfrom distutils import log 21*f4ee7fbaSAndroid Build Coastguard Worker 22*f4ee7fbaSAndroid Build Coastguard Worker 23*f4ee7fbaSAndroid Build Coastguard WorkerCURR_DIR = os.path.abspath(os.path.dirname(os.path.realpath(__file__))) 24*f4ee7fbaSAndroid Build Coastguard Worker 25*f4ee7fbaSAndroid Build Coastguard Worker 26*f4ee7fbaSAndroid Build Coastguard Workerdef get_version(): 27*f4ee7fbaSAndroid Build Coastguard Worker """ Return BROTLI_VERSION string as defined in 'common/version.h' file. """ 28*f4ee7fbaSAndroid Build Coastguard Worker version_file_path = os.path.join(CURR_DIR, 'c', 'common', 'version.h') 29*f4ee7fbaSAndroid Build Coastguard Worker version = 0 30*f4ee7fbaSAndroid Build Coastguard Worker with open(version_file_path, 'r') as f: 31*f4ee7fbaSAndroid Build Coastguard Worker for line in f: 32*f4ee7fbaSAndroid Build Coastguard Worker m = re.match(r'#define\sBROTLI_VERSION\s+0x([0-9a-fA-F]+)', line) 33*f4ee7fbaSAndroid Build Coastguard Worker if m: 34*f4ee7fbaSAndroid Build Coastguard Worker version = int(m.group(1), 16) 35*f4ee7fbaSAndroid Build Coastguard Worker if version == 0: 36*f4ee7fbaSAndroid Build Coastguard Worker return '' 37*f4ee7fbaSAndroid Build Coastguard Worker # Semantic version is calculated as (MAJOR << 24) | (MINOR << 12) | PATCH. 38*f4ee7fbaSAndroid Build Coastguard Worker major = version >> 24 39*f4ee7fbaSAndroid Build Coastguard Worker minor = (version >> 12) & 0xFFF 40*f4ee7fbaSAndroid Build Coastguard Worker patch = version & 0xFFF 41*f4ee7fbaSAndroid Build Coastguard Worker return '{0}.{1}.{2}'.format(major, minor, patch) 42*f4ee7fbaSAndroid Build Coastguard Worker 43*f4ee7fbaSAndroid Build Coastguard Worker 44*f4ee7fbaSAndroid Build Coastguard Workerdef get_test_suite(): 45*f4ee7fbaSAndroid Build Coastguard Worker test_loader = unittest.TestLoader() 46*f4ee7fbaSAndroid Build Coastguard Worker test_suite = test_loader.discover('python', pattern='*_test.py') 47*f4ee7fbaSAndroid Build Coastguard Worker return test_suite 48*f4ee7fbaSAndroid Build Coastguard Worker 49*f4ee7fbaSAndroid Build Coastguard Worker 50*f4ee7fbaSAndroid Build Coastguard Workerclass BuildExt(build_ext): 51*f4ee7fbaSAndroid Build Coastguard Worker 52*f4ee7fbaSAndroid Build Coastguard Worker def get_source_files(self): 53*f4ee7fbaSAndroid Build Coastguard Worker filenames = build_ext.get_source_files(self) 54*f4ee7fbaSAndroid Build Coastguard Worker for ext in self.extensions: 55*f4ee7fbaSAndroid Build Coastguard Worker filenames.extend(ext.depends) 56*f4ee7fbaSAndroid Build Coastguard Worker return filenames 57*f4ee7fbaSAndroid Build Coastguard Worker 58*f4ee7fbaSAndroid Build Coastguard Worker def build_extension(self, ext): 59*f4ee7fbaSAndroid Build Coastguard Worker if ext.sources is None or not isinstance(ext.sources, (list, tuple)): 60*f4ee7fbaSAndroid Build Coastguard Worker raise errors.DistutilsSetupError( 61*f4ee7fbaSAndroid Build Coastguard Worker "in 'ext_modules' option (extension '%s'), " 62*f4ee7fbaSAndroid Build Coastguard Worker "'sources' must be present and must be " 63*f4ee7fbaSAndroid Build Coastguard Worker "a list of source filenames" % ext.name) 64*f4ee7fbaSAndroid Build Coastguard Worker 65*f4ee7fbaSAndroid Build Coastguard Worker ext_path = self.get_ext_fullpath(ext.name) 66*f4ee7fbaSAndroid Build Coastguard Worker depends = ext.sources + ext.depends 67*f4ee7fbaSAndroid Build Coastguard Worker if not (self.force or dep_util.newer_group(depends, ext_path, 'newer')): 68*f4ee7fbaSAndroid Build Coastguard Worker log.debug("skipping '%s' extension (up-to-date)", ext.name) 69*f4ee7fbaSAndroid Build Coastguard Worker return 70*f4ee7fbaSAndroid Build Coastguard Worker else: 71*f4ee7fbaSAndroid Build Coastguard Worker log.info("building '%s' extension", ext.name) 72*f4ee7fbaSAndroid Build Coastguard Worker 73*f4ee7fbaSAndroid Build Coastguard Worker c_sources = [] 74*f4ee7fbaSAndroid Build Coastguard Worker cxx_sources = [] 75*f4ee7fbaSAndroid Build Coastguard Worker for source in ext.sources: 76*f4ee7fbaSAndroid Build Coastguard Worker if source.endswith('.c'): 77*f4ee7fbaSAndroid Build Coastguard Worker c_sources.append(source) 78*f4ee7fbaSAndroid Build Coastguard Worker else: 79*f4ee7fbaSAndroid Build Coastguard Worker cxx_sources.append(source) 80*f4ee7fbaSAndroid Build Coastguard Worker extra_args = ext.extra_compile_args or [] 81*f4ee7fbaSAndroid Build Coastguard Worker 82*f4ee7fbaSAndroid Build Coastguard Worker objects = [] 83*f4ee7fbaSAndroid Build Coastguard Worker for lang, sources in (('c', c_sources), ('c++', cxx_sources)): 84*f4ee7fbaSAndroid Build Coastguard Worker if lang == 'c++': 85*f4ee7fbaSAndroid Build Coastguard Worker if self.compiler.compiler_type == 'msvc': 86*f4ee7fbaSAndroid Build Coastguard Worker extra_args.append('/EHsc') 87*f4ee7fbaSAndroid Build Coastguard Worker 88*f4ee7fbaSAndroid Build Coastguard Worker macros = ext.define_macros[:] 89*f4ee7fbaSAndroid Build Coastguard Worker if platform.system() == 'Darwin': 90*f4ee7fbaSAndroid Build Coastguard Worker macros.append(('OS_MACOSX', '1')) 91*f4ee7fbaSAndroid Build Coastguard Worker elif self.compiler.compiler_type == 'mingw32': 92*f4ee7fbaSAndroid Build Coastguard Worker # On Windows Python 2.7, pyconfig.h defines "hypot" as "_hypot", 93*f4ee7fbaSAndroid Build Coastguard Worker # This clashes with GCC's cmath, and causes compilation errors when 94*f4ee7fbaSAndroid Build Coastguard Worker # building under MinGW: http://bugs.python.org/issue11566 95*f4ee7fbaSAndroid Build Coastguard Worker macros.append(('_hypot', 'hypot')) 96*f4ee7fbaSAndroid Build Coastguard Worker for undef in ext.undef_macros: 97*f4ee7fbaSAndroid Build Coastguard Worker macros.append((undef,)) 98*f4ee7fbaSAndroid Build Coastguard Worker 99*f4ee7fbaSAndroid Build Coastguard Worker objs = self.compiler.compile( 100*f4ee7fbaSAndroid Build Coastguard Worker sources, 101*f4ee7fbaSAndroid Build Coastguard Worker output_dir=self.build_temp, 102*f4ee7fbaSAndroid Build Coastguard Worker macros=macros, 103*f4ee7fbaSAndroid Build Coastguard Worker include_dirs=ext.include_dirs, 104*f4ee7fbaSAndroid Build Coastguard Worker debug=self.debug, 105*f4ee7fbaSAndroid Build Coastguard Worker extra_postargs=extra_args, 106*f4ee7fbaSAndroid Build Coastguard Worker depends=ext.depends) 107*f4ee7fbaSAndroid Build Coastguard Worker objects.extend(objs) 108*f4ee7fbaSAndroid Build Coastguard Worker 109*f4ee7fbaSAndroid Build Coastguard Worker self._built_objects = objects[:] 110*f4ee7fbaSAndroid Build Coastguard Worker if ext.extra_objects: 111*f4ee7fbaSAndroid Build Coastguard Worker objects.extend(ext.extra_objects) 112*f4ee7fbaSAndroid Build Coastguard Worker extra_args = ext.extra_link_args or [] 113*f4ee7fbaSAndroid Build Coastguard Worker # when using GCC on Windows, we statically link libgcc and libstdc++, 114*f4ee7fbaSAndroid Build Coastguard Worker # so that we don't need to package extra DLLs 115*f4ee7fbaSAndroid Build Coastguard Worker if self.compiler.compiler_type == 'mingw32': 116*f4ee7fbaSAndroid Build Coastguard Worker extra_args.extend(['-static-libgcc', '-static-libstdc++']) 117*f4ee7fbaSAndroid Build Coastguard Worker 118*f4ee7fbaSAndroid Build Coastguard Worker ext_path = self.get_ext_fullpath(ext.name) 119*f4ee7fbaSAndroid Build Coastguard Worker # Detect target language, if not provided 120*f4ee7fbaSAndroid Build Coastguard Worker language = ext.language or self.compiler.detect_language(sources) 121*f4ee7fbaSAndroid Build Coastguard Worker 122*f4ee7fbaSAndroid Build Coastguard Worker self.compiler.link_shared_object( 123*f4ee7fbaSAndroid Build Coastguard Worker objects, 124*f4ee7fbaSAndroid Build Coastguard Worker ext_path, 125*f4ee7fbaSAndroid Build Coastguard Worker libraries=self.get_libraries(ext), 126*f4ee7fbaSAndroid Build Coastguard Worker library_dirs=ext.library_dirs, 127*f4ee7fbaSAndroid Build Coastguard Worker runtime_library_dirs=ext.runtime_library_dirs, 128*f4ee7fbaSAndroid Build Coastguard Worker extra_postargs=extra_args, 129*f4ee7fbaSAndroid Build Coastguard Worker export_symbols=self.get_export_symbols(ext), 130*f4ee7fbaSAndroid Build Coastguard Worker debug=self.debug, 131*f4ee7fbaSAndroid Build Coastguard Worker build_temp=self.build_temp, 132*f4ee7fbaSAndroid Build Coastguard Worker target_lang=language) 133*f4ee7fbaSAndroid Build Coastguard Worker 134*f4ee7fbaSAndroid Build Coastguard Worker 135*f4ee7fbaSAndroid Build Coastguard WorkerNAME = 'Brotli' 136*f4ee7fbaSAndroid Build Coastguard Worker 137*f4ee7fbaSAndroid Build Coastguard WorkerVERSION = get_version() 138*f4ee7fbaSAndroid Build Coastguard Worker 139*f4ee7fbaSAndroid Build Coastguard WorkerURL = 'https://github.com/google/brotli' 140*f4ee7fbaSAndroid Build Coastguard Worker 141*f4ee7fbaSAndroid Build Coastguard WorkerDESCRIPTION = 'Python bindings for the Brotli compression library' 142*f4ee7fbaSAndroid Build Coastguard Worker 143*f4ee7fbaSAndroid Build Coastguard WorkerAUTHOR = 'The Brotli Authors' 144*f4ee7fbaSAndroid Build Coastguard Worker 145*f4ee7fbaSAndroid Build Coastguard WorkerLICENSE = 'MIT' 146*f4ee7fbaSAndroid Build Coastguard Worker 147*f4ee7fbaSAndroid Build Coastguard WorkerPLATFORMS = ['Posix', 'MacOS X', 'Windows'] 148*f4ee7fbaSAndroid Build Coastguard Worker 149*f4ee7fbaSAndroid Build Coastguard WorkerCLASSIFIERS = [ 150*f4ee7fbaSAndroid Build Coastguard Worker 'Development Status :: 4 - Beta', 151*f4ee7fbaSAndroid Build Coastguard Worker 'Environment :: Console', 152*f4ee7fbaSAndroid Build Coastguard Worker 'Intended Audience :: Developers', 153*f4ee7fbaSAndroid Build Coastguard Worker 'License :: OSI Approved :: MIT License', 154*f4ee7fbaSAndroid Build Coastguard Worker 'Operating System :: MacOS :: MacOS X', 155*f4ee7fbaSAndroid Build Coastguard Worker 'Operating System :: Microsoft :: Windows', 156*f4ee7fbaSAndroid Build Coastguard Worker 'Operating System :: POSIX :: Linux', 157*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: C', 158*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: C++', 159*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: Python', 160*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: Python :: 2', 161*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: Python :: 2.7', 162*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: Python :: 3', 163*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: Python :: 3.3', 164*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: Python :: 3.4', 165*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: Python :: 3.5', 166*f4ee7fbaSAndroid Build Coastguard Worker 'Programming Language :: Unix Shell', 167*f4ee7fbaSAndroid Build Coastguard Worker 'Topic :: Software Development :: Libraries', 168*f4ee7fbaSAndroid Build Coastguard Worker 'Topic :: Software Development :: Libraries :: Python Modules', 169*f4ee7fbaSAndroid Build Coastguard Worker 'Topic :: System :: Archiving', 170*f4ee7fbaSAndroid Build Coastguard Worker 'Topic :: System :: Archiving :: Compression', 171*f4ee7fbaSAndroid Build Coastguard Worker 'Topic :: Text Processing :: Fonts', 172*f4ee7fbaSAndroid Build Coastguard Worker 'Topic :: Utilities', 173*f4ee7fbaSAndroid Build Coastguard Worker] 174*f4ee7fbaSAndroid Build Coastguard Worker 175*f4ee7fbaSAndroid Build Coastguard WorkerPACKAGE_DIR = {'': 'python'} 176*f4ee7fbaSAndroid Build Coastguard Worker 177*f4ee7fbaSAndroid Build Coastguard WorkerPY_MODULES = ['brotli'] 178*f4ee7fbaSAndroid Build Coastguard Worker 179*f4ee7fbaSAndroid Build Coastguard WorkerEXT_MODULES = [ 180*f4ee7fbaSAndroid Build Coastguard Worker Extension( 181*f4ee7fbaSAndroid Build Coastguard Worker '_brotli', 182*f4ee7fbaSAndroid Build Coastguard Worker sources=[ 183*f4ee7fbaSAndroid Build Coastguard Worker 'python/_brotli.cc', 184*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/constants.c', 185*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/context.c', 186*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/dictionary.c', 187*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/platform.c', 188*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/transform.c', 189*f4ee7fbaSAndroid Build Coastguard Worker 'c/dec/bit_reader.c', 190*f4ee7fbaSAndroid Build Coastguard Worker 'c/dec/decode.c', 191*f4ee7fbaSAndroid Build Coastguard Worker 'c/dec/huffman.c', 192*f4ee7fbaSAndroid Build Coastguard Worker 'c/dec/state.c', 193*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/backward_references.c', 194*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/backward_references_hq.c', 195*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/bit_cost.c', 196*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/block_splitter.c', 197*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/brotli_bit_stream.c', 198*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/cluster.c', 199*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/command.c', 200*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/compress_fragment.c', 201*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/compress_fragment_two_pass.c', 202*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/dictionary_hash.c', 203*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/encode.c', 204*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/encoder_dict.c', 205*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/entropy_encode.c', 206*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/fast_log.c', 207*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/histogram.c', 208*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/literal_cost.c', 209*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/memory.c', 210*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/metablock.c', 211*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/static_dict.c', 212*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/utf8_util.c', 213*f4ee7fbaSAndroid Build Coastguard Worker ], 214*f4ee7fbaSAndroid Build Coastguard Worker depends=[ 215*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/constants.h', 216*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/context.h', 217*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/dictionary.h', 218*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/platform.h', 219*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/transform.h', 220*f4ee7fbaSAndroid Build Coastguard Worker 'c/common/version.h', 221*f4ee7fbaSAndroid Build Coastguard Worker 'c/dec/bit_reader.h', 222*f4ee7fbaSAndroid Build Coastguard Worker 'c/dec/huffman.h', 223*f4ee7fbaSAndroid Build Coastguard Worker 'c/dec/prefix.h', 224*f4ee7fbaSAndroid Build Coastguard Worker 'c/dec/state.h', 225*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/backward_references.h', 226*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/backward_references_hq.h', 227*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/backward_references_inc.h', 228*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/bit_cost.h', 229*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/bit_cost_inc.h', 230*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/block_encoder_inc.h', 231*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/block_splitter.h', 232*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/block_splitter_inc.h', 233*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/brotli_bit_stream.h', 234*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/cluster.h', 235*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/cluster_inc.h', 236*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/command.h', 237*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/compress_fragment.h', 238*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/compress_fragment_two_pass.h', 239*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/dictionary_hash.h', 240*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/encoder_dict.h', 241*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/entropy_encode.h', 242*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/entropy_encode_static.h', 243*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/fast_log.h', 244*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/find_match_length.h', 245*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/hash.h', 246*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/hash_composite_inc.h', 247*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/hash_forgetful_chain_inc.h', 248*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/hash_longest_match64_inc.h', 249*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/hash_longest_match_inc.h', 250*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/hash_longest_match_quickly_inc.h', 251*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/hash_rolling_inc.h', 252*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/hash_to_binary_tree_inc.h', 253*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/histogram.h', 254*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/histogram_inc.h', 255*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/literal_cost.h', 256*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/memory.h', 257*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/metablock.h', 258*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/metablock_inc.h', 259*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/params.h', 260*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/prefix.h', 261*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/quality.h', 262*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/ringbuffer.h', 263*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/static_dict.h', 264*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/static_dict_lut.h', 265*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/utf8_util.h', 266*f4ee7fbaSAndroid Build Coastguard Worker 'c/enc/write_bits.h', 267*f4ee7fbaSAndroid Build Coastguard Worker ], 268*f4ee7fbaSAndroid Build Coastguard Worker include_dirs=[ 269*f4ee7fbaSAndroid Build Coastguard Worker 'c/include', 270*f4ee7fbaSAndroid Build Coastguard Worker ], 271*f4ee7fbaSAndroid Build Coastguard Worker language='c++'), 272*f4ee7fbaSAndroid Build Coastguard Worker] 273*f4ee7fbaSAndroid Build Coastguard Worker 274*f4ee7fbaSAndroid Build Coastguard WorkerTEST_SUITE = 'setup.get_test_suite' 275*f4ee7fbaSAndroid Build Coastguard Worker 276*f4ee7fbaSAndroid Build Coastguard WorkerCMD_CLASS = { 277*f4ee7fbaSAndroid Build Coastguard Worker 'build_ext': BuildExt, 278*f4ee7fbaSAndroid Build Coastguard Worker} 279*f4ee7fbaSAndroid Build Coastguard Worker 280*f4ee7fbaSAndroid Build Coastguard Workersetup( 281*f4ee7fbaSAndroid Build Coastguard Worker name=NAME, 282*f4ee7fbaSAndroid Build Coastguard Worker description=DESCRIPTION, 283*f4ee7fbaSAndroid Build Coastguard Worker version=VERSION, 284*f4ee7fbaSAndroid Build Coastguard Worker url=URL, 285*f4ee7fbaSAndroid Build Coastguard Worker author=AUTHOR, 286*f4ee7fbaSAndroid Build Coastguard Worker license=LICENSE, 287*f4ee7fbaSAndroid Build Coastguard Worker platforms=PLATFORMS, 288*f4ee7fbaSAndroid Build Coastguard Worker classifiers=CLASSIFIERS, 289*f4ee7fbaSAndroid Build Coastguard Worker package_dir=PACKAGE_DIR, 290*f4ee7fbaSAndroid Build Coastguard Worker py_modules=PY_MODULES, 291*f4ee7fbaSAndroid Build Coastguard Worker ext_modules=EXT_MODULES, 292*f4ee7fbaSAndroid Build Coastguard Worker test_suite=TEST_SUITE, 293*f4ee7fbaSAndroid Build Coastguard Worker cmdclass=CMD_CLASS) 294