diff options
-rw-r--r-- | authors.txt | 1 | ||||
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 31 | ||||
-rw-r--r-- | mesonbuild/scripts/gtkdochelper.py | 2 | ||||
-rw-r--r-- | test cases/vala/7 shared library/installed_files.txt | 4 | ||||
-rw-r--r-- | test cases/vala/7 shared library/lib/meson.build | 16 | ||||
-rw-r--r-- | test cases/vala/9 gir/installed_files.txt | 2 | ||||
-rw-r--r-- | test cases/vala/9 gir/meson.build | 2 |
7 files changed, 36 insertions, 22 deletions
diff --git a/authors.txt b/authors.txt index e6b7495..9b2ea72 100644 --- a/authors.txt +++ b/authors.txt @@ -79,4 +79,5 @@ Aaron Plattner Jon Turney Wade Berrier Richard Hughes +Rafael Fontenelle Michael Olbrich diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 848aa59..dfb5600 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -166,14 +166,20 @@ class NinjaBackend(backends.Backend): int dummy; ''') - pc, stdo = Popen_safe(['cl', '/showIncludes', '/c', 'incdetect.c'], - cwd=self.environment.get_scratch_dir())[0:2] - - for line in stdo.split('\n'): - if line.endswith('stdio.h'): - matchstr = ':'.join(line.split(':')[0:2]) + ':' - with open(tempfilename, 'a') as binfile: - binfile.write('msvc_deps_prefix = ' + matchstr + '\n') + # The output of cl dependency information is language + # and locale dependent. Any attempt at converting it to + # Python strings leads to failure. We _must_ do this detection + # in raw byte mode and write the result in raw bytes. + pc = subprocess.Popen(['cl', '/showIncludes', '/c', 'incdetect.c'], + cwd=self.environment.get_scratch_dir(), + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + (stdo, _) = pc.communicate() + + for line in stdo.split(b'\r\n'): + if line.endswith(b'stdio.h'): + matchstr = b':'.join(line.split(b':')[0:2]) + b':' + with open(tempfilename, 'ab') as binfile: + binfile.write(b'msvc_deps_prefix = ' + matchstr + b'\n') return open(tempfilename, 'a') raise MesonException('Could not determine vs dep dependency prefix string.') @@ -1077,11 +1083,20 @@ int dummy; args += ['--vapi', os.path.join('..', target.vala_vapi)] valac_outputs.append(vapiname) target.outputs += [target.vala_header, target.vala_vapi] + # Install header and vapi to default locations if user requests this + if len(target.install_dir) > 1 and target.install_dir[1] is True: + target.install_dir[1] = self.environment.get_includedir() + if len(target.install_dir) > 2 and target.install_dir[2] is True: + target.install_dir[2] = os.path.join(self.environment.get_datadir(), 'vala', 'vapi') + # Generate GIR if requested if isinstance(target.vala_gir, str): girname = os.path.join(self.get_target_dir(target), target.vala_gir) args += ['--gir', os.path.join('..', target.vala_gir)] valac_outputs.append(girname) target.outputs.append(target.vala_gir) + # Install GIR to default location if requested by user + if len(target.install_dir) > 3 and target.install_dir[3] is True: + target.install_dir[3] = os.path.join(self.environment.get_datadir(), 'gir-1.0') if self.get_option_for_target('werror', target): args += valac.get_werror_args() for d in target.get_external_deps(): diff --git a/mesonbuild/scripts/gtkdochelper.py b/mesonbuild/scripts/gtkdochelper.py index 53ed07f..434225e 100644 --- a/mesonbuild/scripts/gtkdochelper.py +++ b/mesonbuild/scripts/gtkdochelper.py @@ -107,7 +107,7 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs, gtkdoc_run_check(scan_cmd, abs_out) if gobject_typesfile: - scanobjs_cmd = ['gtkdoc-scangobj'] + scanobjs_args + [gobject_typesfile, + scanobjs_cmd = ['gtkdoc-scangobj'] + scanobjs_args + ['--types=' + gobject_typesfile, '--module=' + module, '--cflags=' + cflags, '--ldflags=' + ldflags] diff --git a/test cases/vala/7 shared library/installed_files.txt b/test cases/vala/7 shared library/installed_files.txt index 16ea442..f70e439 100644 --- a/test cases/vala/7 shared library/installed_files.txt +++ b/test cases/vala/7 shared library/installed_files.txt @@ -1,8 +1,8 @@ usr/lib/libinstalled_vala_lib.so usr/lib/libinstalled_vala_all.so usr/include/installed_vala_all.h -usr/include/installed_vala_all_nolib.h +usr/include/valah/installed_vala_all_nolib.h usr/include/installed_vala_onlyh.h usr/share/vala/vapi/installed_vala_all.vapi -usr/share/vala/vapi/installed_vala_all_nolib.vapi +usr/share/vala-1.0/vapi/installed_vala_all_nolib.vapi usr/share/vala/vapi/installed_vala_onlyvapi.vapi diff --git a/test cases/vala/7 shared library/lib/meson.build b/test cases/vala/7 shared library/lib/meson.build index bb1e800..78646a8 100644 --- a/test cases/vala/7 shared library/lib/meson.build +++ b/test cases/vala/7 shared library/lib/meson.build @@ -7,27 +7,21 @@ shared_library('installed_vala_lib', 'mylib.vala', shared_library('installed_vala_all', 'mylib.vala', dependencies : valadeps, install : true, - install_dir : [true, - join_paths(get_option('prefix'), get_option('includedir')), - join_paths(get_option('prefix'), get_option('datadir'), 'vala', 'vapi')]) + install_dir : [true, true, true]) shared_library('installed_vala_all_nolib', 'mylib.vala', dependencies : valadeps, install : true, install_dir : [false, - join_paths(get_option('prefix'), get_option('includedir')), - join_paths(get_option('prefix'), get_option('datadir'), 'vala', 'vapi')]) + join_paths(get_option('includedir'), 'valah'), + join_paths(get_option('datadir'), 'vala-1.0', 'vapi')]) shared_library('installed_vala_onlyh', 'mylib.vala', dependencies : valadeps, install : true, - install_dir : [false, - join_paths(get_option('prefix'), get_option('includedir')), - false]) + install_dir : [false, get_option('includedir'), false]) shared_library('installed_vala_onlyvapi', 'mylib.vala', dependencies : valadeps, install : true, - install_dir : [false, - false, - join_paths(get_option('prefix'), get_option('datadir'), 'vala', 'vapi')]) + install_dir : [false, false, join_paths(get_option('datadir'), 'vala', 'vapi')]) diff --git a/test cases/vala/9 gir/installed_files.txt b/test cases/vala/9 gir/installed_files.txt new file mode 100644 index 0000000..7a0e055 --- /dev/null +++ b/test cases/vala/9 gir/installed_files.txt @@ -0,0 +1,2 @@ +usr/lib/libfoo.so +usr/share/gir-1.0/Foo-1.0.gir diff --git a/test cases/vala/9 gir/meson.build b/test cases/vala/9 gir/meson.build index c0a8f54..1a09bec 100644 --- a/test cases/vala/9 gir/meson.build +++ b/test cases/vala/9 gir/meson.build @@ -5,6 +5,8 @@ gobject = dependency('gobject-2.0') g_ir_compiler = find_program('g-ir-compiler') foo = shared_library('foo', 'foo.vala', + install : true, + install_dir : [true, false, false, true], vala_gir: 'Foo-1.0.gir', dependencies: [glib, gobject]) |