Skip to content

Commit 4785d33

Browse files
committed
---
yaml --- r: 139111 b: refs/heads/try2 c: 63a292f h: refs/heads/master i: 139109: ef6ae45 139107: 65bca3f 139103: 2f00f36 v: v3
1 parent da157b2 commit 4785d33

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+1118
-813
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 3042321b3bf6bc9435c274f278798871959ce58b
8+
refs/heads/try2: 63a292fd8686f56efe7836aef46709a063efab4e
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/mk/platform.mk

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -215,31 +215,31 @@ CFG_LDPATH_i686-apple-darwin :=
215215
CFG_RUN_i686-apple-darwin=$(2)
216216
CFG_RUN_TARG_i686-apple-darwin=$(call CFG_RUN_i686-apple-darwin,,$(2))
217217

218-
# arm-unknown-android configuration
219-
CC_arm-unknown-android=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc
220-
CXX_arm-unknown-android=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-g++
221-
CPP_arm-unknown-android=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc -E
222-
AR_arm-unknown-android=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-ar
223-
CFG_LIB_NAME_arm-unknown-android=lib$(1).so
224-
CFG_LIB_GLOB_arm-unknown-android=lib$(1)-*.so
225-
CFG_LIB_DSYM_GLOB_arm-unknown-android=lib$(1)-*.dylib.dSYM
226-
CFG_GCCISH_CFLAGS_arm-unknown-android := -Wall -g -fPIC -D__arm__ -DANDROID -D__ANDROID__
227-
CFG_GCCISH_CXXFLAGS_arm-unknown-android := -fno-rtti
228-
CFG_GCCISH_LINK_FLAGS_arm-unknown-android := -shared -fPIC -ldl -g -lm -lsupc++ -lgnustl_shared
229-
CFG_GCCISH_DEF_FLAG_arm-unknown-android := -Wl,--export-dynamic,--dynamic-list=
230-
CFG_GCCISH_PRE_LIB_FLAGS_arm-unknown-android := -Wl,-whole-archive
231-
CFG_GCCISH_POST_LIB_FLAGS_arm-unknown-android := -Wl,-no-whole-archive -Wl,-znoexecstack
232-
CFG_DEF_SUFFIX_arm-unknown-android := .android.def
233-
CFG_INSTALL_NAME_arm-unknown-android =
234-
CFG_LIBUV_LINK_FLAGS_arm-unknown-android =
235-
CFG_EXE_SUFFIX_arm-unknown-android :=
236-
CFG_WINDOWSY_arm-unknown-android :=
237-
CFG_UNIXY_arm-unknown-android := 1
238-
CFG_PATH_MUNGE_arm-unknown-android := true
239-
CFG_LDPATH_arm-unknown-android :=
240-
CFG_RUN_arm-unknown-android=
241-
CFG_RUN_TARG_arm-unknown-android=
242-
RUSTC_FLAGS_arm-unknown-android :=--android-cross-path=$(CFG_ANDROID_CROSS_PATH)
218+
# arm-linux-androideabi configuration
219+
CC_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc
220+
CXX_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-g++
221+
CPP_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc
222+
AR_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-ar
223+
CFG_LIB_NAME_arm-linux-androideabi=lib$(1).so
224+
CFG_LIB_GLOB_arm-linux-androideabi=lib$(1)-*.so
225+
CFG_LIB_DSYM_GLOB_arm-linux-androideabi=lib$(1)-*.dylib.dSYM
226+
CFG_GCCISH_CFLAGS_arm-linux-androideabi := -Wall -g -fPIC -D__arm__ -DANDROID -D__ANDROID__
227+
CFG_GCCISH_CXXFLAGS_arm-linux-androideabi := -fno-rtti
228+
CFG_GCCISH_LINK_FLAGS_arm-linux-androideabi := -shared -fPIC -ldl -g -lm -lsupc++ -lgnustl_shared
229+
CFG_GCCISH_DEF_FLAG_arm-linux-androideabi := -Wl,--export-dynamic,--dynamic-list=
230+
CFG_GCCISH_PRE_LIB_FLAGS_arm-linux-androideabi := -Wl,-whole-archive
231+
CFG_GCCISH_POST_LIB_FLAGS_arm-linux-androideabi := -Wl,-no-whole-archive -Wl,-znoexecstack
232+
CFG_DEF_SUFFIX_arm-linux-androideabi := .android.def
233+
CFG_INSTALL_NAME_arm-linux-androideabi =
234+
CFG_LIBUV_LINK_FLAGS_arm-linux-androideabi =
235+
CFG_EXE_SUFFIX_arm-linux-androideabi :=
236+
CFG_WINDOWSY_arm-linux-androideabi :=
237+
CFG_UNIXY_arm-linux-androideabi := 1
238+
CFG_PATH_MUNGE_arm-linux-androideabi := true
239+
CFG_LDPATH_arm-linux-androideabi :=
240+
CFG_RUN_arm-linux-androideabi=
241+
CFG_RUN_TARG_arm-linux-androideabi=
242+
RUSTC_FLAGS_arm-linux-androideabi :=--android-cross-path=$(CFG_ANDROID_CROSS_PATH)
243243

244244
# i686-pc-mingw32 configuration
245245
CC_i686-pc-mingw32=$(CC)
@@ -267,22 +267,22 @@ CFG_RUN_i686-pc-mingw32=PATH="$(CFG_LDPATH_i686-pc-mingw32):$(1)" $(2)
267267
CFG_RUN_TARG_i686-pc-mingw32=$(call CFG_RUN_i686-pc-mingw32,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2))
268268

269269
# i586-mingw32msvc configuration
270-
CC_i586-mingw32msvc=$(CC)
271-
CXX_i586-mingw32msvc=$(CXX)
272-
CPP_i586-mingw32msvc=$(CPP)
273-
AR_i586-mingw32msvc=$(AR)
270+
CC_i586-mingw32msvc=$(CFG_MINGW32_CROSS_PATH)/bin/i586-mingw32msvc-gcc
271+
CXX_i586-mingw32msvc=$(CFG_MINGW32_CROSS_PATH)/bin/i586-mingw32msvc-g++
272+
CPP_i586-mingw32msvc=$(CFG_MINGW32_CROSS_PATH)/bin/i586-mingw32msvc-cpp
273+
AR_i586-mingw32msvc=$(CFG_MINGW32_CROSS_PATH)/bin/i586-mingw32msvc-ar
274274
CFG_LIB_NAME_i586-mingw32msvc=$(1).dll
275275
CFG_LIB_GLOB_i586-mingw32msvc=$(1)-*.dll
276276
CFG_LIB_DSYM_GLOB_i586-mingw32msvc=$(1)-*.dylib.dSYM
277-
CFG_GCCISH_CFLAGS_i586-mingw32msvc := -Wall -Werror -g -march=586 -m32
277+
CFG_GCCISH_CFLAGS_i586-mingw32msvc := -Wall -Werror -g -march=i586 -m32
278278
CFG_GCCISH_CXXFLAGS_i586-mingw32msvc := -fno-rtti
279279
CFG_GCCISH_LINK_FLAGS_i586-mingw32msvc := -shared -g -m32
280280
CFG_GCCISH_DEF_FLAG_i586-mingw32msvc :=
281281
CFG_GCCISH_PRE_LIB_FLAGS_i586-mingw32msvc :=
282282
CFG_GCCISH_POST_LIB_FLAGS_i586-mingw32msvc :=
283283
CFG_DEF_SUFFIX_i586-mingw32msvc := .mingw32.def
284284
CFG_INSTALL_NAME_i586-mingw32msvc =
285-
CFG_LIBUV_LINK_FLAGS_i586-mingw32msvc := -lWs2_32 -lpsapi -liphlpapi
285+
CFG_LIBUV_LINK_FLAGS_i586-mingw32msvc := -L$(CFG_MINGW32_CROSS_PATH)/i586-mingw32msvc/lib -lws2_32 -lpsapi -liphlpapi
286286
CFG_EXE_SUFFIX_i586-mingw32msvc := .exe
287287
CFG_WINDOWSY_i586-mingw32msvc := 1
288288
CFG_UNIXY_i586-mingw32msvc :=
@@ -342,7 +342,7 @@ define CFG_MAKE_TOOLCHAIN
342342
$$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \
343343
$$(call CFG_INSTALL_NAME_$(1),$$(4))
344344

345-
ifneq ($(1),arm-unknown-android)
345+
ifneq ($(1),arm-linux-androideabi)
346346

