Per-target type known keyword lists.

pull/15/head
Jussi Pakkanen 11 years ago
parent 2d0f9d044b
commit a8a696c55f
  1. 77
      build.py

@ -18,6 +18,38 @@ import dependencies
import mlog
import copy, os
known_basic_kwargs = {'ui_files': True,
'moc_headers' : True,
'qresources' : True,
'moc_sources' : True,
'install' : True,
'c_pch' : True,
'cpp_pch' : True,
'c_args' : True,
'cpp_args' : True,
'cs_args' : True,
'link_args' : True,
'link_depends': True,
'link_with' : True,
'include_directories': True,
'dependencies' : True,
'install_dir' : True,
'main_class' : True,
'gui_app' : True,
'extra_files' : True,
'install_rpath' : True,
'resources' : True,
'sources' : True,
'objects' : True,
'native' : True,
}
known_shlib_kwargs = known_basic_kwargs.copy()
known_shlib_kwargs.update({'version' : True,
'soversion' : True})
class InvalidArguments(coredata.MesonException):
pass
@ -118,32 +150,6 @@ class ExtractedObjects():
self.srclist = srclist
class BuildTarget():
# All keyword arguments that we know how to handle.
known_kwargs = {'ui_files': True,
'moc_headers' : True,
'qresources' : True,
'moc_sources' : True,
'install' : True,
'c_pch' : True,
'cpp_pch' : True,
'c_args' : True,
'cpp_args' : True,
'cs_args' : True,
'link_args' : True,
'link_depends': True,
'link_with' : True,
'include_directories': True,
'dependencies' : True,
'install_dir' : True,
'main_class' : True,
'gui_app' : True,
'extra_files' : True,
'install_rpath' : True,
'resources' : True,
'sources' : True,
'objects' : True,
}
def __init__(self, name, subdir, is_cross, sources, objects, environment, kwargs):
self.name = name
self.subdir = subdir
@ -163,16 +169,24 @@ class BuildTarget():
self.process_sourcelist(sources)
self.process_objectlist(objects)
self.process_kwargs(kwargs, environment)
self.check_unknown_kwargs(kwargs)
if len(self.sources) == 0 and len(self.generated) == 0:
raise InvalidArguments('Build target %s has no sources.' % name)
self.validate_sources()
def check_unknown_kwargs(self, kwargs):
# Override this method in derived classes that have more
# keywords.
self.check_unknown_kwargs_int(kwargs, known_basic_kwargs)
def check_unknown_kwargs_int(self, kwargs, known_kwargs):
unknowns = []
for k in kwargs:
if not k in BuildTarget.known_kwargs:
if not k in known_kwargs:
unknowns.append(k)
if len(unknowns) > 0:
mlog.log(mlog.bold('Warning:'), 'Unknown keyword argument(s) in target %s: %s.' %
(self.name, ', '.join(unknowns)))
if len(self.sources) == 0 and len(self.generated) == 0:
raise InvalidArguments('Build target %s has no sources.' % name)
self.validate_sources()
def process_objectlist(self, objects):
assert(isinstance(objects, list))
@ -601,6 +615,9 @@ class SharedLibrary(BuildTarget):
self.suffix = environment.get_shared_lib_suffix()
self.importsuffix = environment.get_import_lib_suffix()
def check_unknown_kwargs(self, kwargs):
self.check_unknown_kwargs_int(kwargs, known_shlib_kwargs)
def get_shbase(self):
return self.prefix + self.name + '.' + self.suffix

Loading…
Cancel
Save