98 lines
3.5 KiB
Python
Executable File
98 lines
3.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import distutils.log
|
|
from distutils.command.build import build
|
|
from setuptools.command.develop import develop
|
|
from distutils.cmd import Command
|
|
from setuptools import setup
|
|
|
|
def read_text_file(path):
|
|
import os
|
|
with open(os.path.join(os.path.dirname(__file__), path)) as f:
|
|
return f.read()
|
|
|
|
|
|
class BuildGenerateInstructions(build):
|
|
def run(self):
|
|
self.run_command("generate")
|
|
build.run(self)
|
|
|
|
class DevelopGenerateInstructions(develop):
|
|
def run(self):
|
|
self.run_command("generate")
|
|
develop.run(self)
|
|
|
|
class GenerateInstructions(Command):
|
|
description = "Generate PeachPy instructions from Opcodes DB"
|
|
user_options = []
|
|
|
|
def initialize_options(self):
|
|
pass
|
|
|
|
def finalize_options(self):
|
|
pass
|
|
|
|
def run(self):
|
|
# package_dir may be None, in that case use the current directory.
|
|
import os
|
|
if not self.distribution.package_dir:
|
|
src_dir = os.getcwd()
|
|
else:
|
|
src_dir = os.path.abspath(self.distribution.package_dir[""])
|
|
# Run code-generation script
|
|
import opcodes
|
|
self.announce("Generating x86-64 instruction classes from opcodes %s" % opcodes.__version__,
|
|
level=distutils.log.INFO)
|
|
import codegen.x86_64
|
|
codegen.x86_64.main(src_dir)
|
|
|
|
|
|
setup(
|
|
name="PeachPy",
|
|
version="0.2.0",
|
|
description="Portable Efficient Assembly Codegen in Higher-level Python",
|
|
author="Marat Dukhan",
|
|
author_email="maratek@gmail.com",
|
|
url="https://github.com/Maratyszcza/PeachPy/",
|
|
packages=["peachpy", "peachpy.c",
|
|
"peachpy.common", "peachpy.x86_64", "peachpy.arm",
|
|
"peachpy.formats", "peachpy.formats.elf", "peachpy.formats.macho", "peachpy.formats.mscoff"],
|
|
keywords=["assembly", "codegen", "x86-64"],
|
|
long_description=read_text_file("README.rst"),
|
|
classifiers=[
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Science/Research",
|
|
"License :: OSI Approved :: BSD License",
|
|
"Operating System :: OS Independent",
|
|
"Operating System :: Microsoft :: Windows",
|
|
"Operating System :: POSIX :: Linux",
|
|
"Operating System :: POSIX :: FreeBSD",
|
|
"Operating System :: MacOS :: MacOS X",
|
|
"Programming Language :: Assembly",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 2",
|
|
"Programming Language :: Python :: 2.7",
|
|
"Programming Langauge :: Python :: 3",
|
|
"Programming Language :: Python :: 3.2",
|
|
"Programming Language :: Python :: 3.3",
|
|
"Programming Language :: Python :: 3.4",
|
|
"Programming Language :: Python :: 3.5",
|
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
"Natural Language :: English",
|
|
"Topic :: Scientific/Engineering",
|
|
"Topic :: Software Development",
|
|
"Topic :: Software Development :: Assemblers",
|
|
"Topic :: Software Development :: Code Generators",
|
|
"Topic :: Software Development :: Compilers",
|
|
"Topic :: Software Development :: Libraries"
|
|
],
|
|
setup_requires=["Opcodes>=0.3.13", "six"],
|
|
install_requires=["six", 'enum34;python_version<"3.4"'],
|
|
cmdclass={
|
|
"build": BuildGenerateInstructions,
|
|
"develop": DevelopGenerateInstructions,
|
|
"generate": GenerateInstructions,
|
|
})
|