LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-LOCAL_CLANG := true
+COMMON_CFLAGS := \
+ -DLOG_TAG=\"libEGL_swiftshader\" \
+ -std=c++11 \
+ -DEGLAPI= \
+ -DEGL_EGLEXT_PROTOTYPES \
+ -Wno-unused-parameter \
+ -Wno-implicit-exception-spec-mismatch \
+ -Wno-overloaded-virtual \
+ -DANDROID_PLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION)
-LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/lib/egl
-LOCAL_MODULE := libEGL_swiftshader
+ifneq (16,${PLATFORM_SDK_VERSION})
+COMMON_CFLAGS += -Xclang -fuse-init-array
+else
+COMMON_CFLAGS += -D__STDC_INT64__
+endif
-LOCAL_SRC_FILES += \
- ../common/Object.cpp \
- ../common/debug.cpp \
+COMMON_SRC_FILES := \
Config.cpp \
Display.cpp \
Surface.cpp \
libEGL.cpp \
main.cpp
-LOCAL_CFLAGS += -DLOG_TAG=\"libEGL_swiftshader\"
-
-# Android's make system also uses NDEBUG, so we need to set/unset it forcefully
-# Uncomment for ON:
-LOCAL_CFLAGS += -UNDEBUG -g
-# Uncomment for OFF:
-#LOCAL_CFLAGS += -DANGLE_DISABLE_TRACE
+COMMON_C_INCLUDES := \
+ bionic \
+ $(LOCAL_PATH)/../../../include \
+ $(LOCAL_PATH)/../ \
+ $(LOCAL_PATH)/../../
-LOCAL_CFLAGS += -std=c++11
+COMMON_SHARED_LIBRARIES := \
+ libdl \
+ liblog \
+ libcutils \
+ libhardware
-# These changes tie the build to Cloud Android. Do something else
-# for other Android builds.
-LOCAL_STATIC_LIBRARIES += libgceframebufferconfig libgcemetadata
-LOCAL_C_INCLUDES += device/google/gce/include
+# gralloc1 is introduced from N MR1
+ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 25 && echo NMR1),NMR1)
+COMMON_CFLAGS += -DHAVE_GRALLOC1
+COMMON_SHARED_LIBRARIES += libsync
+endif
-LOCAL_SHARED_LIBRARIES += libdl liblog libandroid libutils libcutils $(GCE_STLPORT_LIBS)
-LOCAL_LDFLAGS += -Wl,--version-script=$(LOCAL_PATH)/exports.map -Wl,--hash-style=sysv
+# Marshmallow does not have stlport, but comes with libc++ by default
+ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow)
+COMMON_SHARED_LIBRARIES += libstlport
+COMMON_C_INCLUDES += external/stlport/stlport
+endif
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/../include \
- $(LOCAL_PATH)/../ \
- $(LOCAL_PATH)/../../
+COMMON_LDFLAGS := \
+ -Wl,--version-script=$(LOCAL_PATH)/exports.map \
+ -Wl,--hash-style=sysv
-include external/stlport/libstlport.mk
+include $(CLEAR_VARS)
+LOCAL_MODULE := libEGL_swiftshader_debug
+ifdef TARGET_2ND_ARCH
+ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
+LOCAL_MULTILIB := first
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/egl
+else
+LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)/lib/egl
+LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64/egl
+endif
+else
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/egl
+endif
+LOCAL_MODULE_TAGS := optional
+LOCAL_CLANG := true
+LOCAL_SRC_FILES := $(COMMON_SRC_FILES)
+LOCAL_C_INCLUDES += $(COMMON_C_INCLUDES)
+LOCAL_STATIC_LIBRARIES += swiftshader_top_debug $(COMMON_STATIC_LIBRARIES)
+LOCAL_SHARED_LIBRARIES += $(COMMON_SHARED_LIBRARIES)
+LOCAL_LDFLAGS += $(COMMON_LDFLAGS)
+LOCAL_CFLAGS += $(COMMON_CFLAGS) -UNDEBUG -g -O0
+include $(BUILD_SHARED_LIBRARY)
+include $(CLEAR_VARS)
+LOCAL_MODULE := libEGL_swiftshader
+ifdef TARGET_2ND_ARCH
+ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
+LOCAL_MULTILIB := first
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/egl
+else
+LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)/lib/egl
+LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64/egl
+endif
+else
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/egl
+endif
+LOCAL_MODULE_TAGS := optional
+LOCAL_CLANG := true
+LOCAL_SRC_FILES := $(COMMON_SRC_FILES)
+LOCAL_C_INCLUDES += $(COMMON_C_INCLUDES)
+LOCAL_STATIC_LIBRARIES += swiftshader_top_release $(COMMON_STATIC_LIBRARIES)
+LOCAL_SHARED_LIBRARIES += $(COMMON_SHARED_LIBRARIES)
+LOCAL_LDFLAGS += $(COMMON_LDFLAGS)
+LOCAL_CFLAGS += $(COMMON_CFLAGS) -DANGLE_DISABLE_TRACE
include $(BUILD_SHARED_LIBRARY)