mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-02 02:53:55 +00:00
0b2036cad0
Before this commit, cc-wrapper/default.nix was using `isGccArchSupported` to validate `-mtune=` values. This has two problems: - On x86, `-mtune=` can take the same values as `-march`, plus two additional values `generic` and `intel` which are not valid for `-march`. - On ARM, `-mtune=` does not take the same values as `-march=`; instead it takes the same values as `-mcpu`. This commit fixes these two problems by adding a new `isGccTuneSupported` function. For `isx86` this returns `true` for the two special values and otherwise defers to `isGccArchSupported`. This commit also adds support for `-mtune=` on Aarch64. Unfortunately on Aarch64, Clang does not accept as wide a variety of `-mtune=` values as Gcc does. In particular, Clang does not tune for big.LITTLE mixed-model chips like the very popular RK3399, which is targeted using `-march=cortex-a72.cortex-a53` in gcc. To address this problem, this commit also adds a function `findBestTuneApproximation` which can be used to map clang-unsupported tunings like `cortex-a72.cortex-a53` to less-precise tunings like `cortex-a53`. The work which led to this commit arose because we now have packages, like `crosvm`, which use *both* `clang` *and* `gcc`. Previously I had been using `overrideAttrs` to set `NIX_CFLAGS_COMPILE` on a package-by-package basis based on which compiler that package used. Since we now have packages which use *both* compilers, this strategy no longer works. I briefly considered splitting `NIX_CFLAGS_COMPILE` into `NIX_CFLAGS_COMPILE_GCC` and `NIX_CFLAGS_COMPILE_CLANG`, but since `NIX_CFLAGS_COMPILE` is sort of a hack to begin with I figured that adding the logic to `cc-wrapper` would be preferable. |
||
---|---|---|
.. | ||
add-opengl-runpath | ||
agda | ||
alternatives | ||
appimage | ||
binary-cache | ||
bintools-wrapper | ||
build-bazel-package | ||
build-fhsenv-bubblewrap | ||
build-fhsenv-chroot | ||
build-graalvm-native-image | ||
build-setupcfg | ||
buildenv | ||
cc-wrapper | ||
coq | ||
dart | ||
deterministic-uname | ||
dhall | ||
docker | ||
dotnet | ||
emacs | ||
expand-response-params | ||
fake-nss | ||
fetch9front | ||
fetchbitbucket | ||
fetchbittorrent | ||
fetchbower | ||
fetchbzr | ||
fetchcvs | ||
fetchdarcs | ||
fetchdebianpatch | ||
fetchdocker | ||
fetchfirefoxaddon | ||
fetchfossil | ||
fetchgit | ||
fetchgitea | ||
fetchgithub | ||
fetchgitiles | ||
fetchgitlab | ||
fetchgitlocal | ||
fetchgx | ||
fetchhg | ||
fetchipfs | ||
fetchmavenartifact | ||
fetchmtn | ||
fetchnextcloudapp | ||
fetchpatch | ||
fetchpijul | ||
fetchpypi | ||
fetchrepoorcz | ||
fetchrepoproject | ||
fetchs3 | ||
fetchsavannah | ||
fetchsourcehut | ||
fetchsvn | ||
fetchsvnrevision | ||
fetchsvnssh | ||
fetchurl | ||
fetchzip | ||
flutter | ||
go | ||
icon-conv-tools | ||
install-shell-files | ||
java | ||
kernel | ||
libredirect | ||
make-darwin-bundle | ||
make-desktopitem | ||
make-hardcode-gsettings-patch | ||
make-pkgconfigitem | ||
make-startupitem | ||
mkshell | ||
mono-dll-fixer | ||
nix-gitignore | ||
node | ||
nuke-references | ||
ocaml | ||
oci-tools | ||
php | ||
pkg-config-wrapper | ||
portable-service | ||
prefer-remote-fetch | ||
references-by-popularity | ||
release | ||
remove-references-to | ||
replace-secret | ||
rust | ||
setup-hooks | ||
singularity-tools | ||
snap | ||
src-only | ||
substitute | ||
substitute-files | ||
templaterpm | ||
testers | ||
trivial-builders | ||
vm | ||
wrapper-common | ||
writers | ||
build-maven.nix | ||
closure-info.nix | ||
make-impure-test.nix | ||
plugins.nix | ||
replace-dependency.nix | ||
setup-systemd-units.nix | ||
source-from-head-fun.nix |