Merge pull request #1022 from centricular/fix-girtarget-deps-includes
gnome.generate_gir: Add gir deps and includes recursivelypull/1036/head
commit
59a414283c
13 changed files with 351 additions and 39 deletions
@ -0,0 +1,56 @@ |
||||
#include "dep1.h" |
||||
|
||||
struct _MesonDep1 |
||||
{ |
||||
GObject parent_instance; |
||||
}; |
||||
|
||||
G_DEFINE_TYPE (MesonDep1, meson_dep1, G_TYPE_OBJECT) |
||||
|
||||
/**
|
||||
* meson_dep1_new: |
||||
* |
||||
* Allocates a new #MesonDep1. |
||||
* |
||||
* Returns: (transfer full): a #MesonDep1. |
||||
*/ |
||||
MesonDep1 * |
||||
meson_dep1_new (void) |
||||
{ |
||||
return g_object_new (MESON_TYPE_DEP1, NULL); |
||||
} |
||||
|
||||
static void |
||||
meson_dep1_finalize (GObject *object) |
||||
{ |
||||
G_OBJECT_CLASS (meson_dep1_parent_class)->finalize (object); |
||||
} |
||||
|
||||
static void |
||||
meson_dep1_class_init (MesonDep1Class *klass) |
||||
{ |
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass); |
||||
|
||||
object_class->finalize = meson_dep1_finalize; |
||||
} |
||||
|
||||
static void |
||||
meson_dep1_init (MesonDep1 *self) |
||||
{ |
||||
} |
||||
|
||||
/**
|
||||
* meson_dep1_just_return_it: |
||||
* @dep: a #MesonDep2. |
||||
* |
||||
* Returns the #MesonDep2 that is passed in |
||||
* |
||||
* Returns: (transfer none): a #MesonDep2 |
||||
*/ |
||||
MesonDep2* |
||||
meson_dep1_just_return_it (MesonDep1 *self, MesonDep2 *dep) |
||||
{ |
||||
g_return_val_if_fail (MESON_IS_DEP1 (self), NULL); |
||||
|
||||
return dep; |
||||
} |
@ -0,0 +1,23 @@ |
||||
#ifndef MESON_DEP1_H |
||||
#define MESON_DEP1_H |
||||
|
||||
#if !defined (MESON_TEST) |
||||
#error "MESON_TEST not defined." |
||||
#endif |
||||
|
||||
#include <glib-object.h> |
||||
#include "dep2/dep2.h" |
||||
|
||||
G_BEGIN_DECLS |
||||
|
||||
#define MESON_TYPE_DEP1 (meson_dep1_get_type()) |
||||
|
||||
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); |
||||
|
||||
G_END_DECLS |
||||
|
||||
#endif /* MESON_DEP1_H */ |
@ -0,0 +1,124 @@ |
||||
#include "dep2.h" |
||||
|
||||
struct _MesonDep2 |
||||
{ |
||||
GObject parent_instance; |
||||
|
||||
gchar *msg; |
||||
}; |
||||
|
||||
G_DEFINE_TYPE (MesonDep2, meson_dep2, G_TYPE_OBJECT) |
||||
|
||||
enum { |
||||
PROP_0, |
||||
PROP_MSG, |
||||
LAST_PROP |
||||
}; |
||||
|
||||
static GParamSpec *gParamSpecs [LAST_PROP]; |
||||
|
||||
/**
|
||||
* meson_dep2_new: |
||||
* @msg: The message to set. |
||||
* |
||||
* Allocates a new #MesonDep2. |
||||
* |
||||
* Returns: (transfer full): a #MesonDep2. |
||||
*/ |
||||
MesonDep2 * |
||||
meson_dep2_new (const gchar *msg) |
||||
{ |
||||
g_return_val_if_fail (msg != NULL, NULL); |
||||
|
||||
return g_object_new (MESON_TYPE_DEP2, |
||||
"message", msg, |
||||
NULL); |
||||
} |
||||
|
||||
static void |
||||
meson_dep2_finalize (GObject *object) |
||||
{ |
||||
MesonDep2 *self = (MesonDep2 *)object; |
||||
|
||||
g_clear_pointer (&self->msg, g_free); |
||||
|
||||
G_OBJECT_CLASS (meson_dep2_parent_class)->finalize (object); |
||||
} |
||||
|
||||
static void |
||||
meson_dep2_get_property (GObject *object, |
||||
guint prop_id, |
||||
GValue *value, |
||||
GParamSpec *pspec) |
||||
{ |
||||
MesonDep2 *self = MESON_DEP2 (object); |
||||
|
||||
switch (prop_id) |
||||
{ |
||||
case PROP_MSG: |
||||
g_value_set_string (value, self->msg); |
||||
break; |
||||
default: |
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
||||
} |
||||
} |
||||
|
||||
static void |
||||
meson_dep2_set_property (GObject *object, |
||||
guint prop_id, |
||||
const GValue *value, |
||||
GParamSpec *pspec) |
||||
{ |
||||
MesonDep2 *self = MESON_DEP2 (object); |
||||
|
||||
switch (prop_id) |
||||
{ |
||||
case PROP_MSG: |
||||
self->msg = g_value_dup_string (value); |
||||
break; |
||||
default: |
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
||||
} |
||||
} |
||||
|
||||
static void |
||||
meson_dep2_class_init (MesonDep2Class *klass) |
||||
{ |
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass); |
||||
|
||||
object_class->finalize = meson_dep2_finalize; |
||||
object_class->get_property = meson_dep2_get_property; |
||||
object_class->set_property = meson_dep2_set_property; |
||||
|
||||
gParamSpecs [PROP_MSG] = |
||||
g_param_spec_string ("message", |
||||
"Message", |
||||
"The message to print.", |
||||
NULL, |
||||
(G_PARAM_READWRITE | |
||||
G_PARAM_CONSTRUCT_ONLY | |
||||
G_PARAM_STATIC_STRINGS)); |
||||
|
||||
g_object_class_install_properties (object_class, LAST_PROP, gParamSpecs); |
||||
} |
||||
|
||||
static void |
||||
meson_dep2_init (MesonDep2 *self) |
||||
{ |
||||
} |
||||
|
||||
/**
|
||||
* meson_dep2_return_message: |
||||
* @self: a #MesonDep2. |
||||
* |
||||
* Returns the message. |
||||
* |
||||
* Returns: (transfer none): a const gchar* |
||||
*/ |
||||
const gchar* |
||||
meson_dep2_return_message (MesonDep2 *self) |
||||
{ |
||||
g_return_val_if_fail (MESON_IS_DEP2 (self), NULL); |
||||
|
||||
return (const gchar*) self->msg; |
||||
} |
@ -0,0 +1,21 @@ |
||||
#ifndef MESON_DEP2_H |
||||
#define MESON_DEP2_H |
||||
|
||||
#if !defined (MESON_TEST) |
||||
#error "MESON_TEST not defined." |
||||
#endif |
||||
|
||||
#include <glib-object.h> |
||||
|
||||
G_BEGIN_DECLS |
||||
|
||||
#define MESON_TYPE_DEP2 (meson_dep2_get_type()) |
||||
|
||||
G_DECLARE_FINAL_TYPE (MesonDep2, meson_dep2, MESON, DEP2, GObject) |
||||
|
||||
MesonDep2 *meson_dep2_new (const gchar *msg); |
||||
const gchar *meson_dep2_return_message (MesonDep2 *self); |
||||
|
||||
G_END_DECLS |
||||
|
||||
#endif /* MESON_DEP2_H */ |
@ -0,0 +1,22 @@ |
||||
dep2sources = ['dep2.c', 'dep2.h'] |
||||
|
||||
dep2lib = shared_library( |
||||
'dep2lib', |
||||
sources : dep2sources, |
||||
dependencies : gobj, |
||||
install : true |
||||
) |
||||
|
||||
dep2gir = gnome.generate_gir( |
||||
dep2lib, |
||||
sources : dep2sources, |
||||
nsversion : '1.0', |
||||
namespace : 'MesonDep2', |
||||
symbol_prefix : 'meson', |
||||
identifier_prefix : 'Meson', |
||||
includes : ['GObject-2.0'], |
||||
install : true |
||||
) |
||||
|
||||
dep2_dep = declare_dependency(link_with : dep2lib, |
||||
sources : [dep2gir]) |
@ -0,0 +1,29 @@ |
||||
subdir('dep2') |
||||
|
||||
dep1sources = ['dep1.c', 'dep1.h'] |
||||
|
||||
# Do not need to link to dep2lib because we don't use any symbols from it |
||||
dep1lib = shared_library( |
||||
'dep1lib', |
||||
sources : dep1sources, |
||||
dependencies : gobj, |
||||
install : true |
||||
) |
||||
|
||||
# But the gir does need it because it we use the MesonDep2* structure defined |
||||
# in the header |
||||
dep1gir = gnome.generate_gir( |
||||
dep1lib, |
||||
sources : dep1sources, |
||||
nsversion : '1.0', |
||||
namespace : 'MesonDep1', |
||||
symbol_prefix : 'meson', |
||||
identifier_prefix : 'Meson', |
||||
includes : ['GObject-2.0', 'MesonDep2-1.0'], |
||||
dependencies : [dep2_dep], |
||||
install : true |
||||
) |
||||
|
||||
dep1_dep = declare_dependency(link_with : dep1lib, |
||||
dependencies : [dep2_dep], |
||||
sources : [dep1gir]) |
@ -1,6 +1,8 @@ |
||||
#!/usr/bin/env python3 |
||||
from gi.repository import Meson |
||||
from gi.repository import Meson, MesonDep1, MesonDep2 |
||||
|
||||
if __name__ == "__main__": |
||||
s = Meson.Sample.new("Hello, meson/py!") |
||||
s.print_message() |
||||
s = Meson.Sample.new() |
||||
dep1 = MesonDep1.Dep1.new() |
||||
dep2 = MesonDep2.Dep2.new("Hello, meson/py!") |
||||
s.print_message(dep1, dep2) |
||||
|
Loading…
Reference in new issue