diff --git a/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake b/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake
index e56b67bf67da097e222f6a64977de56d38d1f191..f4717d5f608053436f1cfa15e233cfabfa6e5d83 100644
--- a/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake
+++ b/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake
@@ -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)
 
diff --git a/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake b/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake
index 0bcfc865ccbc2ed46c9d36d787cbd4f7f86aad3f..b71a67462587605b04e69beb189ff9377758e22e 100644
--- a/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake
+++ b/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake
@@ -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)
diff --git a/Modules/Platform/Android/abi-armeabi-Clang.cmake b/Modules/Platform/Android/abi-armeabi-Clang.cmake
index 4fc300908dac8c263d6514577c7bed9690636478..b857bd3734e058a75a69a20627ad58ffdc584f31 100644
--- a/Modules/Platform/Android/abi-armeabi-Clang.cmake
+++ b/Modules/Platform/Android/abi-armeabi-Clang.cmake
@@ -14,7 +14,6 @@ endif()
 string(APPEND _ANDROID_ABI_INIT_CFLAGS
   " -msoft-float"
   " -mtune=xscale"
-  " -fpic"
   )
 
 include(Platform/Android/abi-common-Clang)
diff --git a/Modules/Platform/Android/abi-armeabi-GNU.cmake b/Modules/Platform/Android/abi-armeabi-GNU.cmake
index 10cac00850c58015048e89536053d936b74869c0..33e8b314e153cd23f18a0b9ef34316e186ea127a 100644
--- a/Modules/Platform/Android/abi-armeabi-GNU.cmake
+++ b/Modules/Platform/Android/abi-armeabi-GNU.cmake
@@ -12,7 +12,6 @@ endif()
 string(APPEND _ANDROID_ABI_INIT_CFLAGS
   " -msoft-float"
   " -mtune=xscale"
-  " -fpic"
   )
 
 include(Platform/Android/abi-common-GNU)
diff --git a/Modules/Platform/Android/abi-armeabi-v6-Clang.cmake b/Modules/Platform/Android/abi-armeabi-v6-Clang.cmake
index 15f1d4a0033da1090f13cb0c8cf7fe73454f0bac..a7412f5bd7ab98d65b8e166408db7ec99e604092 100644
--- a/Modules/Platform/Android/abi-armeabi-v6-Clang.cmake
+++ b/Modules/Platform/Android/abi-armeabi-v6-Clang.cmake
@@ -13,7 +13,6 @@ endif()
 
 string(APPEND _ANDROID_ABI_INIT_CFLAGS
   " -mfloat-abi=softfp"
-  " -fpic"
   )
 
 include(Platform/Android/abi-common-Clang)
diff --git a/Modules/Platform/Android/abi-armeabi-v6-GNU.cmake b/Modules/Platform/Android/abi-armeabi-v6-GNU.cmake
index 7492de087ec348449676737a4702598a606a7127..1fda184b69e5bcf439791d4daae761e09cc735fe 100644
--- a/Modules/Platform/Android/abi-armeabi-v6-GNU.cmake
+++ b/Modules/Platform/Android/abi-armeabi-v6-GNU.cmake
@@ -11,7 +11,6 @@ endif()
 
 string(APPEND _ANDROID_ABI_INIT_CFLAGS
   " -mfloat-abi=softfp"
-  " -fpic"
   )
 
 include(Platform/Android/abi-common-GNU)
