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