347347
# We're using llvm-mc as our assembler because it supports
348348
# .cfi pseudo-ops on mac
@@ -356,7 +356,7 @@ define CFG_MAKE_TOOLCHAIN
356356

357357
# For the Android cross, use the Android assembler
358358
# XXX: We should be able to use the LLVM assembler
359-
CFG_ASSEMBLE_$(1)=$$(CXX_$(1)) $$(CFG_DEPEND_FLAGS) $$(2) -c -o $$(1)
359+
CFG_ASSEMBLE_$(1)=$$(CPP_$(1)) $$(CFG_DEPEND_FLAGS) $$(2) -c -o $$(1)
360360

361361
endif
362362

branches/try2/mk/rt.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ else ifeq ($(OSTYPE_$(1)), apple-darwin)
9292
else ifeq ($(OSTYPE_$(1)), unknown-freebsd)
9393
LIBUV_OSTYPE_$(1) := unix/freebsd
9494
LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a
95-
else ifeq ($(OSTYPE_$(1)), unknown-android)
95+
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
9696
LIBUV_OSTYPE_$(1) := unix/android
9797
LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a
9898
else
@@ -164,7 +164,7 @@ $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
164164
builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \
165165
OS=mingw \
166166
V=$$(VERBOSE)
167-
else ifeq ($(OSTYPE_$(1)), unknown-android)
167+
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
168168
$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
169169
$$(Q)$$(MAKE) -C $$(S)src/libuv/ \
170170
CFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \

branches/try2/src/compiletest/runtest.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,18 +208,19 @@ actual:\n\
208208
testfile: &Path, src: ~str) -> ProcRes {
209209
compose_and_run_compiler(
210210
config, props, testfile,
211-
make_typecheck_args(config, testfile),
211+
make_typecheck_args(config, props, testfile),
212212
Some(src))
213213
}
214214

215-
fn make_typecheck_args(config: config, testfile: &Path) -> ProcArgs {
215+
fn make_typecheck_args(config: config, props: TestProps, testfile: &Path) -> ProcArgs {
216216
let prog = config.rustc_path;
217217
let mut args = ~[~"-",
218218
~"--no-trans", ~"--lib",
219219
~"-L", config.build_base.to_str(),
220220
~"-L",
221221
aux_output_dir_name(config, testfile).to_str()];
222222
args += split_maybe_args(config.rustcflags);
223+
args += split_maybe_args(props.compile_flags);
223224
return ProcArgs {prog: prog.to_str(), args: args};
224225
}
225226
}

