setup.py 2.3 KB
Newer Older
Hang Zhang's avatar
init  
Hang Zhang committed
1
2
3
4
5
6
7
8
9
10
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
## Created by: Hang Zhang
## ECE Department, Rutgers University
## Email: zhang.hang@rutgers.edu
## Copyright (c) 2017
##
## This source code is licensed under the MIT-style license found in the
## LICENSE file in the root directory of this source tree 
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Hang Zhang's avatar
v1.0.1  
Hang Zhang committed
11
import io
Hang Zhang's avatar
init  
Hang Zhang committed
12
import os
Hang Zhang's avatar
v1.0.1  
Hang Zhang committed
13
import re
Hang Zhang's avatar
init  
Hang Zhang committed
14
import sys
15
import subprocess
Hang Zhang's avatar
init  
Hang Zhang committed
16
17

from setuptools import setup, find_packages
18
19
from setuptools.command.develop import develop
from setuptools.command.install import install
Hang Zhang's avatar
init  
Hang Zhang committed
20
21
22

this_file = os.path.dirname(__file__)

Hang Zhang's avatar
v1.0.1  
Hang Zhang committed
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def read(*names, **kwargs):
    with io.open(
        os.path.join(os.path.dirname(__file__), *names),
        encoding=kwargs.get("encoding", "utf8")
    ) as fp:
        return fp.read()

def find_version(*file_paths):
    version_file = read(*file_paths)
    version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]",
                              version_file, re.M)
    if version_match:
        return version_match.group(1)
    raise RuntimeError("Unable to find version string.")

_version = find_version('encoding/__init__.py')

40
#extra_compile_args = ['-std=c++11', '-Wno-write-strings']
Hang Zhang's avatar
tested  
Hang Zhang committed
41
if os.getenv('PYTORCH_BINARY_BUILD') and platform.system() == 'Linux':
Hang Zhang's avatar
indent  
Hang Zhang committed
42
43
44
    print('PYTORCH_BINARY_BUILD found. Static linking libstdc++ on Linux')
    extra_compile_args += ['-static-libstdc++']
    extra_link_args += ['-static-libstdc++']
Hang Zhang's avatar
tested  
Hang Zhang committed
45

46
47
48
49
50
51
class TestCommand(install):
    """Post-installation mode.""" 
    def run(self):
        install.run(self)
        subprocess.check_call("python test/test.py".split())

Hang Zhang's avatar
init  
Hang Zhang committed
52
setup(
Hang Zhang's avatar
indent  
Hang Zhang committed
53
    name="encoding",
Hang Zhang's avatar
v1.0.1  
Hang Zhang committed
54
    version=_version,
Hang Zhang's avatar
indent  
Hang Zhang committed
55
56
57
58
59
60
61
62
63
    description="PyTorch Encoding Layer",
    url="https://github.com/zhanghang1989/PyTorch-Encoding-Layer",
    author="Hang Zhang",
    author_email="zhang.hang@rutgers.edu",
    # Require cffi.
    install_requires=["cffi>=1.0.0"],
    setup_requires=["cffi>=1.0.0"],
    # Exclude the build files.
    packages=find_packages(exclude=["build"]),
64
    #extra_compile_args=extra_compile_args,
Hang Zhang's avatar
indent  
Hang Zhang committed
65
66
67
68
69
70
    # Package where to put the extensions. Has to be a prefix of build.py.
    ext_package="",
    # Extensions to compile.
    cffi_modules=[
        os.path.join(this_file, "build.py:ffi")
    ],
71
72
73
    cmdclass={
        'install': TestCommand,
    },
Hang Zhang's avatar
init  
Hang Zhang committed
74
)