Merge "Remove more of the pathmap."
diff --git a/core/base_rules.mk b/core/base_rules.mk
index 72278ce..d96502d 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -255,6 +255,15 @@
.PHONY: $(my_register_name)
$(my_register_name): $(LOCAL_BUILT_MODULE) $(LOCAL_INSTALLED_MODULE)
+# Set up phony targets that covers all modules under the given paths.
+# This allows us to build everything in given paths by running mmma/mma.
+my_path_components := $(subst /,$(space),$(LOCAL_PATH))
+my_path_prefix := MODULES-IN
+$(foreach c, $(my_path_components),\
+ $(eval my_path_prefix := $(my_path_prefix)/$(c))\
+ $(eval .PHONY : $(my_path_prefix))\
+ $(eval $(my_path_prefix) : $(my_register_name)))
+
###########################################################
## Module installation rule
###########################################################
diff --git a/core/combo/HOST_linux-x86.mk b/core/combo/HOST_linux-x86.mk
index 6ea526c..4caf607 100644
--- a/core/combo/HOST_linux-x86.mk
+++ b/core/combo/HOST_linux-x86.mk
@@ -25,7 +25,7 @@
$(combo_2nd_arch_prefix)HOST_AR := $($(combo_2nd_arch_prefix)HOST_TOOLCHAIN_PREFIX)ar
# gcc location for clang; to be updated when clang is updated
-$(combo_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG := prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/
+$(combo_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG := prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8
# We expect SSE3 floating point math.
$(combo_2nd_arch_prefix)HOST_GLOBAL_CFLAGS += -msse3 -mfpmath=sse -m32 -Wa,--noexecstack -march=prescott
diff --git a/core/combo/HOST_linux-x86_64.mk b/core/combo/HOST_linux-x86_64.mk
index 13e1e8a..3708137 100644
--- a/core/combo/HOST_linux-x86_64.mk
+++ b/core/combo/HOST_linux-x86_64.mk
@@ -25,7 +25,7 @@
HOST_AR := $(HOST_TOOLCHAIN_PREFIX)ar
# gcc location for clang; to be updated when clang is updated
-HOST_TOOLCHAIN_FOR_CLANG := prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/
+HOST_TOOLCHAIN_FOR_CLANG := prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8
HOST_GLOBAL_CFLAGS += -m64 -Wa,--noexecstack
HOST_GLOBAL_LDFLAGS += -m64 -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now
diff --git a/core/config.mk b/core/config.mk
index e7a1d20..a7517f3 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -23,6 +23,10 @@
endef
+# The pound character "#"
+define pound
+#
+endef
# Unfortunately you can't simply define backslash as \ or \\.
backslash := \a
backslash := $(patsubst %a,%,$(backslash))
@@ -116,8 +120,8 @@
COMMON_GLOBAL_CFLAGS:= -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith
COMMON_RELEASE_CFLAGS:= -DNDEBUG -UDEBUG
-COMMON_GLOBAL_CPPFLAGS:= $(COMMON_GLOBAL_CFLAGS) -Wsign-promo
-COMMON_RELEASE_CPPFLAGS:= $(COMMON_RELEASE_CFLAGS)
+COMMON_GLOBAL_CPPFLAGS:= -Wsign-promo
+COMMON_RELEASE_CPPFLAGS:=
GLOBAL_CFLAGS_NO_OVERRIDE := \
-Werror=int-to-pointer-cast \
@@ -177,7 +181,6 @@
ifeq ($(OVERRIDE_C_DATE_TIME),true)
COMMON_GLOBAL_CFLAGS += -Wno-builtin-macro-redefined -D__DATE__="\"$(BUILD_DATETIME_C_DATE)\"" -D__TIME__=\"$(BUILD_DATETIME_C_TIME)\"
-COMMON_GLOBAL_CPPFLAGS += -Wno-builtin-macro-redefined -D__DATE__="\"$(BUILD_DATETIME_C_DATE)\"" -D__TIME__=\"$(BUILD_DATETIME_C_TIME)\"
endif
# The build system exposes several variables for where to find the kernel
@@ -578,7 +581,6 @@
# sure to only specify them for the target compilers checked in to
# the source tree.
TARGET_GLOBAL_CFLAGS += $(TARGET_ERROR_FLAGS)
-TARGET_GLOBAL_CPPFLAGS += $(TARGET_ERROR_FLAGS)
HOST_GLOBAL_CFLAGS += $(HOST_RELEASE_CFLAGS)
HOST_GLOBAL_CPPFLAGS += $(HOST_RELEASE_CPPFLAGS)
@@ -594,7 +596,6 @@
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LD_DIRS += -L$($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATE_LIBRARIES)
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_PROJECT_INCLUDES := $(TARGET_PROJECT_INCLUDES)
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CFLAGS += $(TARGET_ERROR_FLAGS)
-$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CPPFLAGS += $(TARGET_ERROR_FLAGS)
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CFLAGS += $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_RELEASE_CFLAGS)
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CPPFLAGS += $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_RELEASE_CPPFLAGS)
endif
diff --git a/core/cxx_stl_setup.mk b/core/cxx_stl_setup.mk
index bf492d5..be8a711 100644
--- a/core/cxx_stl_setup.mk
+++ b/core/cxx_stl_setup.mk
@@ -72,7 +72,6 @@
ifneq ($(filter $(my_cxx_stl),libc++ libc++_static),)
my_cflags += -D_USING_LIBCXX
- my_c_includes += external/libcxx/include
# Note that the structure of this means that LOCAL_CXX_STL := libc++ will
# use the static libc++ for static executables.
diff --git a/core/definitions.mk b/core/definitions.mk
index 57b0af0..af3929e 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -187,10 +187,10 @@
###########################################################
define all-java-files-under
-$(patsubst ./%,%, \
+$(sort $(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find -L $(1) -name "*.java" -and -not -name ".*") \
- )
+ ))
endef
###########################################################
@@ -209,10 +209,10 @@
###########################################################
define all-c-files-under
-$(patsubst ./%,%, \
+$(sort $(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find -L $(1) -name "*.c" -and -not -name ".*") \
- )
+ ))
endef
###########################################################
@@ -231,10 +231,10 @@
###########################################################
define all-Iaidl-files-under
-$(patsubst ./%,%, \
+$(sort $(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find -L $(1) -name "I*.aidl" -and -not -name ".*") \
- )
+ ))
endef
###########################################################
@@ -252,10 +252,10 @@
###########################################################
define all-logtags-files-under
-$(patsubst ./%,%, \
+$(sort $(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find -L $(1) -name "*.logtags" -and -not -name ".*") \
- )
+ ))
endef
###########################################################
@@ -265,10 +265,10 @@
###########################################################
define all-proto-files-under
-$(patsubst ./%,%, \
+$(sort $(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find -L $(1) -name "*.proto" -and -not -name ".*") \
- )
+ ))
endef
###########################################################
@@ -278,10 +278,10 @@
###########################################################
define all-renderscript-files-under
-$(patsubst ./%,%, \
+$(sort $(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find -L $(1) \( -name "*.rs" -or -name "*.fs" \) -and -not -name ".*") \
- )
+ ))
endef
###########################################################
@@ -291,10 +291,10 @@
###########################################################
define all-S-files-under
-$(patsubst ./%,%, \
+$(sort $(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find -L $(1) -name "*.S" -and -not -name ".*") \
- )
+ ))
endef
###########################################################
@@ -304,10 +304,10 @@
###########################################################
define all-html-files-under
-$(patsubst ./%,%, \
+$(sort $(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find -L $(1) -name "*.html" -and -not -name ".*") \
- )
+ ))
endef
###########################################################
@@ -325,7 +325,7 @@
###########################################################
define find-subdir-files
-$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) ; find -L $(1)))
+$(sort $(patsubst ./%,%,$(shell cd $(LOCAL_PATH) ; find -L $(1))))
endef
###########################################################
@@ -337,8 +337,8 @@
###########################################################
define find-subdir-subdir-files
-$(filter-out $(patsubst %,$(1)/%,$(3)),$(patsubst ./%,%,$(shell cd \
- $(LOCAL_PATH) ; find -L $(1) -maxdepth 1 -name $(2))))
+$(sort $(filter-out $(patsubst %,$(1)/%,$(3)),$(patsubst ./%,%,$(shell cd \
+ $(LOCAL_PATH) ; find -L $(1) -maxdepth 1 -name $(2)))))
endef
###########################################################
@@ -347,10 +347,10 @@
###########################################################
define find-subdir-assets
-$(if $(1),$(patsubst ./%,%, \
+$(sort $(if $(1),$(patsubst ./%,%, \
$(shell if [ -d $(1) ] ; then cd $(1) ; find ./ -not -name '.*' -and -type f -and -not -type l ; fi)), \
$(warning Empty argument supplied to find-subdir-assets) \
-)
+))
endef
###########################################################
@@ -375,10 +375,10 @@
###########################################################
define find-files-in-subdirs
-$(patsubst ./%,%, \
+$(sort $(patsubst ./%,%, \
$(shell cd $(1) ; \
find -L $(3) -name $(2) -and -not -name ".*") \
- )
+ ))
endef
###########################################################
diff --git a/core/ninja.mk b/core/ninja.mk
index 56b4ac5..b9a0cec 100644
--- a/core/ninja.mk
+++ b/core/ninja.mk
@@ -7,7 +7,7 @@
PARSE_TIME_MAKE_GOALS := \
$(PARSE_TIME_MAKE_GOALS) \
$(dont_bother_goals) \
- %tests \
+ tests \
APP-% \
DUMP_% \
ECLIPSE-% \
@@ -73,8 +73,26 @@
KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-mmma-$(call replace_space_and_slash,$(BUILD_MODULES_IN_PATHS))
endif
+my_checksum_suffix :=
+ifneq ($(KATI_NINJA_SUFFIX),)
+my_ninja_suffix_too_long := $(filter 1, $(shell v='$(KATI_NINJA_SUFFIX)' && echo $$(($${$(pound)v} > 64))))
+ifneq ($(my_ninja_suffix_too_long),)
+# Replace the suffix with a checksum if it gets too long.
+my_checksum_suffix := $(KATI_NINJA_SUFFIX)
+KATI_NINJA_SUFFIX := -$(word 1, $(shell echo $(my_checksum_suffix) | $(MD5SUM)))
+endif
+endif
+
KATI_BUILD_NINJA := $(PRODUCT_OUT)/build$(KATI_NINJA_SUFFIX).ninja
KATI_NINJA_SH := $(PRODUCT_OUT)/ninja$(KATI_NINJA_SUFFIX).sh
+
+# Write out a file mapping checksum to the real suffix.
+ifneq ($(my_checksum_suffix),)
+my_ninja_suffix_file := $(basename $(KATI_BUILD_NINJA)).suf
+$(shell mkdir -p $(dir $(my_ninja_suffix_file)) && \
+ echo $(my_checksum_suffix) > $(my_ninja_suffix_file))
+endif
+
KATI_OUTPUTS := $(KATI_BUILD_NINJA) $(KATI_NINJA_SH)
ifeq (,$(NINJA_STATUS))
@@ -115,10 +133,9 @@
.INTERMEDIATE: kati.intermediate
kati.intermediate: $(KATI) $(MAKEPARALLEL)
@echo Running kati to generate build$(KATI_NINJA_SUFFIX).ninja...
- @#TODO: use separate ninja file for mm or single target build
+$(hide) $(KATI_MAKEPARALLEL) $(KATI) --ninja --ninja_dir=$(PRODUCT_OUT) --ninja_suffix=$(KATI_NINJA_SUFFIX) --regen --ignore_dirty=$(OUT_DIR)/% --ignore_optional_include=$(OUT_DIR)/%.P --detect_android_echo --use_find_emulator $(KATI_REMOTE_NUM_JOBS_FLAG) -f build/core/main.mk $(or $(KATI_TARGETS),--gen_all_phony_targets) USE_NINJA=false
-KATI_CXX := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_CPPFLAGS)
+KATI_CXX := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_CFLAGS) $(CLANG_HOST_GLOBAL_CPPFLAGS)
KATI_LD := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_LDFLAGS)
# Build static ckati. Unfortunately Mac OS X doesn't officially support static exectuables.
ifeq ($(BUILD_OS),linux)
diff --git a/core/shared_library.mk b/core/shared_library.mk
index 71a3bb2..73aca78c 100644
--- a/core/shared_library.mk
+++ b/core/shared_library.mk
@@ -9,13 +9,13 @@
ifeq ($(my_module_multilib),both)
ifneq ($(LOCAL_MODULE_PATH),)
ifneq ($(TARGET_2ND_ARCH),)
-$(warning $(LOCAL_MODULE): LOCAL_MODULE_PATH for shared libraries is unsupported in multiarch builds, use LOCAL_MODULE_RELATIVE_PATH instead)
+$(error $(LOCAL_MODULE): LOCAL_MODULE_PATH for shared libraries is unsupported in multiarch builds, use LOCAL_MODULE_RELATIVE_PATH instead)
endif
endif
ifneq ($(LOCAL_UNSTRIPPED_PATH),)
ifneq ($(TARGET_2ND_ARCH),)
-$(warning $(LOCAL_MODULE): LOCAL_UNSTRIPPED_PATH for shared libraries is unsupported in multiarch builds)
+$(error $(LOCAL_MODULE): LOCAL_UNSTRIPPED_PATH for shared libraries is unsupported in multiarch builds)
endif
endif
endif # my_module_multilib == both
diff --git a/envsetup.sh b/envsetup.sh
index fcf3b47..1ff5f4a 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -751,7 +751,7 @@
MAKEFILE="$MAKEFILE $MFILE"
else
case $DIR in
- showcommands | snod | dist | incrementaljavac) ARGS="$ARGS $DIR";;
+ showcommands | snod | dist | *=*) ARGS="$ARGS $DIR";;
GET-INSTALL-PATH) GET_INSTALL_PATH=$DIR;;
*) echo "No Android.mk in $DIR."; return 1;;
esac
@@ -780,7 +780,7 @@
return 1
fi
local MY_PWD=`PWD= /bin/pwd|sed 's:'$T'/::'`
- $DRV make -C $T -f build/core/main.mk $@ all_modules BUILD_MODULES_IN_PATHS="$MY_PWD"
+ $DRV make -C $T -f build/core/main.mk $@ MODULES-IN/$MY_PWD
fi
}
@@ -798,23 +798,25 @@
MY_PWD=`echo $MY_PWD|sed 's:'$T'/::'`
fi
local DIR=
- local MODULE_PATHS=
+ local MODULES_IN_PATHS=
local ARGS=
for DIR in $DIRS ; do
if [ -d $DIR ]; then
- if [ "$MY_PWD" = "" ]; then
- MODULE_PATHS="$MODULE_PATHS $DIR"
- else
- MODULE_PATHS="$MODULE_PATHS $MY_PWD/$DIR"
+ # Remove the leading ./ and trailing / if any exists.
+ DIR=${DIR#./}
+ DIR=${DIR%/}
+ if [ "$MY_PWD" != "" ]; then
+ DIR=$MY_PWD/$DIR
fi
+ MODULES_IN_PATHS="$MODULES_IN_PATHS MODULES-IN/$DIR"
else
case $DIR in
- showcommands | snod | dist | incrementaljavac) ARGS="$ARGS $DIR";;
+ showcommands | snod | dist | *=*) ARGS="$ARGS $DIR";;
*) echo "Couldn't find directory $DIR"; return 1;;
esac
fi
done
- $DRV make -C $T -f build/core/main.mk $DASH_ARGS $ARGS all_modules BUILD_MODULES_IN_PATHS="$MODULE_PATHS"
+ $DRV make -C $T -f build/core/main.mk $DASH_ARGS $ARGS $MODULES_IN_PATHS
else
echo "Couldn't locate the top of the tree. Try setting TOP."
return 1
diff --git a/target/product/core_tiny.mk b/target/product/core_tiny.mk
index 39789d9..4abe386 100644
--- a/target/product/core_tiny.mk
+++ b/target/product/core_tiny.mk
@@ -56,6 +56,7 @@
iptables \
keystore \
keystore.default \
+ ld.mc \
libOpenMAXAL \
libOpenSLES \
libdownmix \