]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
valac: Add flag to specify a separate basedir for the public header
authorMark Lee <marklee@src.gnome.org>
Wed, 15 Jul 2009 07:41:02 +0000 (00:41 -0700)
committerMark Lee <git@lazymalevolence.com>
Thu, 20 Aug 2009 21:03:53 +0000 (14:03 -0700)
This basedir is used in the VAPI file. Needed because of the way that build
systems such as Waf deal with the location of the public header.

Fixes GNOME Bug #589964.

compiler/valacompiler.vala
vala/valacodecontext.vala
vala/valasourcefile.vala

index 76c6698f113d36677188dae8a5fb695d2018355c..3ea847bc3c85b5dcb368f20d1d01cad1b5cd493b 100644 (file)
@@ -45,6 +45,7 @@ class Vala.Compiler {
        static string header_filename;
        static string internal_header_filename;
        static string internal_vapi_filename;
+       static string includedir;
        static bool compile_only;
        static string output;
        static bool debug;
@@ -81,6 +82,7 @@ class Vala.Compiler {
                { "version", 0, 0, OptionArg.NONE, ref version, "Display version number", null },
                { "ccode", 'C', 0, OptionArg.NONE, ref ccode_only, "Output C code", null },
                { "header", 'H', 0, OptionArg.FILENAME, ref header_filename, "Output C header file", "FILE" },
+               { "includedir", 0, 0, OptionArg.FILENAME, ref includedir, "Directory used to include the C header file", "DIRECTORY" },
                { "internal-header", 'h', 0, OptionArg.FILENAME, ref internal_header_filename, "Output internal C header file", "FILE" },
                { "internal-vapi", 0, 0, OptionArg.FILENAME, ref internal_vapi_filename, "Output vapi with internal api", "FILE" },
                { "compile", 'c', 0, OptionArg.NONE, ref compile_only, "Compile but do not link", null },
@@ -188,6 +190,7 @@ class Vala.Compiler {
                context.compile_only = compile_only;
                context.header_filename = header_filename;
                context.internal_header_filename = internal_header_filename;
+               context.includedir = includedir;
                context.output = output;
                if (basedir == null) {
                        context.basedir = realpath (".");
index a6d783c485eb6aeb2ede64bc8a432d19a3232283..5add46885d6d4c59b92947d814240062d0d91b8a 100644 (file)
@@ -72,6 +72,11 @@ public class Vala.CodeContext {
         */
        public string? internal_header_filename { get; set; }
 
+       /**
+        * Base directory used for header_filename in the VAPIs.
+        */
+       public string? includedir { get; set; }
+
        /**
         * Compile but do not link.
         */
index 4c1dfc7d88b3c72d51af3a7fd66da34163b7d84a..0ec442924e196b625654b41fb3ddfd920fad2034 100644 (file)
@@ -222,6 +222,9 @@ public class Vala.SourceFile {
                if (cinclude_filename == null) {
                        if (context.header_filename != null) {
                                cinclude_filename = Path.get_basename (context.header_filename);
+                               if (context.includedir != null) {
+                                       cinclude_filename = "%s/%s".printf (context.includedir, cinclude_filename);
+                               }
                        } else {
                                cinclude_filename = "%s%s.h".printf (get_subdir (), get_basename ());
                        }