# This file is generated by gyp; do not edit.

include $(CLEAR_VARS)

LOCAL_MODULE_CLASS := GYP
LOCAL_MODULE := third_party_WebKit_Source_core_inspector_instrumentation_sources_gyp
LOCAL_MODULE_STEM := inspector_instrumentation_sources
LOCAL_MODULE_SUFFIX := .stamp
LOCAL_MODULE_TAGS := optional
gyp_intermediate_dir := $(call local-intermediates-dir)
gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)

# Make sure our deps are built first.
GYP_TARGET_DEPENDENCIES :=

### Rules for action "generateInspectorInstrumentation":
$(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h: gyp_local_path := $(LOCAL_PATH)
$(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
$(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h: $(LOCAL_PATH)/third_party/WebKit/Source/core/inspector/CodeGeneratorInstrumentation.py $(LOCAL_PATH)/third_party/WebKit/Source/core/inspector/InspectorInstrumentation.idl $(GYP_TARGET_DEPENDENCIES)
	@echo "Gyp action: Generating Inspector instrumentation code from InspectorInstrumentation.idl ($@)"
	$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/core; mkdir -p $(gyp_shared_intermediate_dir)/webkit; python inspector/CodeGeneratorInstrumentation.py inspector/InspectorInstrumentation.idl --output_dir "$(gyp_shared_intermediate_dir)/webkit"

$(gyp_shared_intermediate_dir)/webkit/InspectorConsoleInstrumentationInl.h: $(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h ;
$(gyp_shared_intermediate_dir)/webkit/InspectorDatabaseInstrumentationInl.h: $(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h ;
$(gyp_shared_intermediate_dir)/webkit/InspectorInstrumentationInl.h: $(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h ;
$(gyp_shared_intermediate_dir)/webkit/InspectorOverridesInl.h: $(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h ;
$(gyp_shared_intermediate_dir)/webkit/InstrumentingAgentsInl.h: $(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h ;
$(gyp_shared_intermediate_dir)/webkit/InspectorInstrumentationImpl.cpp: $(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h ;


GYP_GENERATED_OUTPUTS := \
	$(gyp_shared_intermediate_dir)/webkit/InspectorCanvasInstrumentationInl.h \
	$(gyp_shared_intermediate_dir)/webkit/InspectorConsoleInstrumentationInl.h \
	$(gyp_shared_intermediate_dir)/webkit/InspectorDatabaseInstrumentationInl.h \
	$(gyp_shared_intermediate_dir)/webkit/InspectorInstrumentationInl.h \
	$(gyp_shared_intermediate_dir)/webkit/InspectorOverridesInl.h \
	$(gyp_shared_intermediate_dir)/webkit/InstrumentingAgentsInl.h \
	$(gyp_shared_intermediate_dir)/webkit/InspectorInstrumentationImpl.cpp

# Make sure our deps and generated files are built first.
LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)

### Rules for final target.
# Add target alias to "gyp_all_modules" target.
.PHONY: gyp_all_modules
gyp_all_modules: third_party_WebKit_Source_core_inspector_instrumentation_sources_gyp

# Alias gyp target name.
.PHONY: inspector_instrumentation_sources
inspector_instrumentation_sources: third_party_WebKit_Source_core_inspector_instrumentation_sources_gyp

LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
LOCAL_UNINSTALLABLE_MODULE := true

include $(BUILD_SYSTEM)/base_rules.mk

$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
	$(hide) echo "Gyp timestamp: $@"
	$(hide) mkdir -p $(dir $@)
	$(hide) touch $@
