add input and output files to hash for correct operation when swig is the compiler. Automatically detect when swig is the compiler.

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10931 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2008-11-17 22:43:15 +00:00
commit a5d91ce4f1
2 changed files with 24 additions and 11 deletions

View file

@ -195,7 +195,6 @@ static void to_cache(ARGS *args)
x_asprintf(&tmp_stderr, "%s/tmp.stderr.%s", temp_dir, tmp_string()); x_asprintf(&tmp_stderr, "%s/tmp.stderr.%s", temp_dir, tmp_string());
x_asprintf(&tmp_outfiles, "%s/tmp.outfiles.%s", temp_dir, tmp_string()); x_asprintf(&tmp_outfiles, "%s/tmp.outfiles.%s", temp_dir, tmp_string());
/* TODO swig */
if (output_file) { if (output_file) {
args_add(args, "-o"); args_add(args, "-o");
args_add(args, output_file); args_add(args, output_file);
@ -384,13 +383,19 @@ static void find_hash(ARGS *args)
/* when we are doing the unifying tricks we need to include /* when we are doing the unifying tricks we need to include
the input file name in the hash to get the warnings right */ the input file name in the hash to get the warnings right */
if (enable_unify) { if (enable_unify || swig) {
hash_string(input_file); hash_string(input_file);
} }
/* we have to hash the extension, as a .i file isn't treated the same if (swig) {
by the compiler as a .ii file (Note: not strictly necessary for SWIG) */ if (output_file) {
hash_string(i_extension); hash_string(output_file);
}
} else {
/* we have to hash the extension, as a .i file isn't treated the same
by the compiler as a .ii file */
hash_string(i_extension);
}
/* first the arguments */ /* first the arguments */
for (i=1;i<args->argc;i++) { for (i=1;i<args->argc;i++) {
@ -1055,6 +1060,15 @@ static void process_args(int argc, char **argv)
} }
} }
static void detect_swig()
{
char *basename = str_basename(orig_args->argv[0]);
if (strstr(basename, "swig") || getenv("CCACHE_SWIG")) {
swig = 1;
}
free(basename);
}
/* the main ccache driver function */ /* the main ccache driver function */
static void ccache(int argc, char *argv[]) static void ccache(int argc, char *argv[])
{ {
@ -1078,9 +1092,7 @@ static void ccache(int argc, char *argv[])
enable_unify = 1; enable_unify = 1;
} }
if (getenv("CCACHE_SWIG")) { detect_swig();
swig = 1;
}
/* process argument list, returning a new set of arguments for pre-processing */ /* process argument list, returning a new set of arguments for pre-processing */
process_args(orig_args->argc, orig_args->argv); process_args(orig_args->argc, orig_args->argv);

View file

@ -233,9 +233,10 @@ systems like this you can use the CCACHE_EXTENSION option to override
the default. On HP-UX set this environment variable to "i" if you use the default. On HP-UX set this environment variable to "i" if you use
the aCC compiler. the aCC compiler.
dit(bf(CCACHE_SWIG)) The CCACHE_SWIG environment variable needs to be dit(bf(CCACHE_SWIG)) When using SWIG as the compiler and it does not
set in order for ccache to work with SWIG. Currently the CCACHE_CPP2 have 'swig' in the executable name, then the CCACHE_SWIG environment
environment variable also needs to be set in order to work with SWIG. variable needs to be set in order for ccache to work correctly with
SWIG.
enddit() enddit()