
###############################################################################
#
# THIS FILE IS AUTOGENERATED BY GYP_TO_ANDROID.PY. DO NOT EDIT.
#
# For bugs, please contact scroggo@google.com or djsollen@google.com
#
###############################################################################

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

###############################################################################
#
# PROBLEMS WITH SKIA DEBUGGING?? READ THIS...
#
# The debug build results in changes to the Skia headers. This means that those
# using libskia must also be built with the debug version of the Skia headers.
# There are a few scenarios where this comes into play:
#
# (1) You're building debug code that depends on libskia.
#   (a) If libskia is built in release, then define SK_RELEASE when building
#       your sources.
#   (b) If libskia is built with debugging (see step 2), then no changes are
#       needed since your sources and libskia have been built with SK_DEBUG.
# (2) You're building libskia in debug mode.
#   (a) RECOMMENDED: You can build the entire system in debug mode. Do this by
#       updating your build/core/config.mk to include -DSK_DEBUG on the line
#       that defines COMMON_GLOBAL_CFLAGS
#   (b) You can update all the users of libskia to define SK_DEBUG when they are
#       building their sources.
#
# NOTE: If neither SK_DEBUG or SK_RELEASE are defined then Skia checks NDEBUG to
#       determine which build type to use.
###############################################################################

###############################################################################
# STATIC LIBRARY
#
# This target is only to be used internally for only one of two purposes...
#  (1) statically linking into testing frameworks
#  (2) as an inclusion target for the libskia.so shared library
###############################################################################

include $(CLEAR_VARS)
LOCAL_FDO_SUPPORT := true
ifneq ($(strip $(TARGET_FDO_CFLAGS)),)
	# This should be the last -Oxxx specified in LOCAL_CFLAGS
	LOCAL_CFLAGS += -O2
endif

LOCAL_ARM_MODE := thumb
# used for testing
#LOCAL_CFLAGS += -g -O0

LOCAL_CFLAGS += \
	local_cflags

LOCAL_CPPFLAGS := \
	local_cppflags

LOCAL_SRC_FILES := \
	local_src_files

LOCAL_SHARED_LIBRARIES := \
	local_shared_libraries

LOCAL_STATIC_LIBRARIES := \
	local_static_libraries

LOCAL_C_INCLUDES := \
	local_c_includes

LOCAL_EXPORT_C_INCLUDE_DIRS := \
	local_export_c_include_dirs

LOCAL_CFLAGS += \
	-Ddefines

LOCAL_MODULE_TAGS := \
	local_module_tags

LOCAL_MODULE := \
	local_module_static

ifeq ($(COND), true)
LOCAL_CFLAGS_foo += \
	local_cflags_foo

LOCAL_CPPFLAGS_foo += \
	local_cppflags_foo

LOCAL_SRC_FILES_foo += \
	local_src_files_foo

LOCAL_SHARED_LIBRARIES_foo += \
	local_shared_libraries_foo

LOCAL_STATIC_LIBRARIES_foo += \
	local_static_libraries_foo

LOCAL_C_INCLUDES_foo += \
	local_c_includes_foo

LOCAL_EXPORT_C_INCLUDE_DIRS_foo += \
	local_export_c_include_dirs_foo

LOCAL_CFLAGS_foo += \
	-Ddefines_foo

LOCAL_MODULE_TAGS_foo += \
	local_module_tags_foo

LOCAL_MODULE_foo += \
	local_module_foo

endif

LOCAL_CFLAGS_bar += \
	local_cflags_bar

LOCAL_CPPFLAGS_bar += \
	local_cppflags_bar

LOCAL_SRC_FILES_bar += \
	local_src_files_bar

LOCAL_SHARED_LIBRARIES_bar += \
	local_shared_libraries_bar

LOCAL_STATIC_LIBRARIES_bar += \
	local_static_libraries_bar

LOCAL_C_INCLUDES_bar += \
	local_c_includes_bar

LOCAL_EXPORT_C_INCLUDE_DIRS_bar += \
	local_export_c_include_dirs_bar

LOCAL_CFLAGS_bar += \
	-Ddefines_bar

LOCAL_MODULE_TAGS_bar += \
	local_module_tags_bar

LOCAL_MODULE_bar += \
	local_module_bar

LOCAL_MODULE_CLASS := STATIC_LIBRARIES
include $(BUILD_STATIC_LIBRARY)


###############################################################################
# SHARED LIBRARY
###############################################################################

include $(CLEAR_VARS)
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE := local_module
LOCAL_WHOLE_STATIC_LIBRARIES := local_module_static
LOCAL_EXPORT_C_INCLUDE_DIRS := \
	local_export_c_include_dirs

include $(BASE_PATH)/skia_static_deps.mk
include $(BUILD_SHARED_LIBRARY)

#############################################################
# Build the skia tools
#

# benchmark (timings)
include $(BASE_PATH)/bench/Android.mk

# diamond-master (one test to rule them all)
include $(BASE_PATH)/dm/Android.mk
