summaryrefslogtreecommitdiff
path: root/Software/Beignet/howto
diff options
context:
space:
mode:
authorrongyang <rongyang@web>2016-08-02 07:10:49 +0000
committerwww <iki-www@freedesktop.org>2016-08-02 07:10:49 +0000
commit6262a6d596e9d4856116bcc2e64b6aec49d1d6b4 (patch)
treec7cc8ca9cf8575add0fe3c4a008b057c33f83bdb /Software/Beignet/howto
parent7bfb87635b7628156e64feddce01a454317e3813 (diff)
Diffstat (limited to 'Software/Beignet/howto')
-rw-r--r--Software/Beignet/howto/cross-compiler-howto.mdwn76
1 files changed, 73 insertions, 3 deletions
diff --git a/Software/Beignet/howto/cross-compiler-howto.mdwn b/Software/Beignet/howto/cross-compiler-howto.mdwn
index 535cd9aa..758d3b3f 100644
--- a/Software/Beignet/howto/cross-compiler-howto.mdwn
+++ b/Software/Beignet/howto/cross-compiler-howto.mdwn
@@ -7,6 +7,8 @@ and OpenCL kernels for a target machine (embedded/handheld devices) in a
host machine with the help of cross compiler, and also the large-size-reduced
Beignet driver package for the target machine.
+Key part of yocto receipt is shown as an example.
+
Build Beignet with a cross compiler
-----------------------------------
@@ -17,6 +19,10 @@ configure Beignet with cmake.
Beignet depends on llvm+clang, this option refers to the path of llvm-config,
llvm-as, llvm-link and clang in the cross compiler environment.
+ Please ensure that llvm-config, llvm-as, llvm-link and clang are in the same
+ directory. Please also make sure 'your_llvm_install_dir/llvm-config --libdir'
+ and 'your_llvm_install_dir/llvm-config --includedir' print the right output.
+
- CMAKE_SKIP_RPATH
Some cross compiler systems forbid the usage of rpath in binaries/libraries,
set this option to be TRUE.
@@ -26,8 +32,30 @@ configure Beignet with cmake.
of Intel Ivybridge GPU, and 0x0f31 is Intel Baytrail GPU. The information can
be queried with command 'lspci -n'.
-- CMAKE_INSTALL_PREFIX
- This option controls the prefix of installation path.
+- CMAKE_INSTALL_PREFIX and BEIGNET_INSTALL_DIR
+ These two options control the installation path.
+
+
+To build Beignet with yocto, the receipt looks like:
+
+ S = "${WORKDIR}/git"
+ BEIGNET_BUILD_DIR = "${S}/build"
+ do_configure() {
+ mkdir -p ${BEIGNET_BUILD_DIR}
+ cd ${BEIGNET_BUILD_DIR}
+ cmake \
+ .. \
+ -DLLVM_INSTALL_DIR=${TMPDIR}/sysroots/baytraili/usr/bin/ \
+ -DCMAKE_INSTALL_PREFIX=/usr/ \
+ -DBEIGNET_INSTALL_DIR=/usr/lib/ \
+ -DCMAKE_SKIP_RPATH=TRUE \
+ -DGEN_PCI_ID=0x0f31
+ }
+ do_compile() {
+ cd ${BEIGNET_BUILD_DIR}
+ oe_runmake
+ }
+
Distribution of large-size-reduced Beignet driver package
---------------------------------------------------------
@@ -37,7 +65,49 @@ provide only the OpenCL runtime library without OpenCL compiler, and only the
executable binary kernel is supported on such devices.
It means that just distribute libcl.so and libgbeinterp.so (~320k in total after strip)
-are enough for OpenCL embeded profile in the target machine.
+are enough for OpenCL embeded profile in the target machine. The whole Beignet
+driver set can be separated into several packages for different usage.
+
+
+Take yocto as an example, the receipt looks like:
+
+ SYSROOT_PREPROCESS_FUNCS += "beignet_sysroot_preprocess"
+ beignet_sysroot_preprocess() {
+ install -d ${SYSROOT_DESTDIR}${bindir}
+ install -m 0755 ${BEIGNET_BUILD_DIR}/backend/src/gbe_bin_generater ${SYSROOT_DESTDIR}${bindir}
+ }
+ do_install() {
+ cd ${BEIGNET_BUILD_DIR}
+ oe_runmake DESTDIR=${D} install
+
+ #install OpenCL offline compiler
+ install -d ${D}${bindir}
+ install -m 0755 ${BEIGNET_BUILD_DIR}/backend/src/gbe_bin_generater ${D}${bindir}
+
+ #install utest
+ install -d ${D}${bindir}/beignet
+ install -d ${D}${bindir}/beignet/include
+ install -m 0755 ${BEIGNET_BUILD_DIR}/utests/utest_run ${D}${bindir}/beignet
+ install -m 0755 ${S}/setenv.sh ${D}${bindir}/beignet
+ install -m 0644 ${S}/kernels/*.cl ${D}${bindir}/beignet
+ install -m 0644 ${S}/kernels/*.bmp ${D}${bindir}/beignet
+ install -m 0644 ${S}/kernels/compiler_ceil.bin ${D}${bindir}/beignet
+ install -m 0644 ${S}/kernels/runtime_compile_link.h ${D}${bindir}/beignet
+ install -m 0644 ${S}/kernels/include/runtime_compile_link_inc.h ${D}${bindir}/beignet/include/runtime_compile_link_inc.h
+ install -d ${D}${libdir}
+ install -m 0644 ${BEIGNET_BUILD_DIR}/utests/libutests.so ${D}${libdir}
+ }
+ do_install_append() {
+ rm -rf ${D}${sysconfdir}
+ }
+ PACKAGES += "${PN}-compiler ${PN}-test"
+ FILES_${PN} = "${libdir}/libcl.so ${libdir}/libgbeinterp.so"
+ FILES_${PN}-compiler = "${bindir}/gbe_bin_generater ${libdir}/libgbe.so ${libdir}/beignet.bc ${libdir}/beignet.pch ${libdir}/ocl_stdlib
+ .h ${libdir}/include/"
+ FILES_${PN}-dev = "${includedir}/CL/"
+ FILES_${PN}-test = "${bindir}/beignet/"
+ FILES_${PN}-test += "${libdir}/libutests.so"
+
Build OpenCL kernels with OpenCL offline compiler
-------------------------------------------------