mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Simplify the Extension class, making it serializable
This commit is contained in:
parent
388bceac2b
commit
37da6dc36a
@ -22,28 +22,26 @@ isunix = islinux or isosx or isbsd
|
|||||||
make = 'make' if isunix else NMAKE
|
make = 'make' if isunix else NMAKE
|
||||||
py_lib = os.path.join(sys.prefix, 'libs', 'python%d%d.lib' % sys.version_info[:2])
|
py_lib = os.path.join(sys.prefix, 'libs', 'python%d%d.lib' % sys.version_info[:2])
|
||||||
|
|
||||||
|
def absolutize(paths):
|
||||||
|
return list(set([x if os.path.isabs(x) else os.path.join(SRC, x.replace('/', os.sep)) for x in paths]))
|
||||||
|
|
||||||
class Extension(object):
|
class Extension(object):
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def absolutize(cls, paths):
|
|
||||||
return list(set([x if os.path.isabs(x) else os.path.join(SRC, x.replace('/',
|
|
||||||
os.sep)) for x in paths]))
|
|
||||||
|
|
||||||
def __init__(self, name, sources, **kwargs):
|
def __init__(self, name, sources, **kwargs):
|
||||||
self.name = name
|
self.data = d = {}
|
||||||
self.needs_cxx = bool([1 for x in sources if os.path.splitext(x)[1] in
|
self.name = d['name'] = name
|
||||||
('.cpp', '.c++', '.cxx')])
|
self.needs_cxx = d['needs_cxx'] = bool([1 for x in sources if os.path.splitext(x)[1] in ('.cpp', '.c++', '.cxx')])
|
||||||
self.sources = self.absolutize(sources)
|
self.sources = d['sources'] = absolutize(sources)
|
||||||
self.headers = self.absolutize(kwargs.get('headers', []))
|
self.headers = d['headers'] = absolutize(kwargs.get('headers', []))
|
||||||
self.sip_files = self.absolutize(kwargs.get('sip_files', []))
|
self.sip_files = d['sip_files'] = absolutize(kwargs.get('sip_files', []))
|
||||||
self.inc_dirs = self.absolutize(kwargs.get('inc_dirs', []))
|
self.inc_dirs = d['inc_dirs'] = absolutize(kwargs.get('inc_dirs', []))
|
||||||
self.lib_dirs = self.absolutize(kwargs.get('lib_dirs', []))
|
self.lib_dirs = d['lib_dirs'] = absolutize(kwargs.get('lib_dirs', []))
|
||||||
self.extra_objs = self.absolutize(kwargs.get('extra_objs', []))
|
self.extra_objs = d['extra_objs'] = absolutize(kwargs.get('extra_objs', []))
|
||||||
self.error = kwargs.get('error', None)
|
self.error = d['error'] = kwargs.get('error', None)
|
||||||
self.libraries = kwargs.get('libraries', [])
|
self.libraries = d['libraries'] = kwargs.get('libraries', [])
|
||||||
self.cflags = kwargs.get('cflags', [])
|
self.cflags = d['cflags'] = kwargs.get('cflags', [])
|
||||||
self.ldflags = kwargs.get('ldflags', [])
|
self.ldflags = d['ldflags'] = kwargs.get('ldflags', [])
|
||||||
self.optional = kwargs.get('optional', False)
|
self.optional = d['options'] = kwargs.get('optional', False)
|
||||||
of = kwargs.get('optimize_level', None)
|
of = kwargs.get('optimize_level', None)
|
||||||
if of is None:
|
if of is None:
|
||||||
of = '/Ox' if iswindows else '-O3'
|
of = '/Ox' if iswindows else '-O3'
|
||||||
@ -51,10 +49,7 @@ class Extension(object):
|
|||||||
flag = '/O%d' if iswindows else '-O%d'
|
flag = '/O%d' if iswindows else '-O%d'
|
||||||
of = flag % of
|
of = flag % of
|
||||||
self.cflags.insert(0, of)
|
self.cflags.insert(0, of)
|
||||||
self.qt_private_headers = kwargs.get('qt_private', [])
|
self.qt_private_headers = d['qt_private_headers'] = kwargs.get('qt_private', [])
|
||||||
|
|
||||||
def preflight(self, obj_dir, compiler, linker, builder, cflags, ldflags):
|
|
||||||
pass
|
|
||||||
|
|
||||||
reflow_sources = glob.glob(os.path.join(SRC, 'calibre', 'ebooks', 'pdf', '*.cpp'))
|
reflow_sources = glob.glob(os.path.join(SRC, 'calibre', 'ebooks', 'pdf', '*.cpp'))
|
||||||
reflow_headers = glob.glob(os.path.join(SRC, 'calibre', 'ebooks', 'pdf', '*.h'))
|
reflow_headers = glob.glob(os.path.join(SRC, 'calibre', 'ebooks', 'pdf', '*.h'))
|
||||||
@ -451,7 +446,6 @@ class Build(Command):
|
|||||||
linker = msvc.linker if iswindows else compiler
|
linker = msvc.linker if iswindows else compiler
|
||||||
objects = []
|
objects = []
|
||||||
obj_dir = self.j(self.obj_dir, ext.name)
|
obj_dir = self.j(self.obj_dir, ext.name)
|
||||||
ext.preflight(obj_dir, compiler, linker, self, cflags, ldflags)
|
|
||||||
einc = self.inc_dirs_to_cflags(ext.inc_dirs)
|
einc = self.inc_dirs_to_cflags(ext.inc_dirs)
|
||||||
if not os.path.exists(obj_dir):
|
if not os.path.exists(obj_dir):
|
||||||
os.makedirs(obj_dir)
|
os.makedirs(obj_dir)
|
||||||
@ -509,7 +503,7 @@ class Build(Command):
|
|||||||
return # Dont have headless operation on these platforms
|
return # Dont have headless operation on these platforms
|
||||||
from PyQt5.QtCore import QT_VERSION
|
from PyQt5.QtCore import QT_VERSION
|
||||||
self.info('\n####### Building headless QPA plugin', '#'*7)
|
self.info('\n####### Building headless QPA plugin', '#'*7)
|
||||||
a = Extension.absolutize
|
a = absolutize
|
||||||
headers = a([
|
headers = a([
|
||||||
'calibre/headless/headless_backingstore.h',
|
'calibre/headless/headless_backingstore.h',
|
||||||
'calibre/headless/headless_integration.h',
|
'calibre/headless/headless_integration.h',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user