aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/backend
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2018-10-01 20:48:34 -0400
committerJussi Pakkanen <jpakkane@gmail.com>2018-10-20 00:47:27 +0300
commitc453400d597116954b3bb2a9e2c3d60251dc97a2 (patch)
tree9bfe4e1ad5cf6f0fe05e6ebd4ee34c746ca40eac /mesonbuild/backend
parent3ad99d27695c3018cf2449a2478b346a5b069c95 (diff)
downloadmeson-c453400d597116954b3bb2a9e2c3d60251dc97a2.zip
meson-c453400d597116954b3bb2a9e2c3d60251dc97a2.tar.gz
meson-c453400d597116954b3bb2a9e2c3d60251dc97a2.tar.bz2
Add 'b_pie' compiler option
On Android executables must be position independent, many distributions enable it by default too for security reasons.
Diffstat (limited to 'mesonbuild/backend')
-rw-r--r--mesonbuild/backend/backends.py2
-rw-r--r--mesonbuild/backend/ninjabackend.py2
2 files changed, 4 insertions, 0 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 28ef670..f12b357 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -552,6 +552,8 @@ class Backend:
# Set -fPIC for static libraries by default unless explicitly disabled
if isinstance(target, build.StaticLibrary) and target.pic:
commands += compiler.get_pic_args()
+ if isinstance(target, build.Executable) and target.pie:
+ commands += compiler.get_pie_args()
# Add compile args needed to find external dependencies. Link args are
# added while generating the link command.
# NOTE: We must preserve the order in which external deps are
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index b564311..d8370c2 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -2245,6 +2245,8 @@ rule FORTRAN_DEP_HACK%s
# If implib, and that's significant on this platform (i.e. Windows using either GCC or Visual Studio)
if target.import_filename:
commands += linker.gen_import_library_args(os.path.join(self.get_target_dir(target), target.import_filename))
+ if target.pie:
+ commands += linker.get_pie_link_args()
elif isinstance(target, build.SharedLibrary):
if isinstance(target, build.SharedModule):
options = self.environment.coredata.base_options