# Copyright (c) 2013, Wesley Shields . All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. from setuptools import setup, Extension import os import sys import platform here = os.path.dirname(__file__) pepy = os.path.join(here, "pepy") with open(os.path.join(pepy, "README.md")) as f: README = f.read() with open(os.path.join(here, "VERSION")) as f: VERSION = f.read().strip() SOURCE_FILES = [ os.path.join(pepy, "pepy.cpp"), os.path.join(here, "pe-parser-library", "src", "parse.cpp"), os.path.join(here, "pe-parser-library", "src", "buffer.cpp"), os.path.join(here, "pe-parser-library", "src", "unicode_codecvt.cpp"), ] if platform.system() == "Windows": INCLUDE_DIRS = [ os.path.abspath(os.path.join(os.path.dirname(sys.executable), "include")), os.path.join(here, "pe-parser-library", "include"), "C:\\usr\\include", ] LIBRARY_DIRS = [ os.path.abspath(os.path.join(os.path.dirname(sys.executable), "libs")), "C:\\usr\\lib", ] COMPILE_ARGS = ["/EHsc", f'/D"PEPARSE_VERSION=\\"{VERSION}\\""'] else: INCLUDE_DIRS = [ "/usr/local/include", "/opt/local/include", "/usr/include", os.path.join(here, "pe-parser-library", "include"), ] LIBRARY_DIRS = ["/usr/lib", "/usr/local/lib"] COMPILE_ARGS = ["-std=c++11", f'-DPEPARSE_VERSION="{VERSION}"'] extension_mod = Extension( "pepy", sources=SOURCE_FILES, extra_compile_args=COMPILE_ARGS, language="c++", include_dirs=INCLUDE_DIRS, library_dirs=LIBRARY_DIRS, ) setup( name="pepy", url="https://github.com/trailofbits/pe-parse", python_requires=">= 3.6", version=VERSION, description="Python bindings for pe-parse", long_description=README, long_description_content_type="text/markdown", author="Wesley Shields", author_email="wxs@atarininja.org", license="BSD", ext_modules=[extension_mod], )