diff options
author | Matthew Bauer <mjbauer95@gmail.com> | 2018-10-15 16:11:20 -0500 |
---|---|---|
committer | Matthew Bauer <mjbauer95@gmail.com> | 2018-10-29 14:34:09 -0500 |
commit | 412093994b9a4fe0fa7da99d1947effc85d9070b (patch) | |
tree | 7be2219ecb1781b707672adf9274e6b5e11c1979 /pkgs/build-support | |
parent | 72e3b2a6629dbe12f184ed0156d9c34af271e158 (diff) | |
download | nixlib-412093994b9a4fe0fa7da99d1947effc85d9070b.tar nixlib-412093994b9a4fe0fa7da99d1947effc85d9070b.tar.gz nixlib-412093994b9a4fe0fa7da99d1947effc85d9070b.tar.bz2 nixlib-412093994b9a4fe0fa7da99d1947effc85d9070b.tar.lz nixlib-412093994b9a4fe0fa7da99d1947effc85d9070b.tar.xz nixlib-412093994b9a4fe0fa7da99d1947effc85d9070b.tar.zst nixlib-412093994b9a4fe0fa7da99d1947effc85d9070b.zip |
gcc: support avr
- respect libc’s incdir and libdir - make non-unix systems single threaded - set LIMITS_H_TEST to false for avr - misc updates to support new libc’s - use multilib with avr For threads we want to use: - posix on unix systems - win32 on windows - single on everything else For avr: - add library directories for avrlibc - to disable relro and bind - avr5 should have precedence over avr3 - otherwise gcc uses the wrong one
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/bintools-wrapper/default.nix | 12 | ||||
-rw-r--r-- | pkgs/build-support/cc-wrapper/default.nix | 16 |
2 files changed, 26 insertions, 2 deletions
diff --git a/pkgs/build-support/bintools-wrapper/default.nix b/pkgs/build-support/bintools-wrapper/default.nix index 99f556b973a1..3ac1e52f3092 100644 --- a/pkgs/build-support/bintools-wrapper/default.nix +++ b/pkgs/build-support/bintools-wrapper/default.nix @@ -210,7 +210,7 @@ stdenv.mkDerivation { ## General libc support ## - echo "-L${libc_lib}/lib" > $out/nix-support/libc-ldflags + echo "-L${libc_lib}${libc.libdir or "/lib"}" > $out/nix-support/libc-ldflags echo "${libc_lib}" > $out/nix-support/orig-libc echo "${libc_dev}" > $out/nix-support/orig-libc-dev @@ -293,6 +293,16 @@ stdenv.mkDerivation { hardening_unsupported_flags+=" pic" '' + + optionalString targetPlatform.isAvr '' + hardening_unsupported_flags+=" relro bindnow" + '' + + + optionalString (libc != null && targetPlatform.isAvr) '' + for isa in avr5 avr3 avr4 avr6 avr25 avr31 avr35 avr51 avrxmega2 avrxmega4 avrxmega5 avrxmega6 avrxmega7 tiny-stack; do + echo "-L${getLib libc}/avr/lib/$isa" >> $out/nix-support/libc-cflags + done + '' + + '' set +u substituteAll ${./add-flags.sh} $out/nix-support/add-flags.sh diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index e59758371a38..06aa9436bfc0 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -232,7 +232,7 @@ stdenv.mkDerivation { # compile, because it uses "#include_next <limits.h>" to find the # limits.h file in ../includes-fixed. To remedy the problem, # another -idirafter is necessary to add that directory again. - echo "-B${libc_lib}/lib/ -idirafter ${libc_dev}/include ${optionalString isGNU "-idirafter ${cc}/lib/gcc/*/*/include-fixed"}" > $out/nix-support/libc-cflags + echo "-B${libc_lib}${libc.libdir or "/lib/"} -idirafter ${libc_dev}${libc.incdir or "/include"} ${optionalString isGNU "-idirafter ${cc}/lib/gcc/*/*/include-fixed"}" > $out/nix-support/libc-cflags echo "${libc_lib}" > $out/nix-support/orig-libc echo "${libc_dev}" > $out/nix-support/orig-libc-dev @@ -284,6 +284,20 @@ stdenv.mkDerivation { hardening_unsupported_flags+=" stackprotector" '' + + optionalString targetPlatform.isAvr '' + hardening_unsupported_flags+=" stackprotector pic" + '' + + + optionalString (targetPlatform.libc == "newlib") '' + hardening_unsupported_flags+=" stackprotector fortify pie pic" + '' + + + optionalString (libc != null && targetPlatform.isAvr) '' + for isa in avr5 avr3 avr4 avr6 avr25 avr31 avr35 avr51 avrxmega2 avrxmega4 avrxmega5 avrxmega6 avrxmega7 tiny-stack; do + echo "-B${getLib libc}/avr/lib/$isa" >> $out/nix-support/libc-cflags + done + '' + + '' substituteAll ${./add-flags.sh} $out/nix-support/add-flags.sh substituteAll ${./add-hardening.sh} $out/nix-support/add-hardening.sh |