summaryrefslogtreecommitdiff
path: root/setup.py
blob: a7c4c4d85f96017b85f8be110e7e81345c5a08d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/usr/bin/env python
# coding: utf-8

# python setup.py sdist --formats=gztar

import os
import sys
import platform

try:
    from setuptools import setup, Extension
except ImportError:
    from distutils.core import setup, Extension

import glob
try:
    import Cython.Compiler.Main as cython_compiler
    have_cython = True
except ImportError:
    have_cython = False
from distutils.command.build_ext import build_ext

try:
    import pypissh
except ImportError:
    # non-developer
    pass
else:
    pypissh.monkeypatch()

DEBUG = False

src_dir = 'src'
ext_dir = os.path.join(src_dir,'ext')
build_dir = 'build'
cchardet_dir = os.path.join(src_dir,'cchardet/')
charsetdetect_dir = os.path.join(ext_dir, 'libcharsetdetect/')
nspr_emu_dir = os.path.join(charsetdetect_dir,"nspr-emu/")
uchardet_dir = os.path.join(charsetdetect_dir,"mozilla/extensions/universalchardet/src/base/")

if have_cython:
    pyx_sources = glob.glob(cchardet_dir+'*.pyx')
    sys.stderr.write("cythonize: %r\n" % (pyx_sources,))
    cython_compiler.compile(pyx_sources,options=cython_compiler.CompilationOptions(cplus=True))
cchardet_sources = glob.glob(cchardet_dir+'*.cpp')
sources = cchardet_sources  + [os.path.join(charsetdetect_dir,"charsetdetect.cpp")] + glob.glob(uchardet_dir+'*.cpp')

macros = []
extra_compile_args = []
extra_link_args = []

if platform.system() == "Windows":
    macros.append(("WIN32","1"))

if DEBUG:
    macros.append(("DEBUG_chardet","1"))
    extra_compile_args.append("-g"),
    extra_link_args.append("-g"),

cchardet_module = Extension("cchardet._cchardet",
    sources = sources,
    include_dirs = [uchardet_dir,nspr_emu_dir,charsetdetect_dir],
    language = "c++",
    define_macros=macros,
)

setup(
    name = 'cchardet',
    author = 'PyYoshi',
    author_email = 'yohihiro_dot_m_at_gmail_dot_com',
    url = r"https://github.com/PyYoshi/cChardet",
    description = 'Universal encoding detector. This library is faster than chardet.',
    long_description= """cChardet is high speed universal character encoding detector. - binding to charsetdetect.
This library is faster than chardet.
""",
    version = '0.3.5',
    license = 'MIT License',
    classifiers = [
        # http://pypi.python.org/pypi?:action=list_classifiers
        'Development Status :: 4 - Beta',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Cython',
        'Programming Language :: Python',
        'Topic :: Software Development :: Libraries',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 3',
    ],
    keywords = [
        'cython',
        'chardet',
        'charsetdetect'
    ],
    cmdclass = {'build_ext': build_ext},
    package_dir = {"":src_dir},
    packages = ['cchardet',],
    ext_modules = [
        cchardet_module
    ],
)