-
-
Notifications
You must be signed in to change notification settings - Fork 14.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #66613 from transumption-unstable/201908/rust-win3…
…2-cross buildRustPackage: support cross-compilation to x86_64-pc-mingw32
- Loading branch information
Showing
2 changed files
with
34 additions
and
58 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,61 +1,29 @@ | ||
{ fetchurl, stdenv, mingwrt }: | ||
{ stdenv, fetchzip }: | ||
|
||
# This file is tweaked for cross-compilation only. | ||
assert stdenv.hostPlatform != stdenv.buildPlatform; | ||
stdenv.mkDerivation rec { | ||
name = "pthreads-w32-${version}"; | ||
version = "2.9.1"; | ||
|
||
stdenv.mkDerivation { | ||
name = "pthread-w32-1.10.0"; | ||
|
||
src = fetchurl { | ||
url = "ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-1-10-0-release.tar.gz"; | ||
sha256 = "1vllxxfa9a7mssb1x98a2r736vsv5ll3sjizbr7a8hw8j9p18j7n"; | ||
src = fetchzip { | ||
url = "https://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.tar.gz"; | ||
sha256 = "1s8iny7g06z289ahdj0kzaxj0cd3wvjbd8j3bh9xlg7g444lhy9w"; | ||
}; | ||
|
||
configurePhase = | ||
'' sed -i GNUmakefile \ | ||
-e 's/CC=gcc/CC=i686-pc-mingw32-gcc/g ; | ||
s/windres/i686-pc-mingw32-windres/g ; | ||
s/dlltool/i686-pc-mingw32-dlltool/g' | ||
''; | ||
|
||
buildInputs = [ mingwrt ]; | ||
|
||
buildPhase = "make GC"; # to build the GNU C dll with C cleanup code | ||
|
||
installPhase = | ||
'' mkdir -p "$out" "$out/include" "$out/lib" | ||
cp -v *pthread*{dll,a} "$out/lib" | ||
cp -v pthread.h semaphore.h sched.h "$out/include" | ||
''; | ||
|
||
postFixup = | ||
# By default `mingw_headers' is propagated. Prevent that, because | ||
# otherwise MinGW headers appear twice in `-I', and thus the | ||
# "#include_next <float.h>" in MinGW's <float.h> picks up itself instead | ||
# of picking up GCC's (hence, FLT_RADIX is left undefined, for instance.) | ||
'' rm -f "$out/nix-support/propagated-build-inputs" | ||
''; | ||
|
||
meta = { | ||
description = "POSIX threads for Woe32"; | ||
makeFlags = [ "CROSS=${stdenv.cc.targetPrefix}" "GC-static" ]; | ||
|
||
longDescription = | ||
'' The POSIX 1003.1-2001 standard defines an application programming | ||
interface (API) for writing multithreaded applications. This | ||
interface is known more commonly as pthreads. A good number of | ||
modern operating systems include a threading library of some kind: | ||
Solaris (UI) threads, Win32 threads, DCE threads, DECthreads, or any | ||
of the draft revisions of the pthreads standard. The trend is that | ||
most of these systems are slowly adopting the pthreads standard API, | ||
with application developers following suit to reduce porting woes. | ||
installPhase = '' | ||
runHook preInstall | ||
Woe32 does not, and is unlikely to ever, support pthreads natively. | ||
This project seeks to provide a freely available and high-quality | ||
solution to this problem. | ||
''; | ||
install -D libpthreadGC2.a $out/lib/libpthread.a | ||
homepage = http://sourceware.org/pthreads-win32/; | ||
runHook postInstall | ||
''; | ||
|
||
license = stdenv.lib.licenses.lgpl21Plus; | ||
meta = with stdenv.lib; { | ||
description = "POSIX threads library for Windows"; | ||
homepage = "https://sourceware.org/pthreads-win32"; | ||
license = licenses.lgpl21Plus; | ||
maintainers = with maintainers; [ yegortimoshenko ]; | ||
platforms = platforms.windows; | ||
}; | ||
} |