123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #!/usr/bin/python -u
- #
- # Python Bindings for LZMA
- #
- # Copyright (c) 2004-2006 by Joachim Bauch, mail@joachim-bauch.de
- # 7-Zip Copyright (C) 1999-2005 Igor Pavlov
- # LZMA SDK Copyright (C) 1999-2005 Igor Pavlov
- #
- # This library is free software; you can redistribute it and/or
- # modify it under the terms of the GNU Lesser General Public
- # License as published by the Free Software Foundation; either
- # version 2.1 of the License, or (at your option) any later version.
- #
- # This library is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- # Lesser General Public License for more details.
- #
- # You should have received a copy of the GNU Lesser General Public
- # License along with this library; if not, write to the Free Software
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- #
- # $Id: setup.py 120 2006-09-29 21:14:23Z jojo $
- #
- import sys, os
- from warnings import warn
- # are we building an egg package?
- BUILD_EGG = 'bdist_egg' in sys.argv
- kw = {}
- if BUILD_EGG:
- from setuptools import setup, Extension
- kw['test_suite'] = 'tests'
- kw['zip_safe'] = False
- else:
- from distutils.core import setup, Extension
- PYTHON_VERSION=sys.version[:3]
- PYTHON_PREFIX=sys.prefix
- class UnsupportedPlatformWarning(Warning):
- pass
- # set this to any true value to enable multithreaded compression
- ENABLE_MULTITHREADING = True
- # set this to any true value to add the compatibility decoder
- # from version 0.0.3 to be able to decompress strings without
- # the end of stream mark and you don't know their lengths
- ENABLE_COMPATIBILITY = True
- # compile including debug symbols on Windows?
- COMPILE_DEBUG = False
- if os.name == 'posix':
- # This is the directory, your Python is installed in. It must contain the header and include files.
- PYTHON_INCLUDE_DIR="%s/include/python%s" % (PYTHON_PREFIX, PYTHON_VERSION)
- PYTHON_LIB_DIR="%s/lib/python%s" % (PYTHON_PREFIX, PYTHON_VERSION)
- libraries=[]
- else:
- PYTHON_INCLUDE_DIR="%s\\include" % (PYTHON_PREFIX)
- PYTHON_LIB_DIR="%s\\libs" % (PYTHON_PREFIX)
- libraries=['user32', 'oleaut32']
- include_dirs = [
- PYTHON_INCLUDE_DIR,
- ".",
- ]
- library_dirs = [
- PYTHON_LIB_DIR,
- ".",
- ]
- mt_platforms = (
- 'win32',
- )
- if ENABLE_MULTITHREADING and not sys.platform in mt_platforms:
- warn("""\
- Multithreading is not supported on the platform "%s",
- please contact mail@joachim-bauch.de for more informations.""" % (sys.platform), UnsupportedPlatformWarning)
- ENABLE_MULTITHREADING = 0
- descr = "Python bindings for the LZMA library by Igor Pavlov."
- long_descr = """PyLZMA provides a platform independent way to read and write data
- that has been compressed or can be decompressed by the LZMA library by Igor Pavlov."""
- try: version = open('version.txt', 'rb').read().strip()
- except: version = 'unknown'
- modules = ['py7zlib']
- c_files = ['pylzma.c', 'pylzma_decompressobj.c', 'pylzma_compressfile.cpp',
- 'pylzma_decompress.c', 'pylzma_compress.cpp', 'pylzma_guids.cpp']
- compile_args = []
- link_args = []
- macros = []
- if 'win' in sys.platform:
- macros.append(('WIN32', 1))
- if COMPILE_DEBUG:
- compile_args.append('/Zi')
- compile_args.append('/MTd')
- link_args.append('/DEBUG')
- else:
- compile_args.append('/MT')
- if not 'win' in sys.platform:
- # disable gcc warning about virtual functions with non-virtual destructors
- compile_args.append(('-Wno-non-virtual-dtor'))
- if ENABLE_MULTITHREADING:
- macros.append(('COMPRESS_MF_MT', 1))
- lzma_files = ('7zip/LzmaStateDecode.c', '7zip/7zip/Compress/LZMA/LZMAEncoder.cpp',
- '7zip/7zip/Compress/RangeCoder/RangeCoderBit.cpp', '7zip/Common/CRC.cpp',
- '7zip/7zip/Compress/LZ/LZInWindow.cpp', '7zip/7zip/Common/StreamUtils.cpp',
- '7zip/7zip/Common/OutBuffer.cpp', '7zip/Common/Alloc.cpp', '7zip/Common/NewHandler.cpp', )
- if ENABLE_MULTITHREADING:
- lzma_files += ('7zip/7zip/Compress/LZ/MT/MT.cpp', '7zip/OS/Synchronization.cpp', )
- if ENABLE_COMPATIBILITY:
- c_files += ('pylzma_decompress_compat.c', 'pylzma_decompressobj_compat.c', )
- lzma_files += ('7zip/LzmaCompatDecode.c', )
- macros.append(('WITH_COMPAT', 1))
- join = os.path.join
- normalize = os.path.normpath
- c_files += map(lambda x: normalize(join('.', x)), lzma_files)
- extens=[Extension('pylzma', c_files, include_dirs=include_dirs, libraries=libraries,
- library_dirs=library_dirs, define_macros=macros, extra_compile_args=compile_args,
- extra_link_args=link_args)]
- if sys.platform == 'win32':
- operating_system = 'Microsoft :: Windows'
- else:
- operating_system = 'POSIX :: Linux'
- setup(
- name = "pylzma",
- version = version,
- description = descr,
- author = "Joachim Bauch",
- author_email = "mail@joachim-bauch.de",
- url = "http://www.joachim-bauch.de",
- license = 'LGPL',
- keywords = "lzma compression",
- long_description = long_descr,
- platforms = sys.platform,
- classifiers = [
- 'Development Status :: 5 - Production/Stable',
- 'Programming Language :: Python',
- 'Topic :: Software Development :: Libraries :: Python Modules',
- 'Intended Audience :: Developers',
- 'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
- 'Operating System :: %s' % operating_system,
- ],
- py_modules = modules,
- ext_modules = extens,
- **kw
- )
- sys.exit(0)
|