diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-02-06 00:47:47 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-02-06 00:47:47 +0200 |
commit | 5d08d94561d123bd0fd81f45862801713628dcd9 (patch) | |
tree | 79062a63bbe0e91d4d79733fe63463838d2ce6b6 | |
parent | 0384ca71f712554f3adfe21a16280d0b10969e5d (diff) | |
download | meson-5d08d94561d123bd0fd81f45862801713628dcd9.zip meson-5d08d94561d123bd0fd81f45862801713628dcd9.tar.gz meson-5d08d94561d123bd0fd81f45862801713628dcd9.tar.bz2 |
Can create pkg-config files.
-rw-r--r-- | backends.py | 24 | ||||
-rw-r--r-- | interpreter.py | 4 | ||||
-rw-r--r-- | test cases/common/51 pkgconfig-gen/meson.build | 2 |
3 files changed, 27 insertions, 3 deletions
diff --git a/backends.py b/backends.py index 657b339..a6177e8 100644 --- a/backends.py +++ b/backends.py @@ -334,6 +334,29 @@ class Backend(): confdata = cf.get_configuration_data() do_conf_file(infile, outfile, confdata) + def generate_pkgconfig_files(self): + for p in self.build.pkgconfig_gens: + outdir = self.environment.scratch_dir + fname = os.path.join(outdir, p.filebase + '.pc') + ofile = open(fname, 'w') + ofile.write('prefix=%s\n' % self.environment.get_coredata().prefix) + ofile.write('libdir=${prefix}/%s\n' % self.environment.get_coredata().libdir) + ofile.write('includedir=${prefix}/%s\n\n' % self.environment.get_coredata().includedir) + ofile.write('Name: %s\n' % p.name) + if len(p.description) > 0: + ofile.write('Description: %s\n' % p.description) + if len(p.version) > 0: + ofile.write('Version: %s\n' % p.version) + ofile.write('Libs: -L${libdir} ') + for l in p.libraries: + ofile.write('-l%s ' % l.name) + ofile.write('\n') + ofile.write('CFlags: ') + for h in p.headerdirs.keys(): + ofile.write(os.path.join('-I${includedir}', h)) + ofile.write(' ') + ofile.write('\n') + class NinjaBuildElement(): def __init__(self, outfilenames, rule, infilenames): if isinstance(outfilenames, str): @@ -408,6 +431,7 @@ class NinjaBackend(Backend): tempfilename = outfilename + '~' outfile = open(tempfilename, 'w') self.generate_configure_files() + self.generate_pkgconfig_files() outfile.write('# This is the build file for project "%s"\n' % self.build.get_project()) outfile.write('# It is autogenerated by the Meson build system.\n') outfile.write('# Do not edit by hand.\n\n') diff --git a/interpreter.py b/interpreter.py index 924365a..7620ae7 100644 --- a/interpreter.py +++ b/interpreter.py @@ -756,9 +756,9 @@ class Interpreter(): name = kwargs.get('name', None) if not isinstance(name, str): raise InterpreterException('Name not specified.') - filebase = kwargs.get('filebase', None) + filebase = kwargs.get('filebase', name) if not isinstance(filebase, str): - raise InterpreterException('Filebase not specified.') + raise InterpreterException('Filebase must be a string.') description = kwargs.get('description', None) if not isinstance(description, str): raise InterpreterException('Description is not a string.') diff --git a/test cases/common/51 pkgconfig-gen/meson.build b/test cases/common/51 pkgconfig-gen/meson.build index 67fc635..0d1aa64 100644 --- a/test cases/common/51 pkgconfig-gen/meson.build +++ b/test cases/common/51 pkgconfig-gen/meson.build @@ -5,4 +5,4 @@ libver = '1.0' h = headers('simple.h') pkgconfig_gen(libraries : lib, headers : h, version : libver, -name : 'libsimple', filebase : 'simple', description : 'This is a simple library.') +name : 'libsimple', filebase : 'simple', description : 'A simple demo library.') |