OLD | NEW |
---|---|
(Empty) | |
1 diff --git a/numpy/core/code_generators/generate_numpy_api.py b/numpy/core/code_ generators/generate_numpy_api.py | |
2 index ce270a6..4094a56 100644 | |
3 --- a/numpy/core/code_generators/generate_numpy_api.py | |
4 +++ b/numpy/core/code_generators/generate_numpy_api.py | |
5 @@ -111,14 +111,18 @@ _import_array(void) | |
6 } | |
7 #if NPY_BYTE_ORDER == NPY_BIG_ENDIAN | |
8 if (st != NPY_CPU_BIG) { | |
9 - PyErr_Format(PyExc_RuntimeError, "FATAL: module compiled as "\ | |
10 - "big endian, but detected different endianness at runtime"); | |
11 + PyErr_Format(PyExc_RuntimeError, "FATAL: (for real) module compiled as "\ | |
12 + "big endian, but detected different endianness at runtime. "\ | |
13 + "(%%d %%d %%d) (%%d %%d)", st, (int) NPY_CPU_BIG, (int) NPY_CPU_LI TTLE, | |
14 + (int) NPY_BIG_ENDIAN, (int) NPY_LITTLE_ENDIAN); | |
15 return -1; | |
16 } | |
17 #elif NPY_BYTE_ORDER == NPY_LITTLE_ENDIAN | |
18 if (st != NPY_CPU_LITTLE) { | |
19 - PyErr_Format(PyExc_RuntimeError, "FATAL: module compiled as "\ | |
20 - "little endian, but detected different endianness at runtime"); | |
21 + PyErr_Format(PyExc_RuntimeError, "FATAL: (for real) module compiled as "\ | |
22 + "little endian, but detected different endianness at runtime. " \ | |
23 + "(%%d %%d %%d) (%%d %%d)", st, (int) NPY_CPU_BIG, (int) NPY_CPU_LI TTLE, | |
24 + (int) NPY_BIG_ENDIAN, (int) NPY_LITTLE_ENDIAN); | |
25 return -1; | |
26 } | |
27 #endif | |
28 diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_c pu.h | |
29 index ab14731..4f7c439 100644 | |
30 --- a/numpy/core/include/numpy/npy_cpu.h | |
31 +++ b/numpy/core/include/numpy/npy_cpu.h | |
32 @@ -27,7 +27,7 @@ | |
33 * i386 by Sun compilers on opensolaris at least | |
34 */ | |
35 #define NPY_CPU_X86 | |
36 -#elif defined(__x86_64__) || defined(__amd64__) || defined(__x86_64) || defined (_M_AMD64) | |
37 +#elif defined(__x86_64__) || defined(__amd64__) || defined(__x86_64) || defined (_M_AMD64) || defined (__native_client__) | |
hamaji
2014/01/24 14:32:48
Maybe better to explain why we need this change.
Matthew Turk
2014/01/28 19:39:20
Done.
| |
38 /* | |
39 * both __x86_64__ and __amd64__ are defined by gcc | |
40 * __x86_64 defined by sun compiler on opensolaris at least | |
41 diff --git a/numpy/core/setup.py b/numpy/core/setup.py | |
42 index 28b15aa..b1210ef 100644 | |
43 --- a/numpy/core/setup.py | |
44 +++ b/numpy/core/setup.py | |
45 @@ -288,7 +288,7 @@ def check_types(config_cmd, ext, build_dir): | |
46 "Cannot compile 'Python.h'. Perhaps you need to "\ | |
47 "install python-dev|python-devel.") | |
48 res = config_cmd.check_header("endian.h") | |
49 - if res: | |
50 + if res and os.environ.get("NACL_PORT_BUILD") not in ["host", "bootstrap"]: | |
51 private_defines.append(('HAVE_ENDIAN_H', 1)) | |
52 public_defines.append(('NPY_HAVE_ENDIAN_H', 1)) | |
53 | |
54 @@ -465,7 +465,7 @@ def configuration(parent_package='',top_path=None): | |
55 'MOTOROLA_EXTENDED_12_BYTES_BE', | |
56 'IEEE_QUAD_LE', 'IEEE_QUAD_BE', | |
57 'IEEE_DOUBLE_LE', 'IEEE_DOUBLE_BE', | |
58 - 'DOUBLE_DOUBLE_BE']: | |
59 + 'DOUBLE_DOUBLE_BE', "NO_LONG_DOUBLE"]: | |
60 moredefs.append(('HAVE_LDOUBLE_%s' % rep, 1)) | |
61 else: | |
62 raise ValueError("Unrecognized long double format: %s" % re p) | |
63 @@ -648,12 +648,13 @@ def configuration(parent_package='',top_path=None): | |
64 # explicitly add an extension which has generate_config_h and | |
65 # generate_numpyconfig_h as sources *before* adding npymath. | |
66 | |
67 - config.add_extension('_dummy', | |
68 - sources = [join('src', 'dummymodule.c'), | |
69 - generate_config_h, | |
70 - generate_numpyconfig_h, | |
71 - generate_numpy_api] | |
72 - ) | |
73 + if os.environ.get("NACL_PORT_BUILD") != "bootstrap": | |
74 + config.add_extension('_dummy', | |
75 + sources = [join('src', 'dummymodule.c'), | |
76 + generate_config_h, | |
77 + generate_numpyconfig_h, | |
78 + generate_numpy_api] | |
79 + ) | |
80 | |
81 ####################################################################### | |
82 # npymath library # | |
83 diff --git a/numpy/core/setup_common.py b/numpy/core/setup_common.py | |
84 index bad3607..bac26c7 100644 | |
85 --- a/numpy/core/setup_common.py | |
86 +++ b/numpy/core/setup_common.py | |
87 @@ -3,6 +3,7 @@ from __future__ import division, absolute_import, print_function | |
88 # Code common to build tools | |
89 import sys | |
90 from os.path import join | |
91 +import os | |
92 import warnings | |
93 import copy | |
94 import binascii | |
95 @@ -304,5 +305,7 @@ def long_double_representation(lines): | |
96 if saw is not None: | |
97 raise ValueError("Unrecognized format (%s)" % saw) | |
98 else: | |
99 + if os.environ.get("NACL_PORT_BUILD") == "bootstrap": | |
100 + return "NO_LONG_DOUBLE" | |
101 # We never detected the after_sequence | |
102 raise ValueError("Could not lock sequences (%s)" % saw) | |
103 diff --git a/numpy/core/src/npymath/npy_math_private.h b/numpy/core/src/npymath/ npy_math_private.h | |
104 index 2bca6bf..9d35356 100644 | |
105 --- a/numpy/core/src/npymath/npy_math_private.h | |
106 +++ b/numpy/core/src/npymath/npy_math_private.h | |
107 @@ -51,29 +51,27 @@ | |
108 * fix this at some point */ | |
109 #define IEEE_WORD_ORDER NPY_BYTE_ORDER | |
110 | |
111 -#if IEEE_WORD_ORDER == NPY_BIG_ENDIAN | |
112 +#if (IEEE_WORD_ORDER == NPY_LITTLE_ENDIAN) || defined(__native_client__) | |
hamaji
2014/01/24 14:32:48
Why have you swapped the order of this #if clause?
Matthew Turk
2014/01/28 19:39:20
It might. The issue I was running into is that fo
| |
113 | |
114 typedef union | |
115 { | |
116 double value; | |
117 struct | |
118 { | |
119 - npy_uint32 msw; | |
120 npy_uint32 lsw; | |
121 + npy_uint32 msw; | |
122 } parts; | |
123 } ieee_double_shape_type; | |
124 | |
125 -#endif | |
126 - | |
127 -#if IEEE_WORD_ORDER == NPY_LITTLE_ENDIAN | |
128 +#elif IEEE_WORD_ORDER == NPY_BIG_ENDIAN | |
129 | |
130 typedef union | |
131 { | |
132 double value; | |
133 struct | |
134 { | |
135 - npy_uint32 lsw; | |
136 npy_uint32 msw; | |
137 + npy_uint32 lsw; | |
138 } parts; | |
139 } ieee_double_shape_type; | |
140 | |
141 diff --git a/numpy/core/src/private/npy_fpmath.h b/numpy/core/src/private/npy_fp math.h | |
142 index 8a120ca..984bd65 100644 | |
143 --- a/numpy/core/src/private/npy_fpmath.h | |
144 +++ b/numpy/core/src/private/npy_fpmath.h | |
145 @@ -7,6 +7,10 @@ | |
146 #include "numpy/npy_cpu.h" | |
147 #include "numpy/npy_common.h" | |
148 | |
149 +#ifdef __native_client__ | |
150 + #define HAVE_LDOUBLE_IEEE_DOUBLE_LE | |
151 +#endif | |
152 + | |
153 #ifdef NPY_OS_DARWIN | |
154 /* This hardcoded logic is fragile, but universal builds makes it | |
155 * difficult to detect arch-specific features */ | |
156 diff --git a/numpy/distutils/misc_util.py b/numpy/distutils/misc_util.py | |
157 index f77e525..c876136 100644 | |
158 --- a/numpy/distutils/misc_util.py | |
159 +++ b/numpy/distutils/misc_util.py | |
160 @@ -2036,6 +2036,11 @@ def get_cmd(cmdname, _cache={}): | |
161 | |
162 def get_numpy_include_dirs(): | |
163 # numpy_include_dirs are set by numpy/core/setup.py, otherwise [] | |
164 + if os.environ.get("NACL_PORT_BUILD") == "dest": | |
165 + # We fake our numpy includes when building on the destination. | |
166 + base_path = os.environ["NACL_BUILD_TREE"] | |
167 + return [os.path.join(base_path, | |
168 + "lib/python2.7/site-packages/numpy/core/include")] | |
169 include_dirs = Configuration.numpy_include_dirs[:] | |
170 if not include_dirs: | |
171 import numpy | |
OLD | NEW |