[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/2php/cefpython/cefpython31/cefpython/cef1/windows/setup/setup.py [Back]  [Original]

from distutils.core import setup
# Use "Extension" from Cython.Distutils so that "cython_directives" works.
# from distutils.extension import Extension
from Cython.Distutils import build_ext, Extension
import sys
import platform
from Cython.Compiler import Options

# Stop on first error, otherwise hundreds of errors appear in the console.
Options.fast_fail = True

# Written to cython_includes/compile_time_constants.pxi
CEF_VERSION = 1

"""
Building libcef_dll_wrapper
---------------------------

libcef_dll_wrapper needs to be compiled with /MD, otherwise you get linker errors
of type "already defined". When you try to compile using /MD you may get warnings:

  warning C4275: non dll-interface class 'stdext::exception' used as base for
  dll-interface class 'std::bad_typeid' see declaration of 'stdext::exception'
  see declaration of 'std::bad_typeid'

Which results in build errors. To solve it you need to add command line option:

  -D_HAS_EXCEPTIONS=1

Enabling C++ exceptions ("/EHsc") is not required.
"""

# Python version string: "27" or "32".
PYTHON_VERSION = str(sys.version_info.major) + str(sys.version_info.minor)

def CompileTimeConstants():

    print("Generating: cython_includes/compile_time_constants.pxi")
    with open("./../../../cython_includes/compile_time_constants.pxi", "w") as fd:
        fd.write('# This file was generated by setup.py\n')
        # A way around Python 3.2 bug: UNAME_SYSNAME is not set.
        fd.write('DEF UNAME_SYSNAME = "%s"\n' % platform.uname()[0])
        fd.write('DEF CEF_VERSION = %s\n' % CEF_VERSION)
        fd.write('DEF PY_MAJOR_VERSION = %s\n' % sys.version_info.major)

CompileTimeConstants()

ext_modules = [Extension(

    "cefpython_py%s" % PYTHON_VERSION,
    ["cefpython.pyx"],

    # Ignore the warning in the console:
    # > C:\Python27\lib\distutils\extension.py:133: UserWarning: 
    # > Unknown Extension options: 'cython_directives' warnings.warn(msg)
    cython_directives={
        # Any conversion to unicode must be explicit using .decode().
        "c_string_type": "bytes",
        "c_string_encoding": "utf8",
    },

    language='c++',

    include_dirs=[
        r'./../',
        r'./../../',
        r'./../../../',
        r'./../../../cython_includes/',
    ],

    library_dirs=[
        r'./',
        r"c:/Program Files (x86)/Windows Kits/8.0/Lib/win8/um/x86/",
        r'./../../http_authentication/Release/',
        r'./../../v8function_handler/Release_py%s/' % PYTHON_VERSION,
        r'./../../client_handler/Release_py%s/' % PYTHON_VERSION,
        r'./../../../cpp_utils/Release/cpp_utils.lib',
    ],

    libraries=[
        'libcef',
        'libcef_dll_wrapper',
        'User32',
        'Gdi32',
        'http_authentication', # Build with /MD.
        'v8function_handler_py%s' % PYTHON_VERSION, # Build with /MD.
        'client_handler_py%s' % PYTHON_VERSION # Build with /MD.
    ],

    # /EHsc - using STL string, multimap and others that use C++ exceptions.
    extra_compile_args=['/EHsc'],

    # '/ignore:4217' - silence warnings: "locally defined symbol _V8FunctionHandler_Execute
    #                  imported in function "public: virtual bool __thiscall V8FunctionHandler::Execute".
    #                  client_handler or other vcprojects include setup/cefpython.h,
    #                  this is a list of functions with "public" statement that is
    #                  accessible from c++.
    extra_link_args=['/ignore:4217'],

    # Defining macros:
    # define_macros = [("UNICODE","1"), ("_UNICODE","1"), ]
)]

setup(
    name = 'cefpython_py%s' % PYTHON_VERSION,
    cmdclass = {'build_ext': build_ext},
    ext_modules = ext_modules
)

Web Proxy Viewer  |  New URL  |  Original Page