diff --git a/pkgs/development/libraries/libx86/default.nix b/pkgs/development/libraries/libx86/default.nix index 09cc623cbb1..011e936548a 100644 --- a/pkgs/development/libraries/libx86/default.nix +++ b/pkgs/development/libraries/libx86/default.nix @@ -12,13 +12,13 @@ rec { inherit buildInputs; phaseNames = ["doPatch" "fixX86Def" "killUsr" "doMakeInstall"]; - patches = [./constants.patch]; + patches = [./constants.patch ./non-x86.patch]; # using BACKEND=x86emu on 64bit systems fixes: # http://www.mail-archive.com/suspend-devel@lists.sourceforge.net/msg02355.html makeFlags = [ "DESTDIR=$out" - ] ++ a.stdenv.lib.optionals ( a.stdenv.system == "x86_64-linux" ) [ "BACKEND=x86emu" ]; + ] ++ a.stdenv.lib.optionals ( a.stdenv.isx86_64 || a.stdenv.isArm ) [ "BACKEND=x86emu" ]; fixX86Def = a.fullDepEntry ('' sed -i lrmi.c -e 's@defined(__i386__)@(defined(__i386__) || defined(__x86_64__))@' diff --git a/pkgs/development/libraries/libx86/non-x86.patch b/pkgs/development/libraries/libx86/non-x86.patch new file mode 100644 index 00000000000..0d41cd737f0 --- /dev/null +++ b/pkgs/development/libraries/libx86/non-x86.patch @@ -0,0 +1,38 @@ +diff -Naur libx86-1.1+ds1.orig/Makefile libx86-1.1+ds1/Makefile +--- libx86-1.1+ds1.orig/Makefile 2008-05-19 12:28:59.000000000 +0300 ++++ libx86-1.1+ds1/Makefile 2012-02-20 01:32:03.750068423 +0200 +@@ -5,6 +5,7 @@ + ifeq ($(BACKEND),x86emu) + OBJECTS += thunk.o x86emu/decode.o x86emu/debug.o x86emu/fpu.o \ + x86emu/ops.o x86emu/ops2.o x86emu/prim_ops.o x86emu/sys.o ++ CFLAGS += -DX86EMU + else + OBJECTS += lrmi.o + endif +diff -Naur libx86-1.1+ds1.orig/thunk.c libx86-1.1+ds1/thunk.c +--- libx86-1.1+ds1.orig/thunk.c 2008-04-03 03:48:00.000000000 +0300 ++++ libx86-1.1+ds1/thunk.c 2012-02-20 01:12:56.468820192 +0200 +@@ -32,6 +32,7 @@ + #define TRUE 1 + #define FALSE 0 + ++#ifndef X86EMU + #define __BUILDIO(bwl,bw,type) \ + static inline void out##bwl##_local(unsigned long port, unsigned type value) { __asm__ __volatile__("out" #bwl " %" #bw "0, %w1" : : "a"(value), "Nd"(port)); \ + }\ +@@ -44,6 +45,15 @@ + __BUILDIO(b,b,char) + __BUILDIO(w,w,short) + __BUILDIO(l,,int) ++#else ++/* use libc functions */ ++#define inb_local inb ++#define inw_local inw ++#define inl_local inl ++#define outb_local outb ++#define outw_local outw ++#define outl_local outl ++#endif /* X86EMU */ + + + char *mmap_addr = SHMERRORPTR;