diff --git a/patch/all/build/xpidl-makefile.sh b/patch/all/build/xpidl-makefile.sh new file mode 100644 index 0000000000000000000000000000000000000000..368350d9fe4a8ecbb56d67cc296d4425054e6e46 --- /dev/null +++ b/patch/all/build/xpidl-makefile.sh @@ -0,0 +1,3 @@ +MYLOC=$(dirname ${BASH_SOURCE[0]}) +cp ${MYLOC}/xpidl.mk core/ +git_add core/xpidl.mk diff --git a/patch/all/build/xpidl.mk b/patch/all/build/xpidl.mk new file mode 100644 index 0000000000000000000000000000000000000000..347e9bf5dd3534d4444cc8c58a9229974441b4fa --- /dev/null +++ b/patch/all/build/xpidl.mk @@ -0,0 +1,99 @@ + +# +# Makefile to hook into Android.mk for building XPCOM IDLs +# and typelibs, along with installing build artifacts into Gecko +# + +ifneq ($(LOCAL_XPCOM_IDLS),) + +XPIDL_MODULE := $(LOCAL_MODULE) +# The directory where this component's intermediates will be put by Android build system +XPIDL_MODULE_OBJDIR := $(TARGET_OUT_INTERMEDIATES)/SHARED_LIBRARIES/$(XPIDL_MODULE)_intermediates +# The directory where all the objs generated by idl compilation will go +XPIDL_OUT := $(XPIDL_MODULE_OBJDIR)/xpidl_obj + +# Home directory of the module source +XPIDL_PATH := $(LOCAL_PATH) + +# Make sure Gecko is built prior to the component +LOCAL_REQUIRED_MODULES := $(LOCAL_REQUIRED_MODULES) gecko + +# Add Gecko headers to include path +LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) $(ANDROID_PRODUCT_OUT)/obj/objdir-gecko/dist/include +# Standard libraries required by all XPCOM components +LOCAL_SHARED_LIBRARIES := $(LOCAL_SHARED_LIBRARIES) libxpcom +LOCAL_STATIC_LIBRARIES := $(LOCAL_STATIC_LIBRARIES) libxpcomglue_s libmozalloc +# Gecko locations +GECKO_DIR := $(ANDROID_BUILD_TOP)/gecko +GECKO_OBJDIR := $(ANDROID_PRODUCT_OUT)/obj/objdir-gecko +LIBXUL_DIST := $(GECKO_OBJDIR)/dist + +# Flags to be used by idl compilation +XPIDL_FLAGS := -I$(XPIDL_PATH) -I$(LIBXUL_DIST)/idl + +xpidl_prereqs: + @mkdir -p $(XPIDL_OUT) + +XPIDL_DEPS := $(TARGET_OUT_INTERMEDIATES)/lib/libxpcom.so \ + $(LIBXUL_DIST)/sdk/bin/header.py \ + $(LIBXUL_DIST)/sdk/bin/typelib.py \ + $(LIBXUL_DIST)/sdk/bin/xpidl.py \ + +PLY_INCLUDE := -I$(GECKO_DIR)/other-licenses/ply + +# When used within make target rule, prints out the +# filename of the first dependency +REPORT_BUILD = @echo $(notdir $<) + +# When used within make target rule, expands the first pre-requisite +# to its absolute path. +CURRENT_IDLS = $(abspath $<) + +PYTHON := python +PYTHON_PATH := $(PYTHON) $(GECKO_DIR)/config/pythonpath.py +XPIDL_LINK := $(PYTHON) $(LIBXUL_DIST)/sdk/bin/xpt.py link +FINAL_TARGET := $(LIBXUL_DIST)/bin + +INSTALL := install +INSTALL_FLAGS := -m 644 + +# Make the module being built by Android.mk depend on the following: +# 1. The .h corresponding to the .idls found in the directory +# 2. The corresponding .xpt files +# 3. The overall module .xpt file +# 4. The export rules to copy idls and headers to $(LIBXUL_DIST) +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_ADDITIONAL_DEPENDENCIES) $(patsubst %.idl,$(XPIDL_OUT)/%.h,$(LOCAL_XPCOM_IDLS)) +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_ADDITIONAL_DEPENDENCIES) $(patsubst %.idl,$(XPIDL_OUT)/%.xpt,$(LOCAL_XPCOM_IDLS)) +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_ADDITIONAL_DEPENDENCIES) $(XPIDL_OUT)/$(XPIDL_MODULE).xpt +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_ADDITIONAL_DEPENDENCIES) export_headers export_idls + +$(XPIDL_OUT)/%.h: $(XPIDL_PATH)/%.idl $(XPIDL_DEPS) xpidl_prereqs + $(warning XPIDL_OUT: $(XPIDL_OUT), LOCAL_MODULE: $(LOCAL_MODULE)) + $(warning XPIDL_PATH is $(XPIDL_PATH)) + $(REPORT_BUILD) + $(PYTHON_PATH) $(PLY_INCLUDE) $(LIBXUL_DIST)/sdk/bin/header.py $(XPIDL_FLAGS) $(CURRENT_IDLS) -o $@ + +# generate intermediate .xpt files into $(XPIDL_OUT), then link +# into $(XPIDL_MODULE).xpt and export it to $(FINAL_TARGET)/components. +$(XPIDL_OUT)/%.xpt: $(XPIDL_PATH)/%.idl $(XPIDL_DEPS) xpidl_prereqs + $(REPORT_BUILD) + $(PYTHON_PATH) $(PLY_INCLUDE) -I$(GECKO_DIR)/xpcom/typelib/xpt/tools $(LIBXUL_DIST)/sdk/bin/typelib.py $(XPIDL_FLAGS) $(CURRENT_IDLS) -o $@ + +$(XPIDL_OUT)/$(XPIDL_MODULE).xpt: $(patsubst %.idl,$(XPIDL_OUT)/%.xpt,$(LOCAL_XPCOM_IDLS)) + $(XPIDL_LINK) $(XPIDL_OUT)/$(XPIDL_MODULE).xpt $(patsubst %.idl,$(XPIDL_OUT)/%.xpt,$(LOCAL_XPCOM_IDLS)) + $(INSTALL) $(INSTALL_FLAGS) $(XPIDL_OUT)/$(XPIDL_MODULE).xpt $(FINAL_TARGET)/components + @$(PYTHON) $(GECKO_DIR)/config/buildlist.py $(FINAL_TARGET)/components/interfaces.manifest "interfaces $(XPIDL_MODULE).xpt" + @$(PYTHON) $(GECKO_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "manifest components/interfaces.manifest" + @$(PYTHON) $(GECKO_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "manifest components/$(XPIDL_MODULE).manifest" + +include $(BUILD_SHARED_LIBRARY) + +# export .idl files to dist idl dir +export_idls: $(XPIDL_PATH)/$(LOCAL_XPCOM_IDLS) $(LIBXUL_DIST)/idl + $(INSTALL) $(INSTALL_FLAGS) $^ + +export_headers: $(XPIDL_OUT)/$(patsubst %.idl,%.h, $(LOCAL_XPCOM_IDLS)) $(LIBXUL_DIST)/include + $(INSTALL) $(INSTALL_FLAGS) $^ + + +endif # LOCAL_XPCOM_IDLS diff --git a/patch/all/gonk-misc/gonk-add-xpcom-libs.patch b/patch/all/gonk-misc/gonk-add-xpcom-libs.patch index 702942625a89a12dd2ff87d973be13789db6f5b4..e7f0133370165880fe94c0643bfa81b5394d8c34 100644 --- a/patch/all/gonk-misc/gonk-add-xpcom-libs.patch +++ b/patch/all/gonk-misc/gonk-add-xpcom-libs.patch @@ -1,19 +1,25 @@ diff --git a/Android.mk b/Android.mk -index ff70708..2e863ac 100644 +index 0d5315e..895e988 100644 --- a/Android.mk +++ b/Android.mk -@@ -96,6 +96,10 @@ GECKO_LIB_DEPS := \ +@@ -117,8 +117,16 @@ GECKO_LIB_DEPS := \ libsensorservice.so \ libsysutils.so \ ++$(TARGET_OUT_INTERMEDIATES)/lib/libxpcomglue_s.a: $(LOCAL_BUILT_MODULE) +$(TARGET_OUT_INTERMEDIATES)/STATIC_LIBRARIES/libxpcomglue_s_intermediates/libxpcomglue_s.a: $(LOCAL_BUILT_MODULE) ++$(TARGET_OUT_INTERMEDIATES)/lib/libxpcom.so: $(LOCAL_BUILT_MODULE) +$(TARGET_OUT_INTERMEDIATES)/SHARED_LIBRARIES/libxpcom_intermediates/libxpcom.so: $(LOCAL_BUILT_MODULE) ++$(TARGET_OUT_INTERMEDIATES)/lib/libmozalloc.a: $(LOCAL_BUILT_MODULE) +$(TARGET_OUT_INTERMEDIATES)/STATIC_LIBRARIES/libmozalloc_intermediates/libmozalloc.a: $(LOCAL_BUILT_MODULE) + .PHONY: $(LOCAL_BUILT_MODULE) $(LOCAL_BUILT_MODULE): $(TARGET_CRTBEGIN_DYNAMIC_O) $(TARGET_CRTEND_O) $(addprefix $(TARGET_OUT_SHARED_LIBRARIES)/,$(GECKO_LIB_DEPS)) ++ $(warning Building gecko) export CONFIGURE_ARGS="$(GECKO_CONFIGURE_ARGS)" && \ -@@ -112,4 +116,10 @@ $(LOCAL_BUILT_MODULE): $(TARGET_CRTBEGIN_DYNAMIC_O) $(TARGET_CRTEND_O) $(addpref + export GONK_PRODUCT="$(TARGET_DEVICE)" && \ + export TARGET_ARCH="$(TARGET_ARCH)" && \ +@@ -133,4 +141,13 @@ $(LOCAL_BUILT_MODULE): $(TARGET_CRTBEGIN_DYNAMIC_O) $(TARGET_CRTEND_O) $(addpref echo $(MAKE) -C $(GECKO_PATH) -f client.mk -s && \ $(MAKE) -C $(GECKO_PATH) -f client.mk -s && \ $(MAKE) -C $(GECKO_OBJDIR) package && \ @@ -21,7 +27,10 @@ index ff70708..2e863ac 100644 + mkdir -p $(@D) && cp $(GECKO_OBJDIR)/dist/b2g-*.tar.gz $@ && \ + mkdir -p $(TARGET_OUT_INTERMEDIATES)/STATIC_LIBRARIES/libxpcomglue_s_intermediates && \ + cp $(GECKO_OBJDIR)/dist/lib/libxpcomglue_s.a $(TARGET_OUT_INTERMEDIATES)/STATIC_LIBRARIES/libxpcomglue_s_intermediates/libxpcomglue_s.a && \ ++ cp $(GECKO_OBJDIR)/dist/lib/libxpcomglue_s.a $(TARGET_OUT_INTERMEDIATES)/lib/libxpcomglue_s.a && \ + mkdir -p $(TARGET_OUT_INTERMEDIATES)/SHARED_LIBRARIES/libxpcom_intermediates && \ + cp $(GECKO_OBJDIR)/dist/lib/libxpcom.so $(TARGET_OUT_INTERMEDIATES)/SHARED_LIBRARIES/libxpcom_intermediates/libxpcom.so && \ ++ cp $(GECKO_OBJDIR)/dist/lib/libxpcom.so $(TARGET_OUT_INTERMEDIATES)/lib/libxpcom.so && \ + mkdir -p $(TARGET_OUT_INTERMEDIATES)/STATIC_LIBRARIES/libmozalloc_intermediates && \ + cp $(GECKO_OBJDIR)/dist/lib/libmozalloc.a $(TARGET_OUT_INTERMEDIATES)/STATIC_LIBRARIES/libmozalloc_intermediates/libmozalloc.a ++ cp $(GECKO_OBJDIR)/dist/lib/libmozalloc.a $(TARGET_OUT_INTERMEDIATES)/lib/libmozalloc.a diff --git a/vendorsetup.sh b/vendorsetup.sh index 72fb8955011f5dbd93b0602778579b2dd8b67b3b..08226eee1d74ae030627cf00923e5f90afe9899b 100644 --- a/vendorsetup.sh +++ b/vendorsetup.sh @@ -161,7 +161,6 @@ __patch_tree() case $P in *.patch) apply ${ROOT_DIR}/$P ;; *.sh) source ${ROOT_DIR}/$P ;; - *) echo Warning: Ignoring $P esac done commit