commit 9b859960944cf49fa9a4e74f10895c3663bbbac0
parent f565c169c3a0e8e7ee82bc8af9811fe5934ccd5d
Author: Laurent Bercot <ska-skaware@skarnet.org>
Date: Sun, 29 Oct 2017 23:21:07 +0000
Support default pie
Diffstat:
2 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/configure b/configure
@@ -292,6 +292,16 @@ if [ "x$target" != "x$(cat $sysdeps/target)" ] ; then
exit 1
fi
+defaultpie=false
+echo "Checking whether we're building PIE..."
+if $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST -dM -E - < /dev/null | grep -qF __PIE__ ; then
+ defaultpie=true
+ CFLAGS_AUTO="$CFLAGS_AUTO -fPIC"
+ echo " ... yes"
+else
+ echo " ... no"
+fi
+
spawn_lib=$(cat $sysdeps/spawn.lib)
socket_lib=$(cat $sysdeps/socket.lib)
sysclock_lib=$(cat $sysdeps/sysclock.lib)
@@ -404,6 +414,11 @@ if $shared ; then
else
echo "DO_SHARED :="
fi
+if $defaultpie ; then
+ echo "DEFAULT_PIE := 1"
+else
+ echo "DEFAULT_PIE :="
+fi
exec 1>&3 3>&-
echo " ... done."
diff --git a/tools/gen-deps.sh b/tools/gen-deps.sh
@@ -65,7 +65,11 @@ for dir in $(ls -1 src | grep -v ^include) ; do
deps="$deps src/$dir/$dep"
fi
done < src/$dir/deps-lib/$file
+ echo 'ifeq ($(strip $(DEFAULT_PIE)),)'
echo "lib${file}.a.xyzzy:$deps"
+ echo else
+ echo "lib${file}.a.xyzzy:$(echo "$deps" | sed 's/\.o/.lo/g')"
+ echo endif
echo "lib${file}.so.xyzzy: EXTRA_LIBS :=$libs"
echo "lib${file}.so.xyzzy:$(echo "$deps" | sed 's/\.o/.lo/g')"
done