]> code.ossystems Code Review - openembedded-core.git/commitdiff
cmake.bbclass: call cmake with a relative path
authorThomas Witt <Thomas.Witt@bmw.de>
Mon, 22 Aug 2016 14:27:11 +0000 (16:27 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 23 Aug 2016 16:44:18 +0000 (17:44 +0100)
CMake wants a relative path for CMAKE_INSTALL_*DIR, an absolute path
breaks cross-compilation. This fact is documented in the following
ticket: https://cmake.org/Bug/view.php?id=14367

$sysconfdir and $localstatedir are not relative to $prefix, so they are
still set as absolute paths. With his change ${PROJECT}Targets.cmake
that are generated by cmakes "export" function will contain relative
paths instead of absolute ones.

Signed-off-by: Thomas Witt <Thomas.Witt@bmw.de>
Signed-off-by: Clemens Lang <clemens.lang@bmw-carit.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/cmake.bbclass

index b18152a8eddd7d93c57d2327d94b53a5f52af052..5203d8aca1698560b3f1082727104208f0ca4434 100644 (file)
@@ -108,15 +108,15 @@ cmake_do_configure() {
          ${OECMAKE_SITEFILE} \
          ${OECMAKE_SOURCEPATH} \
          -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \
-         -DCMAKE_INSTALL_BINDIR:PATH=${bindir} \
-         -DCMAKE_INSTALL_SBINDIR:PATH=${sbindir} \
-         -DCMAKE_INSTALL_LIBEXECDIR:PATH=${libexecdir} \
+         -DCMAKE_INSTALL_BINDIR:PATH=${@os.path.relpath(d.getVar('bindir', True), d.getVar('prefix', True))} \
+         -DCMAKE_INSTALL_SBINDIR:PATH=${@os.path.relpath(d.getVar('sbindir', True), d.getVar('prefix', True))} \
+         -DCMAKE_INSTALL_LIBEXECDIR:PATH=${@os.path.relpath(d.getVar('libexecdir', True), d.getVar('prefix', True))} \
          -DCMAKE_INSTALL_SYSCONFDIR:PATH=${sysconfdir} \
-         -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${sharedstatedir} \
+         -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${@os.path.relpath(d.getVar('sharedstatedir', True), d.  getVar('prefix', True))} \
          -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=${localstatedir} \
-         -DCMAKE_INSTALL_LIBDIR:PATH=${libdir} \
-         -DCMAKE_INSTALL_INCLUDEDIR:PATH=${includedir} \
-         -DCMAKE_INSTALL_DATAROOTDIR:PATH=${datadir} \
+         -DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir', True), d.getVar('prefix', True))} \
+         -DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir', True), d.getVar('prefix', True))} \
+         -DCMAKE_INSTALL_DATAROOTDIR:PATH=${@os.path.relpath(d.getVar('datadir', True), d.getVar('prefix', True))} \
          -DCMAKE_INSTALL_SO_NO_EXE=0 \
          -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
          -DCMAKE_VERBOSE_MAKEFILE=1 \