Commit Graph

1310 Commits

Author SHA1 Message Date
Alyssa Ross
12d2821bf5 treewide: remove -ldl linker flags
With all libcs I'm aware of, libdl is now either empty (Glibc, musl,
uclibc, illumos), a symlink to libc or equivalent (Apple), or does not
exist (FreeBSD, NetBSD).  So explicitly linking libdl now does nothing
for the former platforms, and breaks the build for the latter
platforms.

With this patch I've removed -ldl from all overridden linker flags for
all free packages in Nixpkgs.  Everything still seems to build.
2023-01-23 15:34:53 +00:00
Alyssa Ross
5b22ff71e1 gcc: don't disable libgomp for uclibc targets
I'm reasonably confident this is no longer necessary, as uclibc's
libdl.a is empty, and I can cross-build stdenv.cc.cc for
x86_64-unknown-linux-uclibc with libgomp enabled.
2023-01-23 14:44:06 +00:00
Sergei Trofimovich
b9b1d958d0 Merge remote-tracking branch 'origin/staging-next' into staging
Conflicts:
	pkgs/development/libraries/qt-6/modules/qtbase.nix
	pkgs/stdenv/linux/make-bootstrap-tools.nix
2023-01-20 21:56:57 +00:00
Alyssa Ross
4ed0e1a743 gcc: use as(1) from binutils with LLVM bintools
LLVM does not provide a drop-in replacement for as(1).

This makes it possible to build a GNU Fortran cross compiler from GNU
to LLVM — e.g. buildPackages.gfortran for
{ system = "aarch64-linux"; useLLVM = true; }
2023-01-20 18:35:25 +01:00
John Ericson
2c48770293 Merge pull request #210816 from obsidiansystems/gcc-fix-bug-80431
gcc: Backport fix of GCC Issue 80431 from version 12
2023-01-17 11:45:29 -05:00
John Ericson
d6d1897904 gcc: Backport fix of GCC Issue 80431 from version 12
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431

This bug annoys me because I hit it when working on Nix. It causes
miscompilations in such a way that I am hard-pressed to think how a
program could inadvertainly rely on the bug (such that it would be
broken by the fix).

The bug is longstanding, and the (quite small) applies without
modification to many older GCCs. I have confirmed by running the test in
that commit that does indeed fix the bug with the backports too.
2023-01-14 22:33:57 -05:00
Sergei Trofimovich
ca4da963f8 Merge remote-tracking branch 'origin/staging-next' into staging
Conflicts:
    pkgs/development/libraries/audio/roc-toolkit/default.nix
2023-01-14 11:07:42 +00:00
Sergei Trofimovich
1bc0b7ad62 Merge pull request #209153 from trofi/gcc-libs-cross-link
gcc: provide both native and cross forms of gcc.libs libraries
2023-01-14 08:18:19 +00:00
github-actions[bot]
49722fd14a Merge master into staging-next 2023-01-13 18:01:34 +00:00
Boey Maun Suang
c7ce0c86a6 gnat12: Fix GNAT Darwin dylib install names 2023-01-11 09:03:43 +11:00
Boey Maun Suang
3d64e7edbb gnat12: Add support for x86_64-darwin 2023-01-07 18:32:12 +11:00
Sergei Trofimovich
b18eedcdab Merge pull request #208859 from trofi/gcc-builder-cleanup
gcc/builder.sh: drop dead RPATH clobbering code
2023-01-05 18:42:01 +00:00
Sergei Trofimovich
2c931bd5f4 gcc: provide both native and cross forms of gcc.libs libraries
I would like to use --sysroot=/nix/store/does/not/exist hack
for both `gcc` and `clang` drivers to remove default include
(and library) search paths when we override them with libc.

