Created
December 6, 2012 12:28
-
-
Save smellman/4224116 to your computer and use it in GitHub Desktop.
OpenSSLをiPhone向けにビルドしてみる(armv7)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# wget http://openssl.org/source/openssl-1.0.1c.tar.gz | |
# mkdir build config_temp tmp target | |
# SDKROOT=/Applications/Xcode4.4.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk ARCHS=armv7 BUILD_DIR=/Users/btm/tmp/openssl/build CONFIGURATION_TEMP_DIR=/Users/btm/tmp/openssl/config_temp TARGET_BUILD_DIR=/Users/btm/tmp/openssl/target PROJECT_TEMP_DIR=/Users/btm/tmp/openssl/tmp sh build.sh | |
#set | grep ARCH | |
#set -x | |
## Determine the appropriate openssl source path to use | |
## Introduced by michaeltyson, adapted to account for OPENSSL_SRC build path | |
# locate src archive file if present | |
SRC_ARCHIVE=`ls openssl*tar.gz 2>/dev/null` | |
SRCROOT=. | |
# if there is an openssl directory immediately under the openssl.xcode source | |
# folder then build there | |
if [ -d "$SRCROOT/openssl" ]; then | |
OPENSSL_SRC="$SRCROOT/openssl" | |
# else, if there is a openssl.tar.gz in the directory, expand it to openssl | |
# and use it | |
elif [ -f "$SRC_ARCHIVE" ]; then | |
OPENSSL_SRC="$PROJECT_TEMP_DIR/openssl" | |
if [ ! -d "$OPENSSL_SRC" ]; then | |
echo "extracting $SRC_ARCHIVE..." | |
mkdir "$OPENSSL_SRC" | |
tar -C "$OPENSSL_SRC" --strip-components=1 -zxf "$SRC_ARCHIVE" || exit 1 | |
cp -RL "$OPENSSL_SRC/include" "$TARGET_BUILD_DIR" | |
fi | |
# else, if $OPENSSL_SRC is not already defined (i.e. by prerequisites for SQLCipher XCode config) | |
# then assume openssl is in the current directory | |
elif [ ! -d "$OPENSSL_SRC" ]; then | |
OPENSSL_SRC="$SRCROOT" | |
fi | |
echo "***** using $OPENSSL_SRC for openssl source code *****" | |
# check whether libcrypto.a already exists - we'll only build if it does not | |
if [ -f "$TARGET_BUILD_DIR/libcrypto.a" ]; then | |
echo "***** Using previously-built libary $TARGET_BUILD_DIR/libcrypto.a - skipping build *****" | |
echo "***** To force a rebuild clean project and clean dependencies *****" | |
exit 0; | |
else | |
echo "***** No previously-built libary present at $TARGET_BUILD_DIR/libcrypto.a - performing build *****" | |
fi | |
# figure out the right set of build architectures for this run | |
BUILDARCHS="$ARCHS" | |
echo "***** creating universal binary for architectures: $BUILDARCHS *****" | |
if [ "$SDKROOT" != "" ]; then | |
ISYSROOT="-isysroot $SDKROOT" | |
fi | |
echo "***** using ISYSROOT $ISYSROOT *****" | |
OPENSSL_OPTIONS="no-krb5 no-gost" | |
echo "***** using OPENSSL_OPTIONS $OPENSSL_OPTIONS *****" | |
cd "$OPENSSL_SRC" | |
for BUILDARCH in $BUILDARCHS | |
do | |
echo "***** BUILDING UNIVERSAL ARCH $BUILDARCH ******" | |
make clean | |
# disable assembler | |
echo "***** configuring WITHOUT assembler optimizations based on architecture $BUILDARCH and build style $BUILD_STYLE *****" | |
./config no-asm $OPENSSL_OPTIONS -openssldir="$BUILD_DIR" | |
ASM_DEF="-UOPENSSL_BN_ASM_PART_WORDS" | |
echo "***** run make for $BUILDARCH *****" | |
make CFLAG="-D_DARWIN_C_SOURCE $ASM_DEF -arch $BUILDARCH $ISYSROOT -Wno-unused-value -Wno-parentheses" SHARED_LDFLAGS="-arch $BUILDARCH -dynamiclib" | |
echo "***** copying intermediate libraries to $CONFIGURATION_TEMP_DIR/$BUILDARCH-*.a *****" | |
cp libcrypto.a "$CONFIGURATION_TEMP_DIR"/$BUILDARCH-libcrypto.a | |
cp libssl.a "$CONFIGURATION_TEMP_DIR"/$BUILDARCH-libssl.a | |
done | |
echo "***** creating universallibraries in $TARGET_BUILD_DIR *****" | |
mkdir -p "$TARGET_BUILD_DIR" | |
lipo -create "$CONFIGURATION_TEMP_DIR/"*-libcrypto.a -output "$TARGET_BUILD_DIR/libcrypto.a" | |
lipo -create "$CONFIGURATION_TEMP_DIR/"*-libssl.a -output "$TARGET_BUILD_DIR/libssl.a" | |
echo "***** removing temporary files from $CONFIGURATION_TEMP_DIR *****" | |
rm -f "$CONFIGURATION_TEMP_DIR/"*-libcrypto.a | |
rm -f "$CONFIGURATION_TEMP_DIR/"*-libssl.a | |
echo "***** executing ranlib on libraries in $TARGET_BUILD_DIR *****" | |
ranlib "$TARGET_BUILD_DIR/libcrypto.a" | |
ranlib "$TARGET_BUILD_DIR/libssl.a" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment