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

TOOLSET := target
TARGET := libjingle
DEFS_Debug := '-DFEATURE_ENABLE_SSL' \
	'-DFEATURE_ENABLE_VOICEMAIL' \
	'-D_USE_32BIT_TIME_T' \
	'-DSAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS' \
	'-DEXPAT_RELATIVE_PATH' \
	'-DJSONCPP_RELATIVE_PATH' \
	'-DWEBRTC_RELATIVE_PATH' \
	'-DHAVE_WEBRTC' \
	'-DHAVE_WEBRTC_VIDEO' \
	'-DHAVE_WEBRTC_VOICE' \
	'-DNO_HEAPCHECKER' \
	'-DLINUX' \
	'-DPOSIX' \
	'-DCHROMIUM_BUILD' \
	'-DUSE_NSS=1' \
	'-DTOOLKIT_USES_GTK=1' \
	'-DGTK_DISABLE_SINGLE_INCLUDES=1' \
	'-DWEBUI_TASK_MANAGER=1' \
	'-DENABLE_REMOTING=1' \
	'-DENABLE_P2P_APIS=1' \
	'-DENABLE_CONFIGURATION_POLICY' \
	'-DENABLE_INPUT_SPEECH' \
	'-DENABLE_NOTIFICATIONS' \
	'-DENABLE_GPU=1' \
	'-DENABLE_EGLIMAGE=1' \
	'-DUSE_SKIA=1' \
	'-DENABLE_REGISTER_PROTOCOL_HANDLER=1' \
	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
	'-D_DEBUG'

# Flags passed to all source files.
CFLAGS_Debug := -pthread \
	-fno-exceptions \
	-Wno-unused-parameter \
	-Wno-missing-field-initializers \
	-D_FILE_OFFSET_BITS=64 \
	-fvisibility=hidden \
	-pipe \
	-fPIC \
	-fno-strict-aliasing \
	-Wno-format \
	-Wno-unused-result \
	-O0 \
	-g

# Flags passed to only C files.
CFLAGS_C_Debug := 

# Flags passed to only C++ files.
CFLAGS_CC_Debug := -fno-rtti \
	-fno-threadsafe-statics \
	-fvisibility-inlines-hidden \
	-Wno-deprecated

INCS_Debug := -Ithird_party/libyuv/include \
	-Isrc \
	-Ithird_party/libjingle/source \
	-Ithird_party/expat/files \
	-Ithird_party/jsoncpp/include

DEFS_Release := '-DFEATURE_ENABLE_SSL' \
	'-DFEATURE_ENABLE_VOICEMAIL' \
	'-D_USE_32BIT_TIME_T' \
	'-DSAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS' \
	'-DEXPAT_RELATIVE_PATH' \
	'-DJSONCPP_RELATIVE_PATH' \
	'-DWEBRTC_RELATIVE_PATH' \
	'-DHAVE_WEBRTC' \
	'-DHAVE_WEBRTC_VIDEO' \
	'-DHAVE_WEBRTC_VOICE' \
	'-DNO_HEAPCHECKER' \
	'-DLINUX' \
	'-DPOSIX' \
	'-DCHROMIUM_BUILD' \
	'-DUSE_NSS=1' \
	'-DTOOLKIT_USES_GTK=1' \
	'-DGTK_DISABLE_SINGLE_INCLUDES=1' \
	'-DWEBUI_TASK_MANAGER=1' \
	'-DENABLE_REMOTING=1' \
	'-DENABLE_P2P_APIS=1' \
	'-DENABLE_CONFIGURATION_POLICY' \
	'-DENABLE_INPUT_SPEECH' \
	'-DENABLE_NOTIFICATIONS' \
	'-DENABLE_GPU=1' \
	'-DENABLE_EGLIMAGE=1' \
	'-DUSE_SKIA=1' \
	'-DENABLE_REGISTER_PROTOCOL_HANDLER=1' \
	'-DNDEBUG' \
	'-DNVALGRIND' \
	'-DDYNAMIC_ANNOTATIONS_ENABLED=0'

# Flags passed to all source files.
CFLAGS_Release := -pthread \
	-fno-exceptions \
	-Wno-unused-parameter \
	-Wno-missing-field-initializers \
	-D_FILE_OFFSET_BITS=64 \
	-fvisibility=hidden \
	-pipe \
	-fPIC \
	-fno-strict-aliasing \
	-Wno-format \
	-Wno-unused-result \
	-O2 \
	-fno-ident \
	-fdata-sections \
	-ffunction-sections

# Flags passed to only C files.
CFLAGS_C_Release := 

# Flags passed to only C++ files.
CFLAGS_CC_Release := -fno-rtti \
	-fno-threadsafe-statics \
	-fvisibility-inlines-hidden \
	-Wno-deprecated

INCS_Release := -Ithird_party/libyuv/include \
	-Isrc \
	-Ithird_party/libjingle/source \
	-Ithird_party/expat/files \
	-Ithird_party/jsoncpp/include

OBJS := $(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmllite/qname.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/asyncfile.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/asynchttprequest.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/asyncsocket.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/asynctcpsocket.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/asyncudpsocket.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/autodetectproxy.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/base64.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/basicpacketsocketfactory.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/bytebuffer.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/checks.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/common.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/diskcache.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/event.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/fileutils.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/firewallsocketserver.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/flags.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/helpers.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/host.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/httpbase.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/httpclient.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/httpcommon.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/httprequest.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/ipaddress.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/json.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/logging.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/md5c.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/messagehandler.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/messagequeue.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/nethelpers.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/network.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/pathutils.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/physicalsocketserver.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/proxydetect.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/proxyinfo.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/ratetracker.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/signalthread.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/socketadapters.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/socketaddress.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/socketaddresspair.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/socketpool.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/socketstream.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/ssladapter.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/sslsocketfactory.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/stream.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/stringdigest.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/stringencode.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/stringutils.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/task.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/taskparent.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/taskrunner.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/thread.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/time.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/urlencode.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/worker.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmllite/xmlbuilder.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmllite/xmlconstants.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmllite/xmlelement.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmllite/xmlnsstack.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmllite/xmlparser.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmllite/xmlprinter.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/constants.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/jid.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/ratelimitmanager.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/saslmechanism.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/xmppclient.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/xmppengineimpl.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/xmppengineimpl_iq.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/xmpplogintask.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/xmppstanzaparser.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/xmpp/xmpptask.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/sound/platformsoundsystem.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/sound/platformsoundsystemfactory.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/sound/soundsysteminterface.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/sound/soundsystemproxy.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/sound/alsasoundsystem.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/sound/alsasymboltable.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/sound/linuxsoundsystem.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/sound/pulseaudiosoundsystem.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/sound/pulseaudiosymboltable.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/latebindingsymboltable.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/sslstreamadapter.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/unixfilesystem.o \
	$(obj).target/$(TARGET)/third_party/libjingle/source/talk/base/linux.o

# Add to the list of files we specially track dependencies for.
all_deps += $(OBJS)

# Make sure our dependencies are built before any of us.
$(OBJS): | $(obj).target/third_party/expat/expat.stamp

# CFLAGS et al overrides must be target-local.
# See "Target-specific Variable Values" in the GNU Make manual.
$(OBJS): TOOLSET := $(TOOLSET)
$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE))
$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE))

# Suffix rules, putting all outputs into $(obj).

$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD
	@$(call do_cmd,cxx,1)

$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.c FORCE_DO_CMD
	@$(call do_cmd,cc,1)

# Try building from generated source, too.

$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD
	@$(call do_cmd,cxx,1)

$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD
	@$(call do_cmd,cc,1)

$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD
	@$(call do_cmd,cxx,1)

$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.c FORCE_DO_CMD
	@$(call do_cmd,cc,1)

# End of this set of suffix rules
### Rules for final target.
LDFLAGS_Debug := -pthread \
	-Wl,-z,noexecstack \
	-fPIC

LDFLAGS_Release := -pthread \
	-Wl,-z,noexecstack \
	-fPIC \
	-Wl,-O1 \
	-Wl,--as-needed \
	-Wl,--gc-sections

LIBS := 

$(obj).target/third_party_mods/libjingle/libjingle.a: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))
$(obj).target/third_party_mods/libjingle/libjingle.a: LIBS := $(LIBS)
$(obj).target/third_party_mods/libjingle/libjingle.a: TOOLSET := $(TOOLSET)
$(obj).target/third_party_mods/libjingle/libjingle.a: $(OBJS) FORCE_DO_CMD
	$(call do_cmd,alink)

all_deps += $(obj).target/third_party_mods/libjingle/libjingle.a
# Add target alias
.PHONY: libjingle
libjingle: $(obj).target/third_party_mods/libjingle/libjingle.a

# Add target alias to "all" target.
.PHONY: all
all: libjingle

