[oe] [PATCH] cmake-2.8.2: Add recipe for non-native cmake 2.8.2.
David Kozub
zub at linux.fjfi.cvut.cz
Thu Jul 29 18:11:36 UTC 2010
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>
---
.../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(-)
create mode 100644 recipes/cmake/cmake-2.8.2/dont-run-cross-binaries.patch
create mode 100644 recipes/cmake/cmake_2.8.2.bb
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"
--
1.7.1
More information about the Openembedded-devel
mailing list