about summary refs log tree commit diff
path: root/pkgs/os-specific/windows/default.nix
AgeCommit message (Collapse)AuthorFilesLines
12 daysRevert #320852: Clean up cross bootstrappingVladimír Čunát1-3/+3
It rebuilt stdenv on *-darwin; we can't do that in nixpkgs master. This reverts commit 2f20501c5f188ab0c4c430519ce77bc6b988202b, reversing changes made to fd469c24af2e16aad2c2b4fc90fc8c74af36e773.
14 daysClean up cross bootstrappingJohn Ericson1-3/+3
For a long time, we've had `crossLibcStdenv`, `*Cross` libc attributes, and `*bsdCross` pre-libc package sets. This was always bad because having "cross" things is "not declarative": the naming doesn't reflect what packages *need* but rather how we *provide* something. This is ugly, and creates needless friction between cross and native building. Now, almost all of these `*Cross` attributes are gone: just these are kept: - Glibc's and Musl's are kept, because those packages are widely used and I didn't want to risk changing the native builds of those at this time. - generic `libcCross`, `theadsCross`, and friends, because these relate to the convolulted GCC bootstrap which still needs to be redone. The BSD and obscure Linux or freestnanding libcs have conversely all been made to use a new `stdenvNoLibc`, which is like the old `crossLibcStdenv` except: 1. It usable for native and cross alike 2. It named according to what it *is* ("a standard environment without libc but with a C compiler"), rather than some non-compositional jargon ("the stdenv used for building libc when cross compiling", yuck). I should have done this change long ago, but I was stymied because of "infinite recursions". The problem was that in too many cases we are overriding `stdenv` to *remove* things we don't need, and this risks cyles since those more minimal stdenvs are used to build things in the more maximal stdenvs. The solution is to pass `stage.nix` `stdenvNoCC`, so we can override to *build up* rather than *tear down*. For now, the full `stdenv` is also passed, so I don't need to change the native bootstraps, but I can see this changing as we make things more uniform and clean those up. Finally, the BSDs also had to be cleaned up, since they have a few pre-libc dependencies, demanding a systematic approach. I realized what rhelmot did in 61202561d92cf1cd74532fcbd8b9d6662c5bc57b (specify what packages just need `stdenvNoLibc`) is definitely the right approach for this, and adjusted NetBSD and OpenBSD to likewise use it.
2024-04-28windows.mcfgthreads_pre_gcc_13: dropWeijia Wang1-4/+0
2024-01-25windows.crossThreadsStdenv: llvmPackages_8 -> llvmPackagesannalee1-1/+2
removing references to llvmPackages_8 in preparation to drop it from the tree
2024-01-06windows.wxMSW: dropWeijia Wang1-2/+0
2023-09-04Merge branch 'master' into staging-nextVladimír Čunát1-2/+0
2023-09-04windows.jom: removeajs1241-2/+0
depends on qt4 versions > 1.1 support qt5, but our qt5 packages do not and most likely will never support windows
2023-08-28windows.dlfcn: init at 1.3.1marius david1-0/+2
2023-07-01gccCrossStageStatic: enable dynamic libraries, rename to gccWithoutTargetLibcAdam Joseph1-1/+1
This commit allows `gccCrossStageStatic` to build dynamically-linked libraries. Since is no longer restricted to building static libraries its name is no longer appropriate, and this commit also renames it to the more-accurate `gccWithoutTargetLibc`. By default, you can't build a gcc that knows how to create dynamic libraries unless you have already built the targetPlatform libc. Because of this, our gcc cross-compiler is built in two stages: 1. Build a cross-compiler (gccCrossStageStatic) that can build only static libraries. 2. Use gccCrossStageStatic to compile the targetPlatform libc. 3. Use the targetPlatform libc to build a fully-capable cross compiler. You might notice that this pattern looks very similar to what we do with `xgcc` in the stdenv bootstrap. Indeed it is! I would like to work towards getting the existing stdenv bootstrap to handle cross compilers as well. However we don't want to cripple `stdenv.xgcc` by taking away its ability to build dynamic libraries. It turns out that the only thing gcc needs the targetPlatform libc for is to emit a DT_NEEDED for `-lc` into `libgcc.so`. That's it! And since we don't use `gccCrossStageStatic` to build anything other than libc, it's safe to omit the `DT_NEEDED` because that `libgcc` will never be loaded by anything other than `libc`. So `libc` will already be in the process's address space. Other people have noticed this; crosstool-ng has been using this approach for a very long time: https://github.com/crosstool-ng/crosstool-ng/blob/36ad0b17a732aaffe4701d5d8d410d6e3e3abba9/scripts/build/cc/gcc.sh#L638-L640
2023-06-08pkgsCross.mingwW64.windows.mcfgthreads: add gcc13 compatible versionSergei Trofimovich1-0/+4
Upstream `gcc-13` merged `mcfgthreads` support with a caveat: it's headers interface is not compatible with the patch `nixpkgs` was carrying in `gcc-12` and before. To keep both new (`gcc13`) and old (`_pre_gcc13`) version I held back previous `windows.mcfgthreads` attribute as `windows.mcfgthreads_pre_gcc_13`. It is used for `gcc` before 13. The change fixes the build of `pkgsCross.mingwW64.stdenv` itself and example program: $ nix build --impure --expr 'with import ./. {}; pkgsCross.mingwW64.re2c.override { stdenv = pkgsCross.mingwW64.gcc11Stdenv; }'
2022-05-18npiperelay: init at 0.1.0Shea Levy1-0/+2
2021-05-14treewide: All the linker to be chosen independentlyJohn Ericson1-1/+1
This will begin the process of breaking up the `useLLVM` monolith. That is good in general, but I hope will be good for NetBSD and Darwin in particular. Co-authored-by: sterni <sternenseemann@systemli.org>
2021-01-17pkgs/os-specific: stdenv.lib -> libBen Siraphob1-2/+2
2019-11-11mcfgthreads: Init from gitJohn Ericson1-2/+20
2019-11-11windows top-level: Clean up with makeScopeJohn Ericson1-18/+16
2018-08-07windows: refactorMatthew Bauer1-0/+29