diff options
40 files changed, 603 insertions, 256 deletions
diff --git a/CleanSpec.mk b/CleanSpec.mk index f0beb1d..2663780 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -51,8 +51,6 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/vendor) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/android-info.txt) $(call add-clean-step, find $(PRODUCT_OUT) -name "*.apk" | xargs rm) -$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/APPS/*) -$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop) # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ diff --git a/core/Makefile b/core/Makefile index 72d4ae7..1bbcbbd 100644 --- a/core/Makefile +++ b/core/Makefile @@ -112,7 +112,7 @@ $(word 3, 3, $(call default-locale, $(1))) endef BUILDINFO_SH := build/tools/buildinfo.sh -$(INSTALLED_BUILD_PROP_TARGET): $(BUILDINFO_SH) $(INTERNAL_BUILD_ID_MAKEFILE) +$(INSTALLED_BUILD_PROP_TARGET): $(BUILDINFO_SH) $(INTERNAL_BUILD_ID_MAKEFILE) $(BUILD_SYSTEM)/version_defaults.mk $(wildcard $(TARGET_DEVICE_DIR)/system.prop) @echo Target buildinfo: $@ @mkdir -p $(dir $@) $(hide) TARGET_BUILD_TYPE="$(TARGET_BUILD_VARIANT)" \ @@ -690,8 +690,14 @@ ifneq ($(BOARD_NAND_PAGE_SIZE),) mkyaffs2_extra_flags := -c $(BOARD_NAND_PAGE_SIZE) else mkyaffs2_extra_flags := +BOARD_NAND_PAGE_SIZE := 2048 endif +ifneq ($(BOARD_NAND_SPARE_SIZE),) +mkyaffs2_extra_flags += -s $(BOARD_NAND_SPARE_SIZE) +else +BOARD_NAND_SPARE_SIZE := 64 +endif # ----------------------------------------------------------------- # system image @@ -772,8 +778,12 @@ define build-systemtarball-target $(INSTALLED_SYSTEMTARBALL_TARGET) endef +ifndef SYSTEM_TARBALL_FORMAT + SYSTEM_TARBALL_FORMAT := bz2 +endif + system_tar := $(PRODUCT_OUT)/system.tar -INSTALLED_SYSTEMTARBALL_TARGET := $(system_tar).bz2 +INSTALLED_SYSTEMTARBALL_TARGET := $(system_tar).$(SYSTEM_TARBALL_FORMAT) $(INSTALLED_SYSTEMTARBALL_TARGET): PRIVATE_SYSTEM_TAR := $(system_tar) $(INSTALLED_SYSTEMTARBALL_TARGET): $(FS_GET_STATS) $(INTERNAL_SYSTEMIMAGE_FILES) $(build-systemtarball-target) @@ -787,6 +797,34 @@ systemtarball-nodeps: $(FS_GET_STATS) \ stnod: systemtarball-nodeps +####### +## boot tarball +define build-boottarball-target + $(hide) echo "Target boot fs tarball: $(INSTALLED_BOOTTARBALL_TARGET)" + $(hide) mkdir -p $(PRODUCT_OUT)/boot + $(hide) cp -f $(INTERNAL_BOOTIMAGE_FILES) $(PRODUCT_OUT)/boot/. + $(hide) echo $(BOARD_KERNEL_CMDLINE) > $(PRODUCT_OUT)/boot/cmdline + $(hide) $(MKTARBALL) $(FS_GET_STATS) \ + $(PRODUCT_OUT) boot $(PRIVATE_BOOT_TAR) \ + $(INSTALLED_BOOTTARBALL_TARGET) +endef + +ifndef BOOT_TARBALL_FORMAT + BOOT_TARBALL_FORMAT := bz2 +endif + +boot_tar := $(PRODUCT_OUT)/boot.tar +INSTALLED_BOOTTARBALL_TARGET := $(boot_tar).$(BOOT_TARBALL_FORMAT) +$(INSTALLED_BOOTTARBALL_TARGET): PRIVATE_BOOT_TAR := $(boot_tar) +$(INSTALLED_BOOTTARBALL_TARGET): $(FS_GET_STATS) $(INTERNAL_BOOTIMAGE_FILES) + $(build-boottarball-target) + +.PHONY: boottarball-nodeps btnod +boottarball-nodeps btnod: $(FS_GET_STATS) \ + $(filter-out boottarball-nodeps btnod,$(MAKECMDGOALS)) + $(build-boottarball-target) + + # ----------------------------------------------------------------- # data partition image INTERNAL_USERDATAIMAGE_FILES := \ @@ -1365,3 +1403,4 @@ $(INTERNAL_FINDBUGS_HTML_TARGET): $(INTERNAL_FINDBUGS_XML_TARGET) # ----------------------------------------------------------------- # These are some additional build tasks that need to be run. include $(sort $(wildcard $(BUILD_SYSTEM)/tasks/*.mk)) +-include $(sort $(wildcard vendor/*/build/tasks/*.mk)) diff --git a/core/base_rules.mk b/core/base_rules.mk index 3c11673..afd699b 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -69,7 +69,7 @@ endif # Only the tags mentioned in this test are expected to be set by module # makefiles. Anything else is either a typo or a source of unexpected # behaviors. -ifneq ($(filter-out user debug eng tests optional samples,$(LOCAL_MODULE_TAGS)),) +ifneq ($(filter-out user debug eng tests optional samples shell_ash shell_mksh,$(LOCAL_MODULE_TAGS)),) $(warning unusual tags $(LOCAL_MODULE_TAGS) on $(LOCAL_MODULE) at $(LOCAL_PATH)) endif diff --git a/core/binary.mk b/core/binary.mk index 5fb0e75..48d1ba7 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -48,6 +48,12 @@ ifeq ($(strip $(LOCAL_NO_FDO_SUPPORT)),) endif ########################################################### +## Explicitly declare assembly-only __ASSEMBLY__ macro for +## assembly source +########################################################### +LOCAL_ASFLAGS += -D__ASSEMBLY__ + +########################################################### ## Define PRIVATE_ variables from global vars ########################################################### ifdef LOCAL_NDK_VERSION @@ -102,6 +108,7 @@ endif ## Define arm-vs-thumb-mode flags. ########################################################### LOCAL_ARM_MODE := $(strip $(LOCAL_ARM_MODE)) +ifeq ($(TARGET_ARCH),arm) arm_objects_mode := $(if $(LOCAL_ARM_MODE),$(LOCAL_ARM_MODE),arm) normal_objects_mode := $(if $(LOCAL_ARM_MODE),$(LOCAL_ARM_MODE),thumb) @@ -110,6 +117,12 @@ normal_objects_mode := $(if $(LOCAL_ARM_MODE),$(LOCAL_ARM_MODE),thumb) # actually used (although they are usually empty). arm_objects_cflags := $($(my_prefix)$(arm_objects_mode)_CFLAGS) normal_objects_cflags := $($(my_prefix)$(normal_objects_mode)_CFLAGS) +else +arm_objects_mode := +normal_objects_mode := +arm_objects_cflags := +normal_objects_cflags := +endif ########################################################### ## Define per-module debugging flags. Users can turn on diff --git a/core/build-system.html b/core/build-system.html index ce5e869..e547185 100644 --- a/core/build-system.html +++ b/core/build-system.html @@ -247,6 +247,7 @@ for these). for <code>eng</code>. <ul> <li>Installs modules tagged with: <code>eng</code>, <code>debug</code>, + <code>shell_</code>$(TARGET_SHELL), <code>user</code>, and/or <code>development</code>. <li>Installs non-APK modules that have no tags specified. <li>Installs APKs according to the product definition files, in @@ -266,7 +267,7 @@ for these). <p> This is the flavor intended to be the final release bits. <ul> - <li>Installs modules tagged with <code>user</code>. + <li>Installs modules tagged with <code>shell_</code>$(TARGET_SHELL) and <code>user</code>. <li>Installs non-APK modules that have no tags specified. <li>Installs APKs according to the product definition files; tags are ignored for APK modules. @@ -681,7 +682,8 @@ up.</p> <h4>LOCAL_MODULE_TAGS</h4> <p>Set <code>LOCAL_MODULE_TAGS</code> to any number of whitespace-separated tags. If the tag list is empty or contains <code>droid</code>, the module -will get installed as part of a <code>make droid</code>. Otherwise, it will +will get installed as part of a <code>make droid</code>. Modules with the tag +<code>shell_</code>$(TARGET_SHELL) will also be installed. Otherwise, it will only get installed by running <code>make <your-module></code> or with the <code>make all</code> pseudotarget.</p> diff --git a/core/build_id.mk b/core/build_id.mk index 4b7b0e4..e954794 100644 --- a/core/build_id.mk +++ b/core/build_id.mk @@ -23,7 +23,7 @@ # (like "TC1-RC5"). It must be a single word, and is # capitalized by convention. # -BUILD_ID := GINGERBREAD +BUILD_ID := OPENMASTER # DISPLAY_BUILD_NUMBER should only be set for development branches, # If set, the BUILD_NUMBER (cl) is appended to the BUILD_ID for diff --git a/core/clear_vars.mk b/core/clear_vars.mk index ee28f21..2c27300 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -96,6 +96,7 @@ LOCAL_PROGUARD_ENABLED:= # '',optonly,full,custom LOCAL_PROGUARD_FLAGS:= LOCAL_PROGUARD_FLAG_FILES:= LOCAL_EMMA_COVERAGE_FILTER:= +LOCAL_WARNINGS_ENABLE:= LOCAL_MANIFEST_FILE:= LOCAL_BUILD_HOST_DEX:= LOCAL_DEX_PREOPT:= diff --git a/core/combo/HOST_darwin-x86.mk b/core/combo/HOST_darwin-x86.mk index 093ecbe..121f89b 100644 --- a/core/combo/HOST_darwin-x86.mk +++ b/core/combo/HOST_darwin-x86.mk @@ -45,6 +45,8 @@ HOST_NO_UNDEFINED_LDFLAGS := -Wl,-undefined,error HOST_CC := $(CC) HOST_CXX := $(CXX) HOST_AR := $(AR) +HOST_STRIP := $(STRIP) +HOST_STRIP_COMMAND = $(HOST_STRIP) --strip-debug $< -o $@ HOST_SHLIB_SUFFIX := .dylib HOST_JNILIB_SUFFIX := .jnilib diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk index ae1997c..6139b67 100644 --- a/core/combo/TARGET_linux-arm.mk +++ b/core/combo/TARGET_linux-arm.mk @@ -52,6 +52,8 @@ TARGET_CXX := $(TARGET_TOOLS_PREFIX)g++$(HOST_EXECUTABLE_SUFFIX) TARGET_AR := $(TARGET_TOOLS_PREFIX)ar$(HOST_EXECUTABLE_SUFFIX) TARGET_OBJCOPY := $(TARGET_TOOLS_PREFIX)objcopy$(HOST_EXECUTABLE_SUFFIX) TARGET_LD := $(TARGET_TOOLS_PREFIX)ld$(HOST_EXECUTABLE_SUFFIX) +TARGET_STRIP := $(HOST_OUT_EXECUTABLES)/soslim$(HOST_EXECUTABLE_SUFFIX) +TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip --shady --quiet $< --outfile $@ TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined diff --git a/core/combo/TARGET_linux-sh.mk b/core/combo/TARGET_linux-sh.mk index f373d21..cf945fe 100644 --- a/core/combo/TARGET_linux-sh.mk +++ b/core/combo/TARGET_linux-sh.mk @@ -28,6 +28,8 @@ TARGET_CXX := $(TARGET_TOOLS_PREFIX)c++$(HOST_EXECUTABLE_SUFFIX) TARGET_AR := $(TARGET_TOOLS_PREFIX)ar$(HOST_EXECUTABLE_SUFFIX) TARGET_OBJCOPY := $(TARGET_TOOLS_PREFIX)objcopy$(HOST_EXECUTABLE_SUFFIX) TARGET_LD := $(TARGET_TOOLS_PREFIX)ld$(HOST_EXECUTABLE_SUFFIX) +TARGET_STRIP := $(TARGET_TOOLS_PREFIX)strip$(HOST_EXECUTABLE_SUFFIX) +TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-debug $< -o $@ TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined @@ -106,7 +108,7 @@ TARGET_CRTEND_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtend_android.o TARGET_CRTBEGIN_SO_O := $(TARGET_OUT_STATIC_LIBRARIES)/sobegin.o TARGET_CRTEND_SO_O := $(TARGET_OUT_STATIC_LIBRARIES)/soend.o -TARGET_STRIP_MODULE:=false +TARGET_STRIP_MODULE:=true TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm diff --git a/core/combo/TARGET_linux-x86.mk b/core/combo/TARGET_linux-x86.mk index 6629cbd..86695a4 100644 --- a/core/combo/TARGET_linux-x86.mk +++ b/core/combo/TARGET_linux-x86.mk @@ -25,7 +25,9 @@ TARGET_AR := $(HOST_AR) TARGET_GLOBAL_CFLAGS := $(HOST_GLOBAL_CFLAGS) -m32 TARGET_GLOBAL_LDFLAGS := $(HOST_GLOBAL_LDFLAGS) -m32 -lpthread TARGET_NO_UNDEFINED_LDFLAGS := $(HOST_NO_UNDEFINED_LDFLAGS) +ifeq ($(strip $(TARGET_ARCH_VARIANT)),) TARGET_ARCH_VARIANT := x86 +endif else #simulator # Provide a default variant. @@ -44,6 +46,8 @@ TARGET_CXX := $(TARGET_TOOLS_PREFIX)g++$(HOST_EXECUTABLE_SUFFIX) TARGET_AR := $(TARGET_TOOLS_PREFIX)ar$(HOST_EXECUTABLE_SUFFIX) TARGET_OBJCOPY := $(TARGET_TOOLS_PREFIX)objcopy$(HOST_EXECUTABLE_SUFFIX) TARGET_LD := $(TARGET_TOOLS_PREFIX)ld$(HOST_EXECUTABLE_SUFFIX) +TARGET_STRIP := $(TARGET_TOOLS_PREFIX)strip$(HOST_EXECUTABLE_SUFFIX) +TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-debug $< -o $@ ifneq ($(wildcard $(TARGET_CC)),) TARGET_LIBGCC := \ @@ -72,7 +76,7 @@ endif KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH) TARGET_GLOBAL_CFLAGS += \ - -march=i686 \ + -Ulinux \ -m32 \ -fPIC \ -include $(call select-android-config-h,target_linux-x86) @@ -80,6 +84,16 @@ TARGET_GLOBAL_CFLAGS += \ TARGET_GLOBAL_CPPFLAGS += \ -fno-use-cxa-atexit +ifeq ($(TARGET_ARCH_VARIANT),x86-atom) + TARGET_GLOBAL_CFLAGS += -mtune=i686 -DUSE_SSSE3 -DUSE_SSE2 -mfpmath=sse -msse2 +else + TARGET_GLOBAL_CFLAGS += -march=i686 +endif + +TARGET_GLOBAL_CFLAGS += -D__ANDROID__ +TARGET_GLOBAL_LDFLAGS += -m32 + + TARGET_C_INCLUDES := \ $(libc_root)/arch-x86/include \ $(libc_root)/include \ @@ -97,7 +111,7 @@ TARGET_CRTEND_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtend_android.o TARGET_CRTBEGIN_SO_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_so.o TARGET_CRTEND_SO_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtend_so.o -# TARGET_STRIP_MODULE:=true +TARGET_STRIP_MODULE:=true TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm @@ -107,7 +121,7 @@ $(TARGET_CXX) \ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ -nostdlib -Wl,-soname,$(notdir $@) \ -shared -Bsymbolic \ - -fPIC -march=i686 \ + $(TARGET_GLOBAL_CFLAGS) \ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ $(PRIVATE_TARGET_CRTBEGIN_SO_O) \ $(PRIVATE_ALL_OBJECTS) \ @@ -157,7 +171,4 @@ $(TARGET_CXX) \ $(TARGET_CRTEND_O) endef -TARGET_GLOBAL_CFLAGS += -m32 -TARGET_GLOBAL_LDFLAGS += -m32 - endif #simulator diff --git a/core/combo/select.mk b/core/combo/select.mk index 797c573..c886342 100644 --- a/core/combo/select.mk +++ b/core/combo/select.mk @@ -28,6 +28,7 @@ combo_os_arch := $($(combo_target)OS)-$($(combo_target)ARCH) $(combo_target)CC := $(CC) $(combo_target)CXX := $(CXX) $(combo_target)AR := $(AR) +$(combo_target)STRIP := $(STRIP) $(combo_target)BINDER_MINI := 0 diff --git a/core/config.mk b/core/config.mk index a3bcbf1..0dec4be 100644 --- a/core/config.mk +++ b/core/config.mk @@ -106,6 +106,9 @@ TARGET_COMPRESS_MODULE_SYMBOLS := false # Default is to prelink modules. TARGET_PRELINK_MODULE := true +# Default shell is ash. Other possible value is mksh. +TARGET_SHELL := ash + # ############################################################### # Include sub-configuration files # ############################################################### @@ -232,7 +235,6 @@ EMMA_JAR := external/emma/lib/emma$(COMMON_JAVA_PACKAGE_SUFFIX) # Binary prelinker/compressor tools APRIORI := $(HOST_OUT_EXECUTABLES)/apriori$(HOST_EXECUTABLE_SUFFIX) LSD := $(HOST_OUT_EXECUTABLES)/lsd$(HOST_EXECUTABLE_SUFFIX) -SOSLIM := $(HOST_OUT_EXECUTABLES)/soslim$(HOST_EXECUTABLE_SUFFIX) # Deal with archaic version of bison on Mac OS X. ifeq ($(filter 1.28,$(shell $(YACC) -V)),) @@ -347,3 +349,13 @@ TARGET_AVAILABLE_NDK_VERSIONS := $(call numerically_sort,\ $(wildcard $(HISTORICAL_NDK_VERSIONS_ROOT)/android-ndk-r*))) INTERNAL_PLATFORM_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/public_api.xml + +# This is the standard way to name a directory containing prebuilt target +# objects. E.g., prebuilt/$(TARGET_PREBUILT_TAG)/libc.so +ifeq ($(TARGET_SIMULATOR),true) + TARGET_PREBUILT_TAG := $(TARGET_OS)-$(TARGET_ARCH) +else + TARGET_PREBUILT_TAG := android-$(TARGET_ARCH) +endif + +include $(BUILD_SYSTEM)/dumpvar.mk diff --git a/core/definitions.mk b/core/definitions.mk index 19bba5c..91024f2 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -1086,13 +1086,10 @@ endef ## Commands for filtering a target executable or library ########################################################### -# Because of bug 743462 ("Prelinked image magic gets stripped -# by arm-elf-objcopy"), we have to use soslim to strip target -# binaries. define transform-to-stripped @mkdir -p $(dir $@) @echo "target Strip: $(PRIVATE_MODULE) ($@)" -$(hide) $(SOSLIM) --strip --shady --quiet $< --outfile $@ +$(hide) $(TARGET_STRIP_COMMAND) endef define transform-to-prelinked @@ -1231,7 +1228,7 @@ endef ifeq ($(HOST_OS),windows) xlint_unchecked := else -#xlint_unchecked := -Xlint:unchecked +xlint_unchecked := -Xlint:unchecked endif # emit-line, <word list>, <output file> @@ -1301,7 +1298,8 @@ $(hide) tr ' ' '\n' < $(dir $(PRIVATE_CLASS_INTERMEDIATES_DIR))/java-source-list $(hide) $(TARGET_JAVAC) -encoding ascii $(PRIVATE_BOOTCLASSPATH) \ $(addprefix -classpath ,$(strip \ $(call normalize-path-list,$(PRIVATE_ALL_JAVA_LIBRARIES)))) \ - $(PRIVATE_JAVACFLAGS) $(strip $(PRIVATE_JAVAC_DEBUG_FLAGS)) $(xlint_unchecked) \ + $(PRIVATE_JAVACFLAGS) $(strip $(PRIVATE_JAVAC_DEBUG_FLAGS)) \ + $(if $(findstring true,$(LOCAL_WARNINGS_ENABLE)),$(xlint_unchecked),) \ -extdirs "" -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) \ \@$(dir $(PRIVATE_CLASS_INTERMEDIATES_DIR))/java-source-list-uniq \ || ( rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) ; exit 41 ) @@ -1656,10 +1654,11 @@ endif # Convert a partition data size (eg, as reported in /proc/mtd) to the # size of the image used to flash that partition (which includes a -# 64-byte spare area for each 2048-byte page). +# spare area for each page). # $(1): the partition data size define image-size-from-data-size -$(shell echo $$(($(1) / 2048 * (2048+64)))) +$(shell echo $$(($(1) / $(BOARD_NAND_PAGE_SIZE) * \ + ($(BOARD_NAND_PAGE_SIZE)+$(BOARD_NAND_SPARE_SIZE))))) endef # $(1): The file(s) to check (often $@) diff --git a/core/dumpvar.mk b/core/dumpvar.mk new file mode 100644 index 0000000..0c58559 --- /dev/null +++ b/core/dumpvar.mk @@ -0,0 +1,78 @@ +# --------------------------------------------------------------- +# the setpath shell function in envsetup.sh uses this to figure out +# what to add to the path given the config we have chosen. +ifeq ($(CALLED_FROM_SETUP),true) + +ABP:=$(PWD)/$(HOST_OUT_EXECUTABLES) + +ifeq ($(TARGET_SIMULATOR),true) + ABP:=$(ABP):$(TARGET_OUT_EXECUTABLES) +else + # this should be copied to HOST_OUT_EXECUTABLES instead + ABP:=$(ABP):$(PWD)/prebuilt/$(HOST_PREBUILT_TAG)/toolchain/arm-eabi-4.4.3/bin +endif +ANDROID_BUILD_PATHS := $(ABP) +ANDROID_PREBUILTS := prebuilt/$(HOST_PREBUILT_TAG) + +# The "dumpvar" stuff lets you say something like +# +# CALLED_FROM_SETUP=true \ +# make -f config/envsetup.make dumpvar-TARGET_OUT +# or +# CALLED_FROM_SETUP=true \ +# make -f config/envsetup.make dumpvar-abs-HOST_OUT_EXECUTABLES +# +# The plain (non-abs) version just dumps the value of the named variable. +# The "abs" version will treat the variable as a path, and dumps an +# absolute path to it. +# +dumpvar_goals := \ + $(strip $(patsubst dumpvar-%,%,$(filter dumpvar-%,$(MAKECMDGOALS)))) +ifdef dumpvar_goals + + ifneq ($(words $(dumpvar_goals)),1) + $(error Only one "dumpvar-" goal allowed. Saw "$(MAKECMDGOALS)") + endif + + # If the goal is of the form "dumpvar-abs-VARNAME", then + # treat VARNAME as a path and return the absolute path to it. + absolute_dumpvar := $(strip $(filter abs-%,$(dumpvar_goals))) + ifdef absolute_dumpvar + dumpvar_goals := $(patsubst abs-%,%,$(dumpvar_goals)) + DUMPVAR_VALUE := $(PWD)/$($(dumpvar_goals)) + dumpvar_target := dumpvar-abs-$(dumpvar_goals) + else + DUMPVAR_VALUE := $($(dumpvar_goals)) + dumpvar_target := dumpvar-$(dumpvar_goals) + endif + +.PHONY: $(dumpvar_target) +$(dumpvar_target): + @echo $(DUMPVAR_VALUE) + +endif # dumpvar_goals + +ifneq ($(dumpvar_goals),report_config) +PRINT_BUILD_CONFIG:= +endif + +endif # CALLED_FROM_SETUP + + +ifneq ($(PRINT_BUILD_CONFIG),) +$(info ============================================) +$(info PLATFORM_VERSION_CODENAME=$(PLATFORM_VERSION_CODENAME)) +$(info PLATFORM_VERSION=$(PLATFORM_VERSION)) +$(info TARGET_PRODUCT=$(TARGET_PRODUCT)) +$(info TARGET_BUILD_VARIANT=$(TARGET_BUILD_VARIANT)) +$(info TARGET_SIMULATOR=$(TARGET_SIMULATOR)) +$(info TARGET_BUILD_TYPE=$(TARGET_BUILD_TYPE)) +$(info TARGET_BUILD_APPS=$(TARGET_BUILD_APPS)) +$(info TARGET_ARCH=$(TARGET_ARCH)) +$(info TARGET_ARCH_VARIANT=$(TARGET_ARCH_VARIANT)) +$(info HOST_ARCH=$(HOST_ARCH)) +$(info HOST_OS=$(HOST_OS)) +$(info HOST_BUILD_TYPE=$(HOST_BUILD_TYPE)) +$(info BUILD_ID=$(BUILD_ID)) +$(info ============================================) +endif diff --git a/core/dynamic_binary.mk b/core/dynamic_binary.mk index cfbe740..0fa7647 100644 --- a/core/dynamic_binary.mk +++ b/core/dynamic_binary.mk @@ -75,7 +75,7 @@ ifeq ($(LOCAL_COMPRESS_MODULE_SYMBOLS),true) $(error Symbol compression not yet supported.) compress_output := $(intermediates)/COMPRESSED-$(LOCAL_BUILT_MODULE_STEM) -#TODO: write the real $(SOSLIM) rule. +#TODO: write the real $(STRIPPER) rule. #TODO: define a rule to build TARGET_SYMBOL_FILTER_FILE, and # make it depend on ALL_ORIGINAL_DYNAMIC_BINARIES. $(compress_output): $(compress_input) $(TARGET_SYMBOL_FILTER_FILE) | $(ACP) @@ -137,7 +137,7 @@ endif ifeq ($(LOCAL_STRIP_MODULE),true) # Strip the binary -$(strip_output): $(strip_input) | $(SOSLIM) +$(strip_output): $(strip_input) | $(TARGET_STRIP) $(transform-to-stripped) else # Don't strip the binary, just copy it. We can't skip this step diff --git a/core/envsetup.mk b/core/envsetup.mk index c70a5e2..e4c99d5 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -26,7 +26,7 @@ ifeq ($(TARGET_PRODUCT),) ifeq ($(TARGET_SIMULATOR),true) TARGET_PRODUCT := sim else -TARGET_PRODUCT := generic +TARGET_PRODUCT := full endif endif @@ -158,14 +158,6 @@ ifneq ($(TARGET_BUILD_TYPE),debug) TARGET_BUILD_TYPE := release endif -# This is the standard way to name a directory containing prebuilt target -# objects. E.g., prebuilt/$(TARGET_PREBUILT_TAG)/libc.so -ifeq ($(TARGET_SIMULATOR),true) - TARGET_PREBUILT_TAG := $(TARGET_OS)-$(TARGET_ARCH) -else - TARGET_PREBUILT_TAG := android-$(TARGET_ARCH) -endif - # --------------------------------------------------------------- # figure out the output directories @@ -283,81 +275,3 @@ endif ifeq ($(PRINT_BUILD_CONFIG),) PRINT_BUILD_CONFIG := true endif - -# --------------------------------------------------------------- -# the setpath shell function in envsetup.sh uses this to figure out -# what to add to the path given the config we have chosen. -ifeq ($(CALLED_FROM_SETUP),true) - -ABP:=$(PWD)/$(HOST_OUT_EXECUTABLES) - -ifeq ($(TARGET_SIMULATOR),true) - ABP:=$(ABP):$(TARGET_OUT_EXECUTABLES) -else - # this should be copied to HOST_OUT_EXECUTABLES instead - ABP:=$(ABP):$(PWD)/prebuilt/$(HOST_PREBUILT_TAG)/toolchain/arm-eabi-4.4.3/bin -endif -ANDROID_BUILD_PATHS := $(ABP) -ANDROID_PREBUILTS := prebuilt/$(HOST_PREBUILT_TAG) - -# The "dumpvar" stuff lets you say something like -# -# CALLED_FROM_SETUP=true \ -# make -f config/envsetup.make dumpvar-TARGET_OUT -# or -# CALLED_FROM_SETUP=true \ -# make -f config/envsetup.make dumpvar-abs-HOST_OUT_EXECUTABLES -# -# The plain (non-abs) version just dumps the value of the named variable. -# The "abs" version will treat the variable as a path, and dumps an -# absolute path to it. -# -dumpvar_goals := \ - $(strip $(patsubst dumpvar-%,%,$(filter dumpvar-%,$(MAKECMDGOALS)))) -ifdef dumpvar_goals - - ifneq ($(words $(dumpvar_goals)),1) - $(error Only one "dumpvar-" goal allowed. Saw "$(MAKECMDGOALS)") - endif - - # If the goal is of the form "dumpvar-abs-VARNAME", then - # treat VARNAME as a path and return the absolute path to it. - absolute_dumpvar := $(strip $(filter abs-%,$(dumpvar_goals))) - ifdef absolute_dumpvar - dumpvar_goals := $(patsubst abs-%,%,$(dumpvar_goals)) - DUMPVAR_VALUE := $(PWD)/$($(dumpvar_goals)) - dumpvar_target := dumpvar-abs-$(dumpvar_goals) - else - DUMPVAR_VALUE := $($(dumpvar_goals)) - dumpvar_target := dumpvar-$(dumpvar_goals) - endif - -.PHONY: $(dumpvar_target) -$(dumpvar_target): - @echo $(DUMPVAR_VALUE) - -endif # dumpvar_goals - -ifneq ($(dumpvar_goals),report_config) -PRINT_BUILD_CONFIG:= -endif - -endif # CALLED_FROM_SETUP - - -ifneq ($(PRINT_BUILD_CONFIG),) -$(info ============================================) -$(info PLATFORM_VERSION_CODENAME=$(PLATFORM_VERSION_CODENAME)) -$(info PLATFORM_VERSION=$(PLATFORM_VERSION)) -$(info TARGET_PRODUCT=$(TARGET_PRODUCT)) -$(info TARGET_BUILD_VARIANT=$(TARGET_BUILD_VARIANT)) -$(info TARGET_SIMULATOR=$(TARGET_SIMULATOR)) -$(info TARGET_BUILD_TYPE=$(TARGET_BUILD_TYPE)) -$(info TARGET_BUILD_APPS=$(TARGET_BUILD_APPS)) -$(info TARGET_ARCH=$(TARGET_ARCH)) -$(info HOST_ARCH=$(HOST_ARCH)) -$(info HOST_OS=$(HOST_OS)) -$(info HOST_BUILD_TYPE=$(HOST_BUILD_TYPE)) -$(info BUILD_ID=$(BUILD_ID)) -$(info ============================================) -endif diff --git a/core/find-jdk-tools-jar.sh b/core/find-jdk-tools-jar.sh index e772a15..f555576 100755 --- a/core/find-jdk-tools-jar.sh +++ b/core/find-jdk-tools-jar.sh @@ -3,7 +3,7 @@ if [ "x$ANDROID_JAVA_HOME" != x ] && [ -e "$ANDROID_JAVA_HOME/lib/tools.jar" ] ; else JAVAC=$(which javac) if [ -z "$JAVAC" ] ; then - echo "Please-install-JDK-6.0,-which-you-can-download-from-java.sun.com" + echo "Please-install-JDK-6,-which-you-can-download-from-java.sun.com" exit 1 fi while [ -L $JAVAC ] ; do diff --git a/core/main.mk b/core/main.mk index 81bebc8..a6768c4 100644 --- a/core/main.mk +++ b/core/main.mk @@ -31,11 +31,11 @@ endif #endif # check for broken versions of make -ifeq (0,$(shell expr $$(echo $(MAKE_VERSION) | sed "s/[^0-9\.].*//") \>= 3.81)) +ifeq (0,$(shell expr $$(echo $(MAKE_VERSION) | sed "s/[^0-9\.].*//") = 3.81)) $(warning ********************************************************************************) $(warning * You are using version $(MAKE_VERSION) of make.) -$(warning * You must upgrade to version 3.81 or greater.) -$(warning * see http://source.android.com/download) +$(warning * Android can only be built by version 3.81.) +$(warning * see http://source.android.com/source/download.html) $(warning ********************************************************************************) $(error stopping) endif @@ -124,7 +124,7 @@ $(info Your version is: $(shell java -version 2>&1 | head -n 1).) $(info The correct version is: 1.6.) $(info $(space)) $(info Please follow the machine setup instructions at) -$(info $(space)$(space)$(space)$(space)http://source.android.com/download) +$(info $(space)$(space)$(space)$(space)http://source.android.com/source/download.html) $(info ************************************************************) $(error stop) endif @@ -140,7 +140,7 @@ $(info Your version is: $(shell javac -version 2>&1 | head -n 1).) $(info The correct version is: 1.6.) $(info $(space)) $(info Please follow the machine setup instructions at) -$(info $(space)$(space)$(space)$(space)http://source.android.com/download) +$(info $(space)$(space)$(space)$(space)http://source.android.com/source/download.html) $(info ************************************************************) $(error stop) endif @@ -152,7 +152,7 @@ endif # These are the modifier targets that don't do anything themselves, but # change the behavior of the build. # (must be defined before including definitions.make) -INTERNAL_MODIFIER_TARGETS := showcommands checkbuild +INTERNAL_MODIFIER_TARGETS := showcommands checkbuild all # Bring in standard build system definitions. include $(BUILD_SYSTEM)/definitions.mk @@ -391,17 +391,18 @@ subdirs := \ dalvik/libdex \ dalvik/tools/dmtracedump \ dalvik/tools/hprof-conv \ - development/tools/line_endings \ - development/tools/etc1tool \ - sdk/emulator/mksdcard \ - sdk/sdklauncher \ development/host \ + development/tools/etc1tool \ + development/tools/line_endings \ + external/easymock \ external/expat \ external/libpng \ external/qemu \ external/sqlite/dist \ external/zlib \ frameworks/base \ + sdk/emulator/mksdcard \ + sdk/sdklauncher \ system/core/adb \ system/core/fastboot \ system/core/libcutils \ @@ -418,13 +419,15 @@ subdirs += \ sdk/archquery \ sdk/androidprefs \ sdk/apkbuilder \ + sdk/ddms \ + sdk/hierarchyviewer2 \ + sdk/ide_common \ sdk/jarutils \ sdk/layoutlib_api \ - sdk/layoutlib_utils \ + sdk/layoutopt \ sdk/ninepatch \ sdk/sdkstats \ sdk/sdkmanager \ - sdk/layoutopt \ development/apps \ development/tools/mkstubs \ packages @@ -577,7 +580,7 @@ else endif # Use tags to get the non-APPS user modules. Use the product # definition files to get the APPS user modules. -user_MODULES := $(sort $(call get-tagged-modules,user)) +user_MODULES := $(sort $(call get-tagged-modules,user shell_$(TARGET_SHELL))) user_MODULES := $(user_MODULES) $(user_PACKAGES) eng_MODULES := $(sort $(call get-tagged-modules,eng)) @@ -676,6 +679,9 @@ ramdisk: $(INSTALLED_RAMDISK_TARGET) .PHONY: systemtarball systemtarball: $(INSTALLED_SYSTEMTARBALL_TARGET) +.PHONY: boottarball +boottarball: $(INSTALLED_BOOTTARBALL_TARGET) + .PHONY: userdataimage userdataimage: $(INSTALLED_USERDATAIMAGE_TARGET) diff --git a/core/pathmap.mk b/core/pathmap.mk index 6cd3b8f..fe7ba1a 100644 --- a/core/pathmap.mk +++ b/core/pathmap.mk @@ -82,6 +82,7 @@ FRAMEWORKS_BASE_SUBDIRS := \ graphics \ location \ media \ + drm \ opengl \ sax \ telephony \ diff --git a/core/user_tags.mk b/core/user_tags.mk index 3d8e5a6..7800710 100644 --- a/core/user_tags.mk +++ b/core/user_tags.mk @@ -79,6 +79,8 @@ GRANDFATHERED_USER_MODULES += \ dasm \ dbus-daemon \ ddmlib \ + ddmlibTests \ + ddmlib-prebuilt \ ddms \ ddmuilib \ debuggerd \ @@ -131,6 +133,9 @@ GRANDFATHERED_USER_MODULES += \ gzip \ hciattach \ hierarchyviewer \ + hierarchyviewer1 \ + hierarchyviewer2 \ + hierarchyviewerlib \ hist_trace \ hosttestlib \ icudata \ @@ -150,6 +155,7 @@ GRANDFATHERED_USER_MODULES += \ jdwpspy \ jfreechart-1.0.9 \ jfreechart-1.0.9-swt \ + jsilver \ jsr305 \ jsr305lib \ junit \ @@ -196,6 +202,7 @@ GRANDFATHERED_USER_MODULES += \ libdb \ libdbus \ libdiskconfig \ + libdiskconfig_host \ libdl \ libdrm1 \ libdrm1_jni \ @@ -375,6 +382,7 @@ GRANDFATHERED_USER_MODULES += \ mkyaffs2image \ monkey \ monkeyrunner \ + MonkeyRunnerTest \ mtpd \ ndc \ netcfg \ @@ -401,6 +409,7 @@ GRANDFATHERED_USER_MODULES += \ profile_trace \ q2dm \ q2g \ + qemu-android \ qwerty2.kcm \ qwerty.kcm \ racoon \ diff --git a/core/version_defaults.mk b/core/version_defaults.mk index 3238a45..22c15ca 100644 --- a/core/version_defaults.mk +++ b/core/version_defaults.mk @@ -41,7 +41,7 @@ ifeq "" "$(PLATFORM_VERSION)" # which is the version that we reveal to the end user. # Update this value when the platform version changes (rather # than overriding it somewhere else). Can be an arbitrary string. - PLATFORM_VERSION := 2.4 + PLATFORM_VERSION := AOSP endif ifeq "" "$(PLATFORM_SDK_VERSION)" @@ -59,7 +59,7 @@ endif ifeq "" "$(PLATFORM_VERSION_CODENAME)" # This is the current development code-name, if the build is not a final # release build. If this is a final release build, it is simply "REL". - PLATFORM_VERSION_CODENAME := REL + PLATFORM_VERSION_CODENAME := AOSP endif ifeq "" "$(DEFAULT_APP_TARGET_SDK)" diff --git a/envsetup.sh b/envsetup.sh index a68f73e..8289c82 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -311,7 +311,7 @@ function chooseproduct() if [ "$TARGET_SIMULATOR" = true ] ; then default_value=sim else - default_value=generic + default_value=full fi fi @@ -376,7 +376,7 @@ function choosevariant() export TARGET_BUILD_VARIANT=$default_value elif (echo -n $ANSWER | grep -q -e "^[0-9][0-9]*$") ; then if [ "$ANSWER" -le "${#VARIANT_CHOICES[@]}" ] ; then - export TARGET_BUILD_VARIANT=${VARIANT_CHOICES[$(($ANSWER-$_arrayoffset))]} + export TARGET_BUILD_VARIANT=${VARIANT_CHOICES[$(($ANSWER-1))]} fi else if check_variant $ANSWER @@ -429,7 +429,8 @@ function add_lunch_combo() } # add the default one here -add_lunch_combo generic-eng +add_lunch_combo full-eng +add_lunch_combo full_x86-eng # if we're on linux, add the simulator. There is a special case # in lunch to deal with the simulator @@ -464,7 +465,7 @@ function lunch() answer=$1 else print_lunch_menu - echo -n "Which would you like? [generic-eng] " + echo -n "Which would you like? [full-eng] " read answer fi @@ -472,7 +473,7 @@ function lunch() if [ -z "$answer" ] then - selection=generic-eng + selection=full-eng elif [ "$answer" = "simulator" ] then selection=simulator @@ -480,7 +481,7 @@ function lunch() then if [ $answer -le ${#LUNCH_MENU_CHOICES[@]} ] then - selection=${LUNCH_MENU_CHOICES[$(($answer-$_arrayoffset))]} + selection=${LUNCH_MENU_CHOICES[$(($answer-1))]} fi elif (echo -n $answer | grep -q -e "^[^\-][^\-]*-[^\-][^\-]*$") then @@ -560,7 +561,7 @@ function tapas() apps=all fi - export TARGET_PRODUCT=generic + export TARGET_PRODUCT=full export TARGET_BUILD_VARIANT=$variant export TARGET_SIMULATOR=false export TARGET_BUILD_TYPE=release @@ -1059,10 +1060,9 @@ function godir () { echo "Invalid choice" continue fi - pathname=${lines[$(($choice-$_arrayoffset))]} + pathname=${lines[$(($choice-1))]} done else - # even though zsh arrays are 1-based, $foo[0] is an alias for $foo[1] pathname=${lines[0]} fi cd $T/$pathname @@ -1082,18 +1082,16 @@ function set_java_home() { fi } -# determine whether arrays are zero-based (bash) or one-based (zsh) -_xarray=(a b c) -if [ -z "${_xarray[${#_xarray[@]}]}" ] -then - _arrayoffset=1 -else - _arrayoffset=0 -fi -unset _xarray +case `ps -o command -p $$` in + *bash*) + ;; + *) + echo "WARNING: Only bash is supported, use of other shell would lead to erroneous results" + ;; +esac # Execute the contents of any vendorsetup.sh files we can find. -for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/build/vendorsetup.sh device/*/*/vendorsetup.sh 2> /dev/null` +for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/*/vendorsetup.sh device/*/*/vendorsetup.sh 2> /dev/null` do echo "including $f" . $f diff --git a/libs/host/CopyFile.c b/libs/host/CopyFile.c index a822b41..3cbe34a 100644 --- a/libs/host/CopyFile.c +++ b/libs/host/CopyFile.c @@ -63,6 +63,22 @@ static bool isSourceNewer(const struct stat* pSrcStat, const struct stat* pDstSt } /* + * Returns true if the source file has high resolution modification + * date. Cygwin doesn't support st_mtim in normal build, so always + * return false. + */ +static bool isHiresMtime(const struct stat* pSrcStat) +{ +#if defined(WIN32) || defined(USE_MINGW) + return 0; +#elif defined(MACOSX_RSRC) + return pSrcStat->st_mtimespec.tv_nsec > 0; +#else + return pSrcStat->st_mtim.tv_nsec > 0; +#endif +} + +/* * Returns true if the source and destination files are actually the * same thing. We detect this by checking the inode numbers, which seems * to work on Cygwin. @@ -151,6 +167,8 @@ static int setPermissions(const char* dst, const struct stat* pSrcStat, unsigned */ ut.actime = pSrcStat->st_atime; ut.modtime = pSrcStat->st_mtime; + if (isHiresMtime(pSrcStat)) + ut.modtime += 1; if (utime(dst, &ut) != 0) { DBUG(("--- unable to set timestamps on '%s': %s\n", dst, strerror(errno))); diff --git a/target/board/generic/BoardConfig.mk b/target/board/generic/BoardConfig.mk index 9e52d25..26bf6ab 100644 --- a/target/board/generic/BoardConfig.mk +++ b/target/board/generic/BoardConfig.mk @@ -12,3 +12,6 @@ BOARD_USES_GENERIC_AUDIO := true # no hardware camera USE_CAMERA_STUB := true + +# Set /system/bin/sh to mksh, not ash, to test the transition. +TARGET_SHELL := mksh diff --git a/target/board/generic/device.mk b/target/board/generic/device.mk new file mode 100644 index 0000000..0b4dc27 --- /dev/null +++ b/target/board/generic/device.mk @@ -0,0 +1,26 @@ +# +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# This is a build configuration for the product aspects that +# are specific to the emulator. + +PRODUCT_PROPERTY_OVERRIDES := \ + ro.ril.hsxpa=1 \ + ro.ril.gprsclass=10 + +PRODUCT_COPY_FILES := \ + development/data/etc/apns-conf.xml:system/etc/apns-conf.xml \ + development/data/etc/vold.conf:system/etc/vold.conf diff --git a/target/board/generic_x86/BoardConfig.mk b/target/board/generic_x86/BoardConfig.mk index 608aee1..7586db8 100644 --- a/target/board/generic_x86/BoardConfig.mk +++ b/target/board/generic_x86/BoardConfig.mk @@ -1,3 +1,5 @@ +TARGET_ARCH=x86 +DISABLE_DEXPREOPT := true TARGET_COMPRESS_MODULE_SYMBOLS := false TARGET_PRELINK_MODULE := false TARGET_NO_RECOVERY := true @@ -18,3 +20,8 @@ TARGET_DISK_LAYOUT_CONFIG := build/target/board/generic_x86/disk_layout.conf BOARD_BOOTIMAGE_MAX_SIZE := 8388608 BOARD_SYSLOADER_MAX_SIZE := 7340032 BOARD_FLASH_BLOCK_SIZE := 512 + + +# The eth0 device should be started with dhcp on boot. +# Useful for emulators that don't provide a wifi connection. +NET_ETH0_STARTONBOOT := true diff --git a/target/board/generic_x86/README.txt b/target/board/generic_x86/README.txt index 97e2d5b..585a373 100644 --- a/target/board/generic_x86/README.txt +++ b/target/board/generic_x86/README.txt @@ -8,15 +8,11 @@ A1. Create a new top level directory and pull the AOSP repository repo init -u git://android.git.kernel.org/platform/manifest.git repo sync -A2. Copy in the buildspeck.mk - cd $HOME/AOSP - cp build/target/board/generic_x86/buildspec-generic_x86.mk buildspec.mk - -A3. Copy in the kernel +A2. Copy in the kernel cd $HOME/AOSP cp ~/bzImage.your_device $HOME/AOSP/prebuilt/android-x86/kernel/kernel -A4. Build +A3. Build cd $HOME/AOSP source build/envsetup.sh lunch generic_x86-eng @@ -25,7 +21,7 @@ A4. Build The build will generate some image files whose format may or may not be correct for your device. You can build an installer image disk for the VirtualBox emulator using the command: -A5. Build a VirtualBox installer image +A4. Build a VirtualBox installer image cd $HOME/AOSP source build/envsetup.sh lunch generic_x86-eng diff --git a/target/board/generic_x86/buildspec-generic_x86.mk b/target/board/generic_x86/buildspec-generic_x86.mk deleted file mode 100644 index fbc3947..0000000 --- a/target/board/generic_x86/buildspec-generic_x86.mk +++ /dev/null @@ -1,7 +0,0 @@ -BUILD_ENV_SEQUENCE_NUMBER := 9 -DISABLE_DEXPREOPT := true -TARGET_ARCH := x86 - -# The eth0 device should be started with dhcp on boot. -# Useful for emulators that don't provide a wifi connection. -NET_ETH0_STARTONBOOT := true diff --git a/target/board/generic_x86/init.rc b/target/board/generic_x86/init.rc index 235083d..180acaf 100644 --- a/target/board/generic_x86/init.rc +++ b/target/board/generic_x86/init.rc @@ -12,58 +12,138 @@ loglevel 3 export ANDROID_ROOT /system export ANDROID_ASSETS /system/app export ANDROID_DATA /data - export EXTERNAL_STORAGE /sdcard + export EXTERNAL_STORAGE /mnt/sdcard + export ASEC_MOUNTPOINT /mnt/asec export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar # Backward compatibility symlink /system/etc /etc + symlink /sys/kernel/debug /d + +# create mountpoints + mkdir /mnt 0775 root system + mkdir /mnt/sdcard 0000 system system + +# Create cgroup mount point for cpu accounting + mkdir /acct + mount cgroup none /acct cpuacct + mkdir /acct/uid + +# Backwards Compat - XXX: Going away in G* + symlink /mnt/sdcard /sdcard -# create mountpoints and mount tmpfs on sqlite_stmt_journals and debugfs on d - mkdir /d - mkdir /sdcard 0000 system system mkdir /system mkdir /data 0771 system system mkdir /cache 0770 system cache - mkdir /sqlite_stmt_journals 01777 root root - mount tmpfs tmpfs /sqlite_stmt_journals - mount debugfs debugfs /d + mkdir /config 0500 root root + + # Directory for putting things only root should see. + mkdir /mnt/secure 0700 root root + + # Directory for staging bindmounts + mkdir /mnt/secure/staging 0700 root root - mount rootfs rootfs / rw remount + # Directory-target for where the secure container + # imagefile directory will be bind-mounted + mkdir /mnt/secure/asec 0700 root root + + # Secure container public mount points. + mkdir /mnt/asec 0700 root system + mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000 + + mount rootfs rootfs / ro remount write /proc/sys/kernel/panic_on_oops 1 write /proc/sys/kernel/hung_task_timeout_secs 0 write /proc/cpu/alignment 4 write /proc/sys/kernel/sched_latency_ns 10000000 write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000 + write /proc/sys/kernel/sched_compat_yield 1 + write /proc/sys/kernel/sched_child_runs_first 0 + +# Create cgroup mount points for process groups + mkdir /dev/cpuctl + mount cgroup none /dev/cpuctl cpu + chown system system /dev/cpuctl + chown system system /dev/cpuctl/tasks + chmod 0777 /dev/cpuctl/tasks + write /dev/cpuctl/cpu.shares 1024 + + mkdir /dev/cpuctl/fg_boost + chown system system /dev/cpuctl/fg_boost/tasks + chmod 0777 /dev/cpuctl/fg_boost/tasks + write /dev/cpuctl/fg_boost/cpu.shares 1024 + + mkdir /dev/cpuctl/bg_non_interactive + chown system system /dev/cpuctl/bg_non_interactive/tasks + chmod 0777 /dev/cpuctl/bg_non_interactive/tasks + # 5.0 % + write /dev/cpuctl/bg_non_interactive/cpu.shares 52 # mount mtd partitions # Hack... # We'll attempt to mount both as sdcard and harddisk... # Only one or the other will actually work... this way, we can # use the same init.rc for both - mount ext3 /dev/block/mmcblk0p6 /system - mount ext3 /dev/block/mmcblk0p6 /system rw remount - mount ext3 /dev/block/mmcblk0p2 /data nosuid nodev - mount ext3 /dev/block/mmcblk0p7 /cache nosuid nodev - mount ext3 /dev/block/sda6 /system - mount ext3 /dev/block/sda6 /system rw remount + # Mount /system rw first to give the filesystem a chance to save a checkpoint + mount ext3 /dev/block/sda6 /system rw + mount ext3 /dev/block/sda6 /system ro remount mount ext3 /dev/block/sda8 /data + mount ext3 /dev/block/sda7 /cache nosuid nodev # We chown/chmod /data again so because mount is run as root + defaults chown system system /data chmod 0771 /data + # Create dump dir and collect dumps. + # Do this before we mount cache so eventually we can use cache for + # storing dumps on platforms which do not have a dedicated dump partition. + + mkdir /data/dontpanic + chown root log /data/dontpanic + chmod 0750 /data/dontpanic + + # Collect apanic data, free resources and re-arm trigger + copy /proc/apanic_console /data/dontpanic/apanic_console + chown root log /data/dontpanic/apanic_console + chmod 0640 /data/dontpanic/apanic_console + + copy /proc/apanic_threads /data/dontpanic/apanic_threads + chown root log /data/dontpanic/apanic_threads + chmod 0640 /data/dontpanic/apanic_threads + + write /proc/apanic_console 1 + # Same reason as /data above chown system cache /cache chmod 0770 /cache # This may have been created by the recovery system with odd permissions - chown system system /cache/recovery + chown system cache /cache/recovery chmod 0770 /cache/recovery + #change permissions on vmallocinfo so we can grab it from bugreports + chown root log /proc/vmallocinfo + chmod 0440 /proc/vmallocinfo + + #change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks + chown root system /proc/kmsg + chmod 0440 /proc/kmsg + chown root system /proc/sysrq-trigger + chmod 0220 /proc/sysrq-trigger + # create basic filesystem structure mkdir /data/misc 01771 system misc - mkdir /data/misc/hcid 0770 bluetooth bluetooth + mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth + mkdir /data/misc/bluetooth 0770 system system + mkdir /data/misc/keystore 0700 keystore keystore + mkdir /data/misc/vpn 0770 system system + mkdir /data/misc/systemkeys 0700 system system + mkdir /data/misc/vpn/profiles 0770 system system + # give system access to wpa_supplicant.conf for backup and restore + mkdir /data/misc/wifi 0770 wifi wifi + chmod 0770 /data/misc/wifi + chmod 0660 /data/misc/wifi/wpa_supplicant.conf mkdir /data/local 0771 shell shell mkdir /data/local/tmp 0771 shell shell mkdir /data/data 0771 system system @@ -77,7 +157,6 @@ loglevel 3 chmod 0771 /data/dalvik-cache # create the lost+found directories, so as to enforce our permissions - mkdir /system/lost+found 0770 mkdir /data/lost+found 0770 mkdir /cache/lost+found 0770 @@ -88,32 +167,24 @@ loglevel 3 chmod 0770 /cache/lost+found on boot - -### Load some modules - # basic network init ifup lo hostname localhost domainname localdomain - # set RLIMIT_NICE to allow priorities from 19 to -20 setrlimit 13 40 40 - mkdir /data/core 0777 - write /proc/sys/kernel/core_pattern /data/core/%e.%p - setrlimit 4 -1 -1 # Define the oom_adj values for the classes of processes that can be # killed by the kernel. These are used in ActivityManagerService. setprop ro.FOREGROUND_APP_ADJ 0 setprop ro.VISIBLE_APP_ADJ 1 setprop ro.SECONDARY_SERVER_ADJ 2 + setprop ro.BACKUP_APP_ADJ 2 + setprop ro.HOME_APP_ADJ 4 setprop ro.HIDDEN_APP_MIN_ADJ 7 setprop ro.CONTENT_PROVIDER_ADJ 14 setprop ro.EMPTY_APP_ADJ 15 - setprop ro.BACKUP_APP_ADJ 2 - setprop ro.HOME_APP_ADJ 4 - # Define the memory thresholds at which the above process classes will # be killed. These numbers are in pages (4k). @@ -126,16 +197,22 @@ on boot setprop ro.CONTENT_PROVIDER_MEM 5632 setprop ro.EMPTY_APP_MEM 6144 - # Write value must be consistent with the above properties. +# Note that the driver only supports 6 slots, so we have HOME_APP at the +# same memory level as services. write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15 write /proc/sys/vm/overcommit_memory 1 - write /sys/module/lowmemorykiller/parameters/minfree 1536,2048,4096,8192,16384 + write /proc/sys/vm/min_free_order_shift 4 + write /sys/module/lowmemorykiller/parameters/minfree 1536,2048,4096,5120,5632,6144 # Set init its forked children's oom_adj. write /proc/1/oom_adj -16 + # Tweak background writeout + write /proc/sys/vm/dirty_expire_centisecs 200 + write /proc/sys/vm/dirty_background_ratio 5 + # Permissions for System Server and daemons. chown radio system /sys/android_power/state chown radio system /sys/android_power/request_state @@ -148,11 +225,11 @@ on boot chmod 0660 /sys/power/state chmod 0660 /sys/power/wake_lock chmod 0660 /sys/power/wake_unlock - chown system system /sys/class/timed_output/vibrator/enable chown system system /sys/class/leds/keyboard-backlight/brightness chown system system /sys/class/leds/lcd-backlight/brightness chown system system /sys/class/leds/button-backlight/brightness + chown system system /sys/class/leds/jogball-backlight/brightness chown system system /sys/class/leds/red/brightness chown system system /sys/class/leds/green/brightness chown system system /sys/class/leds/blue/brightness @@ -166,10 +243,7 @@ on boot chown system system /sys/class/leds/red/device/grppwm chown system system /sys/class/leds/red/device/blink chown system system /sys/class/timed_output/vibrator/enable - chown bluetooth bluetooth /sys/module/board_trout/parameters/bluetooth_power_on chown system system /sys/module/sco/parameters/disable_esco - chmod 0660 /sys/module/board_trout/parameters/bluetooth_power_on - chown radio audio /system/etc/AudioPara4.csv chown system system /sys/kernel/ipv4/tcp_wmem_min chown system system /sys/kernel/ipv4/tcp_wmem_def chown system system /sys/kernel/ipv4/tcp_wmem_max @@ -178,9 +252,6 @@ on boot chown system system /sys/kernel/ipv4/tcp_rmem_max chown root radio /proc/cmdline -# Enable audio based on existing /dev/dsp - chmod 0666 /dev/snd/dsp - # Define TCP buffer sizes for various networks # ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax, setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208 @@ -191,7 +262,6 @@ on boot class_start default - ## Daemon processes to be run by init. ## service console /system/bin/sh @@ -199,16 +269,12 @@ service console /system/bin/sh # adbd is controlled by the persist.service.adb.enable system property service adbd /sbin/adbd -# disabled + disabled # adbd on at boot in emulator on property:ro.kernel.qemu=1 start adbd -# adbd on at boot in insecure builds -on property:ro.secure=0 - start adbd - on property:persist.service.adb.enable=1 start adbd @@ -223,32 +289,104 @@ service servicemanager /system/bin/servicemanager service vold /system/bin/vold socket vold stream 0660 root mount + ioprio be 2 + +service netd /system/bin/netd + socket netd stream 0660 root system + +service debuggerd /system/bin/debuggerd + +service ril-daemon /system/bin/rild + socket rild stream 660 root radio + socket rild-debug stream 660 radio system + user root + group radio cache inet misc audio + +service rcpvr /system/bin/sh /system/etc/rc.pvr start + oneshot +# service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server service zygote /system/bin/app_process -Xzygote -Xint:fast /system/bin --zygote --start-system-server socket zygote stream 666 + write /sys/power/wake_lock always_on onrestart write /sys/android_power/request_state wake + onrestart write /sys/power/state on + onrestart restart media service media /system/bin/mediaserver user media - group system audio camera graphics inet net_bt net_bt_admin + group system audio camera graphics inet net_bt net_bt_admin net_raw + ioprio rt 4 + +service bootanim /system/bin/bootanimation + user graphics + group graphics + disabled + oneshot service dbus /system/bin/dbus-daemon --system --nofork socket dbus stream 660 bluetooth bluetooth user bluetooth group bluetooth net_bt_admin -service brick /system/bin/wipe nuke +service bluetoothd /system/bin/bluetoothd -n + socket bluetooth stream 660 bluetooth bluetooth + socket dbus_bluetooth stream 660 bluetooth bluetooth + # init.rc does not yet support applying capabilities, so run as root and + # let bluetoothd drop uid to bluetooth with the right linux capabilities + group bluetooth net_bt_admin misc disabled +service hfag /system/bin/sdptool add --channel=10 HFAG + user bluetooth + group bluetooth net_bt_admin + disabled + oneshot + +service hsag /system/bin/sdptool add --channel=11 HSAG + user bluetooth + group bluetooth net_bt_admin + disabled + oneshot + +service opush /system/bin/sdptool add --channel=12 OPUSH + user bluetooth + group bluetooth net_bt_admin + disabled + oneshot + +service pbap /system/bin/sdptool add --channel=19 PBAP + user bluetooth + group bluetooth net_bt_admin + disabled + oneshot + service installd /system/bin/installd socket installd stream 600 system system -# -# Set by PRODUCT_PROPERTY_OVERRIDES in <product>.mk -on property:net.eth0.startonboot=1 - setprop ro.com.android.dataroaming true - start start_eth0 +service flash_recovery /system/etc/install-recovery.sh + oneshot + +service racoon /system/bin/racoon + socket racoon stream 600 system system + # racoon will setuid to vpn after getting necessary resources. + group net_admin + disabled + oneshot -service start_eth0 /system/bin/netcfg eth0 dhcp +service mtpd /system/bin/mtpd + socket mtpd stream 600 system system + user vpn + group vpn net_admin net_raw + disabled oneshot + +service keystore /system/bin/keystore /data/misc/keystore + user keystore + group keystore + socket keystore stream 666 + +service dumpstate /system/bin/dumpstate -s + socket dumpstate stream 0660 shell log disabled + oneshot diff --git a/target/product/AndroidProducts.mk b/target/product/AndroidProducts.mk index 9a91da9..32416c5 100644 --- a/target/product/AndroidProducts.mk +++ b/target/product/AndroidProducts.mk @@ -25,17 +25,19 @@ # it includes. # -# An unbundled app build needs only generic.mk. +# Unbundled apps will be built with the default product config. ifneq ($(TARGET_BUILD_APPS),) PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/core.mk \ - $(LOCAL_DIR)/generic.mk + $(LOCAL_DIR)/generic.mk \ + $(LOCAL_DIR)/full.mk else PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/core.mk \ $(LOCAL_DIR)/generic.mk \ $(LOCAL_DIR)/generic_x86.mk \ $(LOCAL_DIR)/full.mk \ + $(LOCAL_DIR)/full_x86.mk \ $(LOCAL_DIR)/sdk.mk \ $(LOCAL_DIR)/sim.mk endif diff --git a/target/product/core.mk b/target/product/core.mk index 0b906e0..55d6c26 100644 --- a/target/product/core.mk +++ b/target/product/core.mk @@ -41,6 +41,7 @@ PRODUCT_PACKAGES := \ framework-res \ hprof-conv \ icu.dat \ + ip-up-vpn \ jasmin \ jasmin.jar \ libcrypto \ diff --git a/target/product/full.mk b/target/product/full.mk index c204aad..c563bcc 100644 --- a/target/product/full.mk +++ b/target/product/full.mk @@ -16,44 +16,14 @@ # This is a build configuration for a full-featured build of the # Open-Source part of the tree. It's geared toward a US-centric -# build of the emulator, but all those aspects can be overridden -# in inherited configurations. +# build quite specifically for the emulator, and might not be +# entirely appropriate to inherit from for on-device configurations. -PRODUCT_PACKAGES := \ - OpenWnn \ - PinyinIME \ - VoiceDialer \ - libWnnEngDic \ - libWnnJpnDic \ - libwnndict - -# Additional settings used in all AOSP builds -PRODUCT_PROPERTY_OVERRIDES := \ - keyguard.no_require_sim=true \ - ro.com.android.dateformat=MM-dd-yyyy \ - ro.com.android.dataroaming=true \ - ro.ril.hsxpa=1 \ - ro.ril.gprsclass=10 - -PRODUCT_COPY_FILES := \ - development/data/etc/apns-conf.xml:system/etc/apns-conf.xml \ - development/data/etc/vold.conf:system/etc/vold.conf - -# Pick up some sounds - stick with the short list to save space -# on smaller devices. -$(call inherit-product, frameworks/base/data/sounds/OriginalAudio.mk) - -# Get the TTS language packs -$(call inherit-product-if-exists, external/svox/pico/lang/all_pico_languages.mk) - -# Get a list of languages. We use the small list to save space -# on smaller devices. -$(call inherit-product, build/target/product/languages_small.mk) - -$(call inherit-product, build/target/product/generic.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/board/generic/device.mk) # Overrides PRODUCT_NAME := full -PRODUCT_BRAND := generic PRODUCT_DEVICE := generic -PRODUCT_MODEL := Full Android +PRODUCT_BRAND := Android +PRODUCT_MODEL := Full Android on Emulator diff --git a/target/product/full_base.mk b/target/product/full_base.mk new file mode 100644 index 0000000..fb9b528 --- /dev/null +++ b/target/product/full_base.mk @@ -0,0 +1,49 @@ +# +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# This is a build configuration for a full-featured build of the +# Open-Source part of the tree. This is a base configuration to +# bes used for AOSP builds on various target devices. + +PRODUCT_PACKAGES := \ + OpenWnn \ + PinyinIME \ + VoiceDialer \ + libWnnEngDic \ + libWnnJpnDic \ + libwnndict + +# Additional settings used in all AOSP builds +PRODUCT_PROPERTY_OVERRIDES := \ + keyguard.no_require_sim=true \ + ro.com.android.dateformat=MM-dd-yyyy \ + ro.com.android.dataroaming=true \ + ro.config.ringtone=Ring_Synth_04.ogg \ + ro.config.notification_sound=pixiedust.ogg + +# Put en_US first in the list, to make it default. +PRODUCT_LOCALES := en_US + +# Get some sounds +$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudio.mk) + +# Get the TTS language packs +$(call inherit-product-if-exists, external/svox/pico/lang/all_pico_languages.mk) + +# Get the list of languages. +$(call inherit-product, $(SRC_TARGET_DIR)/product/locales_full.mk) + +$(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk) diff --git a/target/product/full_x86.mk b/target/product/full_x86.mk new file mode 100644 index 0000000..affdc13 --- /dev/null +++ b/target/product/full_x86.mk @@ -0,0 +1,34 @@ +# +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# This is a build configuration for a full-featured build of the +# Open-Source part of the tree. It's geared toward a US-centric +# x86 build, but all those aspects can be overridden +# in inherited configurations. + +# If running on an emulator or some other device that has a LAN connection +# that isn't a wifi connection. This will instruct init.rc to enable the +# network connection so that you can use it with ADB +ifdef NET_ETH0_STARTONBOOT + PRODUCT_PROPERTY_OVERRIDES += net.eth0.startonboot=1 +endif + +$(call inherit-product, build/target/product/full.mk) + +# Overrides +PRODUCT_NAME := full_x86 +PRODUCT_DEVICE := generic_x86 +PRODUCT_MODEL := Full Android x86 diff --git a/target/product/generic_x86.mk b/target/product/generic_x86.mk index 9713900..345a79a 100644 --- a/target/product/generic_x86.mk +++ b/target/product/generic_x86.mk @@ -3,7 +3,7 @@ # you should derive from generic_with_google.mk PRODUCT_PACKAGES := \ - AlarmClock \ + DeskClock \ AlarmProvider \ Calendar \ Camera \ diff --git a/target/product/locales_full.mk b/target/product/locales_full.mk new file mode 100644 index 0000000..cf10392 --- /dev/null +++ b/target/product/locales_full.mk @@ -0,0 +1,5 @@ +# The locales from the ICU "-large.dat" data set. +# See external/icu4c/stubdata. +# This is distinct from "languages_full.mk", which contains those locales for +# which we have translations. If you like, this file is i18n rather than l18n. +PRODUCT_LOCALES := cs_CZ da_DK de_AT de_CH de_DE de_LI el_GR en_AU en_CA en_GB en_NZ en_SG en_US es_ES fr_CA fr_CH fr_BE fr_FR it_CH it_IT ja_JP ko_KR nb_NO nl_BE nl_NL pl_PL pt_PT ru_RU sv_SE tr_TR zh_CN zh_HK zh_TW diff --git a/target/product/sdk.mk b/target/product/sdk.mk index d73e702..7a986bd 100644 --- a/target/product/sdk.mk +++ b/target/product/sdk.mk @@ -49,7 +49,12 @@ PRODUCT_PACKAGES := \ GestureBuilder \ SoftKeyboard \ CubeLiveWallpapers \ - QuickSearchBox + QuickSearchBox \ + monkeyrunner \ + guavalib \ + jsr305lib \ + jython \ + jsilver # Host tools that are parts of the SDK. # See development/build/sdk.atree @@ -66,7 +71,8 @@ PRODUCT_PACKAGES += \ layoutopt \ traceview \ android \ - dexdump + dexdump \ + monkeyrunner # Native host Java libraries that are parts of the SDK. # See development/build/sdk.atree @@ -99,7 +105,11 @@ PRODUCT_PACKAGES += \ org.eclipse.equinox.common_3.4.0.v20080421-2006 \ org.eclipse.jface_3.4.2.M20090107-0800 \ osgi \ - layoutlib + layoutlib \ + monkeyrunner \ + guavalib \ + jsr305lib \ + jython PRODUCT_PACKAGE_OVERLAYS := development/sdk_overlay diff --git a/target/product/sim.mk b/target/product/sim.mk index 51b3676..09722d6 100644 --- a/target/product/sim.mk +++ b/target/product/sim.mk @@ -1,6 +1,6 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/locales_full.mk) # Overrides PRODUCT_NAME := sim PRODUCT_DEVICE := sim -PRODUCT_LOCALES := en_US diff --git a/tools/mktarball.sh b/tools/mktarball.sh index ea1a8ed..3e32006 100755 --- a/tools/mktarball.sh +++ b/tools/mktarball.sh @@ -39,7 +39,14 @@ for f in ${subdirs} ${files} ; do done if [ $? -eq 0 ] ; then - bzip2 -c ${target_tar} > ${target_tarball} + case "${target_tarball}" in + *.bz2 ) + bzip2 -c ${target_tar} > ${target_tarball} + ;; + *.gz ) + gzip -c ${target_tar} > ${target_tarball} + ;; + esac success=$? [ $success -eq 0 ] || rm -f ${target_tarball} rm -f ${target_tar} |