From 10d2b86e44acb0259a2fd6c63ba6866bf682d639 Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Tue, 21 Aug 2007 10:00:47 +0000 Subject: [PATCH] support --directory option, use basename of input filenames, patch by 2007-08-21 Juerg Billeter * vala/valacodecontext.vala, vala/valasourcefile.vala, gobject/valaccodecompiler.vala, compiler/valacompiler.vala: support --directory option, use basename of input filenames, patch by Nicolas Trangez, fixes bug 465720 svn path=/trunk/; revision=494 --- ChangeLog | 7 +++++++ compiler/valacompiler.vala | 1 + gobject/valaccodecompiler.vala | 11 ++++++++++- vala/valacodecontext.vala | 5 +++++ vala/valasourcefile.vala | 15 +++++++++++++-- 5 files changed, 36 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0d434f5..4c7885e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-08-21 Jürg Billeter + + * vala/valacodecontext.vala, vala/valasourcefile.vala, + gobject/valaccodecompiler.vala, compiler/valacompiler.vala: support + --directory option, use basename of input filenames, + patch by Nicolas Trangez, fixes bug 465720 + 2007-08-21 Mathias Hasselmann * gobject/valacodegenerator.vala, vala/valaswitchsection.vala, diff --git a/compiler/valacompiler.vala b/compiler/valacompiler.vala index 44faa94..40a25ee 100644 --- a/compiler/valacompiler.vala +++ b/compiler/valacompiler.vala @@ -164,6 +164,7 @@ class Vala.Compiler { context.ccode_only = ccode_only; context.compile_only = compile_only; context.output = output; + context.directory = directory; context.debug = debug; context.thread = thread; context.optlevel = optlevel; diff --git a/gobject/valaccodecompiler.vala b/gobject/valaccodecompiler.vala index f6822e1..7cd6f98 100644 --- a/gobject/valaccodecompiler.vala +++ b/gobject/valaccodecompiler.vala @@ -88,7 +88,11 @@ public class Vala.CCodeCompiler { if (context.compile_only) { cmdline += " -c"; } else if (context.output != null) { - cmdline += " -o " + Shell.quote (context.output); + string output = context.output; + if (context.directory != null && context.directory != "") { + output = "%s/%s".printf (context.directory, context.output); + } + cmdline += " -o " + Shell.quote (output); } cmdline += " " + pkgflags; if (cc_options != null) { @@ -97,6 +101,11 @@ public class Vala.CCodeCompiler { } } + /* make sure include files can be found if -d is used */ + if (context.directory != null && context.directory != "") { + cmdline += " -I" + Shell.quote ("%s/..".printf (context.directory)); + } + /* we're only interested in non-pkg source files */ var source_files = context.get_source_files (); foreach (SourceFile file in source_files) { diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala index 548b0e2..f67a93b 100644 --- a/vala/valacodecontext.vala +++ b/vala/valacodecontext.vala @@ -66,6 +66,11 @@ public class Vala.CodeContext { public string output { get; set; } /** + * Code output directory. + */ + public string directory { get; set; } + + /** * Produce debug information. */ public bool debug { get; set; } diff --git a/vala/valasourcefile.vala b/vala/valasourcefile.vala index b8e2eff..99c8af4 100644 --- a/vala/valasourcefile.vala +++ b/vala/valasourcefile.vala @@ -153,7 +153,12 @@ public class Vala.SourceFile { public string! get_cheader_filename () { if (cheader_filename == null) { var basename = filename.ndup ((uint) (filename.len () - ".vala".len ())); - cheader_filename = "%s.h".printf (basename); + basename = Path.get_basename (basename); + if (context.directory != null && context.directory != "") { + cheader_filename = "%s/%s.h".printf (context.directory, basename); + } else { + cheader_filename = "%s.h".printf (basename); + } } return cheader_filename; } @@ -166,7 +171,12 @@ public class Vala.SourceFile { public string! get_csource_filename () { if (csource_filename == null) { var basename = filename.ndup ((uint) (filename.len () - ".vala".len ())); - csource_filename = "%s.c".printf (basename); + basename = Path.get_basename (basename); + if (context.directory != null && context.directory != "") { + csource_filename = "%s/%s.c".printf (context.directory, basename); + } else { + csource_filename = "%s.c".printf (basename); + } } return csource_filename; } @@ -180,6 +190,7 @@ public class Vala.SourceFile { public string! get_cinclude_filename () { if (cinclude_filename == null) { var basename = filename.ndup ((uint) (filename.len () - ".vala".len ())); + basename = Path.get_basename (basename); if (context.library != null) { cinclude_filename = "%s/%s.h".printf (context.library, basename); } else { -- 2.7.4