gnome: propagate 'include_directories' also to the typelib command

A test case is added to demonstrate the problem by having a library
with a manual gir file.
pull/12155/head
Paolo Borelli 2 years ago
parent e3a71a7b58
commit 3c36d49d6a
  1. 1
      mesonbuild/modules/gnome.py
  2. 13
      test cases/frameworks/7 gnome/gir/dep1/dep1.c
  3. 3
      test cases/frameworks/7 gnome/gir/dep1/dep1.h
  4. 6
      test cases/frameworks/7 gnome/gir/dep1/dep4/MesonDep4-1.0.gir
  5. 10
      test cases/frameworks/7 gnome/gir/dep1/dep4/dep4.h
  6. 16
      test cases/frameworks/7 gnome/gir/dep1/dep4/meson.build
  7. 8
      test cases/frameworks/7 gnome/gir/dep1/meson.build
  8. 2
      test cases/frameworks/7 gnome/gir/meson-sample2.c
  9. 3
      test cases/frameworks/7 gnome/gir/meson.build

@ -1209,6 +1209,7 @@ class GnomeModule(ExtensionModule):
typelib_output = f'{ns}-{nsversion}.typelib'
typelib_cmd = [gicompiler, scan_target, '--output', '@OUTPUT@']
typelib_cmd += state.get_include_args(gir_inc_dirs, prefix='--includedir=')
typelib_cmd += state.get_include_args(inc_dirs, prefix='--includedir=')
for incdir in typelib_includes:
typelib_cmd += ["--includedir=" + incdir]

@ -41,6 +41,7 @@ meson_dep1_init (MesonDep1 *self)
/**
* meson_dep1_just_return_it:
* @self: #MesonDep1.
* @dep: a #MesonDep2.
*
* Returns the #MesonDep2 that is passed in
@ -54,3 +55,15 @@ meson_dep1_just_return_it (MesonDep1 *self, MesonDep2 *dep)
return dep;
}
/**
* meson_dep1_take_record:
* @self: #MesonDep1.
* @rec: a #MesonDep4Record.
*
* Takes a #MesonDep4Record record.
*/
void
meson_dep1_take_record (MesonDep1 *self, MesonDep4Record *rec)
{
}

@ -7,6 +7,7 @@
#include <glib-object.h>
#include "dep2/dep2.h"
#include "dep4/dep4.h"
G_BEGIN_DECLS
@ -17,6 +18,8 @@ G_DECLARE_FINAL_TYPE (MesonDep1, meson_dep1, MESON, DEP1, GObject)
MesonDep1 *meson_dep1_new (void);
MesonDep2 *meson_dep1_just_return_it (MesonDep1 *self,
MesonDep2 *dep);
void meson_dep1_take_record (MesonDep1 *self,
MesonDep4Record *rec);
G_END_DECLS

@ -0,0 +1,6 @@
<?xml version="1.0"?>
<repository xmlns="http://www.gtk.org/introspection/core/1.0" xmlns:c="http://www.gtk.org/introspection/c/1.0" version="1.2">
<namespace name="MesonDep4" version="1.0" c:identifier-prefixes="MesonDep4" c:symbol-prefixes="MesonDep4">
<record name="MesonDep4Record" c:type="MesonDep4Record"/>
</namespace>
</repository>

@ -0,0 +1,10 @@
#ifndef MESON_DEP4_H
#define MESON_DEP4_H
typedef struct {
int a;
int b;
int c;
} MesonDep4Record;
#endif /* MESON_DEP4_H */

@ -0,0 +1,16 @@
dep4_inc = include_directories('.')
dep4_dep = declare_dependency(
dependencies : gobj,
include_directories : [dep4_inc],
)
# Manually run g-ir-compiler
g_ir_compiler = find_program('g-ir-compiler')
custom_target(
'dep4_typelib',
build_by_default: true,
command: [g_ir_compiler, '--output', '@OUTPUT@', '@INPUT@'],
input: 'MesonDep4-1.0.gir',
output: 'MesonDep4-1.0.typelib',
install: false,
)

@ -1,5 +1,6 @@
subdir('dep2')
subdir('dep3')
subdir('dep4')
dep1sources = ['dep1.c', 'dep1.h']
@ -7,7 +8,7 @@ dep1sources = ['dep1.c', 'dep1.h']
dep1lib = shared_library(
'dep1lib',
sources : dep1sources,
dependencies : gobj,
dependencies : [gobj, dep4_dep],
install : true
)
@ -21,11 +22,12 @@ dep1gir = gnome.generate_gir(
symbol_prefix : 'meson',
identifier_prefix : 'Meson',
header: 'dep1.h',
includes : ['GObject-2.0', 'MesonDep2-1.0', dep3gir[0]],
include_directories: meson.current_source_dir() / 'dep4',
includes : ['GObject-2.0', 'MesonDep2-1.0', dep3gir[0], 'MesonDep4-1.0'],
dependencies : [dep2_dep],
install : true
)
dep1_dep = declare_dependency(link_with : dep1lib,
dependencies : [dep2_dep, dep3_dep],
dependencies : [dep2_dep, dep3_dep, dep4_dep],
sources : [dep1gir])

@ -35,8 +35,6 @@ meson_sample2_init (MesonSample2 *self)
* @self: a #MesonSample2.
*
* Prints Hello.
*
* Returns: Nothing.
*/
void
meson_sample2_print_message (MesonSample2 *self)

@ -44,6 +44,7 @@ gnome.generate_gir(
namespace : 'Meson',
symbol_prefix : 'meson',
identifier_prefix : 'Meson',
include_directories: meson.current_source_dir() / 'dep1' / 'dep4',
includes : ['GObject-2.0', 'MesonDep1-1.0'],
# dep1_dep pulls in dep2_dep for us
dependencies : [[fake_dep, dep1_dep]],
@ -52,7 +53,7 @@ gnome.generate_gir(
)
test('gobject introspection/c', girexe)
gir_paths = ':'.join([girlib.outdir(), dep1lib.outdir(), dep2lib.outdir(), dep3lib.outdir()])
gir_paths = ':'.join([girlib.outdir(), dep1lib.outdir(), dep2lib.outdir(), dep3lib.outdir(), dep1lib.outdir() / 'dep4'])
envdata = environment()
envdata.append('GI_TYPELIB_PATH', gir_paths, separator : ':')
envdata.append('LD_LIBRARY_PATH', gir_paths)

Loading…
Cancel
Save