diff --git a/Makefile.in b/Makefile.in index 9bf8fe98b48..48a12933105 100644 --- a/Makefile.in +++ b/Makefile.in @@ -116,11 +116,15 @@ rust: $(CFG_RUSTC) # Strip off submodule paths to determine "raw" submodule names. SUBMODULES=$(shell echo $(CFG_SUBMODULES) | perl -p -e 's![A-Za-z0-9_-]+/!!g') +SUBMODULES_RUSTPKG=$(shell echo $(CFG_SUBMODULES_RUSTPKG) | perl -p -e 's![A-Za-z0-9_-]+/!!g') -# Define e.g. PATH_rust-io-surface = platform/macos/rust-io-surface +# Define e.g. PATH_skia = support/skia/skia $(foreach submodule,$(CFG_SUBMODULES),\ $(eval PATH_$(shell echo $(submodule) | perl -p -e 's![A-Za-z0-9_-]+/!!g') = $(submodule))) +$(foreach submodule,$(CFG_SUBMODULES_RUSTPKG),\ +$(eval PATH_$(shell echo $(submodule) | perl -p -e 's![A-Za-z0-9_-]+/!!g') = $(submodule))) + define DEF_SUBMODULE_VARS #defaults @@ -128,7 +132,7 @@ DEPS_$(1) = CFLAGS_$(1) = -O2 #if global cflags set, inherit that -ifneq ($$(CFLAGS),) +ifdef CFLAGS CFLAGS_$(1) = $$(CFLAGS) endif @@ -142,37 +146,49 @@ DEPS_SUBMODULES += $$(PATH_$(1))/.libs DEPS_SUBMODULES += $$(PATH_$(1))/src/.libs endef +DEPS_RUSTPKG = $(CFG_BUILD_HOME)workspace/lib/$(CFG_TARGET_TRIPLES) + # these will get populated. DEPS_SUBMODULES = $(foreach submodule,$(SUBMODULES),\ $(eval $(call DEF_SUBMODULE_VARS,$(submodule)))) +$(foreach submodule,$(SUBMODULES_RUSTPKG),\ +$(eval DONE_$(submodule) = $(DEPS_RUSTPKG)/lib$(submodule)*)) + +# Handle rust submodule vars specially +DONE_rust = $(CFG_RUSTC) + # include submodule dependencies configuration include $(S)mk/sub.mk +# Define how to compute approximate submodule dependencies. +# TODO: this may be a bit brutish, but is there a better way? +define DEF_SUBMODULE_DEPS +ROUGH_DEPS_$(1)=$$(call rwildcard,$$(S)src/$$(PATH_$(1)),*h *c *cpp *rs *rc) +DONE_DEPS_$(1)=$$(foreach dep,$$(DEPS_$(1)),$$(DONE_$$(dep))) +# the main target for a submodule +endef + # Define how to make submodule targets define DEF_SUBMODULE_RULES -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) +ENV_RLDFLAGS_$(1) = -L $$(CFG_BUILD_HOME)workspace/lib/$$(CFG_TARGET_TRIPLES) +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))" ENV_RFLAGS_$(1) = RUSTFLAGS="$$(strip $$(CFG_RUSTC_FLAGS)) $$(ENV_RLDFLAGS_$(1))" -# use a rough approximation of submodule dependencies to trigger calling submodule make -# whenever a submodule changes -# TODO: this may be a bit brutish, but is there a better way? -ROUGH_DEPS_$(1)=$$(call rwildcard,$$(S)src/$$(PATH_$(1)),*h *c *cpp *rs *rc) -DONE_DEPS_$(1)=$$(foreach dep,$$(DEPS_$(1)),$$(DONE_$$(dep))) -# the main target for a submodule -# -- - # Native builds do not depend on the rust compiler, so we can build them in parallel with rustc +RUSTC_DEP_$(1)= ifneq "$$(filter $(1),$$(NATIVE_BUILDS))" "$(1)" RUSTC_DEP_$(1)=$$(CFG_RUSTC) endif +$(eval $(call DEF_SUBMODULE_DEPS,$(1))) + $$(DONE_$(1)) : $$(DONE_DEPS_$(1)) $$(ROUGH_DEPS_$(1)) $$(RUSTC_DEP_$(1)) # @$$(call E, make: $(1)) # @$$(call E, $(1) deps= $$(DEPS_$(1))) @@ -180,7 +196,6 @@ $$(DONE_$(1)) : $$(DONE_DEPS_$(1)) $$(ROUGH_DEPS_$(1)) $$(RUSTC_DEP_$(1)) # @$$(call E, $(1) cflags= $$(ENV_CFLAGS_$(1))) # @$$(call E, $(1) cxxflags= $$(ENV_CXXFLAGS_$(1))) # @$$(call E, $(1) rflags= $$(ENV_RFLAGS_$(1))) - $$(Q) \ $$(ENV_CFLAGS_$(1)) \ $$(ENV_CXXFLAGS_$(1)) \ @@ -195,46 +210,53 @@ endef $(foreach submodule,$(SUBMODULES),\ $(eval $(call DEF_SUBMODULE_RULES,$(submodule)))) -DONE_SUBMODULES = $(foreach submodule,$(SUBMODULES),$(DONE_$(submodule))) +# include rustpkg rules +include $(S)mk/rustpkg.mk -RFLAGS_util = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) +$(foreach submodule,$(SUBMODULES_RUSTPKG),\ +$(eval $(call DEF_SUBMODULE_RUSTPKG_RULES,$(submodule)))) + +DONE_SUBMODULES = $(foreach submodule,$(SUBMODULES),$(DONE_$(submodule))) +DONE_SUBMODULES_RUSTPKG = $(foreach submodule,$(SUBMODULES_RUSTPKG),$(DONE_$(submodule))) + +RFLAGS_util = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(DEPS_RUSTPKG) SRC_util = $(call rwildcard,$(S)src/components/util/,*.rs) CRATE_util = $(S)src/components/util/util.rc DONE_util = $(B)src/components/util/libutil.dummy -DEPS_util = $(CRATE_util) $(SRC_util) $(DONE_SUBMODULES) +DEPS_util = $(CRATE_util) $(SRC_util) $(DONE_SUBMODULES) $(DONE_SUBMODULES_RUSTPKG) | $(SUBMODULES_RUSTPKG) -RFLAGS_net = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util +RFLAGS_net = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util -L $(DEPS_RUSTPKG) SRC_net = $(call rwildcard,$(S)src/components/net/,*.rs) CRATE_net = $(S)src/components/net/net.rc DONE_net = $(B)src/components/net/libnet.dummy -DEPS_net = $(CRATE_net) $(SRC_net) $(DONE_SUBMODULES) $(DONE_util) +DEPS_net = $(CRATE_net) $(SRC_net) $(DONE_SUBMODULES) $(DONE_util) $(DONE_SUBMODULES_RUSTPKG) | $(SUBMODULES_RUSTPKG) -RFLAGS_msg = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) +RFLAGS_msg = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(DEPS_RUSTPKG) SRC_msg = $(call rwildcard,$(S)src/components/msg/,*.rs) CRATE_msg = $(S)src/components/msg/msg.rc DONE_msg = $(B)src/components/msg/libmsg.dummy -DEPS_msg = $(CRATE_msg) $(SRC_msg) $(DONE_SUBMODULES) +DEPS_msg = $(CRATE_msg) $(SRC_msg) $(DONE_SUBMODULES) $(DONE_SUBMODULES_RUSTPKG) | $(SUBMODULES_RUSTPKG) -RFLAGS_gfx = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util -L $(B)src/components/style -L $(B)src/components/net -L $(B)src/components/msg +RFLAGS_gfx = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util -L $(B)src/components/style -L $(B)src/components/net -L $(B)src/components/msg -L $(DEPS_RUSTPKG) SRC_gfx = $(call rwildcard,$(S)src/components/gfx/,*.rs) CRATE_gfx = $(S)src/components/gfx/gfx.rc DONE_gfx = $(B)src/components/gfx/libgfx.dummy -DEPS_gfx = $(CRATE_gfx) $(SRC_gfx) $(DONE_SUBMODULES) $(DONE_util) $(DONE_style) $(DONE_net) $(DONE_msg) +DEPS_gfx = $(CRATE_gfx) $(SRC_gfx) $(DONE_SUBMODULES) $(DONE_util) $(DONE_style) $(DONE_net) $(DONE_msg) $(DONE_SUBMODULES_RUSTPKG) | $(SUBMODULES_RUSTPKG) -RFLAGS_script = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util -L $(B)src/components/style -L $(B)src/components/net -L $(B)src/components/msg +RFLAGS_script = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util -L $(B)src/components/style -L $(B)src/components/net -L $(B)src/components/msg -L $(DEPS_RUSTPKG) WEBIDL_script = $(call rwildcard,$(S)src/components/script/,*.webidl) AUTOGEN_SRC_script = $(patsubst %.webidl, %Binding.rs, $(WEBIDL_script)) SRC_script = $(call rwildcard,$(S)src/components/script/,*.rs) $(AUTOGEN_SRC_script) CRATE_script = $(S)src/components/script/script.rc DONE_script = $(B)src/components/script/libscript.dummy -DEPS_script = $(CRATE_script) $(SRC_script) $(DONE_SUBMODULES) $(DONE_util) $(DONE_style) $(DONE_net) $(DONE_msg) +DEPS_script = $(CRATE_script) $(SRC_script) $(DONE_SUBMODULES) $(DONE_util) $(DONE_style) $(DONE_net) $(DONE_msg) $(DONE_SUBMODULES_RUSTPKG) | $(SUBMODULES_RUSTPKG) -RFLAGS_style = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util +RFLAGS_style = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util -L $(DEPS_RUSTPKG) MAKO_ZIP = $(S)src/components/style/Mako-0.8.1.zip MAKO_style = $(S)src/components/style/properties.rs MAKO_SRC_style = $(MAKO_style).mako @@ -242,14 +264,21 @@ SRC_style = $(call rwildcard,$(S)src/components/style/,*.rs) $(MAKO_style) CRATE_style = $(S)src/components/style/style.rc DONE_style = $(B)src/components/style/libstyle.dummy -DEPS_style = $(CRATE_style) $(SRC_style) $(DONE_SUBMODULES) $(DONE_util) +DEPS_style = $(CRATE_style) $(SRC_style) $(DONE_SUBMODULES) $(DONE_util) | $(SUBMODULES_RUSTPKG) -RFLAGS_servo = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/gfx -L $(B)src/components/util -L $(B)src/components/net -L $(B)src/components/script -L $(B)src/components/style -L $(B)src/components/msg +RFLAGS_servo = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/gfx -L $(B)src/components/util -L $(B)src/components/net -L $(B)src/components/script -L $(B)src/components/style -L $(B)src/components/msg -L $(DEPS_RUSTPKG) SRC_servo = $(call rwildcard,$(S)src/components/main/,*.rs) CRATE_servo = $(S)src/components/main/servo.rc -DEPS_servo = $(CRATE_servo) $(SRC_servo) $(DONE_SUBMODULES) $(DONE_util) $(DONE_gfx) $(DONE_script) $(DONE_style) $(DONE_net) $(DONE_msg) +DEPS_servo = $(CRATE_servo) $(SRC_servo) $(DONE_SUBMODULES) $(DONE_util) $(DONE_gfx) $(DONE_script) $(DONE_net) $(DONE_msg) $(DONE_style) $(DONE_SUBMODULES_RUSTPKG) | $(SUBMODULES_RUSTPKG) + +SERVO_LIB_CRATES = util net msg gfx script style + +# rules that depend on having correct meta-target vars (DEPS_CLEAN, DEPS_servo, etc) +# and SERVO_LIB_CRATES +include $(S)mk/check.mk +include $(S)mk/clean.mk .DEFAULT_GOAL := all .PHONY: all @@ -257,8 +286,6 @@ all: servo # Servo helper libraries -SERVO_LIB_CRATES = util net msg gfx script style - define DEF_LIB_CRATE_RULES $$(DONE_$(1)): $$(DEPS_$(1)) @$$(call E, compile: $$@) @@ -268,11 +295,6 @@ endef $(foreach lib_crate,$(SERVO_LIB_CRATES),\ $(eval $(call DEF_LIB_CRATE_RULES,$(lib_crate)))) -# rules that depend on having correct meta-target vars (DEPS_CLEAN, DEPS_servo, etc) -# and SERVO_LIB_CRATES -include $(S)mk/check.mk -include $(S)mk/clean.mk - BINDINGS_SRC = $(S)/src/components/script/dom/bindings/codegen CACHE_DIR = $(BINDINGS_SRC)/_cache diff --git a/configure b/configure index 98b36b87201..ec19c62f85c 100755 --- a/configure +++ b/configure @@ -399,6 +399,7 @@ probe CFG_CLANG clang++ CFG_BUILD_DIR="${CFG_BUILD_HOME}${CFG_TARGET_TRIPLES}/" make_dir "${CFG_BUILD_DIR}" +make_dir "${CFG_BUILD_HOME}/workspace/src" if [ ! -z "$CFG_LOCAL_RUST_ROOT" ] then @@ -407,6 +408,7 @@ then LRV=`${CFG_LOCAL_RUST_ROOT}/bin/rustc --version` step_msg "using rustc at: ${CFG_LOCAL_RUST_ROOT} with version: $LRV" CFG_RUSTC=${CFG_LOCAL_RUST_ROOT}/bin/rustc + CFG_RUSTPKG=${CFG_LOCAL_RUST_ROOT}/bin/rustpkg CFG_RUST_HOME=${CFG_LOCAL_RUST_ROOT} CFG_LOCAL_RUSTC=1 else @@ -416,6 +418,7 @@ else step_msg "using in-tree rust compiler" # The Rust compiler we're going to build CFG_RUSTC="${CFG_BUILD_DIR}src/compiler/rust/${DEFAULT_TARGET_TRIPLE}/stage2/bin/rustc" + CFG_RUSTPKG="${CFG_BUILD_DIR}src/compiler/rust/${DEFAULT_TARGET_TRIPLE}/stage2/bin/rustpkg" CFG_RUST_HOME="${CFG_BUILD_DIR}src/compiler/rust/${DEFAULT_TARGET_TRIPLE}/stage2" fi @@ -482,21 +485,23 @@ then done fi +CFG_SUBMODULES_RUSTPKG="\ + support/geom/rust-geom \ + support/layers/rust-layers \ + support/opengles/rust-opengles \ + support/sharegl/sharegl" + CFG_SUBMODULES="\ support/alert/rust-alert \ support/azure/rust-azure \ support/css/rust-cssparser \ - support/geom/rust-geom \ support/harfbuzz/rust-harfbuzz \ support/http/rust-http \ support/hubbub/libhubbub \ support/hubbub/rust-hubbub \ - support/layers/rust-layers \ support/libparserutils/libparserutils \ support/nss/nspr \ support/nss/nss \ - support/opengles/rust-opengles \ - support/sharegl/sharegl \ support/skia/skia \ support/spidermonkey/mozjs \ support/spidermonkey/rust-mozjs \ @@ -506,25 +511,29 @@ CFG_SUBMODULES="\ if [ $CFG_OSTYPE = "apple-darwin" ] then -CFG_SUBMODULES="\ - support/glfw/glfw \ - support/glfw/glfw-rs \ - platform/macos/rust-cocoa \ +CFG_SUBMODULES_RUSTPKG="\ platform/macos/rust-core-foundation \ platform/macos/rust-core-graphics \ platform/macos/rust-core-text \ platform/macos/rust-io-surface \ + ${CFG_SUBMODULES_RUSTPKG}" +CFG_SUBMODULES="\ + support/glfw/glfw \ + support/glfw/glfw-rs \ + platform/macos/rust-cocoa \ ${CFG_SUBMODULES}" fi if [ $CFG_OSTYPE = "unknown-linux-gnu" ] then +CFG_SUBMODULES_RUSTPKG="\ + platform/linux/rust-xlib \ + ${CFG_SUBMODULES_RUSTPKG}" CFG_SUBMODULES="\ support/glfw/glfw \ support/glfw/glfw-rs \ platform/linux/rust-fontconfig \ platform/linux/rust-freetype \ - platform/linux/rust-xlib \ ${CFG_SUBMODULES}" fi @@ -550,8 +559,10 @@ putvar CFG_BUILD_HOME putvar CFG_BUILD_DIR putvar CFG_CONFIGURE_ARGS putvar CFG_SUBMODULES +putvar CFG_SUBMODULES_RUSTPKG putvar CFG_DISABLE_MANAGE_SUBMODULES putvar CFG_RUSTC +putvar CFG_RUSTPKG putvar CFG_RUSTC_FLAGS putvar CFG_RUST_HOME putvar CFG_PATH diff --git a/mk/clean.mk b/mk/clean.mk index ccb37f9a7a2..d76b3ada1e2 100644 --- a/mk/clean.mk +++ b/mk/clean.mk @@ -49,7 +49,7 @@ clean-style: @$(call E, "cleaning style") $(Q)cd $(B)/src/components/style/ && rm -rf libstyle*.dylib libstyle*.dSYM libstyle*.so $(DONE_style) -clean-servo: clean-gfx clean-util clean-net clean-script clean-msg +clean-servo: clean-gfx clean-util clean-net clean-script clean-msg clean-style @$(call E, "cleaning servo") $(Q)rm -f servo servo-test $(foreach lib_crate,$(SERVO_LIB_CRATES),servo-test-$(lib_crate)) libservo*.so $(Q)cd $(BINDINGS_SRC) && rm -f *.pkl diff --git a/mk/rustpkg.mk b/mk/rustpkg.mk new file mode 100644 index 00000000000..2088f03ac7e --- /dev/null +++ b/mk/rustpkg.mk @@ -0,0 +1,36 @@ +EMPTY= +SPACE=$(EMPTY) $(EMPTY) + +define DEF_SUBMODULE_RUSTPKG_RULES + +$(eval $(call DEF_SUBMODULE_DEPS,$(1))) + +$(1) : $$(DONE_$(1)) +.PHONY : $(1) + +DO_CLEAN_$(1) = rm -rf $$(DONE_$(1)) $(CFG_BUILD_HOME)/workspace/build/$(CFG_TARGET_TRIPLES)/$(1) + +EXTRA_RFLAGS_$(1) = + +ifeq ($(shell uname -s),Darwin) +ifeq ($(shell sw_vers | grep -c 10.6),1) +EXTRA_RFLAGS_$(1) += --cfg mac_10_6 +endif +ifeq ($(shell sw_vers | grep -c 10.7),1) +EXTRA_RFLAGS_$(1) += --cfg mac_10_7 +endif +else +endif + +clean-$(1) : + $$(Q) $$(DO_CLEAN_$(1)) +.PHONY : clean-$(1) + +# Need to clean otherwise rustpkg won't rebuild. +$$(DONE_$(1)) : $$(DONE_rust) $$(DONE_DEPS_$(1)) $$(ROUGH_DEPS_$(1)) + $$(Q) $$(DO_CLEAN_$(1)) + $$(Q) RUST_PATH=$(CFG_BUILD_HOME)workspace:$(subst $(SPACE),:,$(foreach submodule,$(strip $(CFG_SUBMODULES_RUSTPKG)),$(S)src/$(submodule))) \ + $(CFG_RUSTPKG) --rust-path-hack install $(CFG_RUSTC_FLAGS) $$(EXTRA_RFLAGS_$(1)) $(1) + +endef + diff --git a/src/components/gfx/gfx.rc b/src/components/gfx/gfx.rc index e803ccd2192..4e882ba57b4 100644 --- a/src/components/gfx/gfx.rc +++ b/src/components/gfx/gfx.rc @@ -12,8 +12,8 @@ extern mod azure; extern mod extra; -extern mod geom; -extern mod layers; +extern mod geom = "rust-geom"; +extern mod layers = "rust-layers"; extern mod stb_image; extern mod servo_net (name = "net"); extern mod servo_util (name = "util"); @@ -29,9 +29,9 @@ extern mod harfbuzz; #[cfg(target_os="linux")] #[cfg(target_os="android")] extern mod freetype; // Mac OS-specific library dependencies -#[cfg(target_os="macos")] extern mod core_foundation; -#[cfg(target_os="macos")] extern mod core_graphics; -#[cfg(target_os="macos")] extern mod core_text; +#[cfg(target_os="macos")] extern mod core_foundation = "rust-core-foundation"; +#[cfg(target_os="macos")] extern mod core_graphics = "rust-core-graphics"; +#[cfg(target_os="macos")] extern mod core_text = "rust-core-text"; pub use gfx_font = font; pub use gfx_font_context = font_context; diff --git a/src/components/gfx/platform/macos/font.rs b/src/components/gfx/platform/macos/font.rs index 9705bb29822..884d71e7064 100644 --- a/src/components/gfx/platform/macos/font.rs +++ b/src/components/gfx/platform/macos/font.rs @@ -4,9 +4,9 @@ /// Implementation of Quartz (CoreGraphics) fonts. -extern mod core_foundation; -extern mod core_graphics; -extern mod core_text; +extern mod core_foundation = "rust-core-foundation"; +extern mod core_graphics = "rust-core-graphics"; +extern mod core_text = "rust-core-text"; use font::{CSSFontWeight, FontHandleMethods, FontMetrics, FontTableMethods}; use font::{FontTableTag, FontWeight100, FontWeight200, FontWeight300, FontWeight400}; @@ -23,13 +23,13 @@ use core_foundation::string::UniChar; use core_graphics::data_provider::CGDataProvider; use core_graphics::font::{CGFont, CGGlyph}; use core_graphics::geometry::CGRect; -use core_graphics; -use core_text::font::{CTFont, CTFontMethods, CTFontMethodsPrivate}; +use core_text::font::CTFont; use core_text::font_descriptor::{SymbolicTraitAccessors, TraitAccessors}; use core_text::font_descriptor::{kCTFontDefaultOrientation}; use core_text; use std::ptr; +use std::vec; pub struct FontTable { data: CFData, @@ -48,7 +48,7 @@ impl FontTable { impl FontTableMethods for FontTable { fn with_buffer(&self, blk: &fn(*u8, uint)) { - blk(self.data.bytes(), self.data.len()); + blk(vec::raw::to_ptr(self.data.bytes()), self.data.len() as uint); } } @@ -80,11 +80,8 @@ impl FontHandle { impl FontHandleMethods for FontHandle { fn new_from_buffer(_: &FontContextHandle, buf: ~[u8], style: &SpecifiedFontStyle) -> Result { - let fontprov : CGDataProvider = do buf.as_imm_buf |cbuf, len| { - core_graphics::data_provider::new_from_buffer(cbuf, len) - }; - - let cgfont = core_graphics::font::create_with_data_provider(&fontprov); + let fontprov = CGDataProvider::from_buffer(buf); + let cgfont = CGFont::from_data_provider(fontprov); let ctfont = core_text::font::new_from_CGFont(&cgfont, style.pt_size); let result = Ok(FontHandle { diff --git a/src/components/gfx/platform/macos/font_list.rs b/src/components/gfx/platform/macos/font_list.rs index 6b6fc33bdc5..d1533aca166 100644 --- a/src/components/gfx/platform/macos/font_list.rs +++ b/src/components/gfx/platform/macos/font_list.rs @@ -8,12 +8,12 @@ use font_list::{FontEntry, FontFamily, FontFamilyMap}; use platform::macos::font::FontHandle; use platform::macos::font_context::FontContextHandle; -use core_foundation::array::CFArray; -use core_foundation::base::CFWrapper; +use core_foundation::base::TCFType; use core_foundation::string::{CFString, CFStringRef}; -use core_text::font_collection::CTFontCollectionMethods; use core_text; +use core_text::font_descriptor::{CTFontDescriptor, CTFontDescriptorRef}; +use std::cast; use std::hashmap::HashMap; pub struct FontListHandle { @@ -28,10 +28,12 @@ impl FontListHandle { } pub fn get_available_families(&self) -> FontFamilyMap { - let family_names: CFArray = core_text::font_collection::get_family_names(); + let family_names = core_text::font_collection::get_family_names(); let mut family_map: FontFamilyMap = HashMap::new(); for strref in family_names.iter() { - let family_name = CFString::wrap_shared(strref).to_str(); + let family_name_ref: CFStringRef = unsafe { cast::transmute(strref) }; + let family_name_cf: CFString = unsafe { TCFType::wrap_under_get_rule(family_name_ref) }; + let family_name = family_name_cf.to_str(); debug!("Creating new FontFamily for family: {:s}", family_name); let new_family = @mut FontFamily::new(family_name); @@ -46,7 +48,8 @@ impl FontListHandle { let family_collection = core_text::font_collection::create_for_family(family.family_name); let family_descriptors = family_collection.get_descriptors(); for descref in family_descriptors.iter() { - let desc = CFWrapper::wrap_shared(descref); + let descref: CTFontDescriptorRef = unsafe { cast::transmute(descref) }; + let desc: CTFontDescriptor = unsafe { TCFType::wrap_under_get_rule(descref) }; let font = core_text::font::new_from_descriptor(&desc, 0.0); let handle = FontHandle::new_from_CTFont(&self.fctx, font).unwrap(); diff --git a/src/components/main/servo.rc b/src/components/main/servo.rc index dfe78f8c082..227bae8ab2a 100755 --- a/src/components/main/servo.rc +++ b/src/components/main/servo.rc @@ -15,16 +15,15 @@ extern mod alert; extern mod azure; -extern mod geom; +extern mod geom = "rust-geom"; extern mod gfx (name = "gfx"); #[cfg(not(target_os="android"))] extern mod glfw; -//extern mod http_client; #[cfg(target_os="android")] extern mod glut; extern mod js; -extern mod layers; -extern mod opengles; +extern mod layers = "rust-layers"; +extern mod opengles = "rust-opengles"; extern mod png; extern mod script; extern mod servo_net (name = "net"); @@ -36,11 +35,9 @@ extern mod stb_image; extern mod extra; #[cfg(target_os="macos")] -extern mod core_graphics; +extern mod core_graphics = "rust-core-graphics"; #[cfg(target_os="macos")] -extern mod core_text; -#[cfg(target_os="macos")] -extern mod io_surface; +extern mod core_text = "rust-core-text"; use compositing::{CompositorChan, CompositorTask}; use constellation::Constellation; diff --git a/src/components/msg/msg.rc b/src/components/msg/msg.rc index 3811f5bffa7..2cef8db14a2 100644 --- a/src/components/msg/msg.rc +++ b/src/components/msg/msg.rc @@ -10,14 +10,14 @@ extern mod azure; extern mod extra; -extern mod geom; -extern mod layers; +extern mod geom = "rust-geom"; +extern mod layers = "rust-layers"; extern mod std; #[cfg(target_os="macos")] -extern mod core_foundation; +extern mod core_foundation = "rust-core-foundation"; #[cfg(target_os="macos")] -extern mod io_surface; +extern mod io_surface = "rust-io-surface"; pub mod compositor_msg; pub mod constellation_msg; diff --git a/src/components/msg/platform/macos/surface.rs b/src/components/msg/platform/macos/surface.rs index 3bf5f9b5ab7..eee7d091317 100644 --- a/src/components/msg/platform/macos/surface.rs +++ b/src/components/msg/platform/macos/surface.rs @@ -8,7 +8,6 @@ use platform::surface::NativeSurfaceAzureMethods; use azure::AzSkiaGrGLSharedSurfaceRef; -use core_foundation::base::CFWrapper; use io_surface::IOSurface; use layers::platform::surface::NativeSurface; use std::cast; @@ -17,7 +16,7 @@ impl NativeSurfaceAzureMethods for NativeSurface { fn from_azure_surface(surface: AzSkiaGrGLSharedSurfaceRef) -> NativeSurface { unsafe { let io_surface = IOSurface { - contents: CFWrapper::wrap_owned(cast::transmute(surface)), + obj: cast::transmute(surface), }; NativeSurface::from_io_surface(io_surface) } diff --git a/src/components/net/net.rc b/src/components/net/net.rc index b8df8855e31..677448b5be6 100644 --- a/src/components/net/net.rc +++ b/src/components/net/net.rc @@ -10,7 +10,7 @@ #[feature(globs, managed_boxes)]; -extern mod geom; +extern mod geom = "rust-geom"; extern mod http; extern mod servo_util (name = "util"); extern mod stb_image; diff --git a/src/components/script/script.rc b/src/components/script/script.rc index a2dee9a6943..874d8b1879c 100644 --- a/src/components/script/script.rc +++ b/src/components/script/script.rc @@ -13,7 +13,7 @@ #[feature(globs, macro_rules, struct_variant, managed_boxes)]; -extern mod geom; +extern mod geom = "rust-geom"; extern mod hubbub; extern mod js; extern mod servo_net (name = "net"); diff --git a/src/components/util/util.rc b/src/components/util/util.rc index fd2110c839e..5a7fddbb51f 100644 --- a/src/components/util/util.rc +++ b/src/components/util/util.rc @@ -11,7 +11,7 @@ #[feature(macro_rules, managed_boxes)]; extern mod extra; -extern mod geom; +extern mod geom = "rust-geom"; pub mod cache; pub mod geometry; diff --git a/src/platform/linux/rust-xlib b/src/platform/linux/rust-xlib index 71ca7ff52c7..4466b6fb89f 160000 --- a/src/platform/linux/rust-xlib +++ b/src/platform/linux/rust-xlib @@ -1 +1 @@ -Subproject commit 71ca7ff52c7f342c95608c00bb0823aa8f39cd34 +Subproject commit 4466b6fb89ffd45222176d9381c19aa474ef8a33 diff --git a/src/platform/macos/rust-cocoa b/src/platform/macos/rust-cocoa index aeb2040fa5f..809e031c6c4 160000 --- a/src/platform/macos/rust-cocoa +++ b/src/platform/macos/rust-cocoa @@ -1 +1 @@ -Subproject commit aeb2040fa5f7f1ca8bafdf88df253693ba18415b +Subproject commit 809e031c6c423655e3731c15295fb5f6eead53b2 diff --git a/src/platform/macos/rust-core-foundation b/src/platform/macos/rust-core-foundation index b5ddb54271a..b41b972fbd6 160000 --- a/src/platform/macos/rust-core-foundation +++ b/src/platform/macos/rust-core-foundation @@ -1 +1 @@ -Subproject commit b5ddb54271a9f783dce5c966cc2a39f0e52b1e68 +Subproject commit b41b972fbd67f2fba966753d67e735c0431d1cf2 diff --git a/src/platform/macos/rust-core-graphics b/src/platform/macos/rust-core-graphics index 747fb760771..5439c904951 160000 --- a/src/platform/macos/rust-core-graphics +++ b/src/platform/macos/rust-core-graphics @@ -1 +1 @@ -Subproject commit 747fb760771f07038267ae842a6fa1cb35586429 +Subproject commit 5439c904951dcb9435e9c52fb0e53a1d853c5850 diff --git a/src/platform/macos/rust-core-text b/src/platform/macos/rust-core-text index 63982184a34..c046cbbd346 160000 --- a/src/platform/macos/rust-core-text +++ b/src/platform/macos/rust-core-text @@ -1 +1 @@ -Subproject commit 63982184a34edfbf70d436cc6a37b325b4c7a827 +Subproject commit c046cbbd346cc5abead05d17b0f1669110c1cb3e diff --git a/src/platform/macos/rust-io-surface b/src/platform/macos/rust-io-surface index a4bd491ddfd..1cb5c927429 160000 --- a/src/platform/macos/rust-io-surface +++ b/src/platform/macos/rust-io-surface @@ -1 +1 @@ -Subproject commit a4bd491ddfd5d17bdcb228cf515cce776e2b8239 +Subproject commit 1cb5c9274291d97d87648ced60510f30c54f94a1 diff --git a/src/support/alert/rust-alert b/src/support/alert/rust-alert index 78a250ecd13..a9fd3aa3ca7 160000 --- a/src/support/alert/rust-alert +++ b/src/support/alert/rust-alert @@ -1 +1 @@ -Subproject commit 78a250ecd133d65c9ac46650fe68aab0dc75e467 +Subproject commit a9fd3aa3ca7eba68f4bcd8906e281f27b78fda38 diff --git a/src/support/azure/rust-azure b/src/support/azure/rust-azure index 10aee62cc9f..13fbdbeddfc 160000 --- a/src/support/azure/rust-azure +++ b/src/support/azure/rust-azure @@ -1 +1 @@ -Subproject commit 10aee62cc9f7b47b57fb56acc760af93e4e48005 +Subproject commit 13fbdbeddfccbc3e451fa9ae47f334f4f626a051 diff --git a/src/support/geom/rust-geom b/src/support/geom/rust-geom index 7fa173a0741..83f47c9b312 160000 --- a/src/support/geom/rust-geom +++ b/src/support/geom/rust-geom @@ -1 +1 @@ -Subproject commit 7fa173a07414f4e1bcf3419079d5b812195acc2d +Subproject commit 83f47c9b3129fed40ae9680d84dade478f331745 diff --git a/src/support/glut/rust-glut b/src/support/glut/rust-glut index 2550ff84238..3626d203319 160000 --- a/src/support/glut/rust-glut +++ b/src/support/glut/rust-glut @@ -1 +1 @@ -Subproject commit 2550ff84238a9b063a920eb41766f84062593b56 +Subproject commit 3626d203319a4d12ac68fecee11e18850e180e78 diff --git a/src/support/layers/rust-layers b/src/support/layers/rust-layers index d2cde75d928..c86eaa809c9 160000 --- a/src/support/layers/rust-layers +++ b/src/support/layers/rust-layers @@ -1 +1 @@ -Subproject commit d2cde75d928572e665942732f0cad4a35faf4182 +Subproject commit c86eaa809c906d70aef4f3af0ac9f7377cc8e8ca diff --git a/src/support/opengles/rust-opengles b/src/support/opengles/rust-opengles index 90152e93e02..0d470981726 160000 --- a/src/support/opengles/rust-opengles +++ b/src/support/opengles/rust-opengles @@ -1 +1 @@ -Subproject commit 90152e93e0277106e7a21dd2c5cc287efe0da053 +Subproject commit 0d47098172620e4e10d1639732c9755eb9956e0f diff --git a/src/support/sharegl/sharegl b/src/support/sharegl/sharegl index 1867a2b938f..b80b6cd976a 160000 --- a/src/support/sharegl/sharegl +++ b/src/support/sharegl/sharegl @@ -1 +1 @@ -Subproject commit 1867a2b938f459815935c099d3aa88eac594fd30 +Subproject commit b80b6cd976a75a329abbed72a0c999797a20f5a9