# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This Android makefile is used to build WebView in the Android build system.
# gyp autogenerates most of the real makefiles, which we include below.

LOCAL_PATH := $(call my-dir)
CHROMIUM_DIR := $(LOCAL_PATH)

# We default to release for the Android build system. Developers working on
# WebView code can build with "make GYP_CONFIGURATION=Debug".
GYP_CONFIGURATION := Release

# If the product is using a prebuilt libwebviewchromium then we need to skip
# including most of the makefiles to avoid duplicate target definitions. Some
# targets are still needed, so list their makefiles explicitly.
ifeq ($(PRODUCT_PREBUILT_WEBVIEWCHROMIUM),yes)
GYP_MAKEFILE_STEMS := \
	$(addprefix $(CHROMIUM_DIR)/v8/tools/gyp/, \
		generate_trig_table.host \
		js2c.host \
		mksnapshot.host \
		v8_base.host \
		v8_libbase.host \
		v8_nosnapshot.host \
		v8_base.target \
		v8_libbase.target \
		v8_snapshot.target \
	) \
	$(addprefix $(CHROMIUM_DIR)/third_party/icu/, \
		icudata.host \
		icui18n.host \
		icuuc.host \
		icui18n.target \
		icuuc.target \
		system_icu.target \
	)
else
# Not using a prebuilt; include the manually-written makefile that builds all
# the WebView java code, and use the main autogenerated makefile.
include $(CHROMIUM_DIR)/android_webview/Android.mk
GYP_MAKEFILE_STEMS := $(CHROMIUM_DIR)/GypAndroid
endif

# If the gyp-generated makefile exists for the current host OS and primary
# target architecture, we need to include it. If it doesn't exist then just do
# nothing, since we may not have finished bringing up this architecture yet.
ifneq (,$(wildcard $(CHROMIUM_DIR)/GypAndroid.$(HOST_OS)-$(TARGET_ARCH).mk))

# We set GYP_VAR_PREFIX to the empty string to indicate that we are building for
# the primary target architecture.
GYP_VAR_PREFIX :=

# If the host is declared as being 64-bit, set the host multilib variables
# appropriately to ensure that the host targets are the same "bitness" as the
# primary target, which is required by V8.
ifeq ($(HOST_IS_64_BIT),true)
ifeq ($(TARGET_IS_64_BIT),true)
GYP_HOST_VAR_PREFIX :=
GYP_HOST_MULTILIB := 64
else  # Target is 32-bit.
GYP_HOST_VAR_PREFIX := $(HOST_2ND_ARCH_VAR_PREFIX)
GYP_HOST_MULTILIB := 32
endif
endif

# Include the appropriate version of each of the makefiles.
include $(addsuffix .$(HOST_OS)-$(TARGET_ARCH).mk,$(GYP_MAKEFILE_STEMS))

endif  # End primary architecture handling.

# Do the same check for the secondary architecture; if this doesn't exist then
# the current target platform probably doesn't have a secondary architecture and
# we can just do nothing.
ifneq (,$(wildcard $(CHROMIUM_DIR)/GypAndroid.$(HOST_OS)-$(TARGET_2ND_ARCH).mk))

# We set GYP_VAR_PREFIX to $(TARGET_2ND_ARCH_VAR_PREFIX) to indicate that we are
# building for the secondary target architecture.
GYP_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)

# If the host is declared as being 64-bit, set the host multilib variables
# appropriately to ensure that the host targets are the same "bitness" as the
# secondary target, which is required by V8.
ifeq ($(HOST_IS_64_BIT),true)
ifeq ($(2ND_TARGET_IS_64_BIT),true)
GYP_HOST_VAR_PREFIX :=
GYP_HOST_MULTILIB := 64
else  # Second target is 32-bit.
GYP_HOST_VAR_PREFIX := $(HOST_2ND_ARCH_VAR_PREFIX)
GYP_HOST_MULTILIB := 32
endif
endif

# Include the appropriate version of each of the makefiles.
include $(addsuffix .$(HOST_OS)-$(TARGET_2ND_ARCH).mk,$(GYP_MAKEFILE_STEMS))

endif  # End secondary architecture handling.