美文网首页
编译opus静态文件的脚本文件

编译opus静态文件的脚本文件

作者: Luyc_Han | 来源:发表于2021-12-23 11:36 被阅读0次
    # iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器,
    # 模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器)
    # 模拟器64位处理器测试需要x86_64架构,(iphone6以上的模拟器)
    # 真机32位处理器需要armv7,或者armv7s架构,(iphone4真机/armv7,      ipnone5,iphone5s真机/armv7s)
    # 真机64位处理器需要arm64架构。(iphone6,iphone6p以上的真机
    # xcodebuild -showsdks //查看sdk版本
    #
    ###########################################################################
    #  Choose your libopus version and your currently-installed iOS SDK version:
    #
    VERSION="1.3.1"
    SDKVERSION="15.0"
    MINIOSVERSION="8.0"
    
    ###########################################################################
    #
    # Don't change anything under this line!
    #
    ###########################################################################
    
    # by default, we won't build for debugging purposes
    if [ "${DEBUG}" == "true" ]; then
        echo "Compiling for debugging ..."
        OPT_CFLAGS="-O0 -fno-inline -g"
        OPT_LDFLAGS=""
        OPT_CONFIG_ARGS="--enable-assertions --disable-asm"
    else
        OPT_CFLAGS="-Ofast -flto -g"
        OPT_LDFLAGS="-flto"
        OPT_CONFIG_ARGS=""
    fi
    
    
    # No need to change this since xcode build will only compile in the
    # necessary bits from the libraries we create
    ARCHS="x86_64 arm64"
    
    DEVELOPER=`xcode-select -print-path`
    #DEVELOPER="/Applications/Xcode.app/Contents/Developer"
    
    cd "`dirname \"$0\"`"
    REPOROOT=$(pwd)
    
    # Where we'll end up storing things in the end
    OUTPUTDIR="${REPOROOT}/dependencies"
    mkdir -p ${OUTPUTDIR}/include
    mkdir -p ${OUTPUTDIR}/lib
    
    
    BUILDDIR="${REPOROOT}/build"
    
    # where we will keep our sources and build from.
    SRCDIR="${BUILDDIR}/src"
    mkdir -p $SRCDIR
    # where we will store intermediary builds
    INTERDIR="${BUILDDIR}/built"
    mkdir -p $INTERDIR
    
    ########################################
    
    cd $SRCDIR
    
    # Exit the script if an error happens
    set -e
    
    if [ ! -e "${SRCDIR}/opus-${VERSION}.tar.gz" ]; then
        echo "Downloading opus-${VERSION}.tar.gz"
        curl -LO http://downloads.xiph.org/releases/opus/opus-${VERSION}.tar.gz
    fi
    echo "Using opus-${VERSION}.tar.gz"
    
    tar zxf opus-${VERSION}.tar.gz -C $SRCDIR
    cd "${SRCDIR}/opus-${VERSION}"
    
    set +e # don't bail out of bash script if ccache doesn't exist
    CCACHE=`which ccache`
    if [ $? == "0" ]; then
        echo "Building with ccache: $CCACHE"
        CCACHE="${CCACHE} "
    else
        echo "Building without ccache"
        CCACHE=""
    fi
    set -e # back to regular "bail out on error" mode
    
    export ORIGINALPATH=$PATH
    
    for ARCH in ${ARCHS}
    do
        if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ]; then
            PLATFORM="iPhoneSimulator"
            EXTRA_CFLAGS="-arch ${ARCH}"
            EXTRA_CONFIG="--host=x86_64-apple-darwin"
        else
            PLATFORM="iPhoneOS"
            EXTRA_CFLAGS="-arch ${ARCH}"
            EXTRA_CONFIG="--host=arm-apple-darwin"
        fi
    
        mkdir -p "${INTERDIR}/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
    
        ./configure --enable-float-approx --disable-shared --enable-static --with-pic --disable-extra-programs --disable-doc ${EXTRA_CONFIG} \
        --prefix="${INTERDIR}/${PLATFORM}${SDKVERSION}-${ARCH}.sdk" \
        LDFLAGS="$LDFLAGS ${OPT_LDFLAGS} -fPIE -miphoneos-version-min=${MINIOSVERSION} -L${OUTPUTDIR}/lib" \
        CFLAGS="$CFLAGS ${EXTRA_CFLAGS} ${OPT_CFLAGS} -fPIE -miphoneos-version-min=${MINIOSVERSION} -I${OUTPUTDIR}/include -isysroot ${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk" \
    
        # Build the application and install it to the fake SDK intermediary dir
        # we have set up. Make sure to clean up afterward because we will re-use
        # this source tree to cross-compile other targets.
        make -j4
        make install
        make clean
    done
    
    ########################################
    
    echo "Build library..."
    
    # These are the libs that comprise libopus.
    OUTPUT_LIBS="libopus.a"
    for OUTPUT_LIB in ${OUTPUT_LIBS}; do
        INPUT_LIBS=""
        for ARCH in ${ARCHS}; do
            if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ];
            then
                PLATFORM="iPhoneSimulator"
            else
                PLATFORM="iPhoneOS"
            fi
            INPUT_ARCH_LIB="${INTERDIR}/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/lib/${OUTPUT_LIB}"
            if [ -e $INPUT_ARCH_LIB ]; then
                INPUT_LIBS="${INPUT_LIBS} ${INPUT_ARCH_LIB}"
            fi
        done
        # Combine the three architectures into a universal library.
        if [ -n "$INPUT_LIBS"  ]; then
            lipo -create $INPUT_LIBS \
            -output "${OUTPUTDIR}/lib/${OUTPUT_LIB}"
        else
            echo "$OUTPUT_LIB does not exist, skipping (are the dependencies installed?)"
        fi
    done
    
    for ARCH in ${ARCHS}; do
        if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ];
        then
            PLATFORM="iPhoneSimulator"
        else
            PLATFORM="iPhoneOS"
        fi
        cp -R ${INTERDIR}/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/include/* ${OUTPUTDIR}/include/
        if [ $? == "0" ]; then
            # We only need to copy the headers over once. (So break out of forloop
            # once we get first success.)
            break
        fi
    done
    
    
    ####################
    
    echo "Building done."
    echo "Cleaning up..."
    rm -fr ${INTERDIR}
    rm -fr "${SRCDIR}/opus-${VERSION}"
    echo "Done."
    
    

    相关文章

      网友评论

          本文标题:编译opus静态文件的脚本文件

          本文链接:https://www.haomeiwen.com/subject/qdshqrtx.html