diff options
author | Ludovic Courtès | 2010-05-19 21:28:57 +0000 |
---|---|---|
committer | Ludovic Courtès | 2010-05-19 21:28:57 +0000 |
commit | e5571e9cd4739543c0ce4d56affc90469dc749f0 (patch) | |
tree | eaf8c386cc931e03f3bcb8b403852ef2763c1540 /pkgs/os-specific | |
parent | 2534ea88b1a2a5203a3069201a89d680da392233 (diff) |
GNU Hurd: Add libpthread.
svn path=/nixpkgs/trunk/; revision=21900
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r-- | pkgs/os-specific/gnu/libpthread/default.nix | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/pkgs/os-specific/gnu/libpthread/default.nix b/pkgs/os-specific/gnu/libpthread/default.nix new file mode 100644 index 000000000000..11adc6187912 --- /dev/null +++ b/pkgs/os-specific/gnu/libpthread/default.nix @@ -0,0 +1,65 @@ +{ fetchgit, stdenv, autoconf, automake, libtool +, machHeaders, hurdHeaders, hurd +, cross ? null, gccCross ? null, glibcCross ? null }: + +assert (cross != null) -> (gccCross != null) && (glibcCross != null); + +let + date = "2010-05-12"; + + # Use the weird branch prescribed in + # <http://www.gnu.org/software/hurd/hurd/building/cross-compiling.html>. + rev = "tschwinge/Peter_Herbolzheimer@{${date}}"; +in +stdenv.mkDerivation ({ + name = "libpthread-hurd-${date}"; + + src = fetchgit { + url = "git://git.sv.gnu.org/hurd/libpthread.git"; + sha256 = "1wya9kfmqgn04l995a25p4hxfwddjahfmhdzljb4cribw0bqdizg"; + inherit rev; + }; + + buildNativeInputs = [ autoconf automake libtool ]; + buildInputs = [ machHeaders hurdHeaders hurd ] + ++ stdenv.lib.optional (gccCross != null) gccCross; + + preConfigure = "autoreconf -vfi"; + + meta = { + description = "GNU Hurd's libpthread"; + + license = "LGPLv2+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; + }; +} + +// + +(if cross != null + then { + crossConfig = cross.config; + + # Tell gcc where to find `crt1.o' et al. This is specified in two + # different ways: one for gcc as run from `configure', and one for linking + # libpthread.so (by default `libtool --mode=link' swallows `-B', hence + # this workaround; see + # <http://lists.gnu.org/archive/html/bug-libtool/2010-05/msg00012.html>.) + LDFLAGS = "-B${glibcCross}/lib"; + makeFlags = [ "LDFLAGS=-Wc,-B${glibcCross}/lib" ]; + + # Help the linker find glibc. + CPATH = "${glibcCross}/include"; + LIBRARY_PATH = "${glibcCross}/lib"; + + passthru = { + # Extra target LDFLAGS to allow the cross-linker to find the + # dependencies of the cross libpthread.so, namely libihash.so. + # + # This is actually only useful while building the final cross-gcc, since + # afterwards gcc-cross-wrapper should add the relevant flags. + TARGET_LDFLAGS = "-Wl,-rpath-link=${hurd}/lib"; + }; + } + else { })) |