"See also <http://ccache.samba.org>.\n";
/* current working directory taken from $PWD, or getcwd() if $PWD is bad */
-static char *current_working_dir;
+char *current_working_dir = NULL;
/* the base cache directory */
char *cache_dir = NULL;
char *cache_logfile = NULL;
/* base directory (from CCACHE_BASEDIR) */
-static char *base_dir;
+char *base_dir = NULL;
/* the original argument list */
static struct args *orig_args;
}
continue;
}
+ if (str_startswith(argv[i], "--sysroot=")) {
+ char *relpath = make_relative_path(x_strdup(argv[i] + 10));
+ char *option = format("--sysroot=%s", relpath);
+ args_add(stripped_args, option);
+ free(relpath);
+ free(option);
+ continue;
+ }
if (str_startswith(argv[i], "-Wp,")) {
if (str_startswith(argv[i], "-Wp,-MD,") && !strchr(argv[i] + 8, ',')) {
generating_dependencies = true;
args_free(orig);
}
+TEST(sysroot_should_be_rewritten_if_basedir_is_used)
+{
+ extern char *base_dir;
+ extern char *current_working_dir;
+ struct args *orig =
+ args_init_from_string("cc --sysroot=/some/directory -c foo.c");
+ struct args *act_cpp = NULL, *act_cc = NULL;
+ create_file("foo.c", "");
+
+ CHECK(cc_process_args(orig, &act_cpp, &act_cc));
+ CHECK_STR_EQ(act_cpp->argv[1], "--sysroot=/some/directory");
+
+ cc_reset();
+ base_dir = "/some";
+ current_working_dir = get_cwd();
+
+ CHECK(cc_process_args(orig, &act_cpp, &act_cc));
+ CHECK(str_startswith(act_cpp->argv[1], "--sysroot=../"));
+
+ args_free(orig);
+ base_dir = NULL;
+ current_working_dir = NULL;
+}
+
TEST(MF_flag_with_immediate_argument_should_work_as_last_argument)
{
struct args *orig = args_init_from_string(