support passing C source files to the command line, patch by Nicolas
authorJuerg Billeter <j@bitron.ch>
Wed, 8 Aug 2007 18:29:23 +0000 (18:29 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Wed, 8 Aug 2007 18:29:23 +0000 (18:29 +0000)
2007-08-08  Juerg Billeter  <j@bitron.ch>

* vala/valacodecontext.vala, gobject/valaccodecompiler.vala,
  compiler/valacompiler.vala: support passing C source files to the
  command line, patch by Nicolas Trangez

svn path=/trunk/; revision=448

ChangeLog
compiler/valacompiler.vala
gobject/valaccodecompiler.vala
vala/valacodecontext.vala

index e16eee9..73d742c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-08  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valacodecontext.vala, gobject/valaccodecompiler.vala,
+         compiler/valacompiler.vala: support passing C source files to the
+         command line, patch by Nicolas Trangez
+
 2007-08-08  Mathias Hasselmann  <mathias.hasselmann@gmx.de>
 
        * vapi/gtk+-2.0.vala: fix the signatures of some TreeModel
index 1ad4f5a..b0e8ebc 100644 (file)
@@ -186,7 +186,13 @@ class Vala.Compiler {
                
                foreach (string source in sources) {
                        if (FileUtils.test (source, FileTest.EXISTS)) {
-                               context.add_source_file (new SourceFile (context, source));
+                               if (source.has_suffix (".vala")) {
+                                       context.add_source_file (new SourceFile (context, source));
+                               } else if (source.has_suffix (".c")) {
+                                       context.add_c_source_file (source);
+                               } else {
+                                       Report.error (null, "%s is not a supported source file type. Only .vala and .c files are supported.".printf (source));
+                               }
                        } else {
                                Report.error (null, "%s not found".printf (source));
                        }
@@ -282,13 +288,6 @@ class Vala.Compiler {
                        return 1;
                }
                
-               foreach (string source in sources) {
-                       if (!source.has_suffix (".vala")) {
-                               stderr.printf ("Only .vala source files supported.\n");
-                               return 1;
-                       }
-               }
-               
                var compiler = new Compiler ();
                return compiler.run ();
        }
index 8517cf4..e358427 100644 (file)
@@ -90,6 +90,10 @@ public class Vala.CCodeCompiler {
                                cmdline += " " + Shell.quote (file.get_csource_filename ());
                        }
                }
+               var c_source_files = context.get_c_source_files ();
+               foreach (string file in c_source_files) {
+                       cmdline += " " + Shell.quote (file);
+               }
 
                try {
                        Process.spawn_command_line_sync (cmdline, null, null, out exit_status);
index b99a45e..453ad66 100644 (file)
@@ -86,6 +86,7 @@ public class Vala.CodeContext {
        public Method module_init_method { get; set; }
 
        private Gee.List<SourceFile> source_files = new ArrayList<SourceFile> ();
+       private Gee.List<string> c_source_files = new ArrayList<string> ();
        private Namespace! _root = new Namespace (null);
        
        private Gee.List<SourceFileCycle> cycles = new ArrayList<SourceFileCycle> ();
@@ -109,6 +110,15 @@ public class Vala.CodeContext {
        public Collection<SourceFile> get_source_files () {
                return new ReadOnlyCollection<SourceFile> (source_files);
        }
+
+       /**
+        * Returns a copy of the list of C source files.
+        *
+        * @return list of C source files
+        */
+       public Collection<string> get_c_source_files () {
+               return new ReadOnlyCollection<string> (c_source_files);
+       }
        
        /**
         * Adds the specified file to the list of source files.
@@ -120,6 +130,15 @@ public class Vala.CodeContext {
        }
 
        /**
+        * Adds the specified file to the list of C source files.
+        *
+        * @param file a C source file
+        */
+       public void add_c_source_file (string! file) {
+               c_source_files.add (file);
+       }
+
+       /**
         * Returns a copy of the list of used packages.
         *
         * @return list of used packages