Fix regression introduced in 1.3.37 where the default output directory for target language specific files (in the absence of -outdir) was no longer the same as the generated c/c++ file
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11093 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
22e4cb8e52
commit
90ab280f90
4 changed files with 25 additions and 5 deletions
|
|
@ -1,6 +1,11 @@
|
||||||
Version 1.3.38 (in progress)
|
Version 1.3.38 (in progress)
|
||||||
================================
|
================================
|
||||||
|
|
||||||
|
2008-01-29: wsfulton
|
||||||
|
Fix regression introduced in 1.3.37 where the default output directory
|
||||||
|
for target language specific files (in the absence of -outdir) was no
|
||||||
|
longer the same directory as the generated c/c++ file.
|
||||||
|
|
||||||
2008-01-28: wsfulton
|
2008-01-28: wsfulton
|
||||||
[Java, C#] Fix proxy class not being used when the global scope operator
|
[Java, C#] Fix proxy class not being used when the global scope operator
|
||||||
was used for parameters passed by value. Reported by David Piepgrass.
|
was used for parameters passed by value. Reported by David Piepgrass.
|
||||||
|
|
|
||||||
|
|
@ -860,8 +860,8 @@ that split the task up into converting
|
||||||
the C bit patterns (integer or bit set)
|
the C bit patterns (integer or bit set)
|
||||||
into Modula-3 bit patterns (integer or bit set)
|
into Modula-3 bit patterns (integer or bit set)
|
||||||
and change the type as requested.
|
and change the type as requested.
|
||||||
See the corresponding
|
See the corresponding example in the
|
||||||
<a href="../../Examples/modula3/enum/example.i">example</a>.
|
Examples/modula3/enum/example.i file.
|
||||||
This is quite messy and not satisfying.
|
This is quite messy and not satisfying.
|
||||||
So the best what you can currently do is
|
So the best what you can currently do is
|
||||||
to rewrite constant definitions manually.
|
to rewrite constant definitions manually.
|
||||||
|
|
@ -877,8 +877,8 @@ that I'd like to automate.
|
||||||
Declarations of C++ classes are mapped to <tt>OBJECT</tt> types
|
Declarations of C++ classes are mapped to <tt>OBJECT</tt> types
|
||||||
while it is tried to retain the access hierarchy
|
while it is tried to retain the access hierarchy
|
||||||
"public - protected - private" using partial revelation.
|
"public - protected - private" using partial revelation.
|
||||||
Though the
|
Though the example in
|
||||||
<a href="../../Examples/modula3/class/example.i">implementation</a>
|
Examples/modula3/class/example.i
|
||||||
is not really useful, yet.
|
is not really useful, yet.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -247,6 +247,17 @@ cppfiles/example_wrap.cpp
|
||||||
pyfiles/example.py
|
pyfiles/example.py
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If the <tt>-outcurrentdir</tt> option is used (without <tt>-o</tt>)
|
||||||
|
then SWIG behaves like a typical C/C++
|
||||||
|
compiler and the default output directory is then the current directory. Without
|
||||||
|
this option the default output directory is the path to the input file.
|
||||||
|
If <tt>-o</tt> and
|
||||||
|
<tt>-outcurrentdir</tt> are used together, <tt>-outcurrentdir</tt> is effectively ignored
|
||||||
|
as the output directory for the language files is the same directory as the
|
||||||
|
generated C/C++ file if not overidden with <tt>-outdir</tt>.
|
||||||
|
</p>
|
||||||
|
|
||||||
<H3><a name="SWIG_nn5"></a>5.1.3 Comments</H3>
|
<H3><a name="SWIG_nn5"></a>5.1.3 Comments</H3>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -273,15 +273,18 @@ static unsigned int decode_numbers_list(String *numlist) {
|
||||||
|
|
||||||
static void set_outdir(const String *c_wrapper_file_dir) {
|
static void set_outdir(const String *c_wrapper_file_dir) {
|
||||||
|
|
||||||
|
Printf(stdout, "outdir (10): %s\n", outdir);
|
||||||
// Add file delimiter if not present in output directory name
|
// Add file delimiter if not present in output directory name
|
||||||
if (outdir && Len(outdir) != 0) {
|
if (outdir && Len(outdir) != 0) {
|
||||||
const char *outd = Char(outdir);
|
const char *outd = Char(outdir);
|
||||||
if (strcmp(outd + strlen(outd) - strlen(SWIG_FILE_DELIMITER), SWIG_FILE_DELIMITER) != 0)
|
if (strcmp(outd + strlen(outd) - strlen(SWIG_FILE_DELIMITER), SWIG_FILE_DELIMITER) != 0)
|
||||||
Printv(outdir, SWIG_FILE_DELIMITER, NIL);
|
Printv(outdir, SWIG_FILE_DELIMITER, NIL);
|
||||||
}
|
}
|
||||||
|
Printf(stdout, "outdir (20): %s\n", outdir);
|
||||||
// Use the C wrapper file's directory if the output directory has not been set by user
|
// Use the C wrapper file's directory if the output directory has not been set by user
|
||||||
if (!outdir)
|
if (!outdir)
|
||||||
outdir = NewString(c_wrapper_file_dir);
|
outdir = NewString(c_wrapper_file_dir);
|
||||||
|
Printf(stdout, "outdir (30): %s\n", outdir);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function sets the name of the configuration file */
|
/* This function sets the name of the configuration file */
|
||||||
|
|
@ -1162,6 +1165,7 @@ int SWIG_main(int argc, char *argv[], Language *l) {
|
||||||
Setattr(top, "inputfile", input_file);
|
Setattr(top, "inputfile", input_file);
|
||||||
|
|
||||||
char *basename = Swig_file_basename(outcurrentdir ? Swig_file_filename(infile): Char(infile));
|
char *basename = Swig_file_basename(outcurrentdir ? Swig_file_filename(infile): Char(infile));
|
||||||
|
Printf(stdout, "basename: %s\n", basename);
|
||||||
if (!outfile_name) {
|
if (!outfile_name) {
|
||||||
if (CPlusPlus || lang->cplus_runtime_mode()) {
|
if (CPlusPlus || lang->cplus_runtime_mode()) {
|
||||||
Setattr(top, "outfile", NewStringf("%s_wrap.%s", basename, cpp_extension));
|
Setattr(top, "outfile", NewStringf("%s_wrap.%s", basename, cpp_extension));
|
||||||
|
|
@ -1176,7 +1180,7 @@ int SWIG_main(int argc, char *argv[], Language *l) {
|
||||||
} else {
|
} else {
|
||||||
Setattr(top, "outfile_h", outfile_name_h);
|
Setattr(top, "outfile_h", outfile_name_h);
|
||||||
}
|
}
|
||||||
set_outdir(Swig_file_dirname(basename));
|
set_outdir(Swig_file_dirname(Getattr(top, "outfile")));
|
||||||
if (Swig_contract_mode_get()) {
|
if (Swig_contract_mode_get()) {
|
||||||
Swig_contracts(top);
|
Swig_contracts(top);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue