DEPTH		= ../..
topsrcdir	= @top_srcdir@
srcdir		= @srcdir@
VPATH		= @srcdir@

include $(DEPTH)/config/autoconf.mk

MODULE       = ycbcr
LIBRARY_NAME = ycbcr
LIBXUL_LIBRARY = 1
EXPORT_LIBRARY = 1

DEFINES += -D_IMPL_NS_GFX

EXPORTS      = chromium_types.h \
               yuv_convert.h \
               yuv_row.h \
               ycbcr_to_rgb565.h \
               $(NULL)

CPPSRCS = yuv_convert.cpp \
          yuv_row_c.cpp \
          yuv_row_table.cpp \
          ycbcr_to_rgb565.cpp \
          $(NULL)

# Are we targeting x86 or x64?  If so, build yuv_convert_mmx.cpp and
# yuv_convert_sse2.cpp. These files use MMX and SSE2 intrinsics, so they need
# special compile flags on some compilers.
ifneq (,$(INTEL_ARCHITECTURE))
CPPSRCS += yuv_convert_sse2.cpp

# MSVC doesn't support MMX when targeting AMD64.
ifdef _MSC_VER
ifneq ($(OS_TEST),x86_64)
CPPSRCS += yuv_convert_mmx.cpp
endif
else
CPPSRCS += yuv_convert_mmx.cpp
endif

ifdef GNU_CC
yuv_convert_mmx.$(OBJ_SUFFIX): CXXFLAGS += -mmmx
yuv_convert_sse2.$(OBJ_SUFFIX): CXXFLAGS += -msse2
endif

ifdef SOLARIS_SUNPRO_CXX
yuv_convert_mmx.$(OBJ_SUFFIX): CXXFLAGS += -xarch=mmx -xO4
yuv_convert_sse2.$(OBJ_SUFFIX): CXXFLAGS += -xarch=sse2 -xO4
endif

endif


ifdef _MSC_VER
CPPSRCS += yuv_row_win.cpp \
           $(NULL)
else
ifeq ($(OS_ARCH),Linux)
CPPSRCS += yuv_row_posix.cpp \
           $(NULL)
else
ifeq ($(OS_ARCH),SunOS)
CPPSRCS += yuv_row_posix.cpp \
           $(NULL)
else
ifeq ($(OS_ARCH),Darwin)
CPPSRCS += yuv_row_posix.cpp \
           $(NULL)
else
CPPSRCS += yuv_row_other.cpp \
           $(NULL)
endif # Darwin
endif # SunOS
endif # linux
endif # windows

ifeq (arm,$(findstring arm,$(OS_TEST)))
CPPSRCS += yuv_convert_arm.cpp \
           $(NULL)
endif

EXTRA_DSO_LDOPTS += \
        $(LIBS_DIR) \
        $(EXTRA_DSO_LIBS) \
        $(XPCOM_LIBS) \
        $(NSPR_LIBS) \
        $(NULL)

include $(topsrcdir)/config/rules.mk
