Patchwork [6/8] cmake: add nativesdk and target versions

login
register
mail settings
Submitter Otavio Salvador
Date July 8, 2011, 1:47 p.m.
Message ID <4ed38d13d68e132c90e0c41cb9584c414334e01c.1310132765.git.otavio@ossystems.com.br>
Download mbox | patch
Permalink /patch/7243/
State New, archived
Headers show

Comments

Otavio Salvador - July 8, 2011, 1:47 p.m.
Adds a recipe that provides the nativesdk and target versions of
CMake.

This recipe is based on code from OpenEmbeeded (rev
b1f2e1501c19540617a829b37415c0616101c7ad).

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
 .../cmake/cmake/dont-run-cross-binaries.patch      |   22 ++++++++++
 meta/recipes-devtools/cmake/cmake_2.8.3.bb         |   45 ++++++++++++++++++++
 2 files changed, 67 insertions(+), 0 deletions(-)
 create mode 100644 meta/recipes-devtools/cmake/cmake/dont-run-cross-binaries.patch
 create mode 100644 meta/recipes-devtools/cmake/cmake_2.8.3.bb
Richard Purdie - July 8, 2011, 3:28 p.m.
On Fri, 2011-07-08 at 13:47 +0000, Otavio Salvador wrote:
> Adds a recipe that provides the nativesdk and target versions of
> CMake.
> 
> This recipe is based on code from OpenEmbeeded (rev
> b1f2e1501c19540617a829b37415c0616101c7ad).
> 
> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
> ---
[...]

> +# FIXME: Hack due gcc-crosssdk not being able to detect those automatically
> +CXXFLAGS_virtclass-nativesdk += " \
> +   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++ \
> +   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++/${TARGET_SYS} \
> +   "

I get worried when I see things like this :(

Has anyone attempted to work out why gcc-crosssdk can't locate c++
include files?

Cheers,

Richard
Otavio Salvador - July 8, 2011, 3:49 p.m.
On Fri, Jul 8, 2011 at 12:28, Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
> On Fri, 2011-07-08 at 13:47 +0000, Otavio Salvador wrote:
>> Adds a recipe that provides the nativesdk and target versions of
>> CMake.
>>
>> This recipe is based on code from OpenEmbeeded (rev
>> b1f2e1501c19540617a829b37415c0616101c7ad).
>>
>> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
>> ---
> [...]
>
>> +# FIXME: Hack due gcc-crosssdk not being able to detect those automatically
>> +CXXFLAGS_virtclass-nativesdk += " \
>> +   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++ \
>> +   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++/${TARGET_SYS} \
>> +   "
>
> I get worried when I see things like this :(
>
> Has anyone attempted to work out why gcc-crosssdk can't locate c++
> include files?

Not sure why but this is the same things as done on qt4-tools-nativesdk.
Paul Eggleton - July 8, 2011, 4:08 p.m.
On Friday 08 July 2011 16:49:12 Otavio Salvador wrote:
> >> +# FIXME: Hack due gcc-crosssdk not being able to detect those
> >> automatically +CXXFLAGS_virtclass-nativesdk += " \
> >> +   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++ \
> >> +   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++/${TARGET_SYS}
> >> \ +   "
> > 
> > I get worried when I see things like this :(
> > 
> > Has anyone attempted to work out why gcc-crosssdk can't locate c++
> > include files?
> 
> Not sure why but this is the same things as done on qt4-tools-nativesdk.

Yes, and I don't like it there either. Suggestions on fixing this would be 
welcome - in the time I spent trying to figure out why it wasn't working (some 
months ago) I couldn't find the cause.

Cheers,
Paul
Richard Purdie - July 8, 2011, 4:22 p.m.
On Fri, 2011-07-08 at 17:08 +0100, Paul Eggleton wrote:
> On Friday 08 July 2011 16:49:12 Otavio Salvador wrote:
> > >> +# FIXME: Hack due gcc-crosssdk not being able to detect those
> > >> automatically +CXXFLAGS_virtclass-nativesdk += " \
> > >> +   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++ \
> > >> +   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++/${TARGET_SYS}
> > >> \ +   "
> > > 
> > > I get worried when I see things like this :(
> > > 
> > > Has anyone attempted to work out why gcc-crosssdk can't locate c++
> > > include files?
> > 
> > Not sure why but this is the same things as done on qt4-tools-nativesdk.
> 
> Yes, and I don't like it there either. Suggestions on fixing this would be 
> welcome - in the time I spent trying to figure out why it wasn't working (some 
> months ago) I couldn't find the cause.

Ok, I'm not happy but I guess this can go as is for now.

Paul: Can you open a bug against that being needed please?

So I'll merge libarchive and the cmake updates...

Cheers,

Richard
Paul Eggleton - July 8, 2011, 4:36 p.m.
On Friday 08 July 2011 17:22:31 Richard Purdie wrote:
> On Fri, 2011-07-08 at 17:08 +0100, Paul Eggleton wrote:
> > Yes, and I don't like it there either. Suggestions on fixing this would
> > be welcome - in the time I spent trying to figure out why it wasn't
> > working (some months ago) I couldn't find the cause.
> 
> Ok, I'm not happy but I guess this can go as is for now.
> 
> Paul: Can you open a bug against that being needed please?

Done:
http://bugzilla.pokylinux.org/show_bug.cgi?id=1231

Cheers,
Paul

Patch

diff --git a/meta/recipes-devtools/cmake/cmake/dont-run-cross-binaries.patch b/meta/recipes-devtools/cmake/cmake/dont-run-cross-binaries.patch
new file mode 100644
index 0000000..4eb1794
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake/dont-run-cross-binaries.patch
@@ -0,0 +1,22 @@ 
+cmake: don't run cross-binaries on host machine
+
+When doing the cross build we obviously cannot run those binaries on
+host since they can be binary incompatible.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+
+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/meta/recipes-devtools/cmake/cmake_2.8.3.bb b/meta/recipes-devtools/cmake/cmake_2.8.3.bb
new file mode 100644
index 0000000..d1048ed
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake_2.8.3.bb
@@ -0,0 +1,45 @@ 
+require cmake.inc
+
+inherit cmake
+
+DEPENDS += "curl expat zlib libarchive ncurses"
+
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://dont-run-cross-binaries.patch"
+
+SRC_URI[md5sum] = "a76a44b93acf5e3badda9de111385921"
+SRC_URI[sha256sum] = "689ed02786b5cefa5515c7716784ee82a82e8ece6be5a3d629ac3cc0c05fc288"
+
+# 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=" \
+    -DCMAKE_DOC_DIR=${docdir_stripped}/cmake-${CMAKE_MAJOR_VERSION} \
+    -DCMAKE_USE_SYSTEM_LIBRARIES=1 \
+    -DKWSYS_CHAR_IS_SIGNED=1 \
+    ${@base_contains('DISTRO_FEATURES', 'largefile', '-DKWSYS_LFS_WORKS=1', '-DKWSYS_LFS_DISABLE=1', d)} \
+"
+
+# FIXME: Hack due gcc-crosssdk not being able to detect those automatically
+CXXFLAGS_virtclass-nativesdk += " \
+   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++ \
+   -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++/${TARGET_SYS} \
+   "
+
+FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION}"
+FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}"
+
+BBCLASSEXTEND = "nativesdk"