Author: labath
Date: Fri Mar  3 07:49:34 2017
New Revision: 296869

URL: http://llvm.org/viewvc/llvm-project?rev=296869&view=rev
Log:
testsuite/android: build test executables with the android ndk directly

Summary:
This teaches the test makefiles about the Android NDK, so we are able to
run the tests without first going through the make_standalone_toolchain
script. The motivation for this is the ability to run both libc++ and
libstdc++ tests together, which previously was not possible because
make_standalone_toolchain bakes in the STL to use during toolchain
creation time. The support for this is not present yet -- this change
only make sure we don't regress for existing funcionality (gcc w/
libstdc++). Clang and libc++ support will be added later.

I've checked that the mips android targets compile after this change,
but I have no way of checking whether this breaks anything. If you are
reading this and it broke you, let me know.

Reviewers: tberghammer, danalbert

Subscribers: srhines, lldb-commits

Differential Revision: https://reviews.llvm.org/D30410

Added:
    lldb/trunk/packages/Python/lldbsuite/test/make/Android.rules
Modified:
    lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules

Added: lldb/trunk/packages/Python/lldbsuite/test/make/Android.rules
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/make/Android.rules?rev=296869&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/make/Android.rules (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/make/Android.rules Fri Mar  3 
07:49:34 2017
@@ -0,0 +1,43 @@
+NDK_ROOT := $(shell dirname $(CC))/../../../../..
+NDK_ROOT := $(realpath $(NDK_ROOT))
+
+ifeq "$(findstring 64, $(ARCH))" "64"
+       # lowest 64-bit API level
+       API_LEVEL := 21
+else ifeq "$(ARCH)" "i386"
+       # clone(2) declaration is present only since this api level
+       API_LEVEL := 17
+else
+       # lowest supported 32-bit API level
+       API_LEVEL := 9
+endif
+
+ifeq "$(ARCH)" "arm"
+       SYSROOT_ARCH := arm
+       STL_ARCH := armeabi-v7a
+       ARCH_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm
+else ifeq "$(ARCH)" "aarch64"
+       SYSROOT_ARCH := arm64
+       STL_ARCH := arm64-v8a
+else ifeq "$(ARCH)" "i386"
+       SYSROOT_ARCH := x86
+       STL_ARCH := x86
+else ifeq "$(ARCH)" "mips64r6"
+       SYSROOT_ARCH := mips64
+       STL_ARCH := mips64
+else ifeq "$(ARCH)" "mips32"
+       SYSROOT_ARCH := mips
+       STL_ARCH := mips
+else
+       SYSROOT_ARCH := $(ARCH)
+       STL_ARCH := $(ARCH)
+endif
+
+ARCH_CFLAGS += \
+       
--sysroot=$(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH) \
+       -isystem $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/include \
+       -isystem 
$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/$(STL_ARCH)/include \
+       -isystem $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/include/backward
+ARCH_LDFLAGS += -lm \
+       
$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/$(STL_ARCH)/libgnustl_static.a
 \
+       
--sysroot=$(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH)

Modified: lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules?rev=296869&r1=296868&r2=296869&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules Fri Mar  3 
07:49:34 2017
@@ -35,7 +35,7 @@ LLDB_BASE_DIR := $(THIS_FILE_DIR)../../.
 # If TRIPLE is not defined try to set the ARCH, CC, CFLAGS, and more
 # from the triple alone
 #----------------------------------------------------------------------
-TRIPLE_CFLAGS :=
+ARCH_CFLAGS :=
 ifneq "$(TRIPLE)" ""
        triple_space = $(subst -, ,$(TRIPLE))
        ARCH =$(word 1, $(triple_space))
@@ -52,18 +52,21 @@ ifneq "$(TRIPLE)" ""
                                        ifeq "$(TRIPLE_VERSION)" ""
                                                TRIPLE_VERSION =$(shell echo 
$(notdir $(SDKROOT)) | sed -e 's/.*\([0-9]\.[0-9]\).*/\1/')
                                        endif
-                                       TRIPLE_CFLAGS 
:=-mios-version-min=$(TRIPLE_VERSION) -isysroot "$(SDKROOT)"
+                                       ARCH_CFLAGS 
:=-mios-version-min=$(TRIPLE_VERSION) -isysroot "$(SDKROOT)"
                                else
                                        SDKROOT = $(shell xcrun --sdk 
iphonesimulator --show-sdk-path)
                                        ifeq "$(TRIPLE_VERSION)" ""
                                                TRIPLE_VERSION =$(shell echo 
$(notdir $(SDKROOT)) | sed -e 's/.*\([0-9]\.[0-9]\).*/\1/')
                                        endif
-                                       TRIPLE_CFLAGS 
:=-mios-simulator-version-min=$(TRIPLE_VERSION) -isysroot "$(SDKROOT)"
+                                       ARCH_CFLAGS 
:=-mios-simulator-version-min=$(TRIPLE_VERSION) -isysroot "$(SDKROOT)"
                                endif
                        endif
                endif
        endif
 endif
+ifeq "$(OS)" "Android"
+       include $(THIS_FILE_DIR)/Android.rules
+endif
 
 #----------------------------------------------------------------------
 # If OS is not defined, use 'uname -s' to determine the OS name.
@@ -199,13 +202,13 @@ else
        CFLAGS += $(ARCHFLAG)$(ARCH) $(FRAMEWORK_INCLUDES) $(CFLAGS_EXTRAS) 
-I$(LLDB_BASE_DIR)include
 endif
 
-CFLAGS += -include $(THIS_FILE_DIR)test_common.h $(TRIPLE_CFLAGS)
+CFLAGS += -include $(THIS_FILE_DIR)test_common.h $(ARCH_CFLAGS)
 
 # Use this one if you want to build one part of the result without debug 
information:
 ifeq "$(OS)" "Darwin"
-       CFLAGS_NO_DEBUG = -O0 $(ARCHFLAG) $(ARCH) $(FRAMEWORK_INCLUDES) 
$(CFLAGS_EXTRAS) $(TRIPLE_CFLAGS)
+       CFLAGS_NO_DEBUG = -O0 $(ARCHFLAG) $(ARCH) $(FRAMEWORK_INCLUDES) 
$(CFLAGS_EXTRAS) $(ARCH_CFLAGS)
 else
-       CFLAGS_NO_DEBUG = -O0 $(ARCHFLAG)$(ARCH) $(FRAMEWORK_INCLUDES) 
$(CFLAGS_EXTRAS) $(TRIPLE_CFLAGS)
+       CFLAGS_NO_DEBUG = -O0 $(ARCHFLAG)$(ARCH) $(FRAMEWORK_INCLUDES) 
$(CFLAGS_EXTRAS) $(ARCH_CFLAGS)
 endif
 
 ifeq "$(MAKE_DWO)" "YES"
@@ -221,7 +224,7 @@ CXXFLAGS += -std=c++11
 CXXFLAGS += $(subst -fmodules,, $(CFLAGS))
 LD = $(CC)
 LDFLAGS ?= $(CFLAGS)
-LDFLAGS += $(LD_EXTRAS)
+LDFLAGS += $(LD_EXTRAS) $(ARCH_LDFLAGS)
 ifeq (,$(filter $(OS), Windows_NT Android))
        ifneq (,$(filter YES,$(ENABLE_THREADS)))
                LDFLAGS += -pthread


_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to