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

TOOLSET := target
TARGET := libjpeg
### Generated for rule libjpeg_assemble:
$(obj)/gen/third_party/libjpeg_turbo/jccolss2-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jccolss2-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jccolss2-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jccolss2-64.o: third_party/libjpeg_turbo/simd/jccolss2-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_0)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jccolss2-64.o
cmd_libjpeg_assemble_0 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jccolss2-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_0 = RULE libjpeg_assemble_0 $@

$(obj)/gen/third_party/libjpeg_turbo/jcgrass2-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jcgrass2-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jcgrass2-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jcgrass2-64.o: third_party/libjpeg_turbo/simd/jcgrass2-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_1)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jcgrass2-64.o
cmd_libjpeg_assemble_1 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jcgrass2-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_1 = RULE libjpeg_assemble_1 $@

$(obj)/gen/third_party/libjpeg_turbo/jcqnts2f-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jcqnts2f-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jcqnts2f-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jcqnts2f-64.o: third_party/libjpeg_turbo/simd/jcqnts2f-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_2)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jcqnts2f-64.o
cmd_libjpeg_assemble_2 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jcqnts2f-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_2 = RULE libjpeg_assemble_2 $@

$(obj)/gen/third_party/libjpeg_turbo/jcqnts2i-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jcqnts2i-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jcqnts2i-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jcqnts2i-64.o: third_party/libjpeg_turbo/simd/jcqnts2i-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_3)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jcqnts2i-64.o
cmd_libjpeg_assemble_3 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jcqnts2i-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_3 = RULE libjpeg_assemble_3 $@

$(obj)/gen/third_party/libjpeg_turbo/jcsamss2-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jcsamss2-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jcsamss2-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jcsamss2-64.o: third_party/libjpeg_turbo/simd/jcsamss2-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_4)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jcsamss2-64.o
cmd_libjpeg_assemble_4 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jcsamss2-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_4 = RULE libjpeg_assemble_4 $@

$(obj)/gen/third_party/libjpeg_turbo/jdcolss2-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jdcolss2-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jdcolss2-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jdcolss2-64.o: third_party/libjpeg_turbo/simd/jdcolss2-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_5)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jdcolss2-64.o
cmd_libjpeg_assemble_5 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jdcolss2-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_5 = RULE libjpeg_assemble_5 $@

$(obj)/gen/third_party/libjpeg_turbo/jdmerss2-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jdmerss2-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jdmerss2-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jdmerss2-64.o: third_party/libjpeg_turbo/simd/jdmerss2-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_6)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jdmerss2-64.o
cmd_libjpeg_assemble_6 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jdmerss2-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_6 = RULE libjpeg_assemble_6 $@

$(obj)/gen/third_party/libjpeg_turbo/jdsamss2-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jdsamss2-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jdsamss2-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jdsamss2-64.o: third_party/libjpeg_turbo/simd/jdsamss2-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_7)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jdsamss2-64.o
cmd_libjpeg_assemble_7 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jdsamss2-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_7 = RULE libjpeg_assemble_7 $@

$(obj)/gen/third_party/libjpeg_turbo/jfss2fst-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jfss2fst-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jfss2fst-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jfss2fst-64.o: third_party/libjpeg_turbo/simd/jfss2fst-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_8)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jfss2fst-64.o
cmd_libjpeg_assemble_8 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jfss2fst-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_8 = RULE libjpeg_assemble_8 $@

$(obj)/gen/third_party/libjpeg_turbo/jfss2int-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jfss2int-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jfss2int-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jfss2int-64.o: third_party/libjpeg_turbo/simd/jfss2int-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_9)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jfss2int-64.o
cmd_libjpeg_assemble_9 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jfss2int-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_9 = RULE libjpeg_assemble_9 $@

$(obj)/gen/third_party/libjpeg_turbo/jfsseflt-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jfsseflt-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jfsseflt-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jfsseflt-64.o: third_party/libjpeg_turbo/simd/jfsseflt-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_10)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jfsseflt-64.o
cmd_libjpeg_assemble_10 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jfsseflt-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_10 = RULE libjpeg_assemble_10 $@

$(obj)/gen/third_party/libjpeg_turbo/jiss2flt-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jiss2flt-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jiss2flt-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jiss2flt-64.o: third_party/libjpeg_turbo/simd/jiss2flt-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_11)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jiss2flt-64.o
cmd_libjpeg_assemble_11 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jiss2flt-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_11 = RULE libjpeg_assemble_11 $@

$(obj)/gen/third_party/libjpeg_turbo/jiss2fst-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jiss2fst-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jiss2fst-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jiss2fst-64.o: third_party/libjpeg_turbo/simd/jiss2fst-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_12)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jiss2fst-64.o
cmd_libjpeg_assemble_12 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jiss2fst-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_12 = RULE libjpeg_assemble_12 $@

$(obj)/gen/third_party/libjpeg_turbo/jiss2int-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jiss2int-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jiss2int-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jiss2int-64.o: third_party/libjpeg_turbo/simd/jiss2int-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_13)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jiss2int-64.o
cmd_libjpeg_assemble_13 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jiss2int-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_13 = RULE libjpeg_assemble_13 $@

$(obj)/gen/third_party/libjpeg_turbo/jiss2red-64.o: obj := $(abs_obj)

$(obj)/gen/third_party/libjpeg_turbo/jiss2red-64.o: builddir := $(abs_builddir)

$(obj)/gen/third_party/libjpeg_turbo/jiss2red-64.o: TOOLSET := $(TOOLSET)
$(obj)/gen/third_party/libjpeg_turbo/jiss2red-64.o: third_party/libjpeg_turbo/simd/jiss2red-64.asm $(builddir)/yasm FORCE_DO_CMD
	$(call do_cmd,libjpeg_assemble_14)

all_deps += $(obj)/gen/third_party/libjpeg_turbo/jiss2red-64.o
cmd_libjpeg_assemble_14 = LD_LIBRARY_PATH=$(builddir)/lib.host:$(builddir)/lib.target:$$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd third_party/libjpeg_turbo; mkdir -p $(obj)/gen/third_party/libjpeg_turbo; "$(builddir)/yasm" -felf64 -D__x86_64__ -DELF -Ilinux/ -DRGBX_FILLER_0XFF -DSTRICT_MEMORY_ACCESS -Isimd/ -o "$(obj)/gen/third_party/libjpeg_turbo/jiss2red-64.o" "$(abspath $<)"
quiet_cmd_libjpeg_assemble_14 = RULE libjpeg_assemble_14 $@

rule_libjpeg_assemble_outputs := $(obj)/gen/third_party/libjpeg_turbo/jccolss2-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jcgrass2-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jcqnts2f-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jcqnts2i-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jcsamss2-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jdcolss2-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jdmerss2-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jdsamss2-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jfss2fst-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jfss2int-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jfsseflt-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jiss2flt-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jiss2fst-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jiss2int-64.o \
	$(obj)/gen/third_party/libjpeg_turbo/jiss2red-64.o

### Finished generating for rule: libjpeg_assemble

### Finished generating for all rules

DEFS_Debug := '-DNO_HEAPCHECKER' \
	'-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' \
	'-DWITH_SIMD' \
	'-DMOTION_JPEG_SUPPORTED' \
	'-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/libjpeg_turbo

DEFS_Release := '-DNO_HEAPCHECKER' \
	'-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' \
	'-DWITH_SIMD' \
	'-DMOTION_JPEG_SUPPORTED' \
	'-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/libjpeg_turbo

OBJS := $(obj).target/$(TARGET)/third_party/libjpeg_turbo/jaricom.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcapimin.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcapistd.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcarith.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jccoefct.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jccolor.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcdctmgr.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jchuff.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcinit.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcmainct.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcmarker.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcmaster.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcomapi.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcparam.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcphuff.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcprepct.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jcsample.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdapimin.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdapistd.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdarith.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdatadst.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdatasrc.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdcoefct.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdcolor.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jddctmgr.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdhuff.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdinput.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdmainct.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdmarker.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdmaster.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdmerge.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdphuff.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdpostct.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jdsample.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jerror.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jfdctflt.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jfdctfst.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jfdctint.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jidctflt.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jidctfst.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jidctint.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jidctred.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jmemmgr.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jmemnobs.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jquant1.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jquant2.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/jutils.o \
	$(obj).target/$(TARGET)/third_party/libjpeg_turbo/simd/jsimd_x86_64.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): | $(builddir)/yasm

# Make sure our actions/rules run before any of us.
$(OBJS): | $(rule_libjpeg_assemble_outputs)

# 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)/%.c FORCE_DO_CMD
	@$(call do_cmd,cc,1)

# Try building from generated source, too.

$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD
	@$(call do_cmd,cc,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.
# Build our special outputs first.
$(obj).target/third_party/libjpeg_turbo/libjpeg_turbo.a: | $(rule_libjpeg_assemble_outputs)

# Preserve order dependency of special output on deps.
$(rule_libjpeg_assemble_outputs): | $(builddir)/yasm

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/libjpeg_turbo/libjpeg_turbo.a: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))
$(obj).target/third_party/libjpeg_turbo/libjpeg_turbo.a: LIBS := $(LIBS)
$(obj).target/third_party/libjpeg_turbo/libjpeg_turbo.a: TOOLSET := $(TOOLSET)
$(obj).target/third_party/libjpeg_turbo/libjpeg_turbo.a: $(OBJS) $(obj)/gen/third_party/libjpeg_turbo/jccolss2-64.o $(obj)/gen/third_party/libjpeg_turbo/jcgrass2-64.o $(obj)/gen/third_party/libjpeg_turbo/jcqnts2f-64.o $(obj)/gen/third_party/libjpeg_turbo/jcqnts2i-64.o $(obj)/gen/third_party/libjpeg_turbo/jcsamss2-64.o $(obj)/gen/third_party/libjpeg_turbo/jdcolss2-64.o $(obj)/gen/third_party/libjpeg_turbo/jdmerss2-64.o $(obj)/gen/third_party/libjpeg_turbo/jdsamss2-64.o $(obj)/gen/third_party/libjpeg_turbo/jfss2fst-64.o $(obj)/gen/third_party/libjpeg_turbo/jfss2int-64.o $(obj)/gen/third_party/libjpeg_turbo/jfsseflt-64.o $(obj)/gen/third_party/libjpeg_turbo/jiss2flt-64.o $(obj)/gen/third_party/libjpeg_turbo/jiss2fst-64.o $(obj)/gen/third_party/libjpeg_turbo/jiss2int-64.o $(obj)/gen/third_party/libjpeg_turbo/jiss2red-64.o FORCE_DO_CMD
	$(call do_cmd,alink)

all_deps += $(obj).target/third_party/libjpeg_turbo/libjpeg_turbo.a
# Add target alias
.PHONY: libjpeg
libjpeg: $(obj).target/third_party/libjpeg_turbo/libjpeg_turbo.a

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

