Commit 1ba2611b by Nicolas Capens

Build with Subzero for Android on ARM.

Bug b/37478805 Change-Id: I3a452410d44c0da1cb01c80e3e4fcade221f7304 Reviewed-on: https://swiftshader-review.googlesource.com/9569Reviewed-by: 's avatarNicolas Capens <capn@google.com> Tested-by: 's avatarNicolas Capens <capn@google.com>
parent f7b75889
......@@ -16,6 +16,6 @@
LOCAL_PATH:= $(call my-dir)
ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64 arm))
include $(call all-makefiles-under,$(LOCAL_PATH))
endif
......@@ -7,10 +7,10 @@ use_relative_paths = True
vars = {
'chromium_git': 'https://chromium.googlesource.com',
# Current revision of subzero.
'subzero_revision': 'c48bb8b02c98ae49438e43aa1143a958784822a5',
'subzero_revision': 'fb705a6d55003b2c32772ae49e25b0babcff5acc',
}
deps = {
'third_party/pnacl-subzero':
Var('chromium_git') + '/native_client/pnacl-subzero@' + Var('subzero_revision'),
}
\ No newline at end of file
}
LOCAL_PATH:= $(call my-dir)
# Use Subzero as the Reactor JIT back-end on ARM, else LLVM.
ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm))
use_subzero := true
endif
COMMON_C_INCLUDES += \
bionic \
$(LOCAL_PATH)/../include \
......@@ -8,9 +13,19 @@ COMMON_C_INCLUDES += \
$(LOCAL_PATH)/Renderer/ \
$(LOCAL_PATH)/Common/ \
$(LOCAL_PATH)/Shader/ \
$(LOCAL_PATH)/../third_party/LLVM/include \
$(LOCAL_PATH)/Main/
ifdef use_subzero
COMMON_C_INCLUDES += \
$(LOCAL_PATH)/../third_party/pnacl-subzero/ \
$(LOCAL_PATH)/../third_party/llvm-subzero/include/ \
$(LOCAL_PATH)/../third_party/llvm-subzero/build/Android/include/ \
$(LOCAL_PATH)/../third_party/pnacl-subzero/pnacl-llvm/include/
else
COMMON_C_INCLUDES += \
$(LOCAL_PATH)/../third_party/LLVM/include
endif
# Marshmallow does not have stlport, but comes with libc++ by default
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow)
COMMON_C_INCLUDES += external/stlport/stlport
......@@ -35,11 +50,18 @@ COMMON_SRC_FILES += \
Main/FrameBufferAndroid.cpp \
Main/SwiftConfig.cpp
ifdef use_subzero
COMMON_SRC_FILES += \
Reactor/SubzeroReactor.cpp \
Reactor/Routine.cpp \
Reactor/Optimizer.cpp
else
COMMON_SRC_FILES += \
Reactor/LLVMReactor.cpp \
Reactor/Routine.cpp \
Reactor/LLVMRoutine.cpp \
Reactor/LLVMRoutineManager.cpp
endif
COMMON_SRC_FILES += \
Renderer/Blitter.cpp \
......@@ -85,6 +107,7 @@ COMMON_CFLAGS := \
-Wno-unused-parameter \
-Wno-implicit-exception-spec-mismatch \
-Wno-overloaded-virtual \
-Wno-non-virtual-dtor \
-fno-operator-names \
-msse2 \
-D__STDC_CONSTANT_MACROS \
......@@ -98,6 +121,14 @@ else
COMMON_CFLAGS += -D__STDC_INT64__
endif
# Common Subzero defines
COMMON_CFLAGS += -DALLOW_DUMP=0 -DALLOW_TIMERS=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_MINIMAL_BUILD=0 -DALLOW_WASM=0 -DICE_THREAD_LOCAL_HACK=1
# Subzero target
LOCAL_CFLAGS_x86 += -DSZTARGET=X8632
LOCAL_CFLAGS_x86_64 += -DSZTARGET=X8664
LOCAL_CFLAGS_arm += -DSZTARGET=ARM32
include $(CLEAR_VARS)
LOCAL_CLANG := true
LOCAL_MODULE := swiftshader_top_release
......
......@@ -5,9 +5,6 @@ COMMON_C_INCLUDES := \
$(LOCAL_PATH)/../../../include \
$(LOCAL_PATH)/../ \
$(LOCAL_PATH)/../../ \
$(LOCAL_PATH)/../../../third_party/LLVM/include-android \
$(LOCAL_PATH)/../../../third_party/LLVM/include \
$(LOCAL_PATH)/../../../third_party/LLVM/lib/Target/X86 \
$(LOCAL_PATH)/../../Renderer/ \
$(LOCAL_PATH)/../../Common/ \
$(LOCAL_PATH)/../../Shader/ \
......
......@@ -41,15 +41,16 @@ COMMON_C_INCLUDES := \
$(LOCAL_PATH)/../../../include \
$(LOCAL_PATH)/../ \
$(LOCAL_PATH)/../../ \
$(LOCAL_PATH)/../../../third_party/LLVM/include-android \
$(LOCAL_PATH)/../../../third_party/LLVM/include \
$(LOCAL_PATH)/../../../third_party/LLVM/lib/Target/X86 \
$(LOCAL_PATH)/../../Renderer/ \
$(LOCAL_PATH)/../../Common/ \
$(LOCAL_PATH)/../../Shader/ \
$(LOCAL_PATH)/../../Main/
ifdef use_subzero
COMMON_STATIC_LIBRARIES := libsubzero
else
COMMON_STATIC_LIBRARIES := libLLVM_swiftshader
endif
COMMON_SHARED_LIBRARIES := \
libdl \
......
......@@ -47,16 +47,16 @@ COMMON_C_INCLUDES := \
$(LOCAL_PATH)/../../../include \
$(LOCAL_PATH)/../ \
$(LOCAL_PATH)/../../ \
$(LOCAL_PATH)/../../../third_party/LLVM/include-android \
$(LOCAL_PATH)/../../../third_party/LLVM/include \
$(LOCAL_PATH)/../../../third_party/LLVM/lib/Target/X86 \
$(LOCAL_PATH)/../../Renderer/ \
$(LOCAL_PATH)/../../Common/ \
$(LOCAL_PATH)/../../Shader/ \
$(LOCAL_PATH)/../../Main/
COMMON_STATIC_LIBRARIES := \
libLLVM_swiftshader
ifdef use_subzero
COMMON_STATIC_LIBRARIES := libsubzero
else
COMMON_STATIC_LIBRARIES := libLLVM_swiftshader
endif
COMMON_SHARED_LIBRARIES := \
libdl \
......
#
# Copyright 2016 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)
include $(CLEAR_VARS)
LOCAL_CLANG := true
LOCAL_MODULE := libsubzero
LOCAL_MODULE_TAGS := optional
SUBZERO_PATH := ../../third_party/pnacl-subzero
LLVMDEPENDENCIES_PATH := ../../third_party/llvm-subzero
LOCAL_SRC_FILES := \
$(SUBZERO_PATH)/src/IceAssembler.cpp \
$(SUBZERO_PATH)/src/IceCfg.cpp \
$(SUBZERO_PATH)/src/IceCfgNode.cpp \
$(SUBZERO_PATH)/src/IceClFlags.cpp \
$(SUBZERO_PATH)/src/IceELFObjectWriter.cpp \
$(SUBZERO_PATH)/src/IceELFSection.cpp \
$(SUBZERO_PATH)/src/IceFixups.cpp \
$(SUBZERO_PATH)/src/IceGlobalContext.cpp \
$(SUBZERO_PATH)/src/IceGlobalInits.cpp \
$(SUBZERO_PATH)/src/IceInst.cpp \
$(SUBZERO_PATH)/src/IceInstrumentation.cpp \
$(SUBZERO_PATH)/src/IceIntrinsics.cpp \
$(SUBZERO_PATH)/src/IceLiveness.cpp \
$(SUBZERO_PATH)/src/IceLoopAnalyzer.cpp \
$(SUBZERO_PATH)/src/IceMangling.cpp \
$(SUBZERO_PATH)/src/IceMemory.cpp \
$(SUBZERO_PATH)/src/IceOperand.cpp \
$(SUBZERO_PATH)/src/IceRangeSpec.cpp \
$(SUBZERO_PATH)/src/IceRegAlloc.cpp \
$(SUBZERO_PATH)/src/IceRevision.cpp \
$(SUBZERO_PATH)/src/IceRNG.cpp \
$(SUBZERO_PATH)/src/IceSwitchLowering.cpp \
$(SUBZERO_PATH)/src/IceTargetLowering.cpp \
$(SUBZERO_PATH)/src/IceThreading.cpp \
$(SUBZERO_PATH)/src/IceTimerTree.cpp \
$(SUBZERO_PATH)/src/IceTypes.cpp \
$(SUBZERO_PATH)/src/IceVariableSplitting.cpp
LOCAL_SRC_FILES_x86 += \
$(SUBZERO_PATH)/src/IceInstX8632.cpp \
$(SUBZERO_PATH)/src/IceTargetLoweringX8632.cpp
LOCAL_SRC_FILES_x86_64 += \
$(SUBZERO_PATH)/src/IceInstX8664.cpp \
$(SUBZERO_PATH)/src/IceTargetLoweringX8664.cpp
LOCAL_SRC_FILES_arm += \
$(SUBZERO_PATH)/src/IceAssemblerARM32.cpp \
$(SUBZERO_PATH)/src/IceTargetLoweringARM32.cpp \
$(SUBZERO_PATH)/src/IceInstARM32.cpp
LOCAL_SRC_FILES += \
$(LLVMDEPENDENCIES_PATH)/lib/Support/APInt.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Atomic.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/circular_raw_ostream.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/CommandLine.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/ConvertUTF.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/ConvertUTFWrapper.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Debug.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/ErrorHandling.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/FoldingSet.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Hashing.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Host.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/ManagedStatic.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/MemoryBuffer.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Mutex.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/NativeFormatting.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Path.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Process.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Program.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/raw_ostream.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/raw_os_ostream.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/regcomp.c \
$(LLVMDEPENDENCIES_PATH)/lib/Support/regerror.c \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Regex.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/regexec.c \
$(LLVMDEPENDENCIES_PATH)/lib/Support/regfree.c \
$(LLVMDEPENDENCIES_PATH)/lib/Support/regstrlcpy.c \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Signals.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/SmallPtrSet.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/SmallVector.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/StringExtras.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/StringMap.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/StringRef.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/StringSaver.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/TargetParser.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Threading.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Timer.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Triple.cpp \
$(LLVMDEPENDENCIES_PATH)/lib/Support/Twine.cpp
LOCAL_CPPFLAGS := -std=c++11
LOCAL_CFLAGS += -DLOG_TAG=\"libsubzero\" \
-Wno-unused-parameter \
-Wno-implicit-exception-spec-mismatch \
-Wno-overloaded-virtual \
-Wno-non-virtual-dtor
ifneq (16,${PLATFORM_SDK_VERSION})
LOCAL_CFLAGS += -Xclang -fuse-init-array
else
LOCAL_CFLAGS += -D__STDC_INT64__
endif
LOCAL_CFLAGS += -fomit-frame-pointer -Os -ffunction-sections -fdata-sections
LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
# Common Subzero defines
LOCAL_CFLAGS += -DALLOW_DUMP=0 -DALLOW_TIMERS=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_MINIMAL_BUILD=0 -DALLOW_WASM=0 -DICE_THREAD_LOCAL_HACK=1
# Subzero target
LOCAL_CFLAGS_x86 += -DSZTARGET=X8632
LOCAL_CFLAGS_x86_64 += -DSZTARGET=X8664
LOCAL_CFLAGS_arm += -DSZTARGET=ARM32
# Android's make system also uses NDEBUG, so we need to set/unset it forcefully
# Uncomment for debug ON:
# LOCAL_CFLAGS += -UNDEBUG -g -O0
LOCAL_C_INCLUDES += \
bionic \
$(LOCAL_PATH)/$(SUBZERO_PATH)/ \
$(LOCAL_PATH)/$(LLVMDEPENDENCIES_PATH)/include/ \
$(LOCAL_PATH)/$(LLVMDEPENDENCIES_PATH)/build/Android/include/ \
$(LOCAL_PATH)/$(SUBZERO_PATH)/pnacl-llvm/include/
# Marshmallow does not have stlport, but comes with libc++ by default
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow)
LOCAL_C_INCLUDES += external/stlport/stlport
endif
include $(BUILD_STATIC_LIBRARY)
pnacl-subzero @ fb705a6d
Subproject commit 47b6ba6db7c8b8dd36ac54dbd19ae7b4a5b77424
Subproject commit fb705a6d55003b2c32772ae49e25b0babcff5acc
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment