Ejemplo n.º 1
0
 def generate(self, state, args, kwargs):
     if len(args) > 0:
         raise coredata.MesonException('Pkgconfig_gen takes no positional arguments.')
     libs = kwargs.get('libraries', [])
     if not isinstance(libs, list):
         libs = [libs]
     processed_libs = []
     for l in libs:
         if hasattr(l, 'held_object'):
             l = l.held_object
         if not (isinstance(l, build.SharedLibrary) or isinstance(l, build.StaticLibrary)):
             raise coredata.MesonException('Library argument not a library object.')
         processed_libs.append(l)
     libs = processed_libs
     subdirs = mesonlib.stringlistify(kwargs.get('subdirs', ['.']))
     version = kwargs.get('version', '')
     if not isinstance(version, str):
         raise coredata.MesonException('Version must be a string.')
     name = kwargs.get('name', None)
     if not isinstance(name, str):
         raise coredata.MesonException('Name not specified.')
     filebase = kwargs.get('filebase', name)
     if not isinstance(filebase, str):
         raise coredata.MesonException('Filebase must be a string.')
     description = kwargs.get('description', None)
     if not isinstance(description, str):
         raise coredata.MesonException('Description is not a string.')
     pcfile = filebase + '.pc'
     pkgroot = os.path.join(state.environment.coredata.get_builtin_option('libdir'), 'pkgconfig')
     self.generate_pkgconfig_file(state, libs, subdirs, name, description, version, filebase)
     return build.Data(False, state.environment.get_scratch_dir(), [pcfile], pkgroot)
Ejemplo n.º 2
0
 def compile_resources(self, state, args, kwargs):
     comp = self.detect_compiler(state.compilers)
     extra_args = mesonlib.stringlistify(kwargs.get('args', []))
     if comp.id == 'msvc':
         rescomp = dependencies.ExternalProgram('rc', silent=True)
         res_args = extra_args + ['/nologo', '/fo@OUTPUT@', '@INPUT@']
         suffix = 'res'
     else:
         rescomp = dependencies.ExternalProgram('windres', silent=True)
         res_args = extra_args + ['@INPUT@', '@OUTPUT@']
         suffix = 'o'
     res_files = mesonlib.stringlistify(args)
     res_kwargs = {'output': '@BASENAME@.' + suffix, 'arguments': res_args}
     res_gen = build.Generator([rescomp], res_kwargs)
     res_output = build.GeneratedList(res_gen)
     [res_output.add_file(os.path.join(state.subdir, a)) for a in res_files]
     return res_output
Ejemplo n.º 3
0
 def compile_resources(self, state, args, kwargs):
     comp = self.detect_compiler(state.compilers)
     extra_args = mesonlib.stringlistify(kwargs.get('args', []))
     if comp.id == 'msvc':
         rescomp = dependencies.ExternalProgram('rc', silent=True)
         res_args = extra_args + ['/nologo', '/fo@OUTPUT@', '@INPUT@']
         suffix = 'res'
     else:
         rescomp = dependencies.ExternalProgram('windres', silent=True)
         res_args = extra_args + ['@INPUT@', '@OUTPUT@']
         suffix = 'o'
     res_files = mesonlib.stringlistify(args)
     res_kwargs = {'output' : '@BASENAME@.' + suffix,
                   'arguments': res_args}
     res_gen = build.Generator([rescomp], res_kwargs)
     res_output = build.GeneratedList(res_gen)
     [res_output.add_file(os.path.join(state.subdir, a)) for a in res_files]
     return res_output