#
# Copyright (C) 2013 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
LOCAL_PATH := $(call my-dir)
# C/LLVM-IR source files for the library
clcore_base_files := \
rs_allocation.c \
rs_cl.c \
rs_core.c \
rs_element.c \
rs_f16_math.c \
rs_mesh.c \
rs_matrix.c \
rs_program.c \
rs_sample.c \
rs_sampler.c \
rs_convert.c \
rs_quaternion.c
clcore_cflags := -Werror -Wall -Wextra \
-Iframeworks/rs/cpu_ref -DRS_DECLARE_EXPIRED_APIS
clcore_base_files_32 := \
ll32/allocation.ll
clcore_base_files_64 := \
ll64/allocation.ll
clcore_files := \
$(clcore_base_files) \
arch/generic.c
clcore_g_files := \
rs_abi_debuginfo.c \
arch/generic.c
clcore_files_32 := \
$(clcore_base_files_32) \
ll32/math.ll
clcore_files_64 := \
$(clcore_base_files_64) \
ll64/math.ll
clcore_neon_files := \
$(clcore_base_files) \
$(clcore_files_32) \
arch/neon.ll \
arch/clamp.c
clcore_arm64_files := \
$(clcore_files_64) \
arch/asimd.ll \
arch/clamp.c
clcore_x86_files := \
$(clcore_base_files) \
arch/generic.c \
arch/x86_sse2.ll \
arch/x86_sse3.ll
# Grab the current value for $(RS_VERSION_DEFINE)
include frameworks/compile/slang/rs_version.mk
# Build the base version of the library
include $(CLEAR_VARS)
LOCAL_MODULE := libclcore.bc
LOCAL_CFLAGS += $(clcore_cflags)
LOCAL_SRC_FILES := $(clcore_base_files)
LOCAL_SRC_FILES_32 := $(clcore_files_32)
LOCAL_SRC_FILES_32 += arch/generic.c
ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm64))
LOCAL_SRC_FILES_64 := $(clcore_arm64_files)
LOCAL_CFLAGS_64 += -DARCH_ARM64_HAVE_NEON
else
LOCAL_SRC_FILES_64 := $(clcore_files_64)
LOCAL_SRC_FILES_64 += arch/generic.c
endif
include $(LOCAL_PATH)/build_bc_lib.mk
# Build a debug version of the library
include $(CLEAR_VARS)
LOCAL_MODULE := libclcore_debug.bc
rs_debug_runtime := 1
LOCAL_CFLAGS += $(clcore_cflags)
LOCAL_SRC_FILES := $(clcore_base_files)
LOCAL_SRC_FILES_32 := $(clcore_files_32)
LOCAL_SRC_FILES_32 += arch/generic.c
ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm64))
LOCAL_SRC_FILES_64 := $(clcore_arm64_files)
LOCAL_CFLAGS_64 += -DARCH_ARM64_HAVE_NEON
else
LOCAL_SRC_FILES_64 := $(clcore_files_64)
LOCAL_SRC_FILES_64 += arch/generic.c
endif
include $(LOCAL_PATH)/build_bc_lib.mk
rs_debug_runtime :=
# Build an optimized version of the library for x86 platforms (all have SSE2/3).
ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
include $(CLEAR_VARS)
LOCAL_MODULE := libclcore_x86.bc
LOCAL_CFLAGS += $(clcore_cflags) -DARCH_X86_HAVE_SSSE3
LOCAL_SRC_FILES := $(clcore_x86_files)
LOCAL_SRC_FILES_32 := $(clcore_base_files_32)
LOCAL_SRC_FILES_64 := $(clcore_base_files_64)
include $(LOCAL_PATH)/build_bc_lib.mk
endif
# Build a NEON-enabled version of the library (if possible)
# Only build on 32-bit, because we don't need a 64-bit NEON lib
ifeq ($(ARCH_ARM_HAVE_NEON),true)
include $(CLEAR_VARS)
LOCAL_32_BIT_ONLY := true
LOCAL_MODULE := libclcore_neon.bc
LOCAL_CFLAGS += $(clcore_cflags)
LOCAL_SRC_FILES := $(clcore_neon_files)
LOCAL_CFLAGS += -DARCH_ARM_HAVE_NEON
include $(LOCAL_PATH)/build_bc_lib.mk
endif
# Build a version of the library with debug info
include $(CLEAR_VARS)
LOCAL_MODULE := libclcore_g.bc
rs_g_runtime := 1
LOCAL_CFLAGS += $(clcore_cflags)
LOCAL_CFLAGS += -g -O0
LOCAL_SRC_FILES := $(clcore_base_files) $(clcore_g_files)
ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm64))
LOCAL_CFLAGS_64 += -DARCH_ARM64_HAVE_NEON
endif
include $(LOCAL_PATH)/build_bc_lib.mk
rs_g_runtime :=
### Build new versions (librsrt_<ARCH>.bc) as host shared libraries.
### These will be used with bcc_compat and the support library.
# Build the ARM version of the library
include $(CLEAR_VARS)
# FIXME for 64-bit
LOCAL_32_BIT_ONLY := true
BCC_RS_TRIPLE := renderscript32-linux-androideabi
RS_TRIPLE_CFLAGS :=
LOCAL_MODULE := librsrt_arm.bc
LOCAL_IS_HOST_MODULE := true
LOCAL_CFLAGS += $(clcore_cflags)
LOCAL_SRC_FILES := $(clcore_files) $(clcore_files_32)
include $(LOCAL_PATH)/build_bc_lib.mk
# Build the MIPS version of the library
include $(CLEAR_VARS)
# FIXME for 64-bit
LOCAL_32_BIT_ONLY := true
BCC_RS_TRIPLE := renderscript32-linux-androideabi
RS_TRIPLE_CFLAGS :=
LOCAL_MODULE := librsrt_mips.bc
LOCAL_IS_HOST_MODULE := true
LOCAL_CFLAGS += $(clcore_cflags)
LOCAL_SRC_FILES := $(clcore_files) $(clcore_files_32)
include $(LOCAL_PATH)/build_bc_lib.mk
# Build the x86 version of the library
include $(CLEAR_VARS)
# FIXME for 64-bit
LOCAL_32_BIT_ONLY := true
BCC_RS_TRIPLE := renderscript32-linux-androideabi
RS_TRIPLE_CFLAGS := -D__i386__
LOCAL_MODULE := librsrt_x86.bc
LOCAL_IS_HOST_MODULE := true
LOCAL_CFLAGS += $(clcore_cflags) -DARCH_X86_HAVE_SSSE3
LOCAL_SRC_FILES := $(clcore_x86_files) $(clcore_base_files_32)
include $(LOCAL_PATH)/build_bc_lib.mk
include $(CLEAR_VARS)
BCC_RS_TRIPLE := renderscript64-linux-android
RS_TRIPLE_CFLAGS :=
LOCAL_MODULE := librsrt_arm64.bc
LOCAL_IS_HOST_MODULE := true
LOCAL_CFLAGS += $(clcore_cflags)
LOCAL_SRC_FILES := $(clcore_files) $(clcore_files_64)
include $(LOCAL_PATH)/build_bc_lib.mk
# Build the x86_64 version of the library
include $(CLEAR_VARS)
BCC_RS_TRIPLE := renderscript64-linux-android
RS_TRIPLE_CFLAGS := -D__x86_64__
LOCAL_MODULE := librsrt_x86_64.bc
LOCAL_IS_HOST_MODULE := true
LOCAL_CFLAGS += $(clcore_cflags) -DARCH_X86_HAVE_SSSE3
LOCAL_SRC_FILES := $(clcore_x86_files) $(clcore_base_files_64)
include $(LOCAL_PATH)/build_bc_lib.mk