aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2014-02-18 21:29:27 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-02-18 21:29:27 +0000
commita2836f4c21141d36a324a49639d14c7d97472cb6 (patch)
tree9997e9aae6eb1700b223cf28b77711e4e86fd468
parent59d01ebe17c1b4396b8d24a31a4675803d32eeac (diff)
parent45d4c017bd11d9e7cce24bf3986e4e6451f60103 (diff)
downloadv8-idea133-weekly-release.tar.gz
Merge "v8: support multilib builds"idea133-weekly-release
-rw-r--r--Android.d8.mk2
-rw-r--r--Android.libv8.mk72
-rw-r--r--Android.mk18
-rw-r--r--Android.mksnapshot.mk81
-rw-r--r--Android.v8common.mk17
5 files changed, 96 insertions, 94 deletions
diff --git a/Android.d8.mk b/Android.d8.mk
index 0f74eb5e..f512e758 100644
--- a/Android.d8.mk
+++ b/Android.d8.mk
@@ -19,4 +19,6 @@ LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include
+LOCAL_MODULE_TARGET_ARCH_WARN := $(V8_SUPPORTED_ARCH)
+
include $(BUILD_EXECUTABLE)
diff --git a/Android.libv8.mk b/Android.libv8.mk
index 586980cf..d83857bb 100644
--- a/Android.libv8.mk
+++ b/Android.libv8.mk
@@ -13,64 +13,70 @@ endif
# Set up the target identity
LOCAL_MODULE := libv8
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
-intermediates := $(call local-intermediates-dir)
+generated_sources := $(call local-generated-sources-dir)
-# Android.v8common.mk defines common V8_LOCAL_SRC_FILES
-# and V8_LOCAL_JS_LIBRARY_FILES
-V8_LOCAL_SRC_FILES :=
+# Android.v8common.mk defines V8_LOCAL_JS_LIBRARY_FILES, LOCAL_SRC_FILES,
+# LOCAL_CFLAGS, LOCAL_SRC_FILES_arch, and LOCAL_CFLAGS_arch
V8_LOCAL_JS_LIBRARY_FILES :=
V8_LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES :=
include $(LOCAL_PATH)/Android.v8common.mk
# Target can only be linux
-V8_LOCAL_SRC_FILES += \
+LOCAL_SRC_FILES += \
src/platform-linux.cc \
src/platform-posix.cc
-ifeq ($(TARGET_ARCH),x86)
-V8_LOCAL_SRC_FILES += src/atomicops_internals_x86_gcc.cc
-endif
-
-LOCAL_SRC_FILES := $(V8_LOCAL_SRC_FILES)
+LOCAL_SRC_FILES_x86 += src/atomicops_internals_x86_gcc.cc
LOCAL_JS_LIBRARY_FILES := $(addprefix $(LOCAL_PATH)/, $(V8_LOCAL_JS_LIBRARY_FILES))
LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES := $(addprefix $(LOCAL_PATH)/, $(V8_LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES))
-# Copy js2c.py to intermediates directory and invoke there to avoid generating
-# jsmin.pyc in the source directory
-JS2C_PY := $(intermediates)/js2c.py $(intermediates)/jsmin.py
-$(JS2C_PY): $(intermediates)/%.py : $(LOCAL_PATH)/tools/%.py | $(ACP)
+# Copy js2c.py to generated sources directory and invoke there to avoid
+# generating jsmin.pyc in the source directory
+JS2C_PY := $(generated_sources)/js2c.py $(generated_sources)/jsmin.py
+$(JS2C_PY): $(generated_sources)/%.py : $(LOCAL_PATH)/tools/%.py | $(ACP)
@echo "Copying $@"
$(copy-file-to-target)
# Generate libraries.cc
-GEN1 := $(intermediates)/libraries.cc
-$(GEN1): SCRIPT := $(intermediates)/js2c.py
+GEN1 := $(generated_sources)/libraries.cc
+$(GEN1): SCRIPT := $(generated_sources)/js2c.py
$(GEN1): $(LOCAL_JS_LIBRARY_FILES) $(JS2C_PY)
@echo "Generating libraries.cc"
@mkdir -p $(dir $@)
python $(SCRIPT) $(GEN1) CORE off $(LOCAL_JS_LIBRARY_FILES)
-V8_GENERATED_LIBRARIES := $(intermediates)/libraries.cc
+V8_GENERATED_LIBRARIES := $(generated_sources)/libraries.cc
# Generate experimental-libraries.cc
-GEN2 := $(intermediates)/experimental-libraries.cc
-$(GEN2): SCRIPT := $(intermediates)/js2c.py
+GEN2 := $(generated_sources)/experimental-libraries.cc
+$(GEN2): SCRIPT := $(generated_sources)/js2c.py
$(GEN2): $(LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES) $(JS2C_PY)
@echo "Generating experimental-libraries.cc"
@mkdir -p $(dir $@)
python $(SCRIPT) $(GEN2) EXPERIMENTAL off $(LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES)
-V8_GENERATED_LIBRARIES += $(intermediates)/experimental-libraries.cc
+V8_GENERATED_LIBRARIES += $(generated_sources)/experimental-libraries.cc
LOCAL_GENERATED_SOURCES += $(V8_GENERATED_LIBRARIES)
# Generate snapshot.cc
ifeq ($(ENABLE_V8_SNAPSHOT),true)
-SNAP_GEN := $(intermediates)/snapshot.cc
+
+SNAP_GEN := $(generated_sources)/snapshot_$(TARGET_ARCH).cc
MKSNAPSHOT := $(HOST_OUT_EXECUTABLES)/mksnapshot.$(TARGET_ARCH)
-$(SNAP_GEN): PRIVATE_CUSTOM_TOOL = $(MKSNAPSHOT) --logfile $(intermediates)/v8.log $(SNAP_GEN)
+$(SNAP_GEN): PRIVATE_CUSTOM_TOOL = $(MKSNAPSHOT) --logfile $(generated_sources)/v8.log $(SNAP_GEN)
+$(SNAP_GEN): $(MKSNAPSHOT)
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES_$(TARGET_ARCH) += $(SNAP_GEN)
+
+ifdef TARGET_2ND_ARCH
+SNAP_GEN := $(generated_sources)/snapshot_$(TARGET_2ND_ARCH).cc
+MKSNAPSHOT := $(HOST_OUT_EXECUTABLES)/mksnapshot.$(TARGET_2ND_ARCH)
+$(SNAP_GEN): PRIVATE_CUSTOM_TOOL = $(MKSNAPSHOT) --logfile $(generated_sources)/v8.log $(SNAP_GEN)
$(SNAP_GEN): $(MKSNAPSHOT)
$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(SNAP_GEN)
+LOCAL_GENERATED_SOURCES_$(TARGET_2ND_ARCH) += $(SNAP_GEN)
+endif # TARGET_2ND_ARCH
+
else
LOCAL_SRC_FILES += \
src/snapshot-empty.cc
@@ -90,20 +96,14 @@ LOCAL_CFLAGS += \
-DV8_NATIVE_REGEXP \
-Wno-unused-parameter
-ifeq ($(TARGET_ARCH),arm)
- LOCAL_CFLAGS += -DARM -DV8_TARGET_ARCH_ARM
-endif
+LOCAL_CFLAGS_arm += -DARM -DV8_TARGET_ARCH_ARM
-ifeq ($(TARGET_ARCH),mips)
- LOCAL_CFLAGS += -DV8_TARGET_ARCH_MIPS
- LOCAL_CFLAGS += -Umips
- LOCAL_CFLAGS += -finline-limit=64
- LOCAL_CFLAGS += -fno-strict-aliasing
-endif
+LOCAL_CFLAGS_mips += -DV8_TARGET_ARCH_MIPS
+LOCAL_CFLAGS_mips += -Umips
+LOCAL_CFLAGS_mips += -finline-limit=64
+LOCAL_CFLAGS_mips += -fno-strict-aliasing
-ifeq ($(TARGET_ARCH),x86)
- LOCAL_CFLAGS += -DV8_TARGET_ARCH_IA32
-endif
+LOCAL_CFLAGS_x86 += -DV8_TARGET_ARCH_IA32
ifeq ($(DEBUG_V8),true)
LOCAL_CFLAGS += -DDEBUG -UNDEBUG
@@ -111,4 +111,6 @@ endif
LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
+LOCAL_MODULE_TARGET_ARCH_WARN := $(V8_SUPPORTED_ARCH)
+
include $(BUILD_STATIC_LIBRARY)
diff --git a/Android.mk b/Android.mk
index 148c60e8..e6ea8dbb 100644
--- a/Android.mk
+++ b/Android.mk
@@ -17,6 +17,8 @@
BASE_PATH := $(call my-dir)
+V8_SUPPORTED_ARCH := arm mips x86
+
ifeq ($(TARGET_ARCH),arm)
ifneq ($(strip $(ARCH_ARM_HAVE_ARMV7A)),true)
$(warning WARNING: Building on ARM with non-ARMv7 variant. On ARM, V8 is well tested only on ARMv7.)
@@ -24,9 +26,15 @@ ifeq ($(TARGET_ARCH),arm)
endif
# Build libv8 and d8
-ifneq ($(filter $(TARGET_ARCH),x86 arm mips),)
- ENABLE_V8_SNAPSHOT = true
- include $(BASE_PATH)/Android.mksnapshot.mk
- include $(BASE_PATH)/Android.libv8.mk
- include $(BASE_PATH)/Android.d8.mk
+
+ENABLE_V8_SNAPSHOT = true
+mksnapshot_arch := $(TARGET_ARCH)
+include $(BASE_PATH)/Android.mksnapshot.mk
+
+ifdef TARGET_2ND_ARCH
+mksnapshot_arch := $(TARGET_2ND_ARCH)
+include $(BASE_PATH)/Android.mksnapshot.mk
endif
+
+include $(BASE_PATH)/Android.libv8.mk
+include $(BASE_PATH)/Android.d8.mk
diff --git a/Android.mksnapshot.mk b/Android.mksnapshot.mk
index c9453143..67b56be7 100644
--- a/Android.mksnapshot.mk
+++ b/Android.mksnapshot.mk
@@ -1,78 +1,75 @@
##
# mksnapshot
# ===================================================
+
+ifneq (,$(filter $(mksnapshot_arch),$(V8_SUPPORTED_ARCH)))
+
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Set up the target identity
LOCAL_IS_HOST_MODULE := true
-LOCAL_MODULE := mksnapshot.$(TARGET_ARCH)
+LOCAL_MODULE := mksnapshot.$(mksnapshot_arch)
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS = optional
-intermediates := $(call local-intermediates-dir)
+generated_sources := $(call local-generated-sources-dir)
+
-V8_LOCAL_SRC_FILES :=
V8_LOCAL_JS_LIBRARY_FILES :=
V8_LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES :=
include $(LOCAL_PATH)/Android.v8common.mk
-V8_LOCAL_SRC_FILES += \
+LOCAL_SRC_FILES += \
src/mksnapshot.cc \
src/snapshot-empty.cc
-ifeq ($(TARGET_ARCH),arm)
-V8_LOCAL_SRC_FILES += src/arm/simulator-arm.cc
-endif
+LOCAL_SRC_FILES_arm += src/arm/simulator-arm.cc
-ifeq ($(TARGET_ARCH),mips)
-V8_LOCAL_SRC_FILES += src/mips/simulator-mips.cc
+LOCAL_SRC_FILES_mips += src/mips/simulator-mips.cc
-endif
ifeq ($(HOST_ARCH),x86)
-V8_LOCAL_SRC_FILES += src/atomicops_internals_x86_gcc.cc
+LOCAL_SRC_FILES += src/atomicops_internals_x86_gcc.cc
endif
ifeq ($(HOST_OS),linux)
-V8_LOCAL_SRC_FILES += \
+LOCAL_SRC_FILES += \
src/platform-linux.cc \
src/platform-posix.cc
endif
ifeq ($(HOST_OS),darwin)
-V8_LOCAL_SRC_FILES += \
+LOCAL_SRC_FILES += \
src/platform-macos.cc \
src/platform-posix.cc
endif
-LOCAL_SRC_FILES := $(V8_LOCAL_SRC_FILES)
-
LOCAL_JS_LIBRARY_FILES := $(addprefix $(LOCAL_PATH)/, $(V8_LOCAL_JS_LIBRARY_FILES))
LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES := $(addprefix $(LOCAL_PATH)/, $(V8_LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES))
-# Copy js2c.py to intermediates directory and invoke there to avoid generating
-# jsmin.pyc in the source directory
-JS2C_PY := $(intermediates)/js2c.py $(intermediates)/jsmin.py
-$(JS2C_PY): $(intermediates)/%.py : $(LOCAL_PATH)/tools/%.py | $(ACP)
+# Copy js2c.py to generated sources directory and invoke there to avoid
+# generating jsmin.pyc in the source directory
+JS2C_PY := $(generated_sources)/js2c.py $(generated_sources)/jsmin.py
+$(JS2C_PY): $(generated_sources)/%.py : $(LOCAL_PATH)/tools/%.py | $(ACP)
@echo "Copying $@"
$(copy-file-to-target)
# Generate libraries.cc
-GEN3 := $(intermediates)/libraries.cc
-$(GEN3): SCRIPT := $(intermediates)/js2c.py
+GEN3 := $(generated_sources)/libraries.cc
+$(GEN3): SCRIPT := $(generated_sources)/js2c.py
$(GEN3): $(LOCAL_JS_LIBRARY_FILES) $(JS2C_PY)
@echo "Generating libraries.cc"
@mkdir -p $(dir $@)
python $(SCRIPT) $(GEN3) CORE off $(LOCAL_JS_LIBRARY_FILES)
-LOCAL_GENERATED_SOURCES := $(intermediates)/libraries.cc
+LOCAL_GENERATED_SOURCES := $(generated_sources)/libraries.cc
# Generate experimental-libraries.cc
-GEN4 := $(intermediates)/experimental-libraries.cc
-$(GEN4): SCRIPT := $(intermediates)/js2c.py
+GEN4 := $(generated_sources)/experimental-libraries.cc
+$(GEN4): SCRIPT := $(generated_sources)/js2c.py
$(GEN4): $(LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES) $(JS2C_PY)
@echo "Generating experimental-libraries.cc"
@mkdir -p $(dir $@)
python $(SCRIPT) $(GEN4) EXPERIMENTAL off $(LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES)
-LOCAL_GENERATED_SOURCES += $(intermediates)/experimental-libraries.cc
+LOCAL_GENERATED_SOURCES += $(generated_sources)/experimental-libraries.cc
LOCAL_CFLAGS := \
-Wno-endif-labels \
@@ -86,32 +83,29 @@ LOCAL_CFLAGS := \
-DV8_NATIVE_REGEXP \
-Wno-unused-parameter
-ifeq ($(TARGET_ARCH),arm)
- LOCAL_CFLAGS += -DV8_TARGET_ARCH_ARM
-endif
+LOCAL_CFLAGS_arm += -DV8_TARGET_ARCH_ARM
-ifeq ($(TARGET_CPU_ABI),armeabi-v7a)
- ifeq ($(ARCH_ARM_HAVE_VFP),true)
- LOCAL_CFLAGS += -DCAN_USE_VFP_INSTRUCTIONS -DCAN_USE_ARMV7_INSTRUCTIONS
- endif
+ifeq ($(ARCH_ARM_HAVE_VFP),true)
+ LOCAL_CFLAGS_arm += -DCAN_USE_VFP_INSTRUCTIONS -DCAN_USE_ARMV7_INSTRUCTIONS
endif
-ifeq ($(TARGET_ARCH),mips)
- LOCAL_CFLAGS += -DV8_TARGET_ARCH_MIPS
- LOCAL_CFLAGS += -DCAN_USE_FPU_INSTRUCTIONS
- LOCAL_CFLAGS += -Umips
- LOCAL_CFLAGS += -finline-limit=64
- LOCAL_CFLAGS += -fno-strict-aliasing
-endif
+LOCAL_CFLAGS_mips += -DV8_TARGET_ARCH_MIPS
+LOCAL_CFLAGS_mips += -DCAN_USE_FPU_INSTRUCTIONS
+LOCAL_CFLAGS_mips += -Umips
+LOCAL_CFLAGS_mips += -finline-limit=64
+LOCAL_CFLAGS_mips += -fno-strict-aliasing
-ifeq ($(TARGET_ARCH),x86)
- LOCAL_CFLAGS += -DV8_TARGET_ARCH_IA32
-endif
+LOCAL_CFLAGS_x86 += -DV8_TARGET_ARCH_IA32
ifeq ($(DEBUG_V8),true)
LOCAL_CFLAGS += -DDEBUG -UNDEBUG
endif
+# LOCAL_SRC_FILES_arch only applies to target modules, but we want them
+# for a host module, so append them manually
+LOCAL_SRC_FILES += $(LOCAL_SRC_FILES_$(mksnapshot_arch))
+LOCAL_CFLAGS += $(LOCAL_CFLAGS_$(mksnapshot_arch))
+
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src
# This is on host.
@@ -120,3 +114,6 @@ LOCAL_LDLIBS := -lpthread
LOCAL_STATIC_LIBRARIES := liblog
include $(BUILD_HOST_EXECUTABLE)
+else
+$(warning mksnapshot.$(mksnapshot_arch): architecture $(mksnapshot_arch) not supported)
+endif
diff --git a/Android.v8common.mk b/Android.v8common.mk
index 4c77a903..d1ffcaf6 100644
--- a/Android.v8common.mk
+++ b/Android.v8common.mk
@@ -1,6 +1,6 @@
LOCAL_CPP_EXTENSION := .cc
-V8_LOCAL_SRC_FILES := \
+LOCAL_SRC_FILES := \
src/accessors.cc \
src/allocation.cc \
src/api.cc \
@@ -100,8 +100,7 @@ V8_LOCAL_SRC_FILES := \
src/version.cc \
src/zone.cc
-ifeq ($(TARGET_ARCH),arm)
- V8_LOCAL_SRC_FILES += \
+LOCAL_SRC_FILES_arm += \
src/arm/assembler-arm.cc \
src/arm/builtins-arm.cc \
src/arm/codegen-arm.cc \
@@ -120,10 +119,8 @@ ifeq ($(TARGET_ARCH),arm)
src/arm/macro-assembler-arm.cc \
src/arm/regexp-macro-assembler-arm.cc \
src/arm/stub-cache-arm.cc
-endif
-ifeq ($(TARGET_ARCH),mips)
- V8_LOCAL_SRC_FILES += \
+LOCAL_SRC_FILES_mips += \
src/mips/assembler-mips.cc \
src/mips/builtins-mips.cc \
src/mips/codegen-mips.cc \
@@ -142,10 +139,8 @@ ifeq ($(TARGET_ARCH),mips)
src/mips/macro-assembler-mips.cc \
src/mips/regexp-macro-assembler-mips.cc \
src/mips/stub-cache-mips.cc
-endif
-ifeq ($(TARGET_ARCH),x86)
- V8_LOCAL_SRC_FILES += \
+LOCAL_SRC_FILES_x86 += \
src/ia32/assembler-ia32.cc \
src/ia32/builtins-ia32.cc \
src/ia32/codegen-ia32.cc \
@@ -163,11 +158,10 @@ ifeq ($(TARGET_ARCH),x86)
src/ia32/macro-assembler-ia32.cc \
src/ia32/regexp-macro-assembler-ia32.cc \
src/ia32/stub-cache-ia32.cc
-endif
# Enable DEBUG option.
ifeq ($(DEBUG_V8),true)
- V8_LOCAL_SRC_FILES += \
+ LOCAL_SRC_FILES += \
src/objects-debug.cc \
src/prettyprinter.cc \
src/regexp-macro-assembler-tracer.cc
@@ -202,4 +196,3 @@ V8_LOCAL_JS_LIBRARY_FILES += \
V8_LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES := \
src/collection.js \
src/proxy.js
-