Index: cmake/LLDBDependencies.cmake =================================================================== --- cmake/LLDBDependencies.cmake +++ cmake/LLDBDependencies.cmake @@ -154,7 +154,12 @@ 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 Index: cmake/platforms/Android.cmake =================================================================== --- cmake/platforms/Android.cmake +++ cmake/platforms/Android.cmake @@ -38,6 +38,15 @@ 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 @@ 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" )