branches/try2/src/libcore/libc.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,9 +1221,8 @@ pub mod funcs {
12211221
#[nolink]
12221222
#[abi = "cdecl"]
12231223
pub mod fcntl {
1224+
use libc::types::os::arch::c95::{c_int, c_char};
12241225
pub extern {
1225-
use libc::types::os::arch::c95::{c_int, c_char};
1226-
12271226
#[link_name = "_open"]
12281227
unsafe fn open(path: *c_char, oflag: c_int, mode: c_int)
12291228
-> c_int;
@@ -1562,11 +1561,11 @@ pub mod funcs {
15621561
#[cfg(target_os = "macos")]
15631562
#[cfg(target_os = "freebsd")]
15641563
pub mod bsd44 {
1564+
use libc::types::common::c95::{c_void};
1565+
use libc::types::os::arch::c95::{c_char, c_int, c_uint, size_t};
1566+
15651567
#[abi = "cdecl"]
15661568
pub extern {
1567-
use libc::types::common::c95::{c_void};
1568-
use libc::types::os::arch::c95::{c_char, c_int, c_uint, size_t};
1569-
15701569
unsafe fn sysctl(name: *c_int, namelen: c_uint,
15711570
oldp: *mut c_void, oldlenp: *mut size_t,
15721571
newp: *c_void, newlen: size_t) -> c_int;

branches/try2/src/libcore/rt/env.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,4 @@ pub fn get() -> &Environment {
4444

4545
extern {
4646
fn rust_get_rt_env() -> &Environment;
47-
}
47+
}

branches/try2/src/libcore/rt/sched.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ enum CleanupJob {
7070

7171
pub impl Scheduler {
7272

73-
static fn new(event_loop: ~EventLoopObject) -> Scheduler {
73+
static pub fn new(event_loop: ~EventLoopObject) -> Scheduler {
7474
Scheduler {
7575
event_loop: event_loop,
7676
task_queue: WorkQueue::new(),
@@ -296,7 +296,7 @@ pub struct Task {
296296
}
297297

298298
impl Task {
299-
static fn new(stack_pool: &mut StackPool, start: ~fn()) -> Task {
299+
static pub fn new(stack_pool: &mut StackPool, start: ~fn()) -> Task {
300300
// XXX: Putting main into a ~ so it's a thin pointer and can
301301
// be passed to the spawn function. Another unfortunate
302302
// allocation

branches/try2/src/libcore/rt/stack.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ pub impl StackSegment {
3737
pub struct StackPool(());
3838

3939
impl StackPool {
40-
41-
static fn new() -> StackPool { StackPool(()) }
40+
static pub fn new() -> StackPool { StackPool(()) }
4241

4342
fn take_segment(&self, min_size: uint) -> StackSegment {
4443
StackSegment::new(min_size)

branches/try2/src/libcore/rt/thread.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ struct Thread {
2020
}
2121

2222
impl Thread {
23-
static fn start(main: ~fn()) -> Thread {
23+
static pub fn start(main: ~fn()) -> Thread {
2424
fn substart(main: &fn()) -> *raw_thread {
2525
unsafe { rust_raw_thread_start(&main) }
2626
}

branches/try2/src/libcore/task/rt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pub type rust_task = libc::c_void;
3030
#[allow(non_camel_case_types)] // runtime type
3131
pub type rust_closure = libc::c_void;
3232

33-
extern {
33+
pub extern {
3434
#[rust_stack]
3535
fn rust_task_yield(task: *rust_task) -> bool;
3636

branches/try2/src/librustc/back/arm.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ pub fn get_target_strs(target_os: session::os) -> target_strs::t {
6565
session::os_macos => ~"arm-apple-darwin",
6666
session::os_win32 => ~"arm-pc-mingw32",
6767
session::os_linux => ~"arm-unknown-linux",
68-
session::os_android => ~"arm-unknown-android",
68+
session::os_android => ~"arm-linux-androideabi",
6969
session::os_freebsd => ~"arm-unknown-freebsd"
7070
},
7171

branches/try2/src/librustc/back/link.rs

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -167,15 +167,18 @@ pub mod write {
167167
use back::link::{output_type_assembly, output_type_bitcode};
168168
use back::link::{output_type_exe, output_type_llvm_assembly};
169169
use back::link::{output_type_object};
170+
use back::link::output_type;
170171
use driver::session::Session;
171172
use driver::session;
172173
use lib::llvm::llvm;
173174
use lib::llvm::{False, True, ModuleRef, mk_pass_manager, mk_target_data};
174175
use lib;
175176

177+
use core::prelude::*;
176178
use core::libc::{c_char, c_int, c_uint};
177179
use core::path::Path;
178180
use core::str;
181+
use core::run;
179182

180183
pub fn is_object_or_assembly_or_exe(ot: output_type) -> bool {
181184
if ot == output_type_assembly || ot == output_type_object ||
@@ -185,13 +188,13 @@ pub mod write {
185188
return false;
186189
}
187190

188-
pub fn run_passes(sess: Session, llmod: ModuleRef, output: &Path) {
191+
pub fn run_passes(sess: Session, llmod: ModuleRef,
192+
output_type: output_type, output: &Path) {
189193
unsafe {
190194
let opts = sess.opts;
191195
if sess.time_llvm_passes() { llvm::LLVMRustEnableTimePasses(); }
192196
let mut pm = mk_pass_manager();
193-
let td = mk_target_data(
194-
/*bad*/copy sess.targ_cfg.target_strs.data_layout);
197+
let td = mk_target_data(sess.targ_cfg.target_strs.data_layout);
195198
llvm::LLVMAddTargetData(td.lltd, pm.llpm);
196199
// FIXME (#2812): run the linter here also, once there are llvm-c
197200
// bindings for it.
@@ -201,7 +204,7 @@ pub mod write {
201204

202205

203206
if opts.save_temps {
204-
match opts.output_type {
207+
match output_type {
205208
output_type_bitcode => {
206209
if opts.optimize != session::No {
207210
let filename = output.with_filetype("no-opt.bc");
@@ -262,7 +265,7 @@ pub mod write {
262265
llvm::LLVMPassManagerBuilderDispose(MPMB);
263266
}
264267
if !sess.no_verify() { llvm::LLVMAddVerifierPass(pm.llpm); }
265-
if is_object_or_assembly_or_exe(opts.output_type) || opts.jit {
268+
if is_object_or_assembly_or_exe(output_type) || opts.jit {
266269
let LLVMOptNone = 0 as c_int; // -O0
267270
let LLVMOptLess = 1 as c_int; // -O1
268271
let LLVMOptDefault = 2 as c_int; // -O2, -Os
@@ -290,8 +293,8 @@ pub mod write {
290293
}
291294

292295
let mut FileType;
293-
if opts.output_type == output_type_object ||
294-
opts.output_type == output_type_exe {
296+
if output_type == output_type_object ||
297+
output_type == output_type_exe {
295298
FileType = lib::llvm::ObjectFile;
296299
} else { FileType = lib::llvm::AssemblyFile; }
297300
// Write optimized bitcode if --save-temps was on.
@@ -307,7 +310,7 @@ pub mod write {
307310
pm = mk_pass_manager();
308311
// Save the assembly file if -S is used
309312

310-
if opts.output_type == output_type_assembly {
313+
if output_type == output_type_assembly {
311314
let _: () = str::as_c_str(
312315
sess.targ_cfg.target_strs.target_triple,
313316
|buf_t| {
@@ -328,8 +331,8 @@ pub mod write {
328331

329332
// Save the object file for -c or --save-temps alone
330333
// This .o is needed when an exe is built
331-
if opts.output_type == output_type_object ||
332-
opts.output_type == output_type_exe {
334+
if output_type == output_type_object ||
335+
output_type == output_type_exe {
333336
let _: () = str::as_c_str(
334337
sess.targ_cfg.target_strs.target_triple,
335338
|buf_t| {
@@ -375,7 +378,7 @@ pub mod write {
375378
return;
376379
}
377380

378-
if opts.output_type == output_type_llvm_assembly {
381+
if output_type == output_type_llvm_assembly {
379382
// Given options "-S --emit-llvm": output LLVM assembly
380383
str::as_c_str(output.to_str(), |buf_o| {
381384
llvm::LLVMRustAddPrintModulePass(pm.llpm, llmod, buf_o)});
@@ -391,6 +394,34 @@ pub mod write {
391394
if sess.time_llvm_passes() { llvm::LLVMRustPrintPassTimings(); }
392395
}
393396
}
397+
398+
pub fn run_ndk(sess: Session, assembly: &Path, object: &Path) {
399+
let cc_prog: ~str = match &sess.opts.android_cross_path {
400+
&Some(copy path) => {
401+
fmt!("%s/bin/arm-linux-androideabi-gcc", path)
402+
}
403+
&None => {
404+
sess.fatal(~"need Android NDK path for building \
405+
(--android-cross-path)")
406+
}
407+
};
408+
let mut cc_args = ~[];
409+
cc_args.push(~"-c");
410+
cc_args.push(~"-o");
411+
cc_args.push(object.to_str());
412+
cc_args.push(assembly.to_str());
413+
414+
let prog = run::program_output(cc_prog, cc_args);
415+
416+
if prog.status != 0 {
417+
sess.err(fmt!("building with `%s` failed with code %d",
418+
cc_prog, prog.status));
419+
sess.note(fmt!("%s arguments: %s",
420+
cc_prog, str::connect(cc_args, ~" ")));
421+
sess.note(prog.err + prog.out);
422+
sess.abort_if_errors();
423+
}
424+
}
394425
}
395426
396427
@@ -834,8 +865,9 @@ pub fn link_binary(sess: Session,
834865
// to be found at compile time so it is still entirely up to outside
835866
// forces to make sure that library can be found at runtime.
836867
837-
let addl_paths = /*bad*/copy sess.opts.addl_lib_search_paths;
838-
for addl_paths.each |path| { cc_args.push(~"-L" + path.to_str()); }
868+
for sess.opts.addl_lib_search_paths.each |path| {
869+
cc_args.push(~"-L" + path.to_str());
870+
}
839871
840872
// The names of the extern libraries
841873
let used_libs = cstore::get_used_libraries(cstore);

0 commit comments

Comments
 (0)