| Submitter | Saul Wold |
|---|---|
| Date | May 10, 2011, 5:26 a.m. |
| Message ID | <c0f7ebbe59b32dace3ae8a4a5dab8622b09f895b.1305004776.git.sgw@linux.intel.com> |
| Download | mbox | patch |
| Permalink | /patch/3579/ |
| State | New, archived |
| Headers | show |
Comments
On Mon, 2011-05-09 at 22:26 -0700, Saul Wold wrote: > From: Otavio Salvador <otavio@ossystems.com.br> > > Sync with OE at 3b7d83362027fde4f6850533ab83277d95dda961 however > without changing the way of generating the toolchain file and making > it branding agnostic. > > Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> > --- > meta/classes/cmake.bbclass | 19 +++++++++++++++++-- > 1 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass > index a4b0c12..ac7bd62 100644 > --- a/meta/classes/cmake.bbclass > +++ b/meta/classes/cmake.bbclass > @@ -24,15 +24,23 @@ 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) > +} Firstly, I don't understand why the "not bb.data.inherits_class('cross', d)" part of the condition is there as I can't think of a case we inherit native and cross. Secondly, can you not just set OECMAKE_RPATH = "${libdir}" in native.bbclass? I dislike having anonymous python doing simple things we could do more simply although I can understand the desire to do this in the same file. Perhaps we should use: OECMAKE_RPATH = "" OECMAKE_RPATH_virtclass-native = "${libdir}" which assumes anything would use BBCLASSEXTEND but we're encouraging that strongly anyway. We could unconditionally make native.bbclass set the override too... Cheers, Richard > cmake_do_generate_toolchain_file() { > cat > ${WORKDIR}/toolchain.cmake <<EOF > # CMake system name must be something like "Linux". > # This is important for cross-compiling. > set( CMAKE_SYSTEM_NAME `echo ${SDK_OS} | sed 's/^./\u&/'` ) > +set( CMAKE_SYSTEM_PROCESSOR ${TARGET_ARCH} ) > set( CMAKE_C_COMPILER ${OECMAKE_C_COMPILER} ) > set( CMAKE_CXX_COMPILER ${OECMAKE_CXX_COMPILER} ) > -set( CMAKE_C_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "poky CFLAGS" ) > -set( CMAKE_CXX_FLAGS "${OECMAKE_CXX_FLAGS}" CACHE STRING "poky CXXFLAGS" ) > +set( CMAKE_C_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "CFLAGS" ) > +set( CMAKE_CXX_FLAGS "${OECMAKE_CXX_FLAGS}" CACHE STRING "CXXFLAGS" ) > set( CMAKE_C_FLAGS_RELEASE "${OECMAKE_C_FLAGS_RELEASE}" CACHE STRING "CFLAGS for release" ) > set( CMAKE_CXX_FLAGS_RELEASE "${OECMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "CXXFLAGS for release" ) > > @@ -43,6 +51,13 @@ set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) > set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) > set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) > > +# Use qt.conf settings > +set( ENV{QT_CONF_PATH} ${WORKDIR}/qt.conf ) > + > +# We need to set the rpath to the correct directory as cmake does not provide any > +# directory as rpath by default > +set( CMAKE_INSTALL_RPATH ${OECMAKE_RPATH} ) > + > # Use native cmake modules > set( CMAKE_MODULE_PATH ${STAGING_DATADIR}/cmake/Modules/ ) > EOF
On Tue, May 10, 2011 at 05:50, Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
...
> We could unconditionally make native.bbclass set the override too...
I can revert this part of this and provide a patch to native.bbclass for it.
Patch
diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass index a4b0c12..ac7bd62 100644 --- a/meta/classes/cmake.bbclass +++ b/meta/classes/cmake.bbclass @@ -24,15 +24,23 @@ 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() { cat > ${WORKDIR}/toolchain.cmake <<EOF # CMake system name must be something like "Linux". # This is important for cross-compiling. set( CMAKE_SYSTEM_NAME `echo ${SDK_OS} | sed 's/^./\u&/'` ) +set( CMAKE_SYSTEM_PROCESSOR ${TARGET_ARCH} ) set( CMAKE_C_COMPILER ${OECMAKE_C_COMPILER} ) set( CMAKE_CXX_COMPILER ${OECMAKE_CXX_COMPILER} ) -set( CMAKE_C_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "poky CFLAGS" ) -set( CMAKE_CXX_FLAGS "${OECMAKE_CXX_FLAGS}" CACHE STRING "poky CXXFLAGS" ) +set( CMAKE_C_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "CFLAGS" ) +set( CMAKE_CXX_FLAGS "${OECMAKE_CXX_FLAGS}" CACHE STRING "CXXFLAGS" ) set( CMAKE_C_FLAGS_RELEASE "${OECMAKE_C_FLAGS_RELEASE}" CACHE STRING "CFLAGS for release" ) set( CMAKE_CXX_FLAGS_RELEASE "${OECMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "CXXFLAGS for release" ) @@ -43,6 +51,13 @@ set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) +# Use qt.conf settings +set( ENV{QT_CONF_PATH} ${WORKDIR}/qt.conf ) + +# We need to set the rpath to the correct directory as cmake does not provide any +# directory as rpath by default +set( CMAKE_INSTALL_RPATH ${OECMAKE_RPATH} ) + # Use native cmake modules set( CMAKE_MODULE_PATH ${STAGING_DATADIR}/cmake/Modules/ ) EOF