diff options
Diffstat (limited to 'meta/classes-recipe/cmake.bbclass')
-rw-r--r-- | meta/classes-recipe/cmake.bbclass | 64 |
1 files changed, 62 insertions, 2 deletions
diff --git a/meta/classes-recipe/cmake.bbclass b/meta/classes-recipe/cmake.bbclass index 3d3781ef33..449fe2bb44 100644 --- a/meta/classes-recipe/cmake.bbclass +++ b/meta/classes-recipe/cmake.bbclass | |||
@@ -50,11 +50,34 @@ OECMAKE_C_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('CC', d)[1]}" | |||
50 | OECMAKE_CXX_COMPILER ?= "${@oecmake_map_compiler('CXX', d)[0]}" | 50 | OECMAKE_CXX_COMPILER ?= "${@oecmake_map_compiler('CXX', d)[0]}" |
51 | OECMAKE_CXX_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('CXX', d)[1]}" | 51 | OECMAKE_CXX_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('CXX', d)[1]}" |
52 | 52 | ||
53 | # Native C/C++ Compiler (without cpu arch/tune arguments) | ||
54 | OECMAKE_NATIVE_C_COMPILER ?= "${@oecmake_map_compiler('BUILD_CC', d)[0]}" | ||
55 | OECMAKE_NATIVE_C_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('BUILD_CC', d)[1]}" | ||
56 | OECMAKE_NATIVE_CXX_COMPILER ?= "${@oecmake_map_compiler('BUILD_CXX', d)[0]}" | ||
57 | OECMAKE_NATIVE_CXX_COMPILER_LAUNCHER ?= "${@oecmake_map_compiler('BUILD_CXX', d)[1]}" | ||
58 | OECMAKE_NATIVE_AR ?= "${BUILD_AR}" | ||
59 | OECMAKE_NATIVE_RANLIB ?= "${BUILD_RANLIB}" | ||
60 | OECMAKE_NATIVE_NM ?= "${BUILD_NM}" | ||
61 | |||
62 | # Native compiler flags | ||
63 | OECMAKE_NATIVE_C_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CFLAGS}" | ||
64 | OECMAKE_NATIVE_CXX_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS}" | ||
65 | OECMAKE_NATIVE_C_FLAGS_RELEASE ?= "-DNDEBUG" | ||
66 | OECMAKE_NATIVE_CXX_FLAGS_RELEASE ?= "-DNDEBUG" | ||
67 | OECMAKE_NATIVE_C_LINK_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS}" | ||
68 | OECMAKE_NATIVE_CXX_LINK_FLAGS ?= "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" | ||
69 | BUILD_CXXFLAGS += "${BUILD_CC_ARCH}" | ||
70 | BUILD_CFLAGS += "${BUILD_CC_ARCH}" | ||
71 | |||
53 | # clear compiler vars for allarch to avoid sig hash difference | 72 | # clear compiler vars for allarch to avoid sig hash difference |
54 | OECMAKE_C_COMPILER:allarch = "" | 73 | OECMAKE_C_COMPILER:allarch = "" |
55 | OECMAKE_C_COMPILER_LAUNCHER:allarch = "" | 74 | OECMAKE_C_COMPILER_LAUNCHER:allarch = "" |
56 | OECMAKE_CXX_COMPILER:allarch = "" | 75 | OECMAKE_CXX_COMPILER:allarch = "" |
57 | OECMAKE_CXX_COMPILER_LAUNCHER:allarch = "" | 76 | OECMAKE_CXX_COMPILER_LAUNCHER:allarch = "" |
77 | OECMAKE_NATIVE_C_COMPILER:allarch = "" | ||
78 | OECMAKE_NATIVE_C_COMPILER_LAUNCHER:allarch = "" | ||
79 | OECMAKE_NATIVE_CXX_COMPILER:allarch = "" | ||
80 | OECMAKE_NATIVE_CXX_COMPILER_LAUNCHER:allarch = "" | ||
58 | 81 | ||
59 | OECMAKE_RPATH ?= "" | 82 | OECMAKE_RPATH ?= "" |
60 | OECMAKE_PERLNATIVE_DIR ??= "" | 83 | OECMAKE_PERLNATIVE_DIR ??= "" |
@@ -67,6 +90,8 @@ EXTRA_OECMAKE:append = " ${PACKAGECONFIG_CONFARGS}" | |||
67 | export CMAKE_BUILD_PARALLEL_LEVEL | 90 | export CMAKE_BUILD_PARALLEL_LEVEL |
68 | CMAKE_BUILD_PARALLEL_LEVEL:task-compile = "${@oe.utils.parallel_make(d, False)}" | 91 | CMAKE_BUILD_PARALLEL_LEVEL:task-compile = "${@oe.utils.parallel_make(d, False)}" |
69 | CMAKE_BUILD_PARALLEL_LEVEL:task-install = "${@oe.utils.parallel_make(d, True)}" | 92 | CMAKE_BUILD_PARALLEL_LEVEL:task-install = "${@oe.utils.parallel_make(d, True)}" |
93 | CMAKE_BUILD_PARALLEL_LEVEL:task-compile-ptest-base = "${@oe.utils.parallel_make(d, False)}" | ||
94 | CMAKE_BUILD_PARALLEL_LEVEL:task-install-ptest-base = "${@oe.utils.parallel_make(d, True)}" | ||
70 | 95 | ||
71 | OECMAKE_TARGET_COMPILE ?= "all" | 96 | OECMAKE_TARGET_COMPILE ?= "all" |
72 | OECMAKE_TARGET_INSTALL ?= "install" | 97 | OECMAKE_TARGET_INSTALL ?= "install" |
@@ -124,7 +149,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) | |||
124 | 149 | ||
125 | # only search in the paths provided so cmake doesnt pick | 150 | # only search in the paths provided so cmake doesnt pick |
126 | # up libraries and tools from the native build machine | 151 | # up libraries and tools from the native build machine |
127 | set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN} ${HOSTTOOLS_DIR}) | 152 | set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN} ${COREBASE}/scripts ${HOSTTOOLS_DIR} ) |
128 | set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) | 153 | set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) |
129 | set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM} ) | 154 | set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM} ) |
130 | set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) | 155 | set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) |
@@ -154,6 +179,41 @@ list(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES ${includedir}) | |||
154 | list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${includedir}) | 179 | list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${includedir}) |
155 | 180 | ||
156 | EOF | 181 | EOF |
182 | cat > ${WORKDIR}/toolchain-native.cmake <<EOF | ||
183 | set( CMAKE_SYSTEM_NAME ${@map_host_os_to_system_name(d.getVar('BUILD_OS'))} ) | ||
184 | set( CMAKE_SYSTEM_PROCESSOR ${@map_host_arch_to_uname_arch(d.getVar('BUILD_ARCH'))} ) | ||
185 | set( CMAKE_C_COMPILER ${OECMAKE_NATIVE_C_COMPILER} ) | ||
186 | set( CMAKE_CXX_COMPILER ${OECMAKE_NATIVE_CXX_COMPILER} ) | ||
187 | set( CMAKE_ASM_COMPILER ${OECMAKE_NATIVE_C_COMPILER} ) | ||
188 | set( CMAKE_AR ${OECMAKE_NATIVE_AR} CACHE FILEPATH "Archiver" ) | ||
189 | set( CMAKE_RANLIB ${OECMAKE_NATIVE_RANLIB} CACHE FILEPATH "Archive Indexer" ) | ||
190 | set( CMAKE_NM ${OECMAKE_NATIVE_NM} CACHE FILEPATH "Symbol Lister" ) | ||
191 | set( CMAKE_C_FLAGS "${OECMAKE_NATIVE_C_FLAGS}" CACHE STRING "CFLAGS" ) | ||
192 | set( CMAKE_CXX_FLAGS "${OECMAKE_NATIVE_CXX_FLAGS}" CACHE STRING "CXXFLAGS" ) | ||
193 | set( CMAKE_ASM_FLAGS "${OECMAKE_NATIVE_C_FLAGS}" CACHE STRING "ASM FLAGS" ) | ||
194 | set( CMAKE_C_FLAGS_RELEASE "${OECMAKE_NATIVE_C_FLAGS_RELEASE}" CACHE STRING "Additional CFLAGS for release" ) | ||
195 | set( CMAKE_CXX_FLAGS_RELEASE "${OECMAKE_NATIVE_CXX_FLAGS_RELEASE}" CACHE STRING "Additional CXXFLAGS for release" ) | ||
196 | set( CMAKE_ASM_FLAGS_RELEASE "${OECMAKE_NATIVE_C_FLAGS_RELEASE}" CACHE STRING "Additional ASM FLAGS for release" ) | ||
197 | set( CMAKE_C_LINK_FLAGS "${OECMAKE_NATIVE_C_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) | ||
198 | set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_NATIVE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) | ||
199 | |||
200 | set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_NATIVE} ) | ||
201 | set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) | ||
202 | set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH ) | ||
203 | set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) | ||
204 | set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) | ||
205 | |||
206 | # Use native cmake modules | ||
207 | list(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR_NATIVE}/cmake/Modules/") | ||
208 | |||
209 | # add for non /usr/lib libdir, e.g. /usr/lib64 | ||
210 | set( CMAKE_LIBRARY_PATH ${STAGING_BASE_LIBDIR_NATIVE} ${STAGING_LIBDIR_NATIVE}) | ||
211 | |||
212 | # add include dir to implicit includes in case it differs from /usr/include | ||
213 | list(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES ${STAGING_INCDIR_NATIVE}) | ||
214 | list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${STAGING_INCDIR_NATIVE}) | ||
215 | |||
216 | EOF | ||
157 | } | 217 | } |
158 | 218 | ||
159 | addtask generate_toolchain_file after do_patch before do_configure | 219 | addtask generate_toolchain_file after do_patch before do_configure |
@@ -168,7 +228,7 @@ OECMAKE_ARGS = "\ | |||
168 | -DCMAKE_INSTALL_SBINDIR:PATH=${@os.path.relpath(d.getVar('sbindir'), d.getVar('prefix') + '/')} \ | 228 | -DCMAKE_INSTALL_SBINDIR:PATH=${@os.path.relpath(d.getVar('sbindir'), d.getVar('prefix') + '/')} \ |
169 | -DCMAKE_INSTALL_LIBEXECDIR:PATH=${@os.path.relpath(d.getVar('libexecdir'), d.getVar('prefix') + '/')} \ | 229 | -DCMAKE_INSTALL_LIBEXECDIR:PATH=${@os.path.relpath(d.getVar('libexecdir'), d.getVar('prefix') + '/')} \ |
170 | -DCMAKE_INSTALL_SYSCONFDIR:PATH=${sysconfdir} \ | 230 | -DCMAKE_INSTALL_SYSCONFDIR:PATH=${sysconfdir} \ |
171 | -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${@os.path.relpath(d.getVar('sharedstatedir'), d. getVar('prefix') + '/')} \ | 231 | -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${@os.path.relpath(d.getVar('sharedstatedir'), d.getVar('prefix') + '/')} \ |
172 | -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=${localstatedir} \ | 232 | -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=${localstatedir} \ |
173 | -DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir'), d.getVar('prefix') + '/')} \ | 233 | -DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir'), d.getVar('prefix') + '/')} \ |
174 | -DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir'), d.getVar('prefix') + '/')} \ | 234 | -DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir'), d.getVar('prefix') + '/')} \ |