summaryrefslogtreecommitdiff
path: root/recipes/gmp.recipe
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/gmp.recipe')
-rw-r--r--recipes/gmp.recipe37
1 files changed, 37 insertions, 0 deletions
diff --git a/recipes/gmp.recipe b/recipes/gmp.recipe
index 3ea8ed01..d627285a 100644
--- a/recipes/gmp.recipe
+++ b/recipes/gmp.recipe
@@ -1,6 +1,21 @@
# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python
import shutil
+GMP_H_UNVERSAL='''\
+#ifdef __i386__
+#include "i386/gmp.h"
+#elif defined(__ppc__)
+#include "ppc/gmp.h"
+#elif defined(__x86_64__)
+#include "x86_64/gmp.h"
+#elif defined(__arm__)
+#include "arm/gmp.h"
+#elif defined(__arm64__)
+#include "arm64/gmp.h"
+#else
+#error "Unsupported Architecture"
+#endif
+'''
class Recipe(recipe.Recipe):
name = 'gmp'
@@ -22,6 +37,9 @@ class Recipe(recipe.Recipe):
elif self.config.target_platform == Platform.IOS:
self.configure_options = ' --disable-assembly'
+ if self.config.target_platform in [Platform.DARWIN, Platform.IOS]:
+ self.files_devel.append(os.path.join('include', '*', 'gmp.h'))
+
def post_install(self):
if self.config.target_platform == Platform.WINDOWS:
src = os.path.join(self.config.prefix, 'lib', 'libgmp-10.dll')
@@ -33,3 +51,22 @@ class Recipe(recipe.Recipe):
shutil.copy(src, dll_a)
gmp_la = os.path.join(self.config.prefix, 'lib', 'libgmp.la')
shell.replace(gmp_la, {'libgmp.lib': 'libgmp.dll.a'})
+ elif self.config.target_platform in [Platform.DARWIN, Platform.IOS]:
+ # For the universal build we need to ship gmp.h of both
+ # architectures in a subfolder and include the correct one depending
+ # on the compiler architecture
+ arch = self.config.target_arch
+ if arch == Architecture.X86:
+ arch = 'i386'
+ elif arch == Architecture.ARM64:
+ arch = 'arm64'
+ elif Architecture.is_arm(arch):
+ arch = 'arm'
+
+ arch_dir = os.path.join(self.config.prefix, 'include', arch)
+ if not os.path.exists(arch_dir):
+ os.makedirs(arch_dir)
+ shutil.copyfile(os.path.join(self.build_dir, 'gmp.h'),
+ os.path.join(arch_dir, 'gmp.h'))
+ with open(os.path.join(self.config.prefix, 'include', 'gmp.h'), 'w+') as f:
+ f.write(GMP_H_UNVERSAL)