+2007-08-21 Jürg Billeter <j@bitron.ch>
+
+ * 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 <mathias.hasselmann@gmx.de>
* gobject/valacodegenerator.vala, vala/valaswitchsection.vala,
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;
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) {
}
}
+ /* 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) {
public string output { get; set; }
/**
+ * Code output directory.
+ */
+ public string directory { get; set; }
+
+ /**
* Produce debug information.
*/
public bool debug { get; set; }
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;
}
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;
}
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 {