From: Rico Tzschichholz Date: Sat, 2 Mar 2019 19:56:27 +0000 (+0100) Subject: vala: Add support for --target-glib=auto X-Git-Tag: 0.45.1~107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f4b86c1e2aa0b74f843fc64de919390f6af46952;p=thirdparty%2Fvala.git vala: Add support for --target-glib=auto Determine target-glib according to the available version of glib-2.0. Fixes https://gitlab.gnome.org/GNOME/vala/issues/761 --- diff --git a/compiler/valacompiler.vala b/compiler/valacompiler.vala index 476093e7e..7394e45da 100644 --- a/compiler/valacompiler.vala +++ b/compiler/valacompiler.vala @@ -153,7 +153,7 @@ class Vala.Compiler { { "verbose", 'v', 0, OptionArg.NONE, ref verbose_mode, "Print additional messages to the console", null }, { "no-color", 0, 0, OptionArg.NONE, ref disable_colored_output, "Disable colored output, alias for --color=never", null }, { "color", 0, OptionFlags.OPTIONAL_ARG, OptionArg.CALLBACK, (void*) option_parse_color, "Enable color output, options are 'always', 'never', or 'auto'", "WHEN" }, - { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code generation", "MAJOR.MINOR" }, + { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code generation", "'MAJOR.MINOR', or 'auto'" }, { "gresources", 0, 0, OptionArg.FILENAME_ARRAY, ref gresources, "XML of gresources", "FILE..." }, { "gresourcesdir", 0, 0, OptionArg.FILENAME_ARRAY, ref gresources_directories, "Look for resources in DIRECTORY", "DIRECTORY..." }, { "enable-version-header", 0, 0, OptionArg.NONE, ref enable_version_header, "Write vala build version in generated files", null }, diff --git a/doc/valac.1 b/doc/valac.1 index 275fa6c28..3c738eb94 100644 --- a/doc/valac.1 +++ b/doc/valac.1 @@ -182,7 +182,7 @@ or \fB--no-color\fR are declared then \fB--color\fR=\fIauto\fR is used where output is colored when stderr is a terminal. .RE .TP -\fB\-\-target\-glib\fR=\fI\,MAJOR\/\fR.MINOR +\fB\-\-target\-glib=\fR'MAJOR.MINOR', or 'auto' Target version of glib for code generation .TP \fB\-\-gresources\fR=\fI\,FILE\/\fR... diff --git a/doc/valadoc.1 b/doc/valadoc.1 index 61260e4c8..45d50afad 100644 --- a/doc/valadoc.1 +++ b/doc/valadoc.1 @@ -107,7 +107,7 @@ Show all warnings \fB\-\-no\-color\fR Disable colored output .TP -\fB\-\-target\-glib\fR=\fI\,MAJOR\/\fR.MINOR +\fB\-\-target\-glib=\fR'MAJOR.MINOR', or 'auto' Target version of glib for code generation .SH BUGS https://gitlab.gnome.org/GNOME/vala/issues diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala index 34543a8d9..8b1a78be4 100644 --- a/vala/valacodecontext.vala +++ b/vala/valacodecontext.vala @@ -552,8 +552,20 @@ public class Vala.CodeContext { * @param target_glib a string of the format "%d.%d" */ public void set_target_glib_version (string target_glib) { - int glib_major = target_glib_major; - int glib_minor = target_glib_minor; + int glib_major = 0; + int glib_minor = 0; + + if (target_glib == "auto") { + var available_glib = pkg_config_modversion ("glib-2.0"); + if (available_glib != null && available_glib.scanf ("%d.%d", out glib_major, out glib_minor) >= 2) { + glib_minor -= ++glib_minor % 2; + set_target_glib_version ("%d.%d".printf (glib_major, glib_minor)); + return; + } + } + + glib_major = target_glib_major; + glib_minor = target_glib_minor; if (target_glib != null && target_glib.scanf ("%d.%d", out glib_major, out glib_minor) != 2 || glib_minor % 2 != 0) { diff --git a/valadoc/valadoc.vala b/valadoc/valadoc.vala index 1bb91ff01..6d5093092 100644 --- a/valadoc/valadoc.vala +++ b/valadoc/valadoc.vala @@ -117,7 +117,7 @@ public class ValaDoc : Object { { "fatal-warnings", 0, 0, OptionArg.NONE, ref fatal_warnings, "Treat warnings as fatal", null }, { "verbose", 0, 0, OptionArg.NONE, ref verbose, "Show all warnings", null }, { "no-color", 0, 0, OptionArg.NONE, ref disable_diagnostic_colors, "Disable colored output", null }, - { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code generation", "MAJOR.MINOR" }, + { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code generation", "'MAJOR.MINOR', or 'auto'" }, { OPTION_REMAINING, 0, 0, OptionArg.FILENAME_ARRAY, ref tsources, null, "FILE..." }, { null }