context.directory = context.basedir;
}
-
// add default packages:
if (settings.profile == "gobject-2.0" || settings.profile == "gobject" || settings.profile == null) {
context.profile = Vala.Profile.GOBJECT;
Vala.Report.error (null, "This version of valac only supports GLib 2");
}
+ if (settings.target_glib != null && settings.target_glib.scanf ("%d.%d", out glib_major, out glib_minor) != 2) {
+ Vala.Report.error (null, "Invalid format for --target-glib");
+ }
+
+ context.target_glib_major = glib_major;
+ context.target_glib_minor = glib_minor;
+ if (context.target_glib_major != 2) {
+ Vala.Report.error (null, "This version of valac only supports GLib 2");
+ }
+
+ for (int i = 16; i <= glib_minor; i += 2) {
+ context.add_define ("GLIB_2_%d".printf (i));
+ }
+
// default packages
if (!this.add_package (context, "glib-2.0")) { //
Vala.Report.error (null, "glib-2.0 not found in specified Vala API directories");
Vala.Report.error (null, "This version of valac only supports GLib 2");
}
+ if (settings.target_glib != null && settings.target_glib.scanf ("%d.%d", out glib_major, out glib_minor) != 2) {
+ Vala.Report.error (null, "Invalid format for --target-glib");
+ }
+
+ context.target_glib_major = glib_major;
+ context.target_glib_minor = glib_minor;
+ if (context.target_glib_major != 2) {
+ Vala.Report.error (null, "This version of valac only supports GLib 2");
+ }
+
+ for (int i = 16; i <= glib_minor; i += 2) {
+ context.add_define ("GLIB_2_%d".printf (i));
+ }
+
// default packages
if (!this.add_package (context, "glib-2.0")) { //
Vala.Report.error (null, "glib-2.0 not found in specified Vala API directories");
*/
public string[] gir_directories;
+ /**
+ * GLib version to target.
+ */
+ public string target_glib;
+
public string gir_namespace;
public string gir_version;
private static string[] tsources;
[CCode (array_length = false, array_null_terminated = true)]
private static string[] packages;
+ static string target_glib;
private const GLib.OptionEntry[] options = {
{ "directory", 'o', 0, OptionArg.FILENAME, ref directory, "Output directory", "DIRECTORY" },
{ "force", 0, 0, OptionArg.NONE, ref force, "force", null },
{ "verbose", 0, 0, OptionArg.NONE, ref verbose, "Show all warnings", null },
+ { "target-glib", 0, 0, OptionArg.STRING, ref target_glib, "Target version of glib for code generation", "MAJOR.MINOR" },
{ "", 0, 0, OptionArg.FILENAME_ARRAY, ref tsources, null, "FILE..." },
{ null }
settings.vapi_directories = vapi_directories;
settings.metadata_directories = metadata_directories;
settings.gir_directories = gir_directories;
+ settings.target_glib = target_glib;
settings.source_files = tsources;
settings.packages = packages;