export CFLAGS="${CFLAGS} -fno-semantic-interposition"
export CXXFLAGS="${CXXFLAGS} -fno-semantic-interposition"
export LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic"

git config --local user.name "AOSC Maintainers"
git config --local user.email "maintainers@aosc.io"

LLVM_VER=16.0.6
mv -v "${SRCDIR}"/../llvm-project-"${LLVM_VER}".src "${SRCDIR}"/../llvm-project
cd "${SRCDIR}"/../llvm-project

abinfo "Applying patches for LLVM ..."
ab_apply_patches "$SRCDIR"/autobuild/patches/*-llvm-*.patch
ab_apply_patches "$SRCDIR"/autobuild/patches/*-llvm-*.patch."${CROSS:-$ARCH}"

for file in "${SRCDIR}"/../opencl-clang/patches/clang/*.patch
do
    # FIXME: opencl-clang's LLVM 16 patch queue may drift slightly from pinned LLVM 16.0.6.
    # Relax context matching to avoid rejecting valid hunks with stale surrounding lines.
    git apply -C0 --ignore-whitespace "$file"
done
rm -v "${SRCDIR}"/../opencl-clang/patches/clang/*.patch
for file in "${SRCDIR}"/external/llvm/releases/16.0.0/patches_external/*.patch
do
    patch -p1 -t -s -N -i "$file"
done
rm -v "${SRCDIR}"/external/llvm/releases/16.0.0/patches_external/*.patch

cp -v /usr/bin/config.* llvm/cmake/

mkdir "${SRCDIR}"/../llvm-project/.git
ln -sv "${SRCDIR}"/../SPIRV-LLVM-Translator-IGC "${SRCDIR}"/../llvm-project/llvm/projects/llvm-spirv
ln -sv "${SRCDIR}"/../opencl-clang "${SRCDIR}"/../llvm-project/llvm/projects/opencl-clang
