diff options
| author | Qing He <qing.he@intel.com> | 2010-08-20 10:57:48 +0800 |
|---|---|---|
| committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-08-31 17:19:53 +0100 |
| commit | be291999defd665ca2e9223f1c1dc765f72eef48 (patch) | |
| tree | 4da33a835dc6e2b1ca008377208bb99463c55138 /meta/classes/cmake.bbclass | |
| parent | a0b72c297193d7cc3edb5a36bb8acbc5190537ed (diff) | |
| download | poky-be291999defd665ca2e9223f1c1dc765f72eef48.tar.gz | |
cmake.bbclass: sync from openembedded
this fixes:
- toolchain detection error (e.g. ar and ranlib)
changes from openembedded:
- reformatting
- cmake modules search path
- use 'cat <<EOF' instead of echos for clarity
Signed-off-by: Qing He <qing.he@intel.com>
Diffstat (limited to 'meta/classes/cmake.bbclass')
| -rw-r--r-- | meta/classes/cmake.bbclass | 99 |
1 files changed, 51 insertions, 48 deletions
diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass index 74e242d738..a4b0c126a2 100644 --- a/meta/classes/cmake.bbclass +++ b/meta/classes/cmake.bbclass | |||
| @@ -25,69 +25,72 @@ OECMAKE_C_FLAGS_RELEASE ?= "${SELECTED_OPTIMIZATION} -DNDEBUG" | |||
| 25 | OECMAKE_CXX_FLAGS_RELEASE ?= "${SELECTED_OPTIMIZATION} -DNDEBUG" | 25 | OECMAKE_CXX_FLAGS_RELEASE ?= "${SELECTED_OPTIMIZATION} -DNDEBUG" |
| 26 | 26 | ||
| 27 | cmake_do_generate_toolchain_file() { | 27 | cmake_do_generate_toolchain_file() { |
| 28 | cat > ${WORKDIR}/toolchain.cmake <<EOF | ||
| 28 | # CMake system name must be something like "Linux". | 29 | # CMake system name must be something like "Linux". |
| 29 | # This is important for cross-compiling. | 30 | # This is important for cross-compiling. |
| 30 | echo "set( CMAKE_SYSTEM_NAME" `echo ${SDK_OS} | sed 's/^./\u&/'` ")" > ${WORKDIR}/toolchain.cmake | 31 | set( CMAKE_SYSTEM_NAME `echo ${SDK_OS} | sed 's/^./\u&/'` ) |
| 31 | echo "set( CMAKE_C_COMPILER ${OECMAKE_C_COMPILER} )" >> ${WORKDIR}/toolchain.cmake | 32 | set( CMAKE_C_COMPILER ${OECMAKE_C_COMPILER} ) |
| 32 | echo "set( CMAKE_CXX_COMPILER ${OECMAKE_CXX_COMPILER} )" >> ${WORKDIR}/toolchain.cmake | 33 | set( CMAKE_CXX_COMPILER ${OECMAKE_CXX_COMPILER} ) |
| 33 | echo "set( CMAKE_C_FLAGS \"${OECMAKE_C_FLAGS}\" CACHE STRING \"OpenEmbedded CFLAGS\" )" >> ${WORKDIR}/toolchain.cmake | 34 | set( CMAKE_C_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "poky CFLAGS" ) |
| 34 | echo "set( CMAKE_CXX_FLAGS \"${OECMAKE_CXX_FLAGS}\" CACHE STRING \"OpenEmbedded CXXFLAGS\" )" >> ${WORKDIR}/toolchain.cmake | 35 | set( CMAKE_CXX_FLAGS "${OECMAKE_CXX_FLAGS}" CACHE STRING "poky CXXFLAGS" ) |
| 35 | echo "set( CMAKE_C_FLAGS_RELEASE \"${OECMAKE_C_FLAGS_RELEASE}\" CACHE STRING \"CFLAGS for release\" )" >> ${WORKDIR}/toolchain.cmake | 36 | set( CMAKE_C_FLAGS_RELEASE "${OECMAKE_C_FLAGS_RELEASE}" CACHE STRING "CFLAGS for release" ) |
| 36 | echo "set( CMAKE_CXX_FLAGS_RELEASE \"${OECMAKE_CXX_FLAGS_RELEASE}\" CACHE STRING \"CXXFLAGS for release\" )" >> ${WORKDIR}/toolchain.cmake | 37 | set( CMAKE_CXX_FLAGS_RELEASE "${OECMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "CXXFLAGS for release" ) |
| 37 | 38 | ||
| 38 | # only search in the paths provided (from openembedded) so cmake doesnt pick | 39 | # only search in the paths provided so cmake doesnt pick |
| 39 | # up libraries and tools from the native build machine | 40 | # up libraries and tools from the native build machine |
| 40 | echo "set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} )" >> ${WORKDIR}/toolchain.cmake | 41 | set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ) |
| 41 | echo "set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY )" >> ${WORKDIR}/toolchain.cmake | 42 | set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) |
| 42 | echo "set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )" >> ${WORKDIR}/toolchain.cmake | 43 | set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) |
| 43 | echo "set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )" >> ${WORKDIR}/toolchain.cmake | 44 | set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) |
| 45 | |||
| 44 | # Use native cmake modules | 46 | # Use native cmake modules |
| 45 | echo "set( CMAKE_MODULE_PATH ${STAGING_DATADIR}/cmake/Modules/ )" >> ${WORKDIR}/toolchain.cmake | 47 | set( CMAKE_MODULE_PATH ${STAGING_DATADIR}/cmake/Modules/ ) |
| 48 | EOF | ||
| 46 | } | 49 | } |
| 47 | 50 | ||
| 48 | addtask generate_toolchain_file after do_patch before do_configure | 51 | addtask generate_toolchain_file after do_patch before do_configure |
| 49 | 52 | ||
| 50 | cmake_do_configure() { | 53 | cmake_do_configure() { |
| 51 | if [ ${OECMAKE_BUILDPATH} ] | 54 | if [ ${OECMAKE_BUILDPATH} ] |
| 52 | then | 55 | then |
| 53 | mkdir -p ${OECMAKE_BUILDPATH} | 56 | mkdir -p ${OECMAKE_BUILDPATH} |
| 54 | cd ${OECMAKE_BUILDPATH} | 57 | cd ${OECMAKE_BUILDPATH} |
| 55 | fi | 58 | fi |
| 56 | 59 | ||
| 57 | # Just like autotools cmake can use a site file to cache result that need generated binaries to run | 60 | # Just like autotools cmake can use a site file to cache result that need generated binaries to run |
| 58 | if [ -e ${WORKDIR}/site-file.cmake ] ; then | 61 | if [ -e ${WORKDIR}/site-file.cmake ] ; then |
| 59 | OECMAKE_SITEFILE=" -C ${WORKDIR}/site-file.cmake" | 62 | OECMAKE_SITEFILE=" -C ${WORKDIR}/site-file.cmake" |
| 60 | else | 63 | else |
| 61 | OECMAKE_SITEFILE="" | 64 | OECMAKE_SITEFILE="" |
| 62 | fi | 65 | fi |
| 63 | 66 | ||
| 64 | cmake \ | 67 | cmake \ |
| 65 | ${OECMAKE_SITEFILE} \ | 68 | ${OECMAKE_SITEFILE} \ |
| 66 | ${OECMAKE_SOURCEPATH} \ | 69 | ${OECMAKE_SOURCEPATH} \ |
| 67 | -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \ | 70 | -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \ |
| 68 | -DCMAKE_INSTALL_SO_NO_EXE=0 \ | 71 | -DCMAKE_INSTALL_SO_NO_EXE=0 \ |
| 69 | -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \ | 72 | -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \ |
| 70 | -DCMAKE_VERBOSE_MAKEFILE=1 \ | 73 | -DCMAKE_VERBOSE_MAKEFILE=1 \ |
| 71 | ${EXTRA_OECMAKE} \ | 74 | ${EXTRA_OECMAKE} \ |
| 72 | -Wno-dev | 75 | -Wno-dev |
| 73 | } | 76 | } |
| 74 | 77 | ||
| 75 | cmake_do_compile() { | 78 | cmake_do_compile() { |
| 76 | if [ ${OECMAKE_BUILDPATH} ] | 79 | if [ ${OECMAKE_BUILDPATH} ] |
| 77 | then | 80 | then |
| 78 | cd ${OECMAKE_BUILDPATH} | 81 | cd ${OECMAKE_BUILDPATH} |
| 79 | fi | 82 | fi |
| 80 | 83 | ||
| 81 | base_do_compile | 84 | base_do_compile |
| 82 | } | 85 | } |
| 83 | 86 | ||
| 84 | cmake_do_install() { | 87 | cmake_do_install() { |
| 85 | if [ ${OECMAKE_BUILDPATH} ]; | 88 | if [ ${OECMAKE_BUILDPATH} ]; |
| 86 | then | 89 | then |
| 87 | cd ${OECMAKE_BUILDPATH} | 90 | cd ${OECMAKE_BUILDPATH} |
| 88 | fi | 91 | fi |
| 89 | 92 | ||
| 90 | autotools_do_install | 93 | autotools_do_install |
| 91 | } | 94 | } |
| 92 | 95 | ||
| 93 | EXPORT_FUNCTIONS do_configure do_compile do_install do_generate_toolchain_file | 96 | EXPORT_FUNCTIONS do_configure do_compile do_install do_generate_toolchain_file |
