mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-05-18 11:41:58 +02:00
Rewrite glib-genmarshal in Python
We're in the process or rewriting other tools in Python to reduce the number of dependencies of GLib. Additionally, making glib-genmarshal a Python script reduces the complexity when cross-compiling, as we don't need a native build to generate the marshallers. https://bugzilla.gnome.org/show_bug.cgi?id=784528
This commit is contained in:
parent
2502bfd8b0
commit
93f16a45ab
@ -3467,6 +3467,7 @@ glib/tests/Makefile
|
|||||||
gmodule/Makefile
|
gmodule/Makefile
|
||||||
gmodule/gmoduleconf.h
|
gmodule/gmoduleconf.h
|
||||||
gobject/Makefile
|
gobject/Makefile
|
||||||
|
gobject/glib-genmarshal
|
||||||
gobject/glib-mkenums
|
gobject/glib-mkenums
|
||||||
gobject/tests/Makefile
|
gobject/tests/Makefile
|
||||||
gthread/Makefile
|
gthread/Makefile
|
||||||
@ -3502,6 +3503,7 @@ m4macros/Makefile
|
|||||||
AC_CONFIG_COMMANDS([chmod-scripts],
|
AC_CONFIG_COMMANDS([chmod-scripts],
|
||||||
[chmod 0755 glib-zip
|
[chmod 0755 glib-zip
|
||||||
chmod 0755 glib-gettextize
|
chmod 0755 glib-gettextize
|
||||||
|
chmod 0755 gobject/glib-genmarshal
|
||||||
chmod 0755 gobject/glib-mkenums])
|
chmod 0755 gobject/glib-mkenums])
|
||||||
|
|
||||||
# we want to invoke this macro solely so that the config.status script
|
# we want to invoke this macro solely so that the config.status script
|
||||||
|
@ -6,6 +6,11 @@
|
|||||||
<authorgroup>
|
<authorgroup>
|
||||||
<author>
|
<author>
|
||||||
<contrib>Developer</contrib>
|
<contrib>Developer</contrib>
|
||||||
|
<firstname>Emmanuele</firstname>
|
||||||
|
<surname>Bassi</surname>
|
||||||
|
</author>
|
||||||
|
<author>
|
||||||
|
<contrib>Original developer</contrib>
|
||||||
<firstname>Tim</firstname>
|
<firstname>Tim</firstname>
|
||||||
<surname>Janik</surname>
|
<surname>Janik</surname>
|
||||||
</author>
|
</author>
|
||||||
@ -43,8 +48,9 @@ collect its return value.
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para><command>glib-genmarshal</command> takes a list of marshallers to generate as
|
<para><command>glib-genmarshal</command> takes a list of marshallers to generate as
|
||||||
input. The marshaller list is either read from standard input or from files
|
input. The marshaller list is either read from files passed as additional arguments
|
||||||
passed as additional arguments on the command line.
|
on the command line; or from standard input, by using <literal>-</literal> as the
|
||||||
|
input file.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<refsect2><title>Marshaller list format</title>
|
<refsect2><title>Marshaller list format</title>
|
||||||
@ -60,7 +66,6 @@ or a marshaller specification of the form
|
|||||||
<replaceable>RTYPE</replaceable>:<replaceable>PTYPE</replaceable>,<replaceable>PTYPE</replaceable>
|
<replaceable>RTYPE</replaceable>:<replaceable>PTYPE</replaceable>,<replaceable>PTYPE</replaceable>
|
||||||
<replaceable>RTYPE</replaceable>:<replaceable>PTYPE</replaceable>,<replaceable>PTYPE</replaceable>,<replaceable>PTYPE</replaceable>
|
<replaceable>RTYPE</replaceable>:<replaceable>PTYPE</replaceable>,<replaceable>PTYPE</replaceable>,<replaceable>PTYPE</replaceable>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
(up to 16 <replaceable>PTYPE</replaceable>s may be present).
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The <replaceable>RTYPE</replaceable> part specifies the callback's return
|
The <replaceable>RTYPE</replaceable> part specifies the callback's return
|
||||||
@ -239,21 +244,23 @@ deprecated alias for <replaceable>BOOLEAN</replaceable>
|
|||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--header</option></term>
|
<term><option>--header</option></term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
Generate header file contents of the marshallers.
|
Generate header file contents of the marshallers. This option is mutually
|
||||||
|
exclusive with the <option>--body</option> option.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--body</option></term>
|
<term><option>--body</option></term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
Generate C code file contents of the marshallers.
|
Generate C code file contents of the marshallers. This option is mutually
|
||||||
|
exclusive with the <option>--header</option> option.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--prefix=<replaceable>PREFIX</replaceable></option></term>
|
<term><option>--prefix=<replaceable>PREFIX</replaceable></option></term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
Specify marshaller prefix. The default prefix is <literal>`g_cclosure_marshal'</literal>.
|
Specify marshaller prefix. The default prefix is <literal>`g_cclosure_user_marshal'</literal>.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
@ -268,7 +275,9 @@ Skip source location remarks in generated comments.
|
|||||||
<term><option>--stdinc</option></term>
|
<term><option>--stdinc</option></term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
Use the standard marshallers of the GObject library, and include
|
Use the standard marshallers of the GObject library, and include
|
||||||
<filename>gmarshal.h</filename> in generated header files.
|
<filename>glib-object.h</filename> in generated header files. This
|
||||||
|
option is mutually exclusive with the <option>--nostdinc</option>
|
||||||
|
option.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
@ -276,21 +285,22 @@ Use the standard marshallers of the GObject library, and include
|
|||||||
<term><option>--nostdinc</option></term>
|
<term><option>--nostdinc</option></term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
Do not use the standard marshallers of the GObject library, and skip
|
Do not use the standard marshallers of the GObject library, and skip
|
||||||
<filename>gmarshal.h</filename> include directive in generated header files.
|
<filename>glib-object.h</filename> include directive in generated header files.
|
||||||
|
This option is mutually exclusive with the <option>--stdinc</option> option.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--internal</option></term>
|
<term><option>--internal</option></term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
Mark generated functions as internal, using G_GNUC_INTERNAL.
|
Mark generated functions as internal, using <literal>G_GNUC_INTERNAL</literal>.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--valist-marshallers</option></term>
|
<term><option>--valist-marshallers</option></term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
Generate valist marshallers, for use with g_signal_set_va_marshaller().
|
Generate valist marshallers, for use with <function>g_signal_set_va_marshaller()</function>.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
@ -325,7 +335,76 @@ Print version and exit.
|
|||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--output=FILE</option></term>
|
<term><option>--output=FILE</option></term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
Write output to FILE instead of stdout.
|
Write output to <replaceable>FILE</replaceable> instead of the standard output.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--prototypes</option></term>
|
||||||
|
<listitem><para>
|
||||||
|
Generate function prototypes before the function definition in the C source
|
||||||
|
file, in order to avoid a <literal>missing-prototypes</literal> compiler
|
||||||
|
warning. This option is only useful when using the <option>--body</option>
|
||||||
|
option.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--pragma-once</option></term>
|
||||||
|
<listitem><para>
|
||||||
|
Use the <literal>once</literal> pragma instead of an old style header guard
|
||||||
|
when generating the C header file. This option is only useful when using the
|
||||||
|
<option>--header</option> option.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--include-header=<replaceable>HEADER</replaceable></option></term>
|
||||||
|
<listitem><para>
|
||||||
|
Adds a <literal>#include</literal> directive for the given file in the C
|
||||||
|
source file. This option is only useful when using the <option>--body</option>
|
||||||
|
option.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-D <replaceable>SYMBOL[=VALUE]</replaceable></option></term>
|
||||||
|
<listitem><para>
|
||||||
|
Adds a <literal>#define</literal> C pre-processor directive for
|
||||||
|
<replaceable>SYMBOL</replaceable> and its given <replaceable>VALUE</replaceable>,
|
||||||
|
or "1" if the value is unset. You can use this option multiple times; if you do,
|
||||||
|
all the symbols will be defined in the same order given on the command line, before
|
||||||
|
the symbols undefined using the <option>-U</option> option. This option is only
|
||||||
|
useful when using the <option>--body</option> option.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-U <replaceable>SYMBOL</replaceable></option></term>
|
||||||
|
<listitem><para>
|
||||||
|
Adds a <literal>#undef</literal> C pre-processor directive to undefine the
|
||||||
|
given <replaceable>SYMBOL</replaceable>. You can use this option multiple times;
|
||||||
|
if you do, all the symbols will be undefined in the same order given on the
|
||||||
|
command line, after the symbols defined using the <option>-D</option> option.
|
||||||
|
This option is only useful when using the <option>--body</option> option.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--quiet</option></term>
|
||||||
|
<listitem><para>
|
||||||
|
Minimizes the output of <command>glib-genmarshal</command>, by printing only
|
||||||
|
warnings and errors. This option is mutually exclusive with the
|
||||||
|
<option>--verbose</option> option.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--verbose</option></term>
|
||||||
|
<listitem><para>
|
||||||
|
Increases the verbosity of <command>glib-genmarshal</command>, by printing
|
||||||
|
debugging information. This option is mutually exclusive with the
|
||||||
|
<option>--quiet</option> option.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
@ -367,9 +446,9 @@ The generated marshallers have the arguments encoded in their function name.
|
|||||||
For this particular list, they are
|
For this particular list, they are
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
g_cclosure_user_marshal_VOID__VOID(),
|
g_cclosure_user_marshal_VOID__VOID(...),
|
||||||
g_cclosure_user_marshal_VOID__INT(),
|
g_cclosure_user_marshal_VOID__INT(...),
|
||||||
g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR().
|
g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR(...).
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
They can be used directly for GClosures or be passed in as the
|
They can be used directly for GClosures or be passed in as the
|
||||||
|
@ -145,9 +145,7 @@ endif
|
|||||||
# that don't serve as direct make target sources, i.e. they don't have
|
# that don't serve as direct make target sources, i.e. they don't have
|
||||||
# their own .lo rules and don't get publically installed
|
# their own .lo rules and don't get publically installed
|
||||||
gobject_extra_sources = \
|
gobject_extra_sources = \
|
||||||
gmarshal.list \
|
gmarshal.list
|
||||||
gmarshal.strings
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# setup GObject library sources and their dependancies
|
# setup GObject library sources and their dependancies
|
||||||
@ -183,14 +181,6 @@ CLEANFILES += $(gen_sources)
|
|||||||
# ../configure will supress all autogeneration rules.
|
# ../configure will supress all autogeneration rules.
|
||||||
|
|
||||||
|
|
||||||
gmarshal.strings: @REBUILD@ $(srcdir)/gmarshal.list
|
|
||||||
$(AM_V_GEN) grep '^[A-Z]' $(srcdir)/gmarshal.list \
|
|
||||||
| $(SED) -e 's/^/"g_cclosure_marshal_/' -e 's/:/__/' -e 's/,/_/g' -e 's/$$/",/' > xgen-gms \
|
|
||||||
&& cp xgen-gms gmarshal.strings \
|
|
||||||
&& rm -f xgen-gms xgen-gms~
|
|
||||||
|
|
||||||
glib-genmarshal.o: gmarshal.strings
|
|
||||||
|
|
||||||
# target platform:
|
# target platform:
|
||||||
libgobjectinclude_HEADERS = $(gobject_target_headers)
|
libgobjectinclude_HEADERS = $(gobject_target_headers)
|
||||||
libgobject_2_0_la_SOURCES = $(gobject_target_sources)
|
libgobject_2_0_la_SOURCES = $(gobject_target_sources)
|
||||||
@ -198,14 +188,12 @@ libgobject_2_0_la_SOURCES = $(gobject_target_sources)
|
|||||||
#
|
#
|
||||||
# programs to compile and install
|
# programs to compile and install
|
||||||
#
|
#
|
||||||
bin_PROGRAMS = gobject-query glib-genmarshal
|
bin_PROGRAMS = gobject-query
|
||||||
bin_SCRIPTS = glib-mkenums
|
bin_SCRIPTS = glib-mkenums glib-genmarshal
|
||||||
# source files
|
# source files
|
||||||
gobject_query_SOURCES = gobject-query.c
|
gobject_query_SOURCES = gobject-query.c
|
||||||
glib_genmarshal_SOURCES = glib-genmarshal.c
|
|
||||||
# link programs against libgobject
|
# link programs against libgobject
|
||||||
progs_LDADD = ./libgobject-2.0.la $(libglib)
|
progs_LDADD = ./libgobject-2.0.la $(libglib)
|
||||||
glib_genmarshal_LDADD = $(libglib)
|
|
||||||
gobject_query_LDADD = $(progs_LDADD)
|
gobject_query_LDADD = $(progs_LDADD)
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -214,6 +202,7 @@ gobject_query_LDADD = $(progs_LDADD)
|
|||||||
EXTRA_DIST += \
|
EXTRA_DIST += \
|
||||||
gobject.rc.in \
|
gobject.rc.in \
|
||||||
libgobject-gdb.py.in \
|
libgobject-gdb.py.in \
|
||||||
|
glib-genmarshal.in \
|
||||||
glib-mkenums.in
|
glib-mkenums.in
|
||||||
|
|
||||||
CLEANFILES += libgobject-gdb.py
|
CLEANFILES += libgobject-gdb.py
|
||||||
|
File diff suppressed because it is too large
Load Diff
1022
gobject/glib-genmarshal.in
Executable file
1022
gobject/glib-genmarshal.in
Executable file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user