mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Android fixes for February Rust Upgrade
This commit is contained in:
parent
7541b57526
commit
ccb522a465
14 changed files with 96 additions and 12 deletions
14
Makefile.in
14
Makefile.in
|
@ -131,6 +131,8 @@ endif
|
|||
# their name already, while others don't.
|
||||
DONE_$(1) = $$(B)src/$$(PATH_$(1))/lib*.dummy
|
||||
DEPS_SUBMODULES += $$(PATH_$(1))
|
||||
DEPS_SUBMODULES += $$(PATH_$(1))/.libs
|
||||
DEPS_SUBMODULES += $$(PATH_$(1))/src/.libs
|
||||
endef
|
||||
|
||||
# these will get populated.
|
||||
|
@ -157,7 +159,7 @@ endef
|
|||
define DEF_SUBMODULE_RULES
|
||||
|
||||
ENV_RLDFLAGS_$(1) = -L $$(CFG_BUILD_HOME)workspace/lib/$$(CFG_TARGET_TRIPLES)
|
||||
ENV_RLDFLAGS_$(1) += $$(foreach dep,$$(DEPS_$(1)),-L $$(B)src/$$(PATH_$$(dep)))
|
||||
ENV_RLDFLAGS_$(1) += $$(foreach dep,$$(DEPS_$(1)),-L $$(B)src/$$(PATH_$$(dep)) -L $$(B)src/$$(PATH_$$(dep))/.libs -L $$(B)src/$$(PATH_$$(dep))/src/.libs)
|
||||
|
||||
# variables that depend on dependency definitions from sub.mk!
|
||||
ENV_CFLAGS_$(1) = CFLAGS="$$(CFLAGS_$(1))"
|
||||
|
@ -336,7 +338,8 @@ servo: $(DEPS_servo)
|
|||
else
|
||||
servo: $(DEPS_servo)
|
||||
@$(call E, compile: $@)
|
||||
$(Q)$(RUSTC) $(RFLAGS_servo) -C gen-crate-map -o $@ $< --crate-type lib
|
||||
$(Q)$(RUSTC) $(RFLAGS_servo) -C gen-crate-map $< -o libservo.so --crate-type dylib
|
||||
touch servo
|
||||
endif
|
||||
|
||||
# Darwin app packaging
|
||||
|
@ -354,12 +357,11 @@ package: servo
|
|||
else ifeq ($(CFG_OSTYPE),linux-androideabi)
|
||||
package: servo
|
||||
mkdir -p sofile
|
||||
-exec cp -f {} $(CFG_BUILD_HOME)sofile \;
|
||||
find . ! \( \( -type d -path './sofile' -o -path './$(CFG_TARGET_TRIPLES)/src/compiler/rust' \) -prune \) -name '*.so' -type f | xargs cp -f -t $(CFG_BUILD_HOME)sofile
|
||||
find $(CFG_RUST_HOME)/lib/rustc/$(CFG_TARGET_TRIPLES)/lib/ -name '*.so' -type f -size +1c | xargs cp -f -t $(CFG_BUILD_HOME)sofile
|
||||
find . ! \( \( -type d -path './sofile' -o -path './$(CFG_TARGET_TRIPLES)/src/compiler/rust' \) -prune \) -name '*.so' -type f | xargs -I {} cp -f {} $(CFG_BUILD_HOME)sofile/
|
||||
find $(CFG_RUST_HOME)/lib/rustlib/$(CFG_TARGET_TRIPLES)/lib/ -name '*.so' -type f -size +1c | xargs -I {} cp -f {} $(CFG_BUILD_HOME)sofile/
|
||||
cd $(S)src/platform/android/servo-android-glue && make with-libs
|
||||
cd $(CFG_BUILD_HOME)
|
||||
cp $(S)src/platform/android/servo-android-glue/bin/ServoAndroid-debug.apk -t $(CFG_BUILD_HOME)
|
||||
cp $(S)src/platform/android/servo-android-glue/bin/ServoAndroid-debug.apk $(CFG_BUILD_HOME)
|
||||
|
||||
else
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit aa39d755e3f9823b51cc57761c0c8c75759aca2e
|
||||
Subproject commit d6811bc1bdeb66381af4b9bf3e4ff77b3cee27f6
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#[crate_id = "github.com/mozilla/servo#gfx:0.1"];
|
||||
#[crate_type = "lib"];
|
||||
#[crate_type = "dylib"];
|
||||
#[crate_type = "rlib"];
|
||||
|
||||
#[feature(globs, managed_boxes, macro_rules, phase)];
|
||||
|
||||
|
|
|
@ -24,17 +24,32 @@ use style::{ComputedValues, Stylist};
|
|||
use sync::{Arc, MutexArc};
|
||||
use url::Url;
|
||||
|
||||
#[cfg(target_os="android")]
|
||||
use std::local_data;
|
||||
|
||||
#[cfg(not(target_os="android"))]
|
||||
#[thread_local]
|
||||
static mut FONT_CONTEXT: *mut FontContext = 0 as *mut FontContext;
|
||||
|
||||
#[cfg(target_os="android")]
|
||||
local_data_key!(font_context: * mut FontContext)
|
||||
|
||||
#[cfg(not(target_os="android"))]
|
||||
#[thread_local]
|
||||
static mut APPLICABLE_DECLARATIONS_CACHE: *mut ApplicableDeclarationsCache =
|
||||
0 as *mut ApplicableDeclarationsCache;
|
||||
|
||||
#[cfg(target_os="android")]
|
||||
local_data_key!(applicable_declarations_cache: * mut ApplicableDeclarationsCache)
|
||||
|
||||
#[cfg(not(target_os="android"))]
|
||||
#[thread_local]
|
||||
static mut STYLE_SHARING_CANDIDATE_CACHE: *mut StyleSharingCandidateCache =
|
||||
0 as *mut StyleSharingCandidateCache;
|
||||
|
||||
#[cfg(target_os="android")]
|
||||
local_data_key!(style_sharing_candidate_cache: * mut StyleSharingCandidateCache)
|
||||
|
||||
/// Data shared by all layout workers.
|
||||
#[deriving(Clone)]
|
||||
pub struct LayoutContext {
|
||||
|
@ -71,6 +86,7 @@ pub struct LayoutContext {
|
|||
opts: Opts,
|
||||
}
|
||||
|
||||
#[cfg(not(target_os="android"))]
|
||||
impl LayoutContext {
|
||||
pub fn font_context<'a>(&'a mut self) -> &'a mut FontContext {
|
||||
// Sanity check.
|
||||
|
@ -139,3 +155,57 @@ impl LayoutContext {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// On Android, we don't have the __tls_* functions emitted by rustc, so we
|
||||
// need to use the slower local_data functions.
|
||||
// Making matters worse, the local_data functions are very particular about
|
||||
// enforcing the lifetimes associated with objects that they hold onto,
|
||||
// which causes us some trouble we work around as below.
|
||||
#[cfg(target_os="android")]
|
||||
impl LayoutContext {
|
||||
pub fn font_context<'a>(&'a mut self) -> &'a mut FontContext {
|
||||
unsafe {
|
||||
let opt = local_data::pop(font_context);
|
||||
let mut context;
|
||||
match opt {
|
||||
Some(c) => context = cast::transmute(c),
|
||||
None => {
|
||||
context = cast::transmute(~FontContext::new(self.font_context_info.clone()))
|
||||
}
|
||||
}
|
||||
local_data::set(font_context, context);
|
||||
cast::transmute(context)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn applicable_declarations_cache<'a>(&'a self) -> &'a mut ApplicableDeclarationsCache {
|
||||
unsafe {
|
||||
let opt = local_data::pop(applicable_declarations_cache);
|
||||
let mut cache;
|
||||
match opt {
|
||||
Some(c) => cache = cast::transmute(c),
|
||||
None => {
|
||||
cache = cast::transmute(~ApplicableDeclarationsCache::new());
|
||||
}
|
||||
}
|
||||
local_data::set(applicable_declarations_cache, cache);
|
||||
cast::transmute(cache)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn style_sharing_candidate_cache<'a>(&'a self) -> &'a mut StyleSharingCandidateCache {
|
||||
unsafe {
|
||||
let opt = local_data::pop(style_sharing_candidate_cache);
|
||||
let mut cache;
|
||||
match opt {
|
||||
Some(c) => cache = cast::transmute(c),
|
||||
None => {
|
||||
cache = cast::transmute(~StyleSharingCandidateCache::new());
|
||||
}
|
||||
}
|
||||
local_data::set(style_sharing_candidate_cache, cache);
|
||||
cast::transmute(cache)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#[crate_id = "github.com/mozilla/servo#msg:0.1"];
|
||||
#[crate_type = "lib"];
|
||||
#[crate_type = "dylib"];
|
||||
#[crate_type = "rlib"];
|
||||
|
||||
#[feature(managed_boxes)];
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#[crate_id = "github.com/mozilla/servo#net:0.1"];
|
||||
#[crate_type = "lib"];
|
||||
#[crate_type = "dylib"];
|
||||
#[crate_type = "rlib"];
|
||||
|
||||
#[feature(globs, managed_boxes)];
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#[crate_id = "github.com/mozilla/servo#script:0.1"];
|
||||
#[crate_type = "lib"];
|
||||
#[crate_type = "dylib"];
|
||||
#[crate_type = "rlib"];
|
||||
|
||||
#[comment = "The Servo Parallel Browser Project"];
|
||||
#[license = "MPL"];
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#[crate_id = "github.com/mozilla/servo#style:0.1"];
|
||||
#[crate_type = "lib"];
|
||||
#[crate_type = "dylib"];
|
||||
#[crate_type = "rlib"];
|
||||
|
||||
#[comment = "The Servo Parallel Browser Project"];
|
||||
#[license = "MPL"];
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#[crate_id = "github.com/mozilla/servo#util:0.1"];
|
||||
#[crate_type = "lib"];
|
||||
#[crate_type = "dylib"];
|
||||
#[crate_type = "rlib"];
|
||||
|
||||
#[feature(macro_rules, managed_boxes)];
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit caf03d371cb99c9c72a7127114d8f5365a02eb06
|
||||
Subproject commit 5196a2a58249ac5cfb0a24418dc628551883c807
|
|
@ -1 +1 @@
|
|||
Subproject commit 38cc35371a88f6240cd4b35205b2ec8b6703f13a
|
||||
Subproject commit 700b07bd663c6559326ef7126886e200aa3b0ab1
|
|
@ -1 +1 @@
|
|||
Subproject commit be49cbc2d5455744c7951b07160f0d29fed23641
|
||||
Subproject commit 6050ecb8e884b4eba1155dacb29d1c9567886c23
|
|
@ -1 +1 @@
|
|||
Subproject commit c422c3ca200da371d73af2246b62e6d7c40125e2
|
||||
Subproject commit 9c2a78f3c43d3b52391b94aa43dc61d6bddab50b
|
|
@ -1 +1 @@
|
|||
Subproject commit 064e33d8217424a33636c8019b1f1f74a44ee2bb
|
||||
Subproject commit b00422e963694f7e46fe551a089b198badea5e1f
|
Loading…
Add table
Add a link
Reference in a new issue