summaryrefslogtreecommitdiff
path: root/libffi-3.2.1.midipix.patch
blob: ce5686e06556f0cc762110cff9e0b187937cfec9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
diff -ru --new-file a/config.sub b/config.sub
--- a/config.sub	2014-11-12 06:59:58.000000000 -0500
+++ b/config.sub	2016-01-25 18:17:40.000000000 -0500
@@ -1365,7 +1365,7 @@
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* | -cegcc* \
 	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
 	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
diff -ru --new-file a/configure b/configure
--- a/configure	2014-11-12 06:59:57.000000000 -0500
+++ b/configure	2016-01-25 18:26:47.000000000 -0500
@@ -17133,7 +17133,7 @@
   i?86-*-freebsd* | i?86-*-openbsd*)
 	TARGET=X86_FREEBSD; TARGETDIR=x86
 	;;
-  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*)
+  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix* | i?86-*-midipix*)
 	TARGET=X86_WIN32; TARGETDIR=x86
 	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
 	# We must also check with_cross_host to decide if this is a native
@@ -17161,7 +17161,7 @@
 	TARGET=X86_DARWIN; TARGETDIR=x86
 	;;
 
-  x86_64-*-cygwin* | x86_64-*-mingw*)
+  x86_64-*-cygwin* | x86_64-*-mingw* | x86_64-*-midipix*)
 	TARGET=X86_WIN64; TARGETDIR=x86
 	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
 	# We must also check with_cross_host to decide if this is a native
@@ -21766,3 +21766,15 @@
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
+# a transitional workaround...
+case $host_os in
+		midipix*)
+			cp $ac_confdir/libtool.midipix libtool || exit 2
+
+			sed -i	-e 's/@cbb_host_os@/'$host'/g' \
+				-e 's/@cbb_build_alias@/'$build_alias'/g' \
+				-e 's/@cbb_build_os@/'$build_os'/g' \
+				-e 's/@cbb_build@/'$build'/g' libtool || exit 2
+			;;
+esac
+
diff -ru --new-file a/src/closures.c b/src/closures.c
--- a/src/closures.c	2014-11-08 07:47:24.000000000 -0500
+++ b/src/closures.c	2016-01-25 17:57:43.000000000 -0500
@@ -26,6 +26,25 @@
    DEALINGS IN THE SOFTWARE.
    ----------------------------------------------------------------------- */
 
+#ifdef __midipix__
+
+#include <stdlib.h>
+
+void * ffi_closure_alloc (size_t size, void ** code)
+{
+	if (code)
+		return (*code = malloc(size));
+	else
+		return 0;
+}
+
+void ffi_closure_free (void * addr)
+{
+	free(addr);
+}
+
+#else
+
 #if defined __linux__ && !defined _GNU_SOURCE
 #define _GNU_SOURCE 1
 #endif
@@ -686,3 +705,4 @@
 
 # endif /* ! FFI_MMAP_EXEC_WRIT */
 #endif /* FFI_CLOSURES */
+#endif
diff -ru --new-file a/src/x86/ffi.c b/src/x86/ffi.c
--- a/src/x86/ffi.c	2014-11-08 07:47:24.000000000 -0500
+++ b/src/x86/ffi.c	2016-01-25 17:52:14.000000000 -0500
@@ -31,8 +31,12 @@
 #if !defined(__x86_64__) || defined(_WIN64) || defined(__CYGWIN__)
 
 #ifdef _WIN64
+#ifdef __midipix__
+/* not needed */
+#else
 #include <windows.h>
 #endif
+#endif
 
 #include <ffi.h>
 #include <ffi_common.h>
diff -ru --new-file a/src/x86/win32.S b/src/x86/win32.S
--- a/src/x86/win32.S	2014-11-11 09:41:37.000000000 -0500
+++ b/src/x86/win32.S	2016-01-25 18:36:49.000000000 -0500
@@ -1344,6 +1344,14 @@
         .align 4
 .LEFDE5:
 
+#ifdef __midipix__
+	.section .got$ffi_call_win32,"r"
+	.global __imp_ffi_call_win32
+__imp_ffi_call_win32:
+	.long	ffi_call_win32
+	.linkonce discard
+#endif
+
 #endif /* !_MSC_VER */
 
 #if defined __ELF__ && defined __linux__
diff -ru --new-file a/src/x86/win64.S b/src/x86/win64.S
--- a/src/x86/win64.S	2014-11-08 07:47:24.000000000 -0500
+++ b/src/x86/win64.S	2016-01-25 17:47:17.000000000 -0500
@@ -516,5 +516,15 @@
 	pop	%rbp
 	retq
 	.seh_endproc
+
+
+#ifdef __midipix__
+	.section .got$ffi_call_win64,"r"
+	.global __imp_ffi_call_win64
+__imp_ffi_call_win64:
+	.quad	ffi_call_win64
+	.linkonce discard
+#endif
+
 #endif /* !_MSC_VER */