For `gcc` it works as is. But for `clang` it also drops some of
`gcc` search paths`. Let'sconsider 2 lookups.

Successful lookup (no `--sysroot`):

    $ printf "int main(){}" | clang++ -x c++ - -Wl,--verbose |& grep -F stdc++
    attempt to open /nix/store/...-gcc-11.3.0/lib/gcc/x86_64-unknown-linux-gnu/11.3.0/libstdc++.so failed
    attempt to open /nix/store/...-gcc-11.3.0-lib/x86_64-unknown-linux-gnu/lib/libstdc++.so failed
    attempt to open /nix/store/...-clang-11.1.0-lib/lib/libstdc++.so failed
    attempt to open /nix/store/...-gcc-11.3.0/lib64/gcc/x86_64-unknown-linux-gnu/11.3.0/libstdc++.so failed
    attempt to open /nix/store/...-gcc-11.3.0/lib64/gcc/x86_64-unknown-linux-gnu/11.3.0/../../../../lib64/libstdc++.so failed
    /nix/store/...-gcc-11.3.0/lib64/gcc/x86_64-unknown-linux-gnu/11.3.0/../../../../lib64/libstdc++.a

Failed lookup (has `--sysroot`):

    $ printf "int main(){}" | clang++ --sysroot=/does/not/exist -x c++ - -Wl,--verbose |& grep -F stdc++
    attempt to open /nix/store/...-gcc-11.3.0/lib/gcc/x86_64-unknown-linux-gnu/11.3.0/libstdc++.so failed
    attempt to open /nix/store/...-gcc-11.3.0-lib/x86_64-unknown-linux-gnu/lib/libstdc++.so failed
    attempt to open /nix/store/...-clang-11.1.0-lib/lib/libstdc++.so failed
    attempt to open /nix/store/...-gcc-11.3.0/lib64/gcc/x86_64-unknown-linux-gnu/11.3.0/libstdc++.so failed
    /nix/store/...-binutils-2.39/bin/ld: cannot find -lstdc++: No such file or directory

Note how `clang` starts the search roughly from
`gcc-11.3.0-lib/x86_64-unknown-linux-gnu/lib` in both cases. I think
it's our preferred location for both native and cross cases.

The change adds such a symlink:

    `gcc-11.3.0-lib` -> `gcc-11.3.0-lib/x86_64-unknown-linux-gnu`
2023-01-05 14:41:35 +00:00
github-actions[bot]
789ae2c93d Merge staging-next into staging 2023-01-04 18:01:36 +00:00
Yureka
0319a561ec pkgsMusl.gccgo: fix build 2023-01-04 13:21:20 +01:00
Sergei Trofimovich
99b56a9139 gcc/builder.sh: drop dead RPATH clobbering code
The code was intended to use something like
    [ $buildConfig == *linux* ]
but never did and use always-false
    [ buildConfig == *linux* ]

As it's in nixpkgs for a few years let's just delete it instead of
restoring.
2023-01-03 10:30:30 +00:00
Thomas Watson
1f4feb7c6f avr-gcc: fix build on Darwin
Adds a patch which fixes a compilation error generated by Clang 11
compiling GCC 11.3.
2023-01-01 11:12:23 -06:00
github-actions[bot]
dc7ebb0163 Merge staging-next into staging 2022-12-18 18:01:41 +00:00
figsoda
ec8cb34358 treewide: fix typos 2022-12-17 19:39:44 -05:00
Artturin
adc8900df1 treewide: fix some core package structuredAttrs 2022-12-08 21:05:28 +02:00
Vladimír Čunát
befa1f2dc6 Merge #196565: gcc11: Update back to 11.3 on Darwin
...into staging
2022-11-22 12:42:23 +01:00
Jörg Thalheim
890d0576c5 cross/mingw: make threading library configureable 2022-11-14 12:50:04 +01:00
Zhaofeng Li
ddb5ea3e69 gcc11: Update back to 11.3 on Darwin 2022-10-28 00:54:35 -06:00
Martin Weinelt
21c552eaf6 gcc12: fix build with libxcrypt 2022-10-09 18:10:38 +02:00
Martin Weinelt
aac6de8d31 gcc10: fix build with libxcrypt 2022-10-09 18:10:38 +02:00
Franz Pletz
0097f57b1f gcc11: fix build with libxcrypt 2022-10-09 18:07:54 +02:00
Theodore Ni
816cb20bd3 gcc12: switch to Homebrew patch on aarch64-darwin
We can presume that this patch is better tested and better maintained.
2022-09-04 11:07:54 -07:00
Martin Weinelt
249398ffa8 Merge remote-tracking branch 'origin/staging-next' into staging 2022-08-25 00:32:27 +02:00
github-actions[bot]
9179666d33 Merge master into staging-next 2022-08-23 12:01:12 +00:00
Vladimír Čunát
f8eb3f491f Merge #187418: gcc12: 12.1.0 -> 12.2.0 2022-08-23 07:52:03 +02:00
Sergei Trofimovich
657075f9fa gcc12: 12.1.0 -> 12.2.0
Co-authored-by: Robert Scott <github@humanleg.org.uk>
2022-08-21 13:56:21 +01:00
github-actions[bot]
a6c886b7fd Merge master into staging-next 2022-08-21 06:01:17 +00:00
Theodore Ni
1b0a51cbb7 gcc49: mark unsupported on aarch64-darwin
It's not supported and likely too old to be supported.
2022-08-20 15:11:53 -07:00
github-actions[bot]
77394c111b Merge staging-next into staging 2022-08-20 18:02:00 +00:00
Sergei Trofimovich
1f7186ab5c libgccjit: don't try to enter into non-existent $lib output
Fixes build failure on `staging-next` introduced by commit c817efe6
("gcc: extend stripping of .a libraries and .o objects"):

    ...-bootstrap-stage3-stdenv-linux/setup: line 106: pushd: no other directory

Build failure happens because `libgccjit` has different `outputs` layout
compared to the rest of `gcc` derivations:

     outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib";

The change carves out `$lib` lib handling part to avoid `gcc` rebuild
in `staging-next`.
2022-08-20 12:51:36 +01:00
Sergei Trofimovich
7f458e5c50 Merge pull request #187234 from trofi/drop-libelf-from-gcc
gcc: drop unused libelf dependency
2022-08-19 19:16:35 +01:00
Artturi
9adf0c2035 Merge pull request #185972 from Artturin/gccstrictdeps
gcc/: correct gnused conditionals
2022-08-19 20:50:23 +03:00
github-actions[bot]
c00ace1204 Merge master into staging-next 2022-08-19 12:01:31 +00:00
Sergei Trofimovich
3b60b31d60 gcc: drop unused libelf dependency
gcc stopped using libelf in commit 48215350c24 ("re PR lto/46273 (Failed
to bootstrap)") around 2010, before gcc-4.6.0.
2022-08-18 08:35:41 +01:00
Artturin
f16be229dc gcc/: correct gnused conditionals and move to nativeBuildInputs
hostPlatform changes were done in commits like 7a13457253

it should have been buildPlatform instead according to the comment
2022-08-17 21:03:40 +03:00
Vladimír Čunát
ddc75d1843 Merge #185284: gcc: fix bootstrapTools.mips64el-linux-gnuabin32
...into staging
2022-08-16 13:12:01 +02:00
Theodore Ni
74b420b612 gcc12: apply working patch for darwin-aarch64 2022-08-13 12:04:03 -07:00
Theodore Ni
cf206e9d00 gcc11: pick up bugfixes for darwin-aarch64
Amongst others, this picks up the fix for:

    https://github.com/iains/gcc-darwin-arm64/issues/54
2022-08-13 11:37:09 -07:00
github-actions[bot]
67f5b5a85d Merge staging-next into staging 2022-08-08 18:02:11 +00:00
adisbladis
5cc12aa8cb Merge pull request #182187 from adisbladis/newlib-nano-cc
newlib-nano: Set same flags as regular newlib in cc-wrapper/gcc config
2022-08-08 22:07:57 +08:00
Adam Joseph
a6daffb118 gcc: factor out $linkLib64toLib, move it from bash to nix
This commit factors out the conditional which creates the `lib64->lib`
symlink in the `preInstall` phase, and calculates its value in nix
code rather than bash code so touching it doesn't cause a global
rebuild on every platform.
2022-08-05 13:52:25 -07:00
Adam Joseph
dfba0bf93b gcc: do not create lib64->lib links on mips64n32
On mips, gcc follows the somewhat awkward IRIX convention of putting
mips64 binaries in `lib64` and mips64n32 binaries in `lib32`.  So on
mips64n32 we do not want the `lib64` symlinks.
2022-08-05 11:07:16 -07:00
Adam Joseph
cbc80ff32b gcc: add linkLib32toLib to create lib32->lib links
Our gcc builder creates lib64->lib links to ensure that the "primary"
libraries for the targetPlatform wind up in $PREFIX/lib.  This is
required in order for make-bootstrap-files.nix to work correctly.

On mips, gcc follows the somewhat awkward IRIX convention of putting
mips32 binaries in `lib` and mips64n32 binaries in `lib32`.  So we
need similar symlinks there.  This may come up on other ILP32
platforms as well, so a general-purpose variable name is provided.
2022-08-05 11:07:14 -07:00
Sergei Trofimovich
c817efe660 gcc: extend stripping of .a libraries and .o objects
The initial intent was to strip .a and .o files, not .a.o files.
While at it expanded stripping for $lib output as well.

Without the change `libgcc.a` was not stripped and `.debug*` sections
made into final binaries. It's not a problem on it's own, but it's an
unintended side-effect. Noticed on `crystal_1_0` test failure where
`crystal` was not able to handle `dwarf-5`.

While at it allowed absolute file names to be passed to stripDebugList
and friends.
2022-08-03 22:28:47 +01:00
Bernardo Meurer
88c63ca65a Merge pull request #182513 from trofi/strip-for-host-and-target
gcc: enable stripping for cross-compilers
2022-07-28 00:30:49 -07:00