From bd4cdf346c0e43f56b1055fc649b9e9987acd601 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sat, 18 Feb 2023 13:19:47 +0000 Subject: [PATCH] android-ndk: allow -no-pie We add -pie if we don't find -shared in the arguments. However this does not work in the presense of @response files. We also do not respect -no-pie, and add -pie regardless. This improves the argument parsing, and allows to prevent the forced -pie flag. --- pkgs/development/androidndk-pkgs/androidndk-pkgs.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/androidndk-pkgs/androidndk-pkgs.nix b/pkgs/development/androidndk-pkgs/androidndk-pkgs.nix index 5c04ca4a50ff..475fe4564eee 100644 --- a/pkgs/development/androidndk-pkgs/androidndk-pkgs.nix +++ b/pkgs/development/androidndk-pkgs/androidndk-pkgs.nix @@ -133,7 +133,8 @@ rec { # Use -fPIC for compilation, and link with -pie if no -shared flag used in ldflags echo "-target ${targetInfo.triple} -fPIC" >> $out/nix-support/cc-cflags echo "-z,noexecstack -z,relro -z,now -z,muldefs" >> $out/nix-support/cc-ldflags - echo 'if [[ ! " $@ " =~ " -shared " ]]; then NIX_LDFLAGS_${suffixSalt}+=" -pie"; fi' >> $out/nix-support/add-flags.sh + echo 'expandResponseParams "$@"' >> $out/nix-support/add-flags.sh + echo 'if [[ ! (" ''${params[@]} " =~ " -shared ") && ! (" ''${params[@]} " =~ " -no-pie ") ]]; then NIX_LDFLAGS_${suffixSalt}+=" -pie"; fi' >> $out/nix-support/add-flags.sh echo "-Xclang -mnoexecstack" >> $out/nix-support/cc-cxxflags if [ ${targetInfo.triple} == arm-linux-androideabi ]; then # https://android.googlesource.com/platform/external/android-cmake/+/refs/heads/cmake-master-dev/android.toolchain.cmake