Determine target-glib according to the available version of glib-2.0.
Fixes https://gitlab.gnome.org/GNOME/vala/issues/761
{ "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 },
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...
\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
* @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) {
{ "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 }