1a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block##
2a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# mksnapshot
3a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# ===================================================
4a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_PATH := $(call my-dir)
5a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockinclude $(CLEAR_VARS)
6a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
7a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Set up the target identity
8a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_IS_HOST_MODULE := true
968a13761e28d34f90fa0140363616dda73ad49deJean-Baptiste QueruLOCAL_MODULE := mksnapshot.$(TARGET_ARCH)
10a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_MODULE_CLASS := EXECUTABLES
1168a13761e28d34f90fa0140363616dda73ad49deJean-Baptiste QueruLOCAL_MODULE_TAGS = optional
12a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockintermediates := $(call local-intermediates-dir)
13a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
14a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockV8_LOCAL_SRC_FILES :=
15a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockV8_LOCAL_JS_LIBRARY_FILES :=
1669a99ed0b2b2ef69d393c371b03db3a98aaf880eBen MurdochV8_LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES :=
17a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockinclude $(LOCAL_PATH)/Android.v8common.mk
18a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
19a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockV8_LOCAL_SRC_FILES += \
20a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  src/mksnapshot.cc \
21a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  src/snapshot-empty.cc
22a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
23749e8943526482d432828bc4e08d9bf711f446d2Chen YANGifeq ($(TARGET_ARCH),arm)
24749e8943526482d432828bc4e08d9bf711f446d2Chen YANGV8_LOCAL_SRC_FILES += src/arm/simulator-arm.cc
25749e8943526482d432828bc4e08d9bf711f446d2Chen YANGendif
26749e8943526482d432828bc4e08d9bf711f446d2Chen YANG
276db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lindifeq ($(TARGET_ARCH),mips)
286db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul LindV8_LOCAL_SRC_FILES += src/mips/simulator-mips.cc
296db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lind
306db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lindendif
316db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lind
323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochifeq ($(HOST_ARCH),x86)
333ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochV8_LOCAL_SRC_FILES += src/atomicops_internals_x86_gcc.cc
343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochendif
353ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch
36a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockifeq ($(HOST_OS),linux)
37a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockV8_LOCAL_SRC_FILES += \
38a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  src/platform-linux.cc \
39a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  src/platform-posix.cc
40a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockendif
41a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockifeq ($(HOST_OS),darwin)
42a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockV8_LOCAL_SRC_FILES += \
43a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  src/platform-macos.cc \
44a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  src/platform-posix.cc
45a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockendif
46a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
47a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_SRC_FILES := $(V8_LOCAL_SRC_FILES)
48a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
49a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_JS_LIBRARY_FILES := $(addprefix $(LOCAL_PATH)/, $(V8_LOCAL_JS_LIBRARY_FILES))
50589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben MurdochLOCAL_JS_EXPERIMENTAL_LIBRARY_FILES := $(addprefix $(LOCAL_PATH)/, $(V8_LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES))
51a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
52a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Copy js2c.py to intermediates directory and invoke there to avoid generating
53a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# jsmin.pyc in the source directory
54a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockJS2C_PY := $(intermediates)/js2c.py $(intermediates)/jsmin.py
55a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block$(JS2C_PY): $(intermediates)/%.py : $(LOCAL_PATH)/tools/%.py | $(ACP)
56a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block	@echo "Copying $@"
57a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block	$(copy-file-to-target)
58a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
59a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Generate libraries.cc
60257744e915dfc84d6d07a6b2accf8402d9ffc708Ben MurdochGEN3 := $(intermediates)/libraries.cc
61257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch$(GEN3): SCRIPT := $(intermediates)/js2c.py
62257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch$(GEN3): $(LOCAL_JS_LIBRARY_FILES) $(JS2C_PY)
63a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block	@echo "Generating libraries.cc"
64a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block	@mkdir -p $(dir $@)
653fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch	python $(SCRIPT) $(GEN3) CORE off $(LOCAL_JS_LIBRARY_FILES)
66a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_GENERATED_SOURCES := $(intermediates)/libraries.cc
67a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
68257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch# Generate experimental-libraries.cc
69257744e915dfc84d6d07a6b2accf8402d9ffc708Ben MurdochGEN4 := $(intermediates)/experimental-libraries.cc
70257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch$(GEN4): SCRIPT := $(intermediates)/js2c.py
71257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch$(GEN4): $(LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES) $(JS2C_PY)
72257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch	@echo "Generating experimental-libraries.cc"
73257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch	@mkdir -p $(dir $@)
743fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch	python $(SCRIPT) $(GEN4) EXPERIMENTAL off $(LOCAL_JS_EXPERIMENTAL_LIBRARY_FILES)
75257744e915dfc84d6d07a6b2accf8402d9ffc708Ben MurdochLOCAL_GENERATED_SOURCES += $(intermediates)/experimental-libraries.cc
76257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch
77a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_CFLAGS := \
78a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block	-Wno-endif-labels \
79a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block	-Wno-import \
80a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block	-Wno-format \
81a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block	-ansi \
822007755a32dfa1ac843f501dec4fb872f8bbcc52Andrei Popescu	-fno-rtti \
836a927b2a077ba8a767bd21abcfbf1c4e3d1b11e0Andrei Popescu	-DENABLE_DEBUGGER_SUPPORT \
840de1e4345105e23da77663351f2019a015ab98b8Ben Murdoch	-DENABLE_LOGGING_AND_PROFILING \
850de1e4345105e23da77663351f2019a015ab98b8Ben Murdoch	-DENABLE_VMSTATE_TRACKING \
866a927b2a077ba8a767bd21abcfbf1c4e3d1b11e0Andrei Popescu	-DV8_NATIVE_REGEXP
87a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
88a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockifeq ($(TARGET_ARCH),arm)
89a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  LOCAL_CFLAGS += -DV8_TARGET_ARCH_ARM
90a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockendif
91a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
922f6dc263a8ff03d497c60c4ec5413b9d1c25e9a2Andrei Popescuifeq ($(TARGET_CPU_ABI),armeabi-v7a)
930c144899d55fcfcd667438a604cf7879fd8624d3Colin Cross    ifeq ($(ARCH_ARM_HAVE_VFP),true)
942f6dc263a8ff03d497c60c4ec5413b9d1c25e9a2Andrei Popescu        LOCAL_CFLAGS += -DCAN_USE_VFP_INSTRUCTIONS -DCAN_USE_ARMV7_INSTRUCTIONS
952f6dc263a8ff03d497c60c4ec5413b9d1c25e9a2Andrei Popescu    endif
962f6dc263a8ff03d497c60c4ec5413b9d1c25e9a2Andrei Popescuendif
972f6dc263a8ff03d497c60c4ec5413b9d1c25e9a2Andrei Popescu
986db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lindifeq ($(TARGET_ARCH),mips)
996db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lind  LOCAL_CFLAGS += -DV8_TARGET_ARCH_MIPS
1006db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lind  LOCAL_CFLAGS += -DCAN_USE_FPU_INSTRUCTIONS
1016db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lind  LOCAL_CFLAGS += -Umips
1026db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lind  LOCAL_CFLAGS += -finline-limit=64
1036db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lind  LOCAL_CFLAGS += -fno-strict-aliasing
1046db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lindendif
1056db049a1dc7dc1fc597acde780c5a87e2b9698e7Paul Lind
106351b9f793fda97d4d1c8eb905d40c27b3ee76925Chih-Wei Huangifeq ($(TARGET_ARCH),x86)
107351b9f793fda97d4d1c8eb905d40c27b3ee76925Chih-Wei Huang  LOCAL_CFLAGS += -DV8_TARGET_ARCH_IA32
108351b9f793fda97d4d1c8eb905d40c27b3ee76925Chih-Wei Huangendif
109351b9f793fda97d4d1c8eb905d40c27b3ee76925Chih-Wei Huang
1102007755a32dfa1ac843f501dec4fb872f8bbcc52Andrei Popescuifeq ($(DEBUG_V8),true)
1112007755a32dfa1ac843f501dec4fb872f8bbcc52Andrei Popescu	LOCAL_CFLAGS += -DDEBUG -UNDEBUG
1122007755a32dfa1ac843f501dec4fb872f8bbcc52Andrei Popescuendif
1132007755a32dfa1ac843f501dec4fb872f8bbcc52Andrei Popescu
114a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_C_INCLUDES := $(LOCAL_PATH)/src
115a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
116a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# This is on host.
117a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_LDLIBS := -lpthread
118a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
119a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockLOCAL_STATIC_LIBRARIES := liblog
120a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
121a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockinclude $(BUILD_HOST_EXECUTABLE)
122