Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/libsodium/dist-build/ios.sh
48260 views
1
#! /bin/sh
2
#
3
# Step 1.
4
# Configure for base system so simulator is covered
5
#
6
# Step 2.
7
# Make for iOS and iOS simulator
8
#
9
# Step 3.
10
# Merge libs into final version for xcode import
11
12
export PREFIX="$(pwd)/libsodium-ios"
13
export IOS32_PREFIX="$PREFIX/tmp/ios32"
14
export IOS32s_PREFIX="$PREFIX/tmp/ios32s"
15
export IOS64_PREFIX="$PREFIX/tmp/ios64"
16
export SIMULATOR32_PREFIX="$PREFIX/tmp/simulator32"
17
export SIMULATOR64_PREFIX="$PREFIX/tmp/simulator64"
18
export XCODEDIR=$(xcode-select -p)
19
20
export IOS_SIMULATOR_VERSION_MIN=${IOS_SIMULATOR_VERSION_MIN-"6.0.0"}
21
export IOS_VERSION_MIN=${IOS_VERSION_MIN-"6.0.0"}
22
23
mkdir -p $SIMULATOR32_PREFIX $SIMULATOR64_PREFIX $IOS32_PREFIX $IOS32s_PREFIX $IOS64_PREFIX || exit 1
24
25
# Build for the simulator
26
export BASEDIR="${XCODEDIR}/Platforms/iPhoneSimulator.platform/Developer"
27
export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
28
export SDK="${BASEDIR}/SDKs/iPhoneSimulator.sdk"
29
30
## i386 simulator
31
export CFLAGS="-O2 -arch i386 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
32
export LDFLAGS="-arch i386 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
33
34
make distclean > /dev/null
35
36
if [ -z "$LIBSODIUM_FULL_BUILD" ]; then
37
export LIBSODIUM_ENABLE_MINIMAL_FLAG="--enable-minimal"
38
else
39
export LIBSODIUM_ENABLE_MINIMAL_FLAG=""
40
fi
41
42
./configure --host=i686-apple-darwin10 \
43
--disable-shared \
44
${LIBSODIUM_ENABLE_MINIMAL_FLAG} \
45
--prefix="$SIMULATOR32_PREFIX" || exit 1
46
47
48
NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null)
49
PROCESSORS=${NPROCESSORS:-3}
50
51
make -j${PROCESSORS} install || exit 1
52
53
## x86_64 simulator
54
export CFLAGS="-O2 -arch x86_64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
55
export LDFLAGS="-arch x86_64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
56
57
make distclean > /dev/null
58
59
./configure --host=x86_64-apple-darwin10 \
60
--disable-shared \
61
${LIBSODIUM_ENABLE_MINIMAL_FLAG} \
62
--prefix="$SIMULATOR64_PREFIX"
63
64
make -j${PROCESSORS} install || exit 1
65
66
# Build for iOS
67
export BASEDIR="${XCODEDIR}/Platforms/iPhoneOS.platform/Developer"
68
export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
69
export SDK="${BASEDIR}/SDKs/iPhoneOS.sdk"
70
71
## 32-bit iOS
72
export CFLAGS="-fembed-bitcode -O2 -mthumb -arch armv7 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
73
export LDFLAGS="-fembed-bitcode -mthumb -arch armv7 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
74
75
make distclean > /dev/null
76
77
./configure --host=arm-apple-darwin10 \
78
--disable-shared \
79
${LIBSODIUM_ENABLE_MINIMAL_FLAG} \
80
--prefix="$IOS32_PREFIX" || exit 1
81
82
make -j${PROCESSORS} install || exit 1
83
84
## 32-bit armv7s iOS
85
export CFLAGS="-fembed-bitcode -O2 -mthumb -arch armv7s -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
86
export LDFLAGS="-fembed-bitcode -mthumb -arch armv7s -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
87
88
make distclean > /dev/null
89
90
./configure --host=arm-apple-darwin10 \
91
--disable-shared \
92
${LIBSODIUM_ENABLE_MINIMAL_FLAG} \
93
--prefix="$IOS32s_PREFIX" || exit 1
94
95
make -j${PROCESSORS} install || exit 1
96
97
## 64-bit iOS
98
export CFLAGS="-fembed-bitcode -O2 -arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN} -fembed-bitcode"
99
export LDFLAGS="-fembed-bitcode -arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN} -fembed-bitcode"
100
101
make distclean > /dev/null
102
103
./configure --host=arm-apple-darwin10 \
104
--disable-shared \
105
${LIBSODIUM_ENABLE_MINIMAL_FLAG} \
106
--prefix="$IOS64_PREFIX" || exit 1
107
108
make -j${PROCESSORS} install || exit 1
109
110
# Create universal binary and include folder
111
rm -fr -- "$PREFIX/include" "$PREFIX/libsodium.a" 2> /dev/null
112
mkdir -p -- "$PREFIX/lib"
113
lipo -create \
114
"$SIMULATOR32_PREFIX/lib/libsodium.a" \
115
"$SIMULATOR64_PREFIX/lib/libsodium.a" \
116
"$IOS32_PREFIX/lib/libsodium.a" \
117
"$IOS32s_PREFIX/lib/libsodium.a" \
118
"$IOS64_PREFIX/lib/libsodium.a" \
119
-output "$PREFIX/lib/libsodium.a"
120
mv -f -- "$IOS32_PREFIX/include" "$PREFIX/"
121
122
echo
123
echo "libsodium has been installed into $PREFIX"
124
echo
125
file -- "$PREFIX/lib/libsodium.a"
126
127
# Cleanup
128
rm -rf -- "$PREFIX/tmp"
129
make distclean > /dev/null
130
131