curl自动编译脚本
#!/bin/sh
###########################################################################
# Change values here #
# #
VERSION="7.54.1" #
SDKVERSION=`xcrun -sdk iphoneos --show-sdk-version` #
DEVELOPER=`xcode-select -print-path` #
ARCHS="i386 x86_64 armv7 armv7s arm64" #
# #
###########################################################################
# #
# Don't change anything under this line! #
# #
###########################################################################
echo "########################## Build libcurl #########################"
CURRENTPATH=$(pwd)
SSLPATH="${CURRENTPATH}/OpenSSL"
set -e
#判断当前目录下是否有curl-VERSION.tar.gz压缩包
if [ ! -e curl-${VERSION}.tar.gz ] ;
then
curl -O https://curl.haxx.se/download/curl-${VERSION}.tar.gz
else
echo "--OK!------ 使用文件:curl-${VERSION}.tar.gz"
fi
mkdir -p "${CURRENTPATH}/src"
mkdir -p "${CURRENTPATH}/bin"
mkdir -p "${CURRENTPATH}/lib"
tar zxf curl-${VERSION}.tar.gz -C "${CURRENTPATH}/src" #将压缩包解压缩到src下
echo "--OK!------ 解压文件:curl-${VERSION}.tar.gz到${CURRENTPATH}/src"
cd "${CURRENTPATH}/src/curl-${VERSION}" #进入到curl文件夹下
echo "--OK!------ 进入目录:${CURRENTPATH}/src/curl-${VERSION}"
#获取当前目录绝对路径
BUILDPATH=$(pwd)
echo "--OK!------ 当前目录:${BUILDPATH}"
for ARCH in ${ARCHS}
do
echo "##################BUILDIT(${ARCH} , ${ARCH})##################"
export IPHONEOS_DEPLOYMENT_TARGET="7.0"
export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
export CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
export BUILD_TOOLS="${DEVELOPER}"
export CC=$(xcrun --find gcc)
if [[ "${ARCH}" == "i386" || "${ARCH}" == "x86_64" ]]; then
PLATFORM="iPhoneSimulator"
SDKTYPE="iphonesimulator"
export CFLAGS="-arch ${ARCH} -pipe -Os -gdwarf-2 -isysroot $(xcrun --sdk $SDKTYPE --show-sdk-path) -fembed-bitcode -mios-simulator-version-min=$IPHONEOS_DEPLOYMENT_TARGET"
export LDFLAGS="-L${SSLPATH}/bin/${platform}${SDK}-${target}.sdk/lib"
export PKG_CONFIG_PATH="${SSLPATH}/bin/${platform}${SDK}-${target}.sdk/lib/pkgconfig"
mkdir -p "${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
LOG="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/build-curl-${VERSION}.log"
./configure --disable-shared --enable-static --host="${ARCH}-apple-darwin" --with-ssl=$SSLPATH --prefix="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/" > "${LOG}" 2>&1
else
PLATFORM="iPhoneOS"
SDKTYPE="iphoneos"
export CFLAGS="-arch ${ARCH} -pipe -Os -gdwarf-2 -isysroot $(xcrun --sdk $SDKTYPE --show-sdk-path) -fembed-bitcode -miphoneos-version-min=$IPHONEOS_DEPLOYMENT_TARGET"
export LDFLAGS="-L${SSLPATH}/bin/${platform}${SDK}-${target}.sdk/lib"
export PKG_CONFIG_PATH="${SSLPATH}/bin/${platform}${SDK}-${target}.sdk/lib/pkgconfig"
mkdir -p "${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
LOG="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/build-curl-${VERSION}.log"
if [[ "${ARCH}" = "arm64" ]];
then
./configure --disable-shared --enable-static --enable-threaded-resolver --host="aarch64-apple-darwin" --with-ssl=$SSLPATH --prefix="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/" > "${LOG}" 2>&1
else
./configure --disable-shared --enable-static --enable-threaded-resolver --host="${ARCH}-apple-darwin" --with-ssl=$SSLPATH --prefix="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/" > "${LOG}" 2>&1
fi
fi
make
#make -j `sysctl -n hw.logicalcpu_max`
cp lib/.libs/libcurl.a ../../bin/libcurl-${ARCH}.a
make clean
echo "--OK!------ Install bin/libcurl-${ARCH}.a OK!"
echo "################BUILDIT(${target} , ${platform}) End!################"
done
echo "--OK!------ Build library..."
echo "--开始归档"
#归档
LIBCURL_SRC=""
for ARCH in ${ARCHS}
do
LIBCURL_SRC="${LIBCURL_SRC}${CURRENTPATH}/bin/libcurl-${ARCH}.a "
done
lipo -create ${LIBCURL_SRC} -output ${CURRENTPATH}/lib/libcurl.a
echo "--归档完毕"
mkdir -p ${CURRENTPATH}/include
cp -R ${BUILDPATH}/include ${CURRENTPATH}/
echo "--OK!------ Building done."
echo "--OK!------ Done."