[Beignet] Beignet failed to compile on Yocto Linux with meta-clang (clang/LLVM 9.0)

Soham Sinha soham1 at bu.edu
Tue Nov 10 02:08:10 UTC 2020


Hello,

I am trying to compile Beignet on Yocto 3.0.1 (zeus) 32 bits for Intel
Coffee Lake with UHD 630 Graphics. I have the meta-clang layer
<https://github.com/kraj/meta-clang> which provides clang/llvm 9.0. My
compilation is failing. I have a bitbake recipe for beignet, with a script
borrowed from meta-beignet <https://github.com/rossburton/meta-beignet> and
edited (given below). Is there any patch for compiling beignet with LLVM
9.0 for 32 bits?

I am encountering the following issues during the configure step:
```
| CMake Error: Attempt to add a custom rule to output
"/home/soham/disk/yocto-vanilla/build/tmp/work/x86_64-linux/beignet-native/1.0+gitAUTOINC+419c041736-r0/build/backend/src/libocl/src/ocl_workitem.cl.rule"
which already has a custom rule.
| CMake Error: Attempt to add a custom rule to output
"/home/soham/disk/yocto-vanilla/build/tmp/work/x86_64-linux/beignet-native/1.0+gitAUTOINC+419c041736-r0/build/backend/src/libocl/src/ocl_async.cl.rule"
which already has a custom rule.
| CMake Error: Attempt to add a custom rule to output
"/home/soham/disk/yocto-vanilla/build/tmp/work/x86_64-linux/beignet-native/1.0+gitAUTOINC+419c041736-r0/build/backend/src/libocl/src/ocl_sync.cl.rule"
which already has a custom rule.
| CMake Error: Attempt to add a custom rule to output
"/home/soham/disk/yocto-vanilla/build/tmp/work/x86_64-linux/beignet-native/1.0+gitAUTOINC+419c041736-r0/build/backend/src/libocl/src/ocl_memcpy.cl.rule"
which already has a custom rule.
| CMake Error: Attempt to add a custom rule to output
"/home/soham/disk/yocto-vanilla/build/tmp/work/x86_64-linux/beignet-native/1.0+gitAUTOINC+419c041736-r0/build/backend/src/libocl/src/ocl_memset.cl.rule"
which already has a custom rule
...
| CMake Error: The following variables are used in this project, but they
are set to NOTFOUND.
| Please set them or make sure they are set and tested correctly in the
CMake files:
| CLANG_LIB
|     linked by target "gbe" in directory
/home/soham/disk/yocto-vanilla/build/tmp/work/x86_64-linux/beignet-native/1.0+gitAUTOINC+419c041736-r0/git/backend/src
|     linked by target "gbe" in directory
/home/soham/disk/yocto-vanilla/build/tmp/work/x86_64-linux/beignet-native/1.0+gitAUTOINC+419c041736-r0/git/backend/src
```


The following is my beignet recipe for Yocto:

```
DEPENDS = "beignet-native ocl-icd ncurses libdrm libxfixes libx11 libxext
clang mesa llvm"
DEPENDS_class-native = "clang-native libdrm-native ocl-icd"

# NOTE: spec file indicates the license may be "MIT"
inherit cmake pkgconfig pythonnative clang


BBCLASSEXTEND = "native"

EXTRA_OECMAKE = "-DLLVM_LIBRARY_DIR=${STAGING_LIBDIR}
-DBEIGNET_INSTALL_DIR=/usr/lib/beignet -DCMAKE_BUILD_TYPE=Release
-DCOMPILER=clang"
EXTRA_OECMAKE_append_class-target = " -DCMAKE_SKIP_RPATH=TRUE
-DUSE_STANDALONE_GBE_COMPILER=true"
EXTRA_OECMAKE_append_class-target = " -DGEN_PCI_ID=0x3e92"

# TODO respect distrofeatures for x11
PACKAGECONFIG ??= ""
PACKAGECONFIG[examples] = '-DBUILD_EXAMPLES=1,-DBUILD_EXAMPLES=0,libva'
# TODO: add explicit on/off upstream
PACKAGECONFIG[x11] = ",,libxext libxfixes"

FILES_${PN} += " \
                ${sysconfdir}/OpenCL/vendors/intel-beignet.icd \
                ${libdir} ${includedir} \
               "

FILES_${PN}-dev = ""

do_install_append() {
    # Remove the headers; these will be included by another recipe
    rm -rf ${D}${includedir}/CL

    # Create intel-beignet.icd file
    mkdir -p ${D}${sysconfdir}/OpenCL/vendors/
    echo ${libdir}/beignet/libcl.so >
${D}${sysconfdir}/OpenCL/vendors/intel-beignet.icd
}

do_install_append_class-target() {
    install -d ${D}${bindir}
    install -m 0755 ${B}/backend/src/gbe_bin_generater ${D}${bindir}

    install -d ${D}${libdir}/beignet/include
    install -m 0755 ${B}/utests/utest_run ${D}${libdir}/beignet
    install -m 0755 ${B}/utests/setenv.sh ${D}${libdir}/beignet
    install -m 0644 ${S}/kernels/*.cl ${D}${libdir}/beignet
    install -m 0644 ${S}/kernels/*.bmp ${D}${libdir}/beignet
    install -m 0644 ${S}/kernels/compiler_ceil.bin ${D}${libdir}/beignet
    install -m 0644 ${S}/kernels/runtime_compile_link.h
${D}${libdir}/beignet
    install -m 0644 ${S}/kernels/include/runtime_compile_link_inc.h
${D}${libdir}/beignet/include/runtime_compile_link_inc.h
    install -d ${D}${libdir}
    install -m 0644 ${B}/utests/libutests.so ${D}${libdir}
}

do_install_class-native() {
    install -d ${D}${libdir}/cmake
    install -m644 ${S}/CMake/FindStandaloneGbeCompiler.cmake
${D}${libdir}/cmake

    install -d ${D}${bindir}
    install ${B}/backend/src/gbe_bin_generater ${D}${bindir}

    install -d ${D}${bindir}/include
    install ${B}/backend/src/libocl/usr/lib/beignet/include/*
${D}${bindir}/include
}
```

I would appreciate any help or pointer.

Regards,
Soham S
PhD Student, Department of Computer Science
Boston University
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/beignet/attachments/20201109/76f7cb50/attachment.htm>


More information about the Beignet mailing list