[oe-commits] David Kozub : cmake-2.8.2: Add recipe for non-native cmake 2.8.2.

git version control git at git.openembedded.org
Thu Aug 19 05:50:56 UTC 2010


Module: openembedded.git
Branch: org.openembedded.dev
Commit: d0f8c51b166e16aea809cb396ed3b4200266a5e1
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=d0f8c51b166e16aea809cb396ed3b4200266a5e1

Author: David Kozub <zub at linux.fjfi.cvut.cz>
Date:   Thu Jul 29 08:11:36 2010 +0000

cmake-2.8.2: Add recipe for non-native cmake 2.8.2.

Tested on om-gta02:
* builds trivial C and C++ executable
* "include(FindPkgConfig)" correctly finds the cmake module
* pkg_check_modules correctly invokes pkg-config
* ccmake works

Also tested on babbage by Eduardo Lima (thanks for help).

Unfortunately, useful doc is not packaged. The reason is that the doc
is produced by running the built binaries. Changing this would probably
require a complex patch of the build process. Luckily, the doc is
still contained in the original binaries, so it's accessible on target
by e.g. cmake --help-full.

Signed-off-by: David Kozub <zub at linux.fjfi.cvut.cz>
Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>

---

 .../cmake-2.8.2/dont-run-cross-binaries.patch      |   13 ++++++
 recipes/cmake/cmake_2.8.2.bb                       |   46 ++++++++++++++++++++
 2 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/recipes/cmake/cmake-2.8.2/dont-run-cross-binaries.patch b/recipes/cmake/cmake-2.8.2/dont-run-cross-binaries.patch
new file mode 100644
index 0000000..4a006f9
--- /dev/null
+++ b/recipes/cmake/cmake-2.8.2/dont-run-cross-binaries.patch
@@ -0,0 +1,13 @@
+diff -ru cmake-2.8.2.orig/CMakeLists.txt cmake-2.8.2/CMakeLists.txt
+--- cmake-2.8.2.orig/CMakeLists.txt	2010-07-28 00:48:42.000000000 +0200
++++ cmake-2.8.2/CMakeLists.txt	2010-07-28 01:05:17.000000000 +0200
+@@ -518,7 +518,8 @@
+ 
+ # build the remaining subdirectories
+ ADD_SUBDIRECTORY(Source)
+-ADD_SUBDIRECTORY(Utilities)
++# Come on! Running the cross-binaries on host is not a good idea.
++#ADD_SUBDIRECTORY(Utilities)
+ ADD_SUBDIRECTORY(Tests)
+ 
+ # add a test
diff --git a/recipes/cmake/cmake_2.8.2.bb b/recipes/cmake/cmake_2.8.2.bb
new file mode 100644
index 0000000..41ba813
--- /dev/null
+++ b/recipes/cmake/cmake_2.8.2.bb
@@ -0,0 +1,46 @@
+require cmake.inc
+
+inherit cmake
+
+DEPENDS += "curl expat zlib"
+
+SRC_URI += "file://dont-run-cross-binaries.patch"
+
+# Strip ${prefix} from ${docdir}, set result into docdir_stripped
+python () {
+    prefix=bb.data.getVar("prefix", d, 1)
+    docdir=bb.data.getVar("docdir", d, 1)
+
+    if not docdir.startswith(prefix):
+	raise bb.build.FuncFailed('docdir must contain prefix as its prefix')
+
+    docdir_stripped = docdir[len(prefix):]
+    if len(docdir_stripped) > 0 and docdir_stripped[0] == '/':
+	docdir_stripped = docdir_stripped[1:]
+
+    bb.data.setVar("docdir_stripped", docdir_stripped, d)
+}
+
+EXTRA_OECMAKE=" \
+# Override default "doc" (this is relative to ${prefix})
+    -DCMAKE_DOC_DIR=${docdir_stripped}/cmake-2.8 \
+# Using system libs spares us some cmake cross trouble.
+    -DCMAKE_USE_SYSTEM_LIBRARIES=1 \
+# This is compiler & target dependant, but it seems cmake does not in fact use this value.
+    -DKWSYS_CHAR_IS_SIGNED=1 \
+# This disables large file support. Hopefully nobody processes >2G files on the target.
+# If you want to enable this, add -DWKSYS_LFS_WORKS=1
+    -DKWSYS_LFS_DISABLE=1 \
+"
+
+SRC_URI[md5sum] = "8c967d5264657a798f22ee23976ff0d9"
+SRC_URI[sha256sum] = "766ff169af798599d7dd42e41e9f4533d73942a2bb928235115412dce5b81406"
+
+FILES_${PN} += "${datadir}/cmake-2.8"
+
+# The doc is quite... absent. Just the licensing information is there.
+# Real doc was nuked by dont-run-cross-binaries.patch. Fixing the doc
+# generation would be quite complicated, as cmake build process innovatively
+# runs the generated binaries to extract help contained in them.
+# -> Fixing this is probably not worth it.
+FILES_${PN}-doc += "${docdir}/cmake-2.8"





More information about the Openembedded-commits mailing list