On 04.05.2011 18:55, Simon Busch wrote: > In the default configuration cmake does not set a rpath for its builded > binaries. This > leads to errors at runtime when the binaries not find their needed runtime > libraries. > Please note that this is only done for recipes inheriting the native class! > > Signed-off-by: Simon Busch <[email protected]> > --- > classes/cmake.bbclass | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/classes/cmake.bbclass b/classes/cmake.bbclass > index 40fadea..e8e485a 100644 > --- a/classes/cmake.bbclass > +++ b/classes/cmake.bbclass > @@ -24,6 +24,13 @@ OECMAKE_CXX_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} > ${TARGET_CPPFLAGS} -f > OECMAKE_C_FLAGS_RELEASE ?= "${SELECTED_OPTIMIZATION} -DNDEBUG" > OECMAKE_CXX_FLAGS_RELEASE ?= "${SELECTED_OPTIMIZATION} -DNDEBUG" > > +OECMAKE_RPATH ?= "" > +python __anonymous() { > + # Only set OECMAKE_RPATH if we build a native recipe > + if bb.data.inherits_class('native', d) and not > bb.data.inherits_class('cross', d): > + bb.data.setVar('OECMAKE_RPATH', '${libdir}', d) > +} > + > cmake_do_generate_toolchain_file() { > # CMake system name must be something like "Linux". > # This is important for cross-compiling. > @@ -44,6 +51,10 @@ cmake_do_generate_toolchain_file() { > echo "set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )" >> > ${WORKDIR}/toolchain.cmake > # Use qt.conf settings > echo "set( ENV{QT_CONF_PATH} ${WORKDIR}/qt.conf )" >> > ${WORKDIR}/toolchain.cmake > + > +# We need to set the rpath to the correct directory as cmake does not > provide any > +# directory as rpath by default > + echo "set( CMAKE_INSTALL_RPATH ${OECMAKE_RPATH} )" >> > ${WORKDIR}/toolchain.cmake > } > > addtask generate_toolchain_file after do_patch before do_configure
To proof this: I tested it with native and non-native recipes (all builded with cmake.bbclass) and grep'ed through the resulting binaries afterwards to be sure there is a rpath in the native ones (and the correct one) and no one in the non native recipes: morphis@nirvana ...root/tmp/sysroots/x86_64-linux/usr/bin % objdump -x generatorrunner | grep RPATH RPATH $ORIGIN/../lib:$ORIGIN/../lib morphis@nirvana ...libshiboken-1.0.2-r0.0/package/usr/lib % pwd /home/morphis/oe/buildroot/tmp/work/armv7a-oe-linux-gnueabi/libshiboken-1.0.2-r0.0/package/usr/lib morphis@nirvana ...libshiboken-1.0.2-r0.0/package/usr/lib % objdump -x libshiboken-python2.6.so.1.0.2 | grep RPATH 1 morphis@nirvana ...libshiboken-1.0.2-r0.0/package/usr/lib % [...] regards, Simon _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
