summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTony Theodore <tonyt@logyst.com>2016-01-09 00:34:58 (GMT)
committerTony Theodore <tonyt@logyst.com>2016-01-12 08:41:40 (GMT)
commitf5414c6002fdf70e1e562c83afed54fd2ed44864 (patch)
treed303b1c6bac313b776529871dfcfe3a53722f435 /src
parenta449841274217582a15c11f560944853c910b30b (diff)
downloadmxe-f5414c6002fdf70e1e562c83afed54fd2ed44864.zip
mxe-f5414c6002fdf70e1e562c83afed54fd2ed44864.tar.gz
mxe-f5414c6002fdf70e1e562c83afed54fd2ed44864.tar.bz2
liboil: enable shared and x86_64-w64-mingw32 build
Diffstat (limited to 'src')
-rw-r--r--src/liboil-1-fixes.patch163
-rw-r--r--src/liboil.mk17
2 files changed, 172 insertions, 8 deletions
diff --git a/src/liboil-1-fixes.patch b/src/liboil-1-fixes.patch
new file mode 100644
index 0000000..a14b92d
--- /dev/null
+++ b/src/liboil-1-fixes.patch
@@ -0,0 +1,163 @@
+This file is part of MXE.
+See index.html for further information.
+
+Contains ad hoc patches for cross building.
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: David Schleef <ds@schleef.org>
+Date: Tue, 20 Jul 2010 14:05:26 -0700
+Subject: [PATCH] x86: Fix cpuid function on x86-64
+
+Taken from:
+http://cgit.freedesktop.org/liboil/commit/?id=705916007fba0a845229a02dc6474cb523eff150
+
+diff --git a/liboil/liboilcpu-x86.c b/liboil/liboilcpu-x86.c
+index 1111111..2222222 100644
+--- a/liboil/liboilcpu-x86.c
++++ b/liboil/liboilcpu-x86.c
+@@ -162,13 +162,10 @@ get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d)
+ static void
+ get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d)
+ {
++ *a = op;
+ __asm__ (
+- " pushq %%rbx\n"
+ " cpuid\n"
+- " mov %%ebx, %%esi\n"
+- " popq %%rbx\n"
+- : "=a" (*a), "=S" (*b), "=c" (*c), "=d" (*d)
+- : "0" (op));
++ : "+a" (*a), "=b" (*b), "=c" (*c), "=d" (*d));
+ }
+ #endif
+
+@@ -185,7 +182,7 @@ oil_cpu_detect_cpuid (void)
+ {
+ uint32_t eax, ebx, ecx, edx;
+ uint32_t level;
+- char vendor[13] = { 0 };
++ char vendor[13+4] = { 0 };
+ int ret;
+
+ oil_fault_check_enable ();
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tony Theodore <tonyt@logyst.com>
+Date: Sat, 9 Jan 2016 11:21:30 +1100
+Subject: [PATCH] Win64 Support
+
+Taken from:
+https://bugs.freedesktop.org/show_bug.cgi?id=26651
+
+diff --git a/liboil/amd64/wavelet.c b/liboil/amd64/wavelet.c
+index 1111111..2222222 100644
+--- a/liboil/amd64/wavelet.c
++++ b/liboil/amd64/wavelet.c
+@@ -2,7 +2,7 @@
+ #include <liboil/liboilfunction.h>
+ #include <liboil/liboilclasses.h>
+ #include <stddef.h>
+-
++#include <stdint.h>
+
+ void
+ deinterleave2_asm (int16_t *d1, int16_t *d2, int16_t *s_2xn, int n)
+@@ -1409,7 +1409,7 @@ multiply_and_acc_12xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1,
+ " jnz 1b\n"
+ " emms\n"
+ : "+r" (i1), "+r" (s1), "+r" (s2), "+r" (n)
+- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2)
++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2)
+ );
+ }
+ OIL_DEFINE_IMPL_FULL (multiply_and_acc_12xn_s16_u8_mmx,
+@@ -1596,7 +1596,7 @@ mas4_across_add_s16_mmx (int16_t *d, int16_t *s1, int16_t *s2_nx4, int sstr2,
+ [s2_nx4_off] "+r" (s2_nx4_off),
+ [n] "+m" (n),
+ [s1] "+r" (s1)
+- : [sstr] "r" ((long)(sstr2))
++ : [sstr] "r" ((intptr_t)(sstr2))
+ );
+ }
+ OIL_DEFINE_IMPL_FULL (mas4_across_add_s16_mmx, mas4_across_add_s16,
+@@ -1753,8 +1753,8 @@ mas8_across_add_s16_mmx (int16_t *d, int16_t *s1, int16_t *s2_nx8, int sstr2,
+ [s3_8] "+r" (s3_8),
+ [d] "+r" (d),
+ [n] "+m" (n),
+- [s1] "+r" ((long)(s1))
+- : [sstr] "r" ((long)(sstr2))
++ [s1] "+r" ((intptr_t)(s1))
++ : [sstr] "r" ((intptr_t)(sstr2))
+ );
+ }
+ OIL_DEFINE_IMPL_FULL (mas8_across_add_s16_mmx, mas8_across_add_s16,
+diff --git a/liboil/i386_amd64/mas.c b/liboil/i386_amd64/mas.c
+index 1111111..2222222 100644
+--- a/liboil/i386_amd64/mas.c
++++ b/liboil/i386_amd64/mas.c
+@@ -1,7 +1,7 @@
+
+ #include <liboil/liboilfunction.h>
+ #include <liboil/liboilclasses.h>
+-
++#include <stdint.h>
+
+ void
+ mas10_u8_mmx (uint8_t *d, const uint8_t *s1_np9, const int16_t *s2_10,
+@@ -1106,7 +1106,7 @@ mas8_across_u8_mmx_3 (uint8_t *d, const uint8_t *s1_nx8, int ss1,
+ " packuswb %%mm2, %%mm2\n"
+ " movd %%mm2, 0(%[d])\n"
+ : [p] "+r" (p)
+- : [d] "r" (d), [ss1] "r" ((long)ss1));
++ : [d] "r" (d), [ss1] "r" ((intptr_t)ss1));
+ d+=4;
+ s1_nx8+=4;
+ n--;
+diff --git a/liboil/i386_amd64/multiply_and_acc.c b/liboil/i386_amd64/multiply_and_acc.c
+index 1111111..2222222 100644
+--- a/liboil/i386_amd64/multiply_and_acc.c
++++ b/liboil/i386_amd64/multiply_and_acc.c
+@@ -1,6 +1,7 @@
+
+ #include <liboil/liboilfunction.h>
+ #include <liboil/liboilclasses.h>
++#include <stdint.h>
+
+ void
+ multiply_and_acc_6xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1,
+@@ -32,7 +33,7 @@ multiply_and_acc_6xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1,
+ #ifdef __i386__
+ : "m" (is1), "m" (ss1), "m" (ss2)
+ #else
+- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2)
++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2)
+ #endif
+ );
+ }
+@@ -68,7 +69,7 @@ multiply_and_acc_8xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1,
+ #ifdef __i386__
+ : "m" (is1), "m" (ss1), "m" (ss2)
+ #else
+- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2)
++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2)
+ #endif
+ );
+ }
+@@ -114,7 +115,7 @@ multiply_and_acc_16xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1,
+ #ifdef __i386__
+ : "m" (is1), "m" (ss1), "m" (ss2)
+ #else
+- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2)
++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2)
+ #endif
+ );
+ }
+@@ -170,7 +171,7 @@ multiply_and_acc_24xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1,
+ #ifdef __i386__
+ : "m" (is1), "m" (ss1), "m" (ss2)
+ #else
+- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2)
++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2)
+ #endif
+ );
+ }
diff --git a/src/liboil.mk b/src/liboil.mk
index f13c776..9aad929 100644
--- a/src/liboil.mk
+++ b/src/liboil.mk
@@ -16,19 +16,20 @@ define $(PKG)_UPDATE
head -1
endef
+# liboil is in maintenance-only phase:
+# http://cgit.freedesktop.org/liboil/commit/?id=04b154aa118c0fdf244932dadc3d085f6290db7a
+
+# configure doesn't wildcard host test for x86_64
+# `as_cv_unaligned_access` so set it manually
+
define $(PKG)_BUILD
cd '$(1)' && ./configure \
- --host='$(TARGET)' \
- --prefix='$(PREFIX)/$(TARGET)' \
- --disable-shared \
+ $(MXE_CONFIGURE_OPTS) \
--disable-debug \
--disable-examples \
--mandir='$(1)/sink' \
--docdir='$(1)/sink' \
- --with-html-dir='$(1)/sink'
+ --with-html-dir='$(1)/sink' \
+ as_cv_unaligned_access=yes
$(MAKE) -C '$(1)' -j '$(JOBS)' install
endef
-
-$(PKG)_BUILD_x86_64-w64-mingw32 =
-
-$(PKG)_BUILD_SHARED =