[yocto] Exposure of Shared Library Functionality through eSDK - missing include file

Martin Siegumfeldt mns at gomspace.com
Tue Feb 13 10:26:00 PST 2018


After a bit of further study, it turns out that adding the explicit dependency to the recipe:


DEPENDS = "libisl"


resolves the issue.


Br,

Martin

________________________________
From: Martin Siegumfeldt
Sent: Tuesday, February 13, 2018 2:10:48 PM
To: yocto at yoctoproject.org
Subject: Exposure of Shared Library Functionality through eSDK - missing include file

Hi,

We are implementing certain logic within a shared library and aims at exposing this through the extensible SDK, unfortunately without success so far. The library and it's associated header file is successfully added to the image and appears also present from the eSDK:

martin at dell:~/gomspace_sdk$ find . -name libgsisl.so
./tmp/sysroots/nanomind-ultra-zu6eg-zcu102/usr/lib/libgsisl.so
./tmp/work/aarch64-gomspace-linux/libisl/develop-r0/sysroot-destdir/usr/lib/libgsisl.so
./tmp/sysroots-components/aarch64/libisl/usr/lib/libgsisl.so
martin at dell:~/gomspace_sdk$ find . -name isl.h
./tmp/sysroots/nanomind-ultra-zu6eg-zcu102/usr/include/gs/isl/isl.h
./tmp/work/aarch64-gomspace-linux/libisl/develop-r0/sysroot-destdir/usr/include/gs/isl/isl.h
./tmp/sysroots-components/aarch64/libisl/usr/include/gs/isl/isl.h
martin at dell:~/gomspace_sdk$

For testing, I have implemented a small application, built through CMake:

martin at dell:~/work/xsllibtest$ cat CMakeLists.txt
add_executable (xsllibtest xsllibtest.c)
target_link_libraries (xsllibtest gsisl)

with the library- and test application build natively the library call works on my host machine, however the cross-compilation fails to find the header file:

martin at dell:~/gomspace_sdk$ devtool add xsllibtest ~/work/xsllibtest/
NOTE: Starting bitbake server...
NOTE: Starting bitbake server...
NOTE: Starting bitbake server...
NOTE: Recipe /home/martin/gomspace_sdk/workspace/recipes/xsllibtest/xsllibtest.bb has been automatically created; further editing may be required to make it fully functional
martin at dell:~/gomspace_sdk$ cat workspace/recipes/xsllibtest/xsllibtest.bb
# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional.
# (Feel free to remove these comments when editing.)

# Unable to find any files that looked like license statements. Check the accompanying
# documentation and source headers and set LICENSE and LIC_FILES_CHKSUM accordingly.
#
# NOTE: LICENSE is being set to "CLOSED" to allow you to at least start building - if
# this is not accurate with respect to the licensing of the software being built (it
# will not be in most cases) you must specify the correct value before using this
# recipe for anything other than initial testing/development!
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""

# No information for SRC_URI yet (only an external source tree was specified)
SRC_URI = ""

inherit cmake

# Specify any options you want to pass to cmake using EXTRA_OECMAKE:
EXTRA_OECMAKE = ""

martin at dell:~/gomspace_sdk$ cat workspace/appends/xsllibtest.bbappend
inherit externalsrc
EXTERNALSRC = "/home/martin/work/xsllibtest"


during the compilation:
.
.
.
Log data follows:
| DEBUG: Executing python function externalsrc_compile_prefunc
| NOTE: xsllibtest: compiling from external source tree /home/martin/work/xsllibtest
| DEBUG: Python function externalsrc_compile_prefunc finished
| DEBUG: Executing shell function do_compile
| NOTE: VERBOSE=1 cmake --build /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0/ -- -j 8
| /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/recipe-sysroot-native/usr/bin/cmake -H/home/martin/work/xsllibtest -B/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0 --check-build-system CMakeFiles/Makefile.cmake 0
| /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/recipe-sysroot-native/usr/bin/cmake -E cmake_progress_start /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0/CMakeFiles /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0/CMakeFiles/progress.mar
ks
| make -f CMakeFiles/Makefile2 all
| make[1]: Entering directory '/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0'
| make -f CMakeFiles/xsllibtest.dir/build.make CMakeFiles/xsllibtest.dir/depend
| make[2]: Entering directory '/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0'
| cd /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0 && /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/recipe-sysroot-native/usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/martin/work/xsllibtest /home/martin/work/xsllibtest /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace
-linux/xsllibtest/1.0-r0/xsllibtest-1.0 /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0 /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0/CMakeFiles/xsllibtest.dir/DependInfo.cmake --color=
| Dependee "/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0/CMakeFiles/xsllibtest.dir/DependInfo.cmake" is newer than depender "/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0/CMakeFiles/xsllibtest.dir/depend.internal".
| Dependee "/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0/CMakeFiles/xsllibtest.dir/depend.internal".
| Scanning dependencies of target xsllibtest
| make[2]: Leaving directory '/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0'
| make -f CMakeFiles/xsllibtest.dir/build.make CMakeFiles/xsllibtest.dir/build
| make[2]: Entering directory '/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0'
| [ 50%] Building C object CMakeFiles/xsllibtest.dir/xsllibtest.c.o
| /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-gomspace-linux/aarch64-gomspace-linux-gcc   --sysroot=/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/recipe-sysroot  -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0=/usr/src/debug/xsllibtest/1.0-r0 -fdebug-prefix-map=/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/recipe-sysroot-native= -fdebug-prefix-map=/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/recipe-sysroot=    --sysroot=/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/recipe-sysroot   -o CMakeFiles/xsllibtest.dir/xsllibtest.c.o   -c /home/martin/work/xsllibtest/xsllibtest.c
| /home/martin/work/xsllibtest/xsllibtest.c:1:10: fatal error: gs/isl/isl.h: No such file or directory
|  #include <gs/isl/isl.h>
|           ^~~~~~~~~~~~~~
| compilation terminated.
| make[2]: *** [CMakeFiles/xsllibtest.dir/build.make:66: CMakeFiles/xsllibtest.dir/xsllibtest.c.o] Error 1
| make[2]: Leaving directory '/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0'
| make[1]: *** [CMakeFiles/Makefile2:71: CMakeFiles/xsllibtest.dir/all] Error 2
| make[1]: Leaving directory '/home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/xsllibtest-1.0'
| make: *** [Makefile:87: all] Error 2
| WARNING: exit code 2 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /home/martin/gomspace_sdk/tmp/work/aarch64-gomspace-linux/xsllibtest/1.0-r0/temp/log.do_compile.17008)
ERROR: Task (/home/martin/gomspace_sdk/workspace/recipes/xsllibtest/xsllibtest.bb:do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 464 tasks of which 460 didn't need to be rerun and 1 failed.

Since the header file resides with the standard '/usr/include' location I assume no explicit include path configuration is needed (I have tried setting this explicitly from CMakeLists.txt with the same outcome).

Am I missing something obvious here? Configure/compilation log files attached....

Thanks,
Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20180213/3a92d05a/attachment.html>


More information about the yocto mailing list