4d5f2f46创建于 4月16日历史提交
# Contributor: Jeff Han <hanjinfei@foxmail.com>
# Maintainer: Jeff Han <hanjinfei@foxmail.com>
pkgname=libxml2
pkgver=v2.11.3
pkgrel=0
pkgdesc="libxml2 is an XML toolkit implemented in C, originally developed for the GNOME Project."
url="https://github.com/GNOME/libxml2"
archs=("armeabi-v7a" "arm64-v8a" "x86_64")
license=("MIT")
depends=("xz" "zlib_1_3_1")
makedepends=()

# 官方下载地址source="https://github.com/GNOME/$pkgname/archive/refs/tags/$pkgver.tar.gz"受网络影响可能存在下载失败的情况,现使用gitee镜像可以与官方仓库保持同步
source="https://gitee.com/lycium_pkg_mirror/$pkgname/repository/archive/$pkgver.zip"

autounpack=true
downloadpackage=true

builddir=$pkgname-${pkgver}
packagename=$builddir.zip

prepare() {
    mkdir -p $builddir/$ARCH-build
}

build() {
    local LOCAL_CFLAGS="-O3 -fstack-protector-strong -fPIC -D_FORTIFY_SOURCE=2"
    local LOCAL_CXXFLAGS="-O3 -fstack-protector-strong -fPIC -D_FORTIFY_SOURCE=2"
    local LOCAL_LDFLAGS="-Wl,-z,relro,-z,now -s"

    cd "$builddir"

    # cmake 需要高版本(同zstd),cmake版本不一致导致lzma无法被自动find 关闭python
    # 合并原有 CFLAGS(-munaligned-access)与安全选项
    cmake "$@" \
        -DOHOS_ARCH="$ARCH" \
        -DCMAKE_BUILD_TYPE=Release \
        -B"$ARCH-build" -S./ -L \
        -DCMAKE_C_FLAGS="${LOCAL_CFLAGS} -munaligned-access" \
        -DCMAKE_CXX_FLAGS="${LOCAL_CXXFLAGS}" \
        -DCMAKE_C_FLAGS_RELEASE="-O3 -DNDEBUG" \
        -DCMAKE_CXX_FLAGS_RELEASE="-O3 -DNDEBUG" \
        -DCMAKE_SHARED_LINKER_FLAGS="${LOCAL_LDFLAGS}" \
        -DCMAKE_EXE_LINKER_FLAGS="${LOCAL_LDFLAGS}" \
        -DCMAKE_SKIP_RPATH=TRUE \
        -DLIBLZMA_LIBRARY="${LYCIUM_ROOT}/usr/xz/$ARCH/lib/liblzma.so" \
        -DLIBLZMA_INCLUDE_DIR="${LYCIUM_ROOT}/usr/xz/$ARCH/include" \
        -DZLIB_INCLUDE_DIR="${LYCIUM_ROOT}/usr/zlib_1_3_1/$ARCH/include" \
        -DLIBXML2_WITH_ICONV=OFF \
        -DLIBXML2_WITH_PYTHON=OFF \
        > "$PWD/$ARCH-build/build.log" 2>&1

    make VERBOSE=1 -j4 -C "$ARCH-build" >> "$PWD/$ARCH-build/build.log" 2>&1
    local ret=$?
    cd "$OLDPWD"
    return $ret
}

package() {
    cd "$builddir"
    make -C $ARCH-build install >> `pwd`/$ARCH-build/build.log 2>&1
    cd $OLDPWD
}

check() {
    echo "The test must be on an OpenHarmony device!"
    # 默认编译未开启 ICU; 依赖liblzma 需要将xz库 安装到测试机
    # icu 相关测试用例均失败
}

# 清理环境
cleanbuild(){
    rm -rf ${PWD}/$builddir #${PWD}/$packagename
}