summaryrefslogtreecommitdiff
path: root/scripts/build_osx_universal_gmpfr.sh
blob: 3dafa3ce109d85e6be940b7caccb89e20edb38f6 (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
#!/bin/bash
set -e

# In the working directory, creates deps-uni/lib/*
# Assumes that the user has enough rights to run brew fetch

# Downloading
mkdir deps-amd64
cd deps-amd64
tar xf "`brew fetch --bottle-tag=big_sur gmp        | sed -ne 's/^Downloaded to: //p'`"
tar xf "`brew fetch --bottle-tag=big_sur mpfr       | sed -ne 's/^Downloaded to: //p'`"
cd ..
mkdir deps-arm64
cd deps-arm64
tar xf "`brew fetch --bottle-tag=arm64_big_sur gmp  | sed -ne 's/^Downloaded to: //p'`"
tar xf "`brew fetch --bottle-tag=arm64_big_sur mpfr | sed -ne 's/^Downloaded to: //p'`"
cd ..

# Merging
mkdir -p deps-uni/lib
GMP1=deps-amd64/gmp/*/lib/libgmp.*.dylib
GMP=`basename $GMP1`
GMPXX1=deps-amd64/gmp/*/lib/libgmpxx.*.dylib
GMPXX=`basename $GMPXX1`
MPFR1=deps-amd64/mpfr/*/lib/libmpfr.*.dylib
MPFR=`basename $MPFR1`
lipo -create $GMP1 deps-arm64/gmp/*/lib/$GMP -output deps-uni/lib/$GMP
lipo -create $GMPXX1 deps-arm64/gmp/*/lib/$GMPXX -output deps-uni/lib/$GMPXX
lipo -create $MPFR1 deps-arm64/mpfr/*/lib/$MPFR -output deps-uni/lib/$MPFR

# Necessary even for libs created by lipo
install_name_tool -id $PWD/deps-uni/lib/$GMP deps-uni/lib/$GMP
install_name_tool -id $PWD/deps-uni/lib/$GMPXX deps-uni/lib/$GMPXX
install_name_tool -id $PWD/deps-uni/lib/$MPFR deps-uni/lib/$MPFR
# Also fix dependencies
BADGMP=`otool -L deps-uni/lib/$MPFR|sed -ne 's/[[:space:]]*\(.*libgmp\..*dylib\).*/\1/p'`
install_name_tool -change $BADGMP $PWD/deps-uni/lib/$GMP deps-uni/lib/$MPFR
BADGMP=`otool -L deps-uni/lib/$GMPXX|sed -ne 's/[[:space:]]*\(.*libgmp\..*dylib\).*/\1/p'`
install_name_tool -change $BADGMP $PWD/deps-uni/lib/$GMP deps-uni/lib/$GMPXX

ln -s $GMP deps-uni/lib/libgmp.dylib
ln -s $GMPXX deps-uni/lib/libgmpxx.dylib
ln -s $MPFR deps-uni/lib/libmpfr.dylib

# Debug
ls -l deps-uni/lib
otool -L deps-uni/lib/*.*.dylib