10f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
208b8f64be637bde97f6d0c20fe31387c311ca634Tim MurrayLOCAL_PATH:=frameworks/rs
36e127d6c76f02024ef906c9a450a9b2d80657566Stephen Hinesrs_base_CFLAGS := -Werror -Wall -Wno-unused-parameter -Wno-unused-variable \
46625634eb9430e9c9af6bfef4772f72baa28bd15Chris Wailes		  -Wno-overloaded-virtual -DRS_COMPATIBILITY_LIB -std=c++11
5d227f6cb022d73696c3e3c3d55470c80ba1167baStephen Hines
6d227f6cb022d73696c3e3c3d55470c80ba1167baStephen Hinesifeq ($(ARCH_ARM_HAVE_NEON),true)
7d227f6cb022d73696c3e3c3d55470c80ba1167baStephen Hinesrs_base_CFLAGS += -DARCH_ARM_HAVE_NEON
8d227f6cb022d73696c3e3c3d55470c80ba1167baStephen Hinesendif
9d227f6cb022d73696c3e3c3d55470c80ba1167baStephen Hines
100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesifeq ($(TARGET_BUILD_PDK), true)
110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines  rs_base_CFLAGS += -D__RS_PDK__
120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesendif
130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines# Build rsg-generator ====================
150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesinclude $(CLEAR_VARS)
160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_MODULE := rsg-generator_support
180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines# These symbols are normally defined by BUILD_XXX, but we need to define them
200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines# here so that local-intermediates-dir works.
210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_IS_HOST_MODULE := true
230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_MODULE_CLASS := EXECUTABLES
240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesintermediates := $(local-intermediates-dir)
250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_MODULE_TAGS := optional
260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_SRC_FILES:= \
280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    spec.l \
290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    rsg_generator.c
300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
310aec6cccd03b8ad8ee04d8822e1dbf261802cdb6Stephen HinesLOCAL_CXX_STL := none
32c0e12b8f7371c7dde5e684ba0a128edd9fcf4284Dan AlbertLOCAL_ADDRESS_SANITIZER := false
330aec6cccd03b8ad8ee04d8822e1dbf261802cdb6Stephen Hines
340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesinclude $(BUILD_HOST_EXECUTABLE)
350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines# TODO: This should go into build/core/config.mk
370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesRSG_GENERATOR_SUPPORT:=$(LOCAL_BUILT_MODULE)
380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesinclude $(CLEAR_VARS)
400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_CLANG := true
410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_MODULE := libRSSupport
42f5f301597fa31aa2e18231f860c15828974bf2d6Stephen HinesLOCAL_SDK_VERSION := 8
430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
44c53fa6cbc770a7bc3a233eea66455eca0aa8ef7bYing Wang
450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_MODULE_CLASS := SHARED_LIBRARIES
4603b4972e5dd5c51c2b52d67149a786afc51d38d0Ying Wanggenerated_sources_dir := $(call local-generated-sources-dir)
470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines# Generate custom headers
490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
5003b4972e5dd5c51c2b52d67149a786afc51d38d0Ying WangGEN := $(addprefix $(generated_sources_dir)/, \
510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines            rsgApiStructs.h \
520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines            rsgApiFuncDecl.h \
530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines        )
540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines$(GEN) : PRIVATE_PATH := $(LOCAL_PATH)
560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines$(GEN) : PRIVATE_CUSTOM_TOOL = $(RSG_GENERATOR_SUPPORT) $< $@ <$(PRIVATE_PATH)/rs.spec
570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines$(GEN) : $(RSG_GENERATOR_SUPPORT) $(LOCAL_PATH)/rs.spec
5803b4972e5dd5c51c2b52d67149a786afc51d38d0Ying Wang$(GEN): $(generated_sources_dir)/%.h : $(LOCAL_PATH)/%.h.rsg
590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	$(transform-generated-source)
600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines# used in jni/Android.mk
620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesrs_generated_source += $(GEN)
630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_GENERATED_SOURCES += $(GEN)
640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines# Generate custom source files
660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
6703b4972e5dd5c51c2b52d67149a786afc51d38d0Ying WangGEN := $(addprefix $(generated_sources_dir)/, \
680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines            rsgApi.cpp \
690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines            rsgApiReplay.cpp \
700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines        )
710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines$(GEN) : PRIVATE_PATH := $(LOCAL_PATH)
730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines$(GEN) : PRIVATE_CUSTOM_TOOL = $(RSG_GENERATOR_SUPPORT) $< $@ <$(PRIVATE_PATH)/rs.spec
740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines$(GEN) : $(RSG_GENERATOR_SUPPORT) $(LOCAL_PATH)/rs.spec
7503b4972e5dd5c51c2b52d67149a786afc51d38d0Ying Wang$(GEN): $(generated_sources_dir)/%.cpp : $(LOCAL_PATH)/%.cpp.rsg
760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	$(transform-generated-source)
770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines# used in jni/Android.mk
790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesrs_generated_source += $(GEN)
800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_GENERATED_SOURCES += $(GEN)
820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_SRC_FILES:= \
840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsAdapter.cpp \
850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsAllocation.cpp \
86bcccd31800d79f28767fe3d5db4e5cb4fb148360Yang Ni	rsClosure.cpp \
8799fa396e67b407444b6a2c0919ddca920f24c944Stephen Hines	rsCompatibilityLib.cpp \
880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsComponent.cpp \
890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsContext.cpp \
901d25487751ddef5e2bc1724ed77b2a15fbcf81beJason Sams	rsCppUtils.cpp \
910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsDevice.cpp \
92519eb53a4e2759340e2e7b3da1aaa2e56162c305Jason Sams	rsDriverLoader.cpp \
930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsElement.cpp \
940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsFifoSocket.cpp \
950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsObjectBase.cpp \
960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsMatrix2x2.cpp \
970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsMatrix3x3.cpp \
980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsMatrix4x4.cpp \
990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsMutex.cpp \
1000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsSampler.cpp \
1010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsScript.cpp \
1020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsScriptC.cpp \
1030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsScriptC_Lib.cpp \
104ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams	rsScriptGroup.cpp \
105bcccd31800d79f28767fe3d5db4e5cb4fb148360Yang Ni	rsScriptGroup2.cpp \
106ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams	rsScriptIntrinsic.cpp \
1070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsSignal.cpp \
1080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsStream.cpp \
1090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines	rsThreadIO.cpp \
1104513614e13d278070cf0dcb9322ca4ade350b58cJason Sams	rsType.cpp \
1114513614e13d278070cf0dcb9322ca4ade350b58cJason Sams	driver/rsdAllocation.cpp \
1124513614e13d278070cf0dcb9322ca4ade350b58cJason Sams	driver/rsdBcc.cpp \
1134513614e13d278070cf0dcb9322ca4ade350b58cJason Sams	driver/rsdCore.cpp \
114a7b5fb71398b3eb5fa98736ba183ea07e8934002Tim Murray	driver/rsdElement.cpp \
1154513614e13d278070cf0dcb9322ca4ade350b58cJason Sams	driver/rsdRuntimeStubs.cpp \
116ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams	driver/rsdSampler.cpp \
1171b370e358d16cc3b50b169511d6b387db09f972dJason Sams	driver/rsdScriptGroup.cpp \
118a7b5fb71398b3eb5fa98736ba183ea07e8934002Tim Murray	driver/rsdType.cpp \
1191b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuCore.cpp \
12051980d0779a6619aca1b26ea5c96d37fb6bbc06fYang Ni	cpu_ref/rsCpuExecutable.cpp \
1211b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuScript.cpp \
1221b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuRuntimeMath.cpp \
1231b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuScriptGroup.cpp \
124bcccd31800d79f28767fe3d5db4e5cb4fb148360Yang Ni	cpu_ref/rsCpuScriptGroup2.cpp \
1251b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuIntrinsic.cpp \
126f6eb6126e6ce5012dc6691849b4e3c1774a2c877Jason Sams	cpu_ref/rsCpuIntrinsic3DLUT.cpp \
1271b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuIntrinsicBlend.cpp \
1281b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuIntrinsicBlur.cpp \
1298dab1e59827244f84ceb73c5eb24427223b58b21Miao Wang	cpu_ref/rsCpuIntrinsicBLAS.cpp \
1301b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuIntrinsicColorMatrix.cpp \
1311b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuIntrinsicConvolve3x3.cpp \
1321b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuIntrinsicConvolve5x5.cpp \
13359f38e84715560c3dd78fabffb539372526c0870Stephen Hines	cpu_ref/rsCpuIntrinsicHistogram.cpp \
1341b370e358d16cc3b50b169511d6b387db09f972dJason Sams	cpu_ref/rsCpuIntrinsicLUT.cpp \
135b680aeb2f52857274ce5bc36711485d59eedf99fJason Sams	cpu_ref/rsCpuIntrinsicResize.cpp \
1360e460d3cd6179a5dfd87945918c41a199b6927b9Tim Murray	cpu_ref/rsCpuIntrinsicYuvToRGB.cpp \
1370e460d3cd6179a5dfd87945918c41a199b6927b9Tim Murray	cpu_ref/rsCpuRuntimeMathFuncs.cpp
1380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1394c16f793356049094cd5afe2f84ce45f48bc4078Tim Murrayifeq ($(ARCH_ARM_HAVE_ARMV7A),true)
140f96c8e00403a64d0215b563b96765f381881bfe8Tim MurrayLOCAL_CFLAGS_arm := -DARCH_ARM_HAVE_VFP -DARCH_ARM_USE_INTRINSICS
141c53fa6cbc770a7bc3a233eea66455eca0aa8ef7bYing WangLOCAL_ASFLAGS_arm := -mfpu=neon
142d326e117ad502d4b3ae823e18c421ea61af5a0deChih-Hung Hsieh# frameworks/rs/cpu_ref/rsCpuIntrinsics_neon_3DLUT.S does not compile.
143d326e117ad502d4b3ae823e18c421ea61af5a0deChih-Hung HsiehLOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
144c53fa6cbc770a7bc3a233eea66455eca0aa8ef7bYing WangLOCAL_SRC_FILES_arm := \
14543378e9f2a0bcf0d12aafdca76b78fe2729fa949Jason Sams        cpu_ref/rsCpuIntrinsics_neon_3DLUT.S \
146d49d091e11c51001bf3938c75004c07b646be24bTim Murray	cpu_ref/rsCpuIntrinsics_neon_ColorMatrix.S \
147d49d091e11c51001bf3938c75004c07b646be24bTim Murray        cpu_ref/rsCpuIntrinsics_neon_Blend.S \
148d49d091e11c51001bf3938c75004c07b646be24bTim Murray        cpu_ref/rsCpuIntrinsics_neon_Blur.S \
1493342757c37c16a544b47903000864afee8c85b16Jason Sams	cpu_ref/rsCpuIntrinsics_neon_Convolve.S \
150f7a4ceea535ef3a1ee7a4ec7bed2140e7f0b3c95Jason Sams	cpu_ref/rsCpuIntrinsics_neon_Resize.S \
151d49d091e11c51001bf3938c75004c07b646be24bTim Murray        cpu_ref/rsCpuIntrinsics_neon_YuvToRGB.S
152d227f6cb022d73696c3e3c3d55470c80ba1167baStephen Hinesendif
1530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
154ea476b88ae7075ee7b0dabc0771d8d1a3b480b31Miao WangLOCAL_REQUIRED_MODULES := libblasV8
15587645725349465a6981c2cf250e37bd6f0e2acbbStephen HinesLOCAL_LDFLAGS += -llog -ldl
156f5f301597fa31aa2e18231f860c15828974bf2d6Stephen HinesLOCAL_NDK_STL_VARIANT := stlport_static
1570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_C_INCLUDES += frameworks/compile/libbcc/include
1598dab1e59827244f84ceb73c5eb24427223b58b21Miao WangLOCAL_C_INCLUDES += external/cblas/include
1600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_CFLAGS += $(rs_base_CFLAGS)
1620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_MODULE:= libRSSupport
1640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesLOCAL_MODULE_TAGS := optional
1650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
16693ea123bc454ffc76d824b571c9103f62eb39a02Ian Rogers# TODO: why isn't this picked up from the host GLOBAL_CFLAGS?
16793ea123bc454ffc76d824b571c9103f62eb39a02Ian RogersLOCAL_CFLAGS += -D__STDC_FORMAT_MACROS
16893ea123bc454ffc76d824b571c9103f62eb39a02Ian Rogers
1690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesinclude $(BUILD_SHARED_LIBRARY)
170