I added a feature(command line option) for the vala compiler:

 -p, --pkg-config-args=ARGS         Pass ARGS to pkg-config utility

to pass customized arguments to pkg-config utility.

For example, we can use this to static compile a gtk program with valac:

valac test_static.vala -p "--static --libs gtk+-2.0 gee-0.8" --pkg gee-0.8 --
pkg gtk+-2.0 -X -static

Here is the patch:

diff -Nuar vala-0.17.5/codegen/valaccodecompiler.vala vala-0.17.5-patched/
codegen/valaccodecompiler.vala
--- vala-0.17.5/codegen/valaccodecompiler.vala  2012-08-06 19:19:28 +0800
+++ vala-0.17.5-patched/codegen/valaccodecompiler.vala  2012-08-24 12:56:05 
+0800
@@ -51,9 +51,13 @@
        public void compile (CodeContext context, string? cc_command, string[] 
cc_options) {
                bool use_pkgconfig = false;
 
-               string pc = "pkg-config --cflags";
+               string pc = "pkg-config --cflags ";
                if (!context.compile_only) {
-                       pc += " --libs";
+                  if (context.pkg_config_args != null) {
+                                  pc += context.pkg_config_args;
+                  } else {
+                                  pc += " --libs";
+                  }
                }
                use_pkgconfig = true;
                pc += " gobject-2.0";
diff -Nuar vala-0.17.5/compiler/valacompiler.vala vala-0.17.5-patched/compiler/
valacompiler.vala
--- vala-0.17.5/compiler/valacompiler.vala      2012-08-06 19:57:53 +0800
+++ vala-0.17.5-patched/compiler/valacompiler.vala      2012-08-24 12:44:35 
+0800
@@ -79,6 +79,8 @@
        static bool disable_version_header;
        static bool fatal_warnings;
        static string dependencies;
+       
+       static string pkg_config_args;
 
        static string entry_point;
 
@@ -108,6 +110,7 @@
                { "deps", 0, 0, OptionArg.STRING, ref dependencies, "Write make-
style dependency information to this file", null },
                { "symbols", 0, 0, OptionArg.FILENAME, ref symbols_filename, 
"Output symbols file", "FILE" },
                { "compile", 'c', 0, OptionArg.NONE, ref compile_only, "Compile 
but do not link", null },
+               { "pkg-config-args", 'p', 0, OptionArg.STRING, ref 
pkg_config_args, "Pass ARGS to pkg-config utility", "ARGS" },
                { "output", 'o', 0, OptionArg.FILENAME, ref output, "Place 
output in file FILE", "FILE" },
                { "debug", 'g', 0, OptionArg.NONE, ref debug, "Produce debug 
information", null },
                { "thread", 0, 0, OptionArg.NONE, ref thread, "Enable 
multithreading support", null },
@@ -181,6 +184,7 @@
 
                context.ccode_only = ccode_only;
                context.compile_only = compile_only;
+               context.pkg_config_args = pkg_config_args;
                context.header_filename = header_filename;
                if (header_filename == null && use_header) {
                        Report.error (null, "--use-header may only be used in 
combination with --header");
diff -Nuar vala-0.17.5/vala/valacodecontext.vala vala-0.17.5-patched/vala/
valacodecontext.vala
--- vala-0.17.5/vala/valacodecontext.vala       2012-08-07 02:15:43 +0800
+++ vala-0.17.5-patched/vala/valacodecontext.vala       2012-08-24 12:52:41 
+0800
@@ -89,6 +89,11 @@
        public bool compile_only { get; set; }
 
        /**
+       * Pass args to pkg-config.
+       */
+       public string pkg_config_args { get; set; }
+
+       /**
         * Output filename.
         */
        public string output { get; set; }



_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to