diff --git a/Modules/Platform/Android/abi-armeabi-v7a-Clang.cmake b/Modules/Platform/Android/abi-armeabi-v7a-Clang.cmake
index 3a3efb3269b256f1a9b640f0be8c5ddbf8ab3830..e2ab58b32ffe47a4ea1d2f035d730db35845b770 100644
--- a/Modules/Platform/Android/abi-armeabi-v7a-Clang.cmake
+++ b/Modules/Platform/Android/abi-armeabi-v7a-Clang.cmake
@@ -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)
diff --git a/Modules/Platform/Android/abi-armeabi-v7a-GNU.cmake b/Modules/Platform/Android/abi-armeabi-v7a-GNU.cmake
index d27e37e257065e5629fccbda09877132c7ca5743..b7c328d880ab0b2d422c4fbb115f8b857a4e0913 100644
--- a/Modules/Platform/Android/abi-armeabi-v7a-GNU.cmake
+++ b/Modules/Platform/Android/abi-armeabi-v7a-GNU.cmake
@@ -17,7 +17,6 @@ endif()
 
 string(APPEND _ANDROID_ABI_INIT_CFLAGS
   " -mfloat-abi=softfp"
-  " -fpic"
   )
 
 string(APPEND _ANDROID_ABI_INIT_LDFLAGS
diff --git a/Modules/Platform/Android/abi-common.cmake b/Modules/Platform/Android/abi-common.cmake
index 84e7dbd794f47f3f21d660de6598d956610cf91c..533bd902ba85326e5b642081a94199f2707ab736 100644
--- a/Modules/Platform/Android/abi-common.cmake
+++ b/Modules/Platform/Android/abi-common.cmake
@@ -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)
diff --git a/Modules/Platform/Android/abi-mips-Clang.cmake b/Modules/Platform/Android/abi-mips-Clang.cmake
index bf6b9fc74fc80833b77e8c597f22a100789a2c89..73adddecfb2294eaba199f0f3dae7740815cf9bd 100644
--- a/Modules/Platform/Android/abi-mips-Clang.cmake
+++ b/Modules/Platform/Android/abi-mips-Clang.cmake
@@ -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)
diff --git a/Modules/Platform/Android/abi-mips-GNU.cmake b/Modules/Platform/Android/abi-mips-GNU.cmake
index d380440a3b780b87ae28a2d033d966a97be8f5e3..982ad4658413c55a4c29f70cb75390ba8c2582c2 100644
--- a/Modules/Platform/Android/abi-mips-GNU.cmake
+++ b/Modules/Platform/Android/abi-mips-GNU.cmake
@@ -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)
diff --git a/Modules/Platform/Android/abi-mips64-Clang.cmake b/Modules/Platform/Android/abi-mips64-Clang.cmake
index 1a94107ceb4e3432800205a70291bcfca4d98cfc..603f1b2090d33b070da6b531fcff576468d31f80 100644
--- a/Modules/Platform/Android/abi-mips64-Clang.cmake
+++ b/Modules/Platform/Android/abi-mips64-Clang.cmake
@@ -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)
diff --git a/Modules/Platform/Android/abi-mips64-GNU.cmake b/Modules/Platform/Android/abi-mips64-GNU.cmake
index 4525d40a81157baba298db4d9ae551b2f6f68001..a1bc2c2fbb65a2ba6da50554b64a6ad511cb94bc 100644
--- a/Modules/Platform/Android/abi-mips64-GNU.cmake
+++ b/Modules/Platform/Android/abi-mips64-GNU.cmake
@@ -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)
diff --git a/Modules/Platform/Android/abi-x86-Clang.cmake b/Modules/Platform/Android/abi-x86-Clang.cmake
index f63ed36e5bbb876fada97cb865d71b47743dfa05..fe7eacef5d583deaa01dbfaf5b3d1f3985922989 100644
--- a/Modules/Platform/Android/abi-x86-Clang.cmake
+++ b/Modules/Platform/Android/abi-x86-Clang.cmake
@@ -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)
diff --git a/Modules/Platform/Android/abi-x86_64-Clang.cmake b/Modules/Platform/Android/abi-x86_64-Clang.cmake
index c15042b29a88faab3b4d04a659eab1c23cc84f90..3cbcd491fb1e72ba28632a28751a0dcebdb7ece7 100644
--- a/Modules/Platform/Android/abi-x86_64-Clang.cmake
+++ b/Modules/Platform/Android/abi-x86_64-Clang.cmake
@@ -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)