Android: Set CMAKE_POSITION_INDEPENDENT_CODE automatically
If the toolchain file or cache does not set this, enable it automatically based on the Android API version. Versions 16 and above expect position independent code. Use the main `CMAKE_POSITION_INDEPENDENT_CODE` setting in favor of hard-coding `-fpic` or `-fPIC` in the compiler flags for each ABI. This allows CMake to use `-fpie` or `-fPIE` as needed when sources are meant for executables, and `-fpic` or `-fPIC` for other sources.
This commit is contained in:
parent
295c8efa35
commit
6205f1797e
|
@ -1,10 +1,6 @@
|
|||
# <ndk>/build/core/toolchains/aarch64-linux-android-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "aarch64-none-linux-android")
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
# Suppress -Wl,-z,nocopyreloc flag on arm64-v8a
|
||||
set(_ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc 1)
|
||||
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
# <ndk>/build/core/toolchains/aarch64-linux-android-4.9/setup.mk
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
# Suppress -Wl,-z,nocopyreloc flag on arm64-v8a
|
||||
set(_ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc 1)
|
||||
|
|
|
@ -14,7 +14,6 @@ endif()
|
|||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -msoft-float"
|
||||
" -mtune=xscale"
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
|
|
@ -12,7 +12,6 @@ endif()
|
|||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -msoft-float"
|
||||
" -mtune=xscale"
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-GNU)
|
||||
|
|
|
@ -13,7 +13,6 @@ endif()
|
|||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -mfloat-abi=softfp"
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
|
|
@ -11,7 +11,6 @@ endif()
|
|||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -mfloat-abi=softfp"
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-GNU)
|
||||
|
|
|
@ -23,7 +23,6 @@ string(APPEND _ANDROID_ABI_INIT_LDFLAGS
|
|||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -mfloat-abi=softfp"
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
|
|
@ -17,7 +17,6 @@ endif()
|
|||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -mfloat-abi=softfp"
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_LDFLAGS
|
||||
|
|
|
@ -3,6 +3,11 @@ string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
|||
" -no-canonical-prefixes"
|
||||
)
|
||||
|
||||
if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE
|
||||
AND NOT CMAKE_SYSTEM_VERSION VERSION_LESS 16)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -Wl,--gc-sections")
|
||||
|
||||
if(NOT _ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc)
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
# <ndk>/build/core/toolchains/mipsel-linux-android-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "mipsel-none-linux-android")
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
# <ndk>/build/core/toolchains/mipsel-linux-android-4.9/setup.mk
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-GNU)
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
# <ndk>/build/core/toolchains/mips64el-linux-android-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "mips64el-none-linux-android")
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
# <ndk>/build/core/toolchains/mips64el-linux-android-4.9/setup.mk
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -fpic"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-GNU)
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
# <ndk>/build/core/toolchains/x86-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "i686-none-linux-android")
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -fPIC"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
# <ndk>/build/core/toolchains/x86_64-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "x86_64-none-linux-android")
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -fPIC"
|
||||
)
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
|
Loading…
Reference in New Issue