From f7ee0870aeae2667e7b0c4b580e96407622727dd Mon Sep 17 00:00:00 2001 From: Chaoren Lin Date: Wed, 15 Jul 2015 19:22:09 +0000 Subject: [PATCH] Default to linking lldb-server statically for Android. Reviewers: vharron, tberghammer Subscribers: chaoren, labath, tberghammer, lldb-commits Differential Revision: http://reviews.llvm.org/D10858 llvm-svn: 242318 --- lldb/cmake/LLDBDependencies.cmake | 7 ++++++- lldb/cmake/platforms/Android.cmake | 14 +++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lldb/cmake/LLDBDependencies.cmake b/lldb/cmake/LLDBDependencies.cmake index 96f6bcc..67f98cf 100644 --- a/lldb/cmake/LLDBDependencies.cmake +++ b/lldb/cmake/LLDBDependencies.cmake @@ -155,7 +155,12 @@ endif() list(APPEND LLDB_SYSTEM_LIBS ${system_libs}) if (LLVM_BUILD_STATIC) - list(APPEND LLDB_SYSTEM_LIBS python2.7 z util termcap gpm ssl crypto bsd) + if (NOT LLDB_DISABLE_PYTHON) + list(APPEND LLDB_SYSTEM_LIBS python2.7 util) + endif() + if (NOT LLDB_DISABLE_CURSES) + list(APPEND LLDB_SYSTEM_LIBS gpm) + endif() endif() set( LLVM_LINK_COMPONENTS diff --git a/lldb/cmake/platforms/Android.cmake b/lldb/cmake/platforms/Android.cmake index 2af8de7..3374bcc 100644 --- a/lldb/cmake/platforms/Android.cmake +++ b/lldb/cmake/platforms/Android.cmake @@ -38,6 +38,15 @@ add_definitions( -DANDROID -D__ANDROID_NDK__ -DLLDB_DISABLE_LIBEDIT ) set( ANDROID True ) set( __ANDROID_NDK__ True ) +# linking lldb-server statically for Android avoids the need to ship two +# binaries (pie for API 21+ and non-pie for API 14-). It's possible to use +# a non-pie shim on API 14-, but that requires lldb-server to dynamically export +# its symbols, which significantly increases the binary size. Static linking, on +# the other hand, has little to no effect on the binary size. +if (NOT DEFINED LLVM_BUILD_STATIC) + set( LLVM_BUILD_STATIC True ) +endif() + set( ANDROID_ABI "${ANDROID_ABI}" CACHE INTERNAL "Android Abi" FORCE ) if( ANDROID_ABI STREQUAL "x86" ) set( CMAKE_SYSTEM_PROCESSOR "i686" ) @@ -95,11 +104,6 @@ elseif( ANDROID_ABI STREQUAL "armeabi" ) set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv7-a" ) endif() -# PIE is required for API 21+ so we enable it -# unfortunately, it is not supported before API 14 so we need to do something else there -# see http://llvm.org/pr23457 -set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -pie -fPIE" ) - # linker flags set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fdata-sections -ffunction-sections" ) set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--gc-sections" ) -- 2.7.4