Xxiaopangziglm 安全编译
a7456356创建于 4月17日历史提交
# Contributor: wupingyuan <wupingyuan@huawei.com>
# Maintainer: wupingyuan <wupingyuan@huawei.com>
pkgname=glm
pkgver=0.9.9.8
pkgrel=0
pkgdesc="OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specifications."
url="https://github.com/g-truc/glm"
archs=("armeabi-v7a" "arm64-v8a" "x86_64")
license=("The Happy Buny License(Modified MIT License)" "MIT")
depends=()
makedepends=()

source="https://github.com/g-truc/$pkgname/archive/refs/tags/$pkgver.tar.gz"

autounpack=true
downloadpackage=true
patchflag=true
builddir=$pkgname-${pkgver}
packagename=$builddir.tar.gz

prepare() {
    mkdir -p $builddir/$ARCH-build
    if $patchflag
    then
        cd $builddir
        # 由于编译test用例的时候报错:clang++: : error: argument unused during compilation: '--gcc-toolchain=/home/wu/openharmony/ohos-sdk/linux/native/llvm' [-Werror,-Wunused-command-line-argument]和没有install命令因此打patch    
        patch -p1 < `pwd`/../glm_oh_pkg.patch
        patchflag=false
        cd $OLDPWD
    fi
}

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

    cd "$builddir"

    ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" \
        -DBUILD_SHARED_LIBS=ON \
        -DBUILD_STATIC_LIBS=ON \
        -DCMAKE_C_FLAGS="${LOCAL_CFLAGS}" \
        -DCMAKE_CXX_FLAGS="${LOCAL_CXXFLAGS}" \
        -DCMAKE_SHARED_LINKER_FLAGS="${LOCAL_LDFLAGS}" \
        -DCMAKE_EXE_LINKER_FLAGS="${LOCAL_LDFLAGS}" \
        -B"$ARCH-build" -S./ -L > "$buildlog" 2>&1

    $MAKE VERBOSE=1 -C "$ARCH-build" >> "$buildlog" 2>&1
    local ret=$?
    cd "$OLDPWD"
    return $ret
}

package() {
    cd $builddir
    $MAKE VERBOSE=1 -C $ARCH-build install >> $buildlog 2>&1
    ret=$?
    cd $OLDPWD
    return $ret
}

check() {
    echo "The test must be on an OpenHarmony device!"
    # 在OpenHarmony开发板中执行用例
    # ctest
}

cleanbuild(){
    rm -rf ${PWD}/$builddir #${PWD}/$packagename
}