Get rid of the android-cross-path flag to rustc.

There's no need to include this specific flag just for android. We can
already deal with what it tries to solve by using -C linker=/path/to/cc
and -C ar=/path/to/ar. The Makefiles for rustc already set this up when
we're crosscompiling.

I did add the flag to compiletest though so it can find gdb. Though, I'm
pretty sure we don't run debuginfo tests on android anyways right now.

[breaking-change]
This commit is contained in:
Luqman Aden 2014-05-13 14:44:30 -04:00
parent e4414739a5
commit d0d800f125
9 changed files with 17 additions and 49 deletions

View File

@ -138,9 +138,6 @@ A space-separated list of arguments to pass through to LLVM.
If specified, the compiler will save more files (.bc, .o, .no-opt.bc) generated If specified, the compiler will save more files (.bc, .o, .no-opt.bc) generated
throughout compilation in the output directory. throughout compilation in the output directory.
.TP .TP
\fBandroid-cross-path\fR=path/to/ndk/bin
Directory to find the Android NDK cross-compilation tools
.TP
\fBno-rpath\fR \fBno-rpath\fR
If specified, then the rpath value for dynamic libraries will not be set in If specified, then the rpath value for dynamic libraries will not be set in
either dynamic library or executable outputs. either dynamic library or executable outputs.

View File

@ -307,7 +307,7 @@ CFG_LDPATH_arm-linux-androideabi :=
CFG_RUN_arm-linux-androideabi= CFG_RUN_arm-linux-androideabi=
CFG_RUN_TARG_arm-linux-androideabi= CFG_RUN_TARG_arm-linux-androideabi=
RUSTC_FLAGS_arm-linux-androideabi := RUSTC_FLAGS_arm-linux-androideabi :=
RUSTC_CROSS_FLAGS_arm-linux-androideabi :=-C android-cross-path=$(CFG_ANDROID_CROSS_PATH) RUSTC_CROSS_FLAGS_arm-linux-androideabi :=
# arm-unknown-linux-gnueabihf configuration # arm-unknown-linux-gnueabihf configuration
CROSS_PREFIX_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf- CROSS_PREFIX_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-

View File

@ -601,6 +601,7 @@ CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) := \
--stage-id stage$(1)-$(2) \ --stage-id stage$(1)-$(2) \
--target $(2) \ --target $(2) \
--host $(3) \ --host $(3) \
--android-cross-path=$(CFG_ANDROID_CROSS_PATH) \
--adb-path=$(CFG_ADB) \ --adb-path=$(CFG_ADB) \
--adb-test-dir=$(CFG_ADB_TEST_DIR) \ --adb-test-dir=$(CFG_ADB_TEST_DIR) \
--host-rustcflags "$(RUSTC_FLAGS_$(3)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(3))" \ --host-rustcflags "$(RUSTC_FLAGS_$(3)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(3))" \

View File

@ -126,6 +126,9 @@ pub struct Config {
// Host triple for the compiler being invoked // Host triple for the compiler being invoked
pub host: ~str, pub host: ~str,
// Path to the android tools
pub android_cross_path: Path,
// Extra parameter to run adb on arm-linux-androideabi // Extra parameter to run adb on arm-linux-androideabi
pub adb_path: ~str, pub adb_path: ~str,

View File

@ -79,6 +79,7 @@ pub fn parse_config(args: Vec<~str> ) -> Config {
optflag("", "jit", "run tests under the JIT"), optflag("", "jit", "run tests under the JIT"),
optopt("", "target", "the target to build for", "TARGET"), optopt("", "target", "the target to build for", "TARGET"),
optopt("", "host", "the host to build for", "HOST"), optopt("", "host", "the host to build for", "HOST"),
optopt("", "android-cross-path", "Android NDK standalone path", "PATH"),
optopt("", "adb-path", "path to the android debugger", "PATH"), optopt("", "adb-path", "path to the android debugger", "PATH"),
optopt("", "adb-test-dir", "path to tests for the android debugger", "PATH"), optopt("", "adb-test-dir", "path to tests for the android debugger", "PATH"),
optopt("", "lldb-python-dir", "directory containing LLDB's python module", "PATH"), optopt("", "lldb-python-dir", "directory containing LLDB's python module", "PATH"),
@ -142,6 +143,7 @@ pub fn parse_config(args: Vec<~str> ) -> Config {
jit: matches.opt_present("jit"), jit: matches.opt_present("jit"),
target: opt_str2(matches.opt_str("target")).to_str(), target: opt_str2(matches.opt_str("target")).to_str(),
host: opt_str2(matches.opt_str("host")).to_str(), host: opt_str2(matches.opt_str("host")).to_str(),
android_cross_path: opt_path(matches, "android-cross-path"),
adb_path: opt_str2(matches.opt_str("adb-path")).to_str(), adb_path: opt_str2(matches.opt_str("adb-path")).to_str(),
adb_test_dir: adb_test_dir:
opt_str2(matches.opt_str("adb-test-dir")).to_str(), opt_str2(matches.opt_str("adb-test-dir")).to_str(),
@ -173,6 +175,7 @@ pub fn log_config(config: &Config) {
logv(c, format!("jit: {}", config.jit)); logv(c, format!("jit: {}", config.jit));
logv(c, format!("target: {}", config.target)); logv(c, format!("target: {}", config.target));
logv(c, format!("host: {}", config.host)); logv(c, format!("host: {}", config.host));
logv(c, format!("android-cross-path: {}", config.android_cross_path.display()));
logv(c, format!("adb_path: {}", config.adb_path)); logv(c, format!("adb_path: {}", config.adb_path));
logv(c, format!("adb_test_dir: {}", config.adb_test_dir)); logv(c, format!("adb_test_dir: {}", config.adb_test_dir));
logv(c, format!("adb_device_status: {}", config.adb_device_status)); logv(c, format!("adb_device_status: {}", config.adb_device_status));

View File

@ -347,18 +347,10 @@ fn run_debuginfo_gdb_test(config: &Config, props: &TestProps, testfile: &Path) {
break; break;
} }
let args = split_maybe_args(&config.target_rustcflags); let tool_path = match config.android_cross_path.as_str() {
let mut tool_path = StrBuf::new(); Some(x) => x.to_strbuf(),
for arg in args.iter() { None => fatal("cannot find android cross path".to_owned())
if arg.contains("android-cross-path=") { };
tool_path = StrBuf::from_str(arg.replace("android-cross-path=", ""));
break;
}
}
if tool_path.is_empty() {
fatal("cannot found android cross path".to_owned());
}
let debugger_script = make_out_name(config, testfile, "debugger.script"); let debugger_script = make_out_name(config, testfile, "debugger.script");
// FIXME (#9639): This needs to handle non-utf8 paths // FIXME (#9639): This needs to handle non-utf8 paths

View File

@ -5,7 +5,6 @@ local -a _rustc_opts_switches _rustc_opts_lint _rustc_opts_debug
typeset -A opt_args typeset -A opt_args
_rustc_opts_switches=( _rustc_opts_switches=(
--android-cross-path'[The path to the Android NDK]'
--ar'[Program to use for managing archives instead of the default.]' --ar'[Program to use for managing archives instead of the default.]'
-c'[Compile and assemble, but do not link]' -c'[Compile and assemble, but do not link]'
--cfg'[Configure the compilation environment]' --cfg'[Configure the compilation environment]'

View File

@ -757,40 +757,15 @@ pub fn get_cc_prog(sess: &Session) -> StrBuf {
// instead of hard-coded gcc. // instead of hard-coded gcc.
// For win32, there is no cc command, so we add a condition to make it use gcc. // For win32, there is no cc command, so we add a condition to make it use gcc.
match sess.targ_cfg.os { match sess.targ_cfg.os {
abi::OsWin32 => return "gcc".to_strbuf(), abi::OsWin32 => "gcc",
_ => {}, _ => "cc",
} }.to_strbuf()
get_system_tool(sess, "cc")
} }
pub fn get_ar_prog(sess: &Session) -> StrBuf { pub fn get_ar_prog(sess: &Session) -> StrBuf {
match sess.opts.cg.ar { match sess.opts.cg.ar {
Some(ref ar) => return (*ar).clone(), Some(ref ar) => (*ar).clone(),
None => {} None => "ar".to_strbuf()
}
get_system_tool(sess, "ar")
}
fn get_system_tool(sess: &Session, tool: &str) -> StrBuf {
match sess.targ_cfg.os {
abi::OsAndroid => match sess.opts.cg.android_cross_path {
Some(ref path) => {
let tool_str = match tool {
"cc" => "gcc",
_ => tool
};
format_strbuf!("{}/bin/arm-linux-androideabi-{}",
*path,
tool_str)
}
None => {
sess.fatal(format!("need Android NDK path for the '{}' tool \
(-C android-cross-path)", tool))
}
},
_ => tool.to_strbuf(),
} }
} }

View File

@ -294,8 +294,6 @@ cgoptions!(
"a list of arguments to pass to llvm (space separated)"), "a list of arguments to pass to llvm (space separated)"),
save_temps: bool = (false, parse_bool, save_temps: bool = (false, parse_bool,
"save all temporary output files during compilation"), "save all temporary output files during compilation"),
android_cross_path: Option<StrBuf> = (None, parse_opt_string,
"the path to the Android NDK"),
no_rpath: bool = (false, parse_bool, no_rpath: bool = (false, parse_bool,
"disables setting the rpath in libs/exes"), "disables setting the rpath in libs/exes"),
no_prepopulate_passes: bool = (false, parse_bool, no_prepopulate_passes: bool = (false, parse